# 三.linux 常用命令
# 1.常见目录
- /根目录
- /boot 启动目录,启动相关文件
- /dev 设备文件
- /etc 配置文件
- /home 普通用户的家目录,可以操作
- /lib 系统库保存目录
- /mnt 移动设备挂载目录
- /media 光盘挂载目录
- /misc 磁带机挂载目录
- /root 超级用户的家目录,可以操作
- /tmp 临时目录,可以操作
- /proc 正在运行的内核信息映射,主要输出进程信息、内存资源信息和磁盘分区信息等
- /sys 硬件设备的驱动程序信息
- /var 变量
- /bin 普通的基本命令,如 ls、chmod 等,一般的用户也可以使用
- /sbin 基本的系统命令,如 shutdown,reboot,用于启动系统,修复系统,只有管理员才可以运行
- /usr/bin 是你在后期安装的一些软件的运行脚本
- /usr/sbin 内置一些用户安装的系统管理的必备程序
# 2.命令基本格式
# 2.1 命令提示符
[root@VM-20-11-centos ~]# ssh root@localhost
1
- root 当前登陆用户
- localhost 主机名
- ~当前工作目录,默认是当前用户的家目录,root 就是/root,普通用户是/home/用户名
- 提示符:超级用户是#,普通用户是$
# 2.2 命令格式
- 命令 [选项] [参数]
- 当有多个选项时,可以写在一起
- 一般参数有简化和完整写法两种 -a 与 --all 等效
ls
:查询目录中的内容
[root@VM-20-11-centos ~]# ls
7.0.4.tar.gz JBnrCBNAHV.tar QtpbxpYXNY.tar
awKTbbhOKV.tar kEQLvPHEgr.tar RriEohQSOb.tar
dUGTbmqMZA.tar LfeaJTrXPF.tar snap
EattuPSvsi.tar mongo sUBHhapYHH.tar
fLKHAyFoMh.tar mysql-community-release-el7-5.noarch.rpm uQFsAKGJkd.tar
GBOuIVnoNm.tar mysql-community-release-el7-5.noarch.rpm.1 wpQsZLUxGq.tar
gIjwaydQCE.tar OfhGQLYqlz.tar XGlndHMIIV.tar
GoSGgnrtKQ.tar ONSIRsfsxq.tar xjoQjmcZct.tar
HDtLTwWarP.tar package-lock.json
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- ls [选项] [文件或者目录]
- 选项
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录本身的属性而非子文件 ls /etc/
- -h 人性化的方式显示文件大小
- -i 显示 inode,也就是 i 节点,每个节点都有 ID 号
- 默认当前目录下的文件列表
ls -l
: 显示详细信息
drwxr-xr-x . 1 root root 800 Sep 16 00:19 logs
1
drwxr-xr-x | . | 1 | root | root | 800 | Sep 16 00:19 | logs |
---|---|---|---|---|---|---|---|
文件类型和权限 | ACL 权限 | 硬链接引用计数 | 所有者 | 所属组 | 文件大小 | 最后修改时间 | 文件名 |
# 12.3 文件处理命令
# 12.3.1 mkdir
- 建立目录
- mkdir -p [目录名]
- -p 递归创建
# 12.3.2 cd
- 切换所在目录
- cd [目录]
- ~ 家目录
- 家目录
- 上次目录
- . 当前目录
- .. 上级目录
- 相对路径是参照当前所在目录
- 绝对路径是从根目录开始
- 按 TAB 键可以补全命令和目录
# 12.3.3 pwd
- 显示当前目录 pwd
[root@VM-20-11-centos ~]# pwd
/root
1
2
2
# 12.3.4 rmdir
- 删除目录 remove empty directory
- rmdir [目录名]
# 12.3.5 rm
- 删除文件或者目录 remove
- rm [文件或者目录]
- -r 删除目录
- -f 强制删除
- rm -rf 文件或者目录] 递归强制删除所有目录
# 12.3.6 cp
- copy 复制命令
- copy [源文件或者目录] [目标文件]
- -r 复制目录,默认是复制文件
- -p 连带文件属性复制
- -d 若源文件是链接文件,则复制连接属性
- -a 相当于 -rpd
# 12.3.7 mv
- 移动文件或者改名 move
- mv [源文件或者目录] [目标文件]
# 12.3.8 ln
- 链接命令,生成链接文件 link
# 12.3.8.1 硬链接特征
- 拥有相同的 i 节点和存储 block 块,可以看作是同一个文件
- 可以通过 i 节点访问
- 不能跨分区
- 不能针对目录使用
- 一般不使用
# 12.3.8.2 软链接特征
- ln -s [源文件] [目标文件]
- -s 创建软链接
- 类似 Windows 快捷方式
- 软链接拥有自己的 i 节点和 Block 块,但是数据块中只保存源文件的文件名和 i 节点号,并没有实际的文件数据
- lrwxrwxrwx l 软链接 软链接的文件权限都是 777
- 修改任意一个文件,另一个都会改变
- 删除源文件,软链接不能使用
- 软链接源文件必须写绝对路径
# 12.4 文件搜索命令
# 12.4.1 locate
- 在后台数据库中按文件名搜索,速度比较快
- 数据保存在/var/lib/mlocate 后台数据库,每天更新一次
- 可以 updatedb 命令立刻更新数据库
- 只能搜索文件名
- /etc/updatedb.conf 建立索引的配置文件
- PRUNE_BIND_MOUNTS = "yes" 全部生效,开启搜索限制
- PRUNEFS 不搜索的文件系统
- PRUNENAMES 忽略的文件类型
- PRUNEPATHS 忽略的路径 /tmp
# 12.4.2 whereis
- 搜索命令所在路径以及帮助文档所在位置
- whereis 命令名 whereis ls
- -b 只查找可执行文件
- -m 只查找帮助文件
# 12.4.3 which
- 可以看到别名 which ls
- 能看到的都是外部安装的命令
- 无法查看 Shell 自带的命令,如 which cd
# 12.4.4 环境变量
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
1
- 定义的是系统搜索命令的路径
- echo $PATH
# 12.4.5 find
- 文件搜索命令
- find [搜索范围] [搜索条件]
# 12.4.5.1 按名称搜索
- 避免大范围的搜索,会非常消耗系统资源
find / -name aaa.log
1
# 12.4.5.2 通配符
- find 是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
- 通配符
- * 匹配任意内容
- ? 匹配任意一个字符
- [] 匹配任意一个中括号内的字符
find . -name "ab[cdef]"
1
# 12.4.5.3 -i
不区分大小写
find / -iname A.log
1
# 12.4.5.4 -user
按所有者进行搜索
find /root -user root
find /root -nouser
1
2
2
# 12.4.5.5 按时间搜索
find /nginx/access.log -mtime +5
1
参数 | 含义 |
---|---|
atime | 文件访问时间 |
ctime | 改变文件属性 |
mtime | 修改文件内容 |
参数 | 含义 |
---|---|
-5 | 5 天内修改的文件 |
5 | 5 天前当前修改的文件 |
+5 | 5 天前修改的文件 |
# 12.4.5.6 按大小搜索
k 小写,M 大写
find . -size 100k
1
参数 | 含义 |
---|---|
-8k | 小于 8K |
8k | 等于 8K |
+8k | 大于 8K |
+8M | 小于 8M |
# 12.4.5.7 按 i 节点搜索
find . -inum 123456
1
# 12.4.5.8 综合应用
find /tmp -size +10k -a -size -20k
1
- 查找/etc 目录下,大于 10KB 并且小于 20KB 的文件
- -a and 逻辑与,两个条件都满足
- -o or 逻辑或,两个条件满足一个就可以
find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
1
- exec 对上个命令的结果进行操作
# 12.4.5.9 grep
- 在文件当中匹配符合条件的字符串
- grep "10" access.log
- -i 忽略大小写
- -v 排除指定字符串
- find 命令,在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
- grep 命令 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
# 12.5 帮助命令
# 12.5.1 基本用法
- man 命令 获取指定命令的帮助
- man ls 查看 ls 的帮助
# 12.5.2 man 的级别
- 1 查看命令的帮助
- 2 查看可被内核调用的函数的帮助
- 3 查看函数和函数库的帮助
- 4 查看特殊文件的帮助
- 5 查看配置文件的帮助
- 6 查看游戏的帮助
- 7 查看其它的帮助
- 8 查看系统管理员可用命令的帮助
- 9 查看和内核相关文件的帮助
# 12.5.3 查看命令级别
- 查看命令级别
- 1p: POSIX utilities
- POSIX 表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX 标准定义了操作系统应该为应用程序提供的接口标准.
man -f ls
whatis ls
man 1 ls
man 1p ls
1
2
3
4
2
3
4
# 12.5.4 关键字搜索
- man -k passwd
1
# 12.5.5 shell 内部帮助
- whereis 找到就是外部,找不到就是内部
help cd
1
# 12.6 压缩与解压缩命令
.zip
.gz
.bz2
.tar.gz
.tar.bz2
# 12.6.1 zip 格式
压缩文件或目录,是一种压缩格式
- 压缩文件 zip 压缩文件名.zip 源文件
- 压缩目录 zip -r 压缩目录名.zip 源目录
- 解压 unzip 压缩目录名.zip
mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book
unzip book.zip
1
2
3
4
5
2
3
4
5
# 12.6.2 gzip
gzip 为高压,可以把文件压缩得更小
命令 | 示例 | 含义 |
---|---|---|
gzip 源文件 | gzip a.txt | 压缩为.gz 格式的压缩文件,源文件会消失 |
gzip -c 源文件 > 压缩文件 | gzip -c yum.txt > yum.txt.gz | 压缩为.gz 格式的压缩文件,源文件不会消失 |
gzip -r 目录 | gzip -r xx | 把目录下的每个子文件都变成压缩包,并删除原文件,当前目录无变化 |
gzip -d 压缩文件名 | gzip -d yum.txt.gz | 解压缩文件,不保留压缩包 |
gunzip 压缩文件 | gunzip yum.txt.gz | 解压缩文件,也不保留压缩包 |
- 压缩是压缩目录下的文件
# 12.6.3 .bz2 格式压缩
bzip2 是一个压缩能力更强的压缩程序
命令 | 示例 | 含义 |
---|---|---|
bzip2 源文件 | bzip2 1.txt | 压缩为.bz2 格式的文件,不保留源文件 |
bzip2 -k 源文件 | bzip2 -k 1.txt | 压缩为.bz2 格式的文件,保留源文件 |
bzip2 -d 压缩文件名 | bzip2 -d 1.txt.bz2 | 解压压缩包,不保留压缩包 |
bunzip2 压缩文件名 | bunzip2 1.txt.bz2 | 解压压缩包,也不保留压缩包 |
- bzip2 不能压缩目录
# 12.6.4 tar
- 打包命令,只打包并不压缩
- tar -cvf 打包文件名 源文件
- -c 打包
- -v 显示过程
- -f 指定打包后的文件名
tar -cvf book.tar book 会找出一个 book.tar 文件
1
- x 解打包
tar -xvf book.tar
1
# 12.6.4 tar.gz 压缩格式
- zip 可以压缩目录但压缩效率不高,gzip 和 bzip2 压缩效率高但不支持目录
- 可以先打包为.tar 格式,再压缩为.gz 格式 -z 压缩为.tar.gz 格式 -x 解压缩.tar.gz 格式
命令 | 示例 | 含义 |
---|---|---|
tar -zcvf 压缩包名 .tar.gz 源文件 | tar -zcvf book.gar.gz book | 可以先打包为.tar 格式,再压缩为.gz 格式 |
tar -zxvf 压缩包名.tar.gz | tar -zxvf book.tar.gz | 解压 tar.gz 压缩包 |
tar -jcvf 压缩包名 .tar.bz2 源文件 | tar -jcvf book.tar.bz2 book | 可以先打包为.tar 格式,再压缩为.bz2 格式 |
tar -jxvf 压缩包名.tar.bz2 | tar -jxvf book.tar.bz2 | 解压 tar.bz2 压缩包 |
# 12.7 关机和重启命令
# 12.7.1 关机命令shutdown
- -c 取消前一个关机命令
- -h 关机
- -r 重启
shutdown -r 06:00
shutdown -c
1
2
2
# 12.7.2 init
关机
init 0
1
重启
init 6
1
# 12.7.3 退出登录logout
logout
1
# 12.8 查看登录用户信息
# 12.8.1 查看登录用户信息w
[root@VM-20-11-centos ~]# w
13:43:24 up 122 days, 20:21, 1 user, load average: 0.05, 0.06, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 118.247.208.139 13:21 4.00s 0.06s 0.00s w
1
2
3
4
2
3
4
- USER 登录的用户名
- TTY 登录的终端 tty1 本地终端 pts/0 远程终端
- FROM 登录的 IP
- LOGIN 登录时间
- IDLE 用户闲置时间
- JCPU 该终端所有进程占用的时间
- PCPU 当前进程所占用的时间
- WHAT 正在执行的命令
# 12.8.2 查看登录用户信息who
[root@VM-20-11-centos ~]# who
root pts/0 2023-04-15 13:21 (118.247.208.139)
1
2
2
- USER 登录的用户名
- TTY 登录的终端 tty1 本地终端 pts/0 远程终端
- LOGIN 登录时间(登录的 IP)
# 12.8.3 last
查看当前登录和过去登录的用户信息 默认读取 /var/log/wtmp 文件
- 用户名
- 登录终端
- 登录 IP
- 登录时间
- 退出时间(在线时间)
# 12.8.4 lastlog
查看所有用户的最后一次登录时间
- 用户名
- 登录终端
- 登录 IP
- 最后一次登录时间
# 12.9 磁盘管理
# 12.9.1 df
- 查看磁盘分区使用状况
参数 | 描述 |
---|---|
-l | 仅显示本地磁盘(默认) |
-a | 显示所有文件系统的使用情况 |
-h | 以 1024 进制计算最合适的单位显示磁盘容量 |
-H | 以 1000 进制计算最合适的单位显示磁盘容量 |
-T | 显示磁盘分区类型 |
-t | 显示指定类型文件系统的磁盘分区 |
-x | 不显示指定类型文件系统的磁盘分区 |
# 12.9.2 du
- 统计以磁盘上的文件大小
参数 | 描述 |
---|---|
-b | 以 byte 为单位统计文件 |
-k | 以 KB 为单位统计文件 |
-m | 以 MB 为单位统计文件 |
-h | 以 1024 为单位统计文件 |
-H | 以 1000 为单位统计文件 |
-s | 指定统计目标 |
du -s /etc
du -sH /etc
1
2
2
# 12.9.3 添加新硬盘后的分区和格式化
- 硬件设备是由 linux 系统自动识别并以文件的形式存在于根目录下的 dev 目录下
- 1-4 分区编号是留给主分区和扩展分区的,逻辑分区只能从 5 开始 命令| 含义| 中文 --|-- m| print this menu |打印菜单 n| add a new partition| 添加一个分区 d| delete a partition| 删除一个分区 p| print the partition table| 打印分区表 q| quit without saving changes |退出不保存 w| write table to disk and exit| 写入分区表并保存
fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
Device Boot Start End Blocks Id System
/dev/sda1 \* 1 26 204800 83 Linux
Disk /dev/sdb: 8589 MB, 8589934592 bytes
fdisk /dev/sdb 开始对这块硬盘进行分区
m 打印命令
n 创建一个分区
Partition number (1-4): 1 选择分区编号
First cylinder (1-1044, default 1): 1 输入开始扇区
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +3000M 输入结束扇区
p 查看当前分区
n 创建分区
e 扩展分区
l 创建逻辑分区
d 删除分区
w 分区表写入磁盘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 12.9.4 GPT
- MBR 下主分区最多 4 个,GPT 可达 128 个
- MBR 下主分区容量最大 2TB,GPT 模式下容量可达 18EB(1EB=1024PB,1PB=1024TB,1TB=1024GB)
parted 开始分区,默认是对第一块硬盘分区
mklabel gpt 指定分区表的类型为 gpt
print 查看分区表的类型
mkpart 开始分区
分区名称? []? system
文件系统类型? [ext2]?
起始点? 0
结束点? 2000
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? c
(parted) 1
结束点? 2000
mkpart 2th 2000 3000
quit 退出编辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 12.9.5 格式化
ls -l /dev/sdb\*
mkfs.ext3 /dev/sdb1
mkfs -t ext4 /dev/sdb2
1
2
3
2
3
# 12.9.6 挂载
mkdir /mnt/work
mount /dev/sdb1 /mnt/work
umount /mnt/work
vim + /etc/fstab
/dev/sdb1 /mnt/work ext3 defaults 0 0
分区名称 挂载点 文件系统类型
1
2
3
4
5
6
7
2
3
4
5
6
7
# 12.9.7 添加 swap 交换分区
- 建立普通的 linux 分区
- 修改分区类型的 16 进制编码
- 格式化成交换分类
- 启动交换分区
fdisk /dev/sdb
p 查看当前的分区
Command (m for help): t 修改分区的系统 ID
Partition number (1-4): 3 修改分区编号为 3 的分区
Hex code (type L to list codes): L 列出所有编号
Hex code (type L to list codes): 82 把编号修改为 16 进制的 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)
p
/dev/sdb3 767 1044 2233035 82 Linux swap / Solaris
free 查看剩余内存
mkswap /dev/sdb3 把 sdb3 设置为交换分区
swapon /dev/sdb3 挂载 sdb3 成交换区
free
swapoff /dev/sdb3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 12.9.8 挂载
# 12.9.8.1 挂载命令格式
- mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
- 选项
- -t 文件系统 ext4 iso9660
- -o 特殊选项
# 12.9.8.2 挂载光驱
mkdir /mnt/cd
mount -t iso9660 /dev/sr0 /mnt/cdrom
1
2
2
# 12.9.8.3 卸载光驱
umount /mnt/cdrom
1
# 12.9.8.4 挂载 U 盘
fdisk -l 查看硬盘及分区信息
mount -t vfat /dev/sdb1 /mnt/usb
1
2
2
- linux 默认不支持 NTFS 格式
# 12.10 文件查看命令
# 12.10.1 cat
- cat 命令用于连接文件并打印到标准输出设备上。
- cat [-AbeEnstTuv] [--help] [--version] fileName
- 参数
- -n 或 --number:由 1 开始对所有输出的行数编号。
cat -n textfile1
1
# 12.10.2 more
- Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
- more fileName
more testfile
1
# 12.10.3 head
- 用来显示开头某个数量的文字区块
head -5 readme.txt
1
# 12.10.4 tail
- tail 命令可用于查看文件的内容
- 有一个常用的参数 -f 常用于查阅正在改变的日志文件。
- tail [参数] [文件]
- 参数
- -f 循环读取
- -n<行数> 显示文件的尾部 n 行内容
tail -5 mail.txt
tail -f access.log
1
2
2
# 12.10.5 第二页
head -10 file | tail -5
1