linux一路学习

文件相关命令

1、基本功能

功能序号命令说明举例
1、改变目录cd改变文件目录change directory缩写cd /root
cd …
2、创建文件touch 创建文件,touch [路径名称]touch /root/mytxt.txt
touch mytxt.txt
3、创建目录mkdir mkdir [路径和目录] ,没有父级目录报错;mkdir -p [路径和目录] 同时创建父级目录mkdir /root/mydir
mkdir -p /root/a/b/c/1
4、复制cp cp [源文件路径] [目标文件路径] 。可以是相对路径和绝对路径,copy缩写cp /root/mytxt.txt /home/mytxt.txt
5、移动mv mv [源文件路径] [目标文件路径] 。可以是相对路径和绝对路径
6、rm rm -rf [目录文件] 。r=recursive 递归 f=force强制 注意:隐藏文件不能被删除,需要明确指定隐藏文件,隐藏文件如 .1.txt 以 . 开始命名的文件rm -rf /home/mydir
7、查看文件cat cat [文件路径名称] ,查看文件所有内容,注意文件太大不适合直接使用cat /root/log/1.log
more cat [文件路径名称] ,翻页查看文件所有内容more /root/log/1.log
less less [文件路径名称] ,查看文件内容,可进入翻页
head head -2 [文件路径名称] ,查看文件前几行head -10 /root/log/1.log
tail tail -f [文件路径名称],查看后几行文件,动态刷新内容,tail -500f /root/log/1.log
grep grep “我要查找的内容” [文件路径名称]grep “error” /root/log/1.log
8、编辑文件vi vi [文件路径名称] 。当文件不存在时,编辑并保存也可创建文件vi /root/log/2.txt
  • less 的用法详解我比较喜欢使用的命令
按键说明
/ 字符串向下搜索“字符串”的功能
? 字符串向上搜索“字符串”的功能
n重复前一个搜索(与 / 或 ? 有关)
N反向重复前一个搜索(与 / 或 ? 有关)
g回到文件第一页
G回到文件最后一页
b向前翻一页
d向后翻半页
q退出 less 命令
空格键向后翻一页
向上键向上翻动一行
向下键向下翻动一行

2、文件修改

  • 重定向

cat /root/log/1.log > /root/log/2.log

  • 文件编辑器1

gedit 图形界面编辑器,不适用

  • 文件编辑器2

vi vim

  • 进入文件后有两个模式,命令行模式、编辑模式,默认时命令模式,按 i 键进入编辑模式,按 Esc 退出编辑模式进入命令模式,命令以 :号开始,w写 q退出 !强制执行 常用组合 :wq=保存并退出 :q!=退出不保存 ,
  • 正则替换:命令模式下 :1,100 s/123/456/ 或者 :1,100 s/123/456/g g=全局替换
  • 命令模式: set nu (number设置行号,查看用)
  • VI可视化模式:Vv 进入选择(v键盘移动光标单个字符选择,V单行选择),d删除 y复制 p粘贴
  • 在编辑文件的时候,断开了, ls -a ,查看隐藏文件,删除临时文件 *.swp

用户

/etc/passwd用户基本信息文件

  • 文件位置: /etc/passwd
  • 文件说明 用户名:x :uid:gid:描述:HOME:shell x=密码占位符

root: x:0:0:root:/root:/bin/bash

序号说明
1用户名
2密码占位符
3用户的身份证号:0 特权用户,1~499 系统用户 ,1000+普通用户
4GROUP组号
5描述
6HOME 家目录
7/bin/bash 登录shell 命令解释器

/etc/shadow用户密码信息文件(了解即可)

  • 文件位置: /etc/shadow
  • 文件说明 用户名:口令:系统过的时间:最小间隔:最大间隔:警告时间:不活动时间:失效时间:保留

root:$1$123456$VixjJkiqsXgHvMAri8PTZ.::0:99999:7:::

序号说明
1用户名
2口令:$1$ 加密方法 + 密文
3系统过的时间(天):如当前时间为20220101,=20220101 - 19700101(可能不同系统的时间不一样,不纠结)
4最小间隔 (0 代表当天可以改密码,5代表必须5天后才能修改密码)
5最大时间间隔(密码有效期 天)
6警告时间(7)
7不活动时间(28,用户不登录系统,超过28天则禁用用户)
8失效时间(30,到了30天,账号不能使用)
9保留

/etc/group组信息文件

基本概念
  • 文件位置: /etc/group
  • 文件说明 组名:组密码:组ID:组成员

root: x:0:

序号说明
1组名
2组密码
3组ID
4组成员

用户/组管理

创建用户
  • 无其他选项创建
    新添加home目录 passwd添加信息 /var/spool/mail/user01等
useradd user01
id user01
> uid=1001(user01) gid=1001(user01) groups=1001(user01)
passwd user01
> Changing password for user user01.
> New password:
> passwd: all authentication tokens updated successfully.

  • 加其他选项
    useradd – help 自行阅读帮助文档
[root@node-1 mytmp]# useradd --help
Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]
选项解读: -b 缩写,可使用全称替代 --base-dir 。BASE_DIR (大写)代表参数,其他帮助文档类似,再后面为备注信息,帮助理解选项意思
如: useradd user01 -b /home/01   或者 useradd user01 --base-dir /home/01
Options:
  -b, --base-dir BASE_DIR       base directory for the home directory of the
                                new account
  -c, --comment COMMENT         GECOS field of the new account
  -d, --home-dir HOME_DIR       home directory of the new account
  -D, --defaults                print or change default useradd configuration
  -e, --expiredate EXPIRE_DATE  expiration date of the new account
  -f, --inactive INACTIVE       password inactivity period of the new account
  -g, --gid GROUP               name or ID of the primary group of the new
                                account
  -G, --groups GROUPS           list of supplementary groups of the new
                                account
  -h, --help                    display this help message and exit
  -k, --skel SKEL_DIR           use this alternative skeleton directory
  -K, --key KEY=VALUE           override /etc/login.defs defaults
  -l, --no-log-init             do not add the user to the lastlog and
                                faillog databases
  -m, --create-home             create the user's home directory
  -M, --no-create-home          do not create the user's home directory
  -N, --no-user-group           do not create a group with the same name as
                                the user
  -o, --non-unique              allow to create users with duplicate
                                (non-unique) UID
  -p, --password PASSWORD       encrypted password of the new account
  -r, --system                  create a system account
  -R, --root CHROOT_DIR         directory to chroot into
  -s, --shell SHELL             login shell of the new account
  -u, --uid UID                 user ID of the new account
  -U, --user-group              create a group with the same name as the user
  -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

删除用户
userdel -r user01
# -r 删除用户相关目录
用户密码
passwd 
# 当前用户直接修改密码
passwd user01
# 修改其他用户密码
组成员管理
  • 组的意义:为统一访问文件权限提供方便,不用每个用户单独处理
## 添加组
groupadd group1 

#删除组
groupdel group1

  • 修改用户基本组:-g 基本组

usermod -g root user01

  • 修改用户扩展组:-G 扩展组,可有多个

usermod -G root user01

用户登录切换
  • 命令:su

su - root
su root

  • 退出切换的用户

exit

  • 临时使用超管权限:sudo
    文件:/etc/sudoers
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

useradd user01 -G wheel
passwd user01

## 使用user01登录系统
useradd user02
#没有权限
sudo useradd user02
# 输入user01登录密码添加用户成功
权限

权限的三大对象:

  1. 属主:u --> user
  2. 属组:g --> group
  3. 其他人:o --> other
  4. 特殊对象,所有人:a(u+g+o)

权限的种类:

  1. 读:r=4
  2. 写:w=2
  3. 执行:x=1

设置权限:

chmod u+r /root/shell/1.sh
chmod -R u+x /root/shell
#目录授权,子文件全部授权
ll /root/shell/1.sh
> -rw-r--r--. 			1 		root 	root	7358 Mar 25 15:26 1.sh
# -属主u属组g其他人o.	链接数量属主	属组	大小

chmod g-x /root/shell/1.sh
chmod o=r-wx 1.sh
chmod u=rwx,og=r 1.sh
  • 修改文件所属人
chown user02 /root/shell/1.sh

chown user02. user01 /root/shell/1.sh #同时修改属主 属组

## 修改所属组
chgrp user01 /root/shell/1.sh
  • facl命令,查看文件所有权限 ls -l 只能看大致权限情况
setfacl -m u:user01:rw /root/shell/1.sh
setfacl -m u:user02:- /root/shell/1.sh	#user02无权限
setfacl -m o::rw /root/shell/1.sh	#修改所有其他用户权限

getfacl /root/shell/1.txt
# file: 1.txt
# owner: root
# group: root
user::rwx
group::r--
other::r--

setfacl -m g:user01:wrx /root/shell/1.txt
setfacl -x g:user01 /root/shell/1.txt	#删除权限设置

进程

静态查看进程:ps

ps aux
ps a:显示现行终端机下的所有程序
ps u:以用户为主的格式来显示程序状况
ps x:不以终端机来区分

ps aux |head -2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.7  0.0 195564  8624 ?        Ss   Mar16 132:44 /usr/lib/systemd/systemd --system --deserialize 20

  1. USER:运行进程的用户
  2. PID:进程ID
  3. %CPU:cpu占用率
  4. %MEM:内存占用率
  5. VSZ:占用虚拟内存
  6. RSS:占用实际内存
  7. TTY:进程运行的终端
  8. STAT:进程状态
  9. START:进程的启动时间
  10. COMMAND:进程文件、进程名
  • 进程排序
ps aux --sort -%mem|head -5
# --sort 排序
# - 倒序
# %mem 按照内存使用率排序
  • 进程的父子关系

ps -ef|head -2
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mar16 ? 02:12:53 /usr/lib/systemd/systemd --system --deserialize 20
PPID为当前进程的父进程

  • 自定义输出格式: -o

ps axo user,pid,ppid,%mem,%cpu,command|head -10

动态查看进程top

  • top执行后,上半部分(前五行)解释说明
	top - 10:54:58 up 11 days, 14:28,  3 users,  load average: 2.76, 1.29, 0.93
#	程序名 系统时间	运行时间			用户登录数		cpu负载:5分钟 10分钟 15分钟		

	Tasks: 866 total,   1 running, 828 sleeping,  35 stopped,   2 zombie
#总进程数

	%Cpu(s):  1.1 us,  0.4 sy,  0.0 ni, 98.4 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
#cpu占用率    us用户  sy系统  ni优先级  id空闲  wa等待  hi硬件  si软件  st虚拟机
	KiB Mem : 26385811+total, 12526841+free, 63736836 used, 74852872 buff/cache
#mem使用情况

	KiB Swap:        0 total,        0 free,        0 used. 19789904+avail Mem
#虚拟内存(交换分区)
  • top执行后,下半部分解释说明

	  PID USER      PR  NI    VIRT    RES   	 SHR 		S 	 %CPU %MEM     TIME+ COMMAND
	35288 root      20   0 7519008 153520  		37940 		S 	 15.6  0.1   3168:15 kubelet
#进程id 用户  优先级      申请内存  实际占用内存  共享内存   状态  ...

  • top 常见内部指令

top 命令中的指令

  1. h
  2. M 按照内存排序
  3. P按照cpu排序
  4. N 以pid大小排序
  5. < 向前
  6. 向后

  7. z 彩色 Z设置彩色
选项说明示例
-d刷新间隔时间top -5
-p执行查看的pidps aux

使用信号控制进程

  • 信号种类
    使用命令:kill -l查看所有支持的信号
kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

常用:

  1. 1)SIGHUP 重新加载配置
  2. 2)SIGINT 键盘终端Ctrl+c
  3. 3)SIGQUIT 键盘推出Ctrl+\,类似SIGINT
  4. 9)SIGKILL 强制终止
  5. 15)SIGTERM 终止(正常结束),省略信号
  6. 18)SIGCONT 继续
  7. 19)SIGSTOP 暂停
  8. 20)SIGTSTP 键盘暂停Ctrl+z

进程优先级nice

  • 优先级primary:[RT]: -99 ~ 39
  • 我们可以调整的范围:[NI]:-20 ~ 19
  • 设置好NI值实际上是设置RT值,但是系统默认 +20,让我们设置的优先级实际上为 0 ~ 39

nice值越大:表示优先级越低,例如 +19
nice值约小:表示优先级越高,例如 -20

  • 查看nice
ps axo pid,command,nice --sort=-nice
  • 调整nice
nice -n -5 sleep 1000

renice -20 1001
# 给pid=1001 进程重新设置nice值

前后台进程

  • foreground(fg):前台进程,在终端中运行的命令
  • background(bg):后台进程,没有控制终端,它不需要与终端交互,看不见,但是在运行
sleep 100 &
# 后端运行
  • jobs命令,查看后台进程
  • fg回到前台进程,配合jobs返回的序列号 fg [序列号]
  • bg已经停止的程序,重新在后台运行:bg [序列号]
jobs
> [1]+  Running                 sleep 100 &
# + 比较新的进程
fg 1
#ctrl+c 暂停任务

bg 1
#重新后台运行

kill %1
>[1]+  Terminated              sleep 1000
#杀死后台作业序号为1的后台任务

进程虚拟文件系统proc(了解)

  • 文件路径:/proc ,此路径下的文件跟随进程生成
  • CPU:/proc/cpuinfo
  • 内存:/proc/meminfo
  • 内核:/proc/cmdline 可查看系统内核

管道|重定向

重定向

date > time.txt

能够保存输出数据

  • FD: file descriptors文件描述符,文件句柄,进程使用文件描述符来管打开的文件 0 ~ 255
文件描述符值说明
0【stdin】:(标准输入)键盘输入
1【stdout】:(标准输出)显示器
2【stderr】:(错误输出)显示器
3~255其他文件,可读可写
#开一个终端
vi 1.txt


#再开一个终端
ps aux|grep 1.txt
root     10002  0.0  0.0 126408  1948 pts/0    S+   16:42   0:00 vi 1.txt

ls -l /proc/10002/fd
total 0
lrwx------. 1 root root 64 Mar 28 16:44 0 -> /dev/pts/0
lrwx------. 1 root root 64 Mar 28 16:44 1 -> /dev/pts/0
lrwx------. 1 root root 64 Mar 28 16:42 2 -> /dev/pts/0
lrwx------. 1 root root 64 Mar 28 16:44 4 -> /root/mytmp/.1.txt.swp
# 0 1 2 都是一个文件链接
echo 123>/dev/pts/0
#可以重定向使得键盘输入 123,完成另外一个终端文件的输入
  • 正确输出重定向
    1> 等价于 >
    1>> 等价于 >>

  • 错误输出重定向
    2>
    2>>

  • 重定向后台输出:cat 123123.txt &> log.log 错误、正确文件一起输出

  • 错误、正确输出区分输出:cat 123123 1>info.log 2>error.log

  • 输入重定向
    0< 等价于 <
    代替键盘输入

mail -s "message send"  root
fasongneirong .
#以 .结束
#编辑比较麻烦
mail -s "title1" root < message.txt


cat >/var/1.txt <<EOF
123
345
EOF

管道

  • | 命令1的输出作为命令2的输入
  • |tee 三通。把输出保留副本
  • |xargs 转换。把输出和输入进行格式转换

磁盘管理

  • 名词:DISK 磁盘、硬盘

  • 磁盘作用:存储数据

  • 种类:机械硬盘、固态硬盘

  • 命名:SATA(串口)1、/dev/sda 2、/dev/sdb

  • 分区方式1,MBR:主引导记录(Master Boot Record),支持 最大磁盘容量2TB,设计是分配4个分区,如果希望超过4个分区,需要放弃主分区,改为扩展分区和逻辑分区

  • 分区方式2,GPT:全局统一分区表,支持大于2TB容量

  • 查看磁盘情况:ls -l /dev/sd* 或者 lsblk

添加新磁盘

分区
  • 查看磁盘情况,已经使用的磁盘切忌随意重新分区:lsblk
  • 假设添加上了一个新的磁盘 sdb : fdisk /dev/sdb
fdisk /dev/sdb
>1、 提示输入m湖区帮助,直接输入n下一步:n
>2、选择主分区p还是扩展分区e,默认p:p
>3、选择分区编号(1~4)默认1:1
>4、起始扇区(2048~磁盘大小)默认2048:2048
>5、最后扇区,(2048~磁盘大小)默认磁盘大小:
>6、最终写入,会话结束:w

# 分区准备
partprobe /dev/adb
#查看磁盘分区情况
fdisk -l /dev/sdb

创建文件系统
  • 分区完成后需要创建文件系统
  • 命令:mkfs.ext4 /dev/sdb1; make file system extend4
  • 新建的串口硬盘的第一个分区,准备格式化。
挂载mount
makdir /mnt/disk1
mount -t ext4 /dev/sdb1 /mnt/disk1
# d=disk f=free  -h = 人性化选择单位 T=Type 类型
df -hT

#取消挂载
umount /dev/sdb1
剩余未分区空间
  • lsblk
    将剩余磁盘分区挂载
#分区
fdisk /dev/sdb
> n
> p
> 2
> 回车
> +200M
> w

#刷新分区
partprobe /dev/sdb

mkfs.ext4 /dev/sdb2 
# 或者 mkfs -t ext4 /dev/sdb2
mkdir /mnt/disk2
mount -t ext4 /dev/sdb2 /mnt/disk2
  • 超过4个主分区,只能新建扩展分区
  • 把其中一个主分区设置未扩展分区:扩展分区再次划分更多的逻辑分区
  • 扩展分区一定占用4号分区
#分区
fdisk /dev/sdb
> d
> 4
##删除第四个分区
> n
> e
> +200M
> n
> +200m
> w

partiprobe /dev/sdb
# 挂在 第四号分区不能挂载,它是扩展分区,只能挂在这个分区下的逻辑分区

交换分区管理swap(windows称为虚拟内存)

  • 介绍
  1. swap是硬盘的一个特殊分区,让读取快一点,一般存储热点数据
  2. 作用,‘提升’内存的容量,防止oom
  3. swap大小推荐设置未内存的2倍:4G~ 16G内存,最小需要4GB交换空间;16G~ 64G,最小需要8G;64G~ 256G,最小需要16G
  4. 当内存不够的时候,才申请swap空间,只要空间足够,就不需要swap空间
free -m
#能够查看交换分区


fdisk /dev/sdc
> p
> n
> p
> 1
> +1G
> p
> w

partiprobe /dev/sdc

mkswap /dev/sdc1

swapon /dev/sdc1

free -m

逻辑卷LVM

磁盘写满

  • 当磁盘写满后,新的内容是不能写入
  • 物理磁盘的空间是限定的
  • 一个路径挂载了一个物理磁盘,就不能在这个路径下挂载其他新的物理磁盘 ,路径与硬盘挂载1:1关系

LVM介绍:

  1. 目的:管理磁盘的一种方式,性质与基本磁盘无异
  2. 特点:随意扩张大小
  3. 术语:PV=物理卷(physical volume);VG=卷组(volume group);LV=逻辑卷(logical volume)
新建逻辑卷LVM
  • 添加新的物理硬盘
  • 变成物理卷
  • 加入卷组
  • 在卷组中,抽调空间,制作逻辑卷
  • 格式化
  • 挂载
#新磁盘sdf未格式化,创建物理卷
pvcreate /dev/sdf

#创建卷组名: vg1
vgcreate vg1 /dev/sdf

# 创建逻辑卷 -L 大小 -n 名称 vg1卷组名
lvcreate -L 200M -n lv2 vg1
#格式化逻辑卷 /dev/卷组名/逻辑卷名
mkfs -t ext4 /dev/vg1/lv1
#创建目录
mkdir /mnt/lv1
#挂载
mount /dev/vg1/lv1 /mnt/lv1
管理逻辑卷LVM
  • 卷组扩容

# 新建物理卷
pvcreate /dev/sdg
#查询物理卷pvs

# 卷组扩容
vgextend vg1 /dev/sdg
#查询卷组vgs
  • 逻辑卷扩容
#逻辑卷扩容
lvextend -L +5G /dev/vg1/lv1
#文件系统扩容
resize2fs /dev/vg1/lv1

文件系统

EXT3/EXT4文件系统介绍

  • 类型:索引(index)文件系统
#查看文件inode数量
ls -li 
df -i
  • 系统限制
    文件系统限制分为两个,一个是inode数量,一个是磁盘大小限制
    如果inode被占用完了,但是内存还剩下很多,是依旧不能够创建文件的,但是已经创建的文件是可以追加内容的。

链接

  • 简单链接:ln -s file1 file2
    -简单链接

磁盘阵列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值