文件相关命令
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+普通用户 |
4 | GROUP组号 |
5 | 描述 |
6 | HOME 家目录 |
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登录密码添加用户成功
权限
权限的三大对象:
- 属主:u --> user
- 属组:g --> group
- 其他人:o --> other
- 特殊对象,所有人:a(u+g+o)
权限的种类:
- 读:r=4
- 写:w=2
- 执行: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
- USER:运行进程的用户
- PID:进程ID
- %CPU:cpu占用率
- %MEM:内存占用率
- VSZ:占用虚拟内存
- RSS:占用实际内存
- TTY:进程运行的终端
- STAT:进程状态
- START:进程的启动时间
- 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 命令中的指令
- h
- M 按照内存排序
- P按照cpu排序
- N 以pid大小排序
- < 向前
-
向后
- z 彩色 Z设置彩色
选项 | 说明 | 示例 |
---|---|---|
-d | 刷新间隔时间 | top -5 |
-p | 执行查看的pid | ps 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)SIGHUP 重新加载配置
- 2)SIGINT 键盘终端Ctrl+c
- 3)SIGQUIT 键盘推出Ctrl+\,类似SIGINT
- 9)SIGKILL 强制终止
- 15)SIGTERM 终止(正常结束),省略信号
- 18)SIGCONT 继续
- 19)SIGSTOP 暂停
- 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称为虚拟内存)
- 介绍
- swap是硬盘的一个特殊分区,让读取快一点,一般存储热点数据
- 作用,‘提升’内存的容量,防止oom
- swap大小推荐设置未内存的2倍:4G~ 16G内存,最小需要4GB交换空间;16G~ 64G,最小需要8G;64G~ 256G,最小需要16G
- 当内存不够的时候,才申请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介绍:
- 目的:管理磁盘的一种方式,性质与基本磁盘无异
- 特点:随意扩张大小
- 术语: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
-简单链接