CentOS运维手册 - Linux系统命令整理

系统简介

本手册系统整理了Linux系统常用命令,按照功能分类,为运维人员提供快速参考。适用于CentOS、RHEL、Ubuntu等主流Linux发行版。


一、查询及帮助命令(2个)

1. man - 查看命令手册

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看命令手册
man ls
man grep

# 查看手册页的特定章节
man 1 ls # 用户命令
man 5 passwd # 配置文件格式
man 8 mount # 系统管理命令

# 搜索手册页
man -k keyword
man -f command

# 常用选项
man -a keyword # 显示所有匹配的手册页
man -w command # 显示手册页路径

说明man是Linux系统最重要的帮助命令,提供详细的命令使用说明。

2. help - 查看内置命令帮助

1
2
3
4
5
6
7
8
9
10
# 查看bash内置命令帮助
help cd
help echo
help export

# 查看所有内置命令
help

# 查看命令简要说明
help -d cd

说明help用于查看Shell内置命令的帮助信息,比man更简洁。


二、文件和目录操作命令(11个)

1. ls - 列出目录内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 基本用法
ls # 列出当前目录
ls /home # 列出指定目录
ls -l # 详细列表(长格式)
ls -a # 显示所有文件(包括隐藏文件)
ls -h # 人类可读的文件大小
ls -t # 按修改时间排序
ls -r # 反向排序
ls -S # 按文件大小排序

# 组合使用
ls -lah # 详细列表,显示所有文件,人类可读大小
ls -lht # 按时间排序的详细列表
ls -R # 递归列出子目录
ls -d */ # 只显示目录

2. tree - 树形显示目录结构

1
2
3
4
5
6
7
8
9
10
11
12
# 安装tree
yum install tree -y

# 基本用法
tree # 显示当前目录树
tree /home # 显示指定目录树
tree -L 2 # 只显示2层目录
tree -d # 只显示目录
tree -a # 显示所有文件(包括隐藏文件)
tree -I 'node_modules|.git' # 排除指定目录
tree -h # 显示文件大小
tree -p # 显示文件权限

3. pwd - 显示当前工作目录

1
2
3
4
5
6
# 显示当前目录路径
pwd

# 在脚本中使用
CURRENT_DIR=$(pwd)
echo "当前目录: $CURRENT_DIR"

4. mkdir - 创建目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建单个目录
mkdir dir1

# 创建多个目录
mkdir dir1 dir2 dir3

# 创建多级目录
mkdir -p /home/user/project/src

# 创建目录并设置权限
mkdir -m 755 dir1

# 创建目录并显示信息
mkdir -v dir1

5. cd - 切换目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 切换到指定目录
cd /home/user

# 切换到用户主目录
cd ~
cd

# 切换到上一个目录
cd -

# 切换到上级目录
cd ..

# 切换到上两级目录
cd ../..

# 切换到根目录
cd /

6. touch - 创建空文件或更新文件时间戳

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建空文件
touch file1.txt

# 创建多个文件
touch file1.txt file2.txt file3.txt

# 更新文件访问时间
touch -a file1.txt

# 更新文件修改时间
touch -m file1.txt

# 设置指定时间
touch -t 202401011200 file1.txt

# 创建文件并设置时间戳
touch -d "2024-01-01 12:00:00" file1.txt

7. cp - 复制文件或目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 复制文件
cp file1.txt file2.txt

# 复制到指定目录
cp file1.txt /home/user/

# 复制目录(递归)
cp -r dir1 dir2

# 复制并保留属性
cp -p file1.txt file2.txt

# 复制并显示进度
cp -v file1.txt file2.txt

# 强制覆盖
cp -f file1.txt file2.txt

# 交互式复制(覆盖前询问)
cp -i file1.txt file2.txt

# 复制并保留链接
cp -d link1 link2

# 复制并保留所有属性
cp -a dir1 dir2

8. mv - 移动或重命名文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 重命名文件
mv oldname.txt newname.txt

# 移动文件
mv file1.txt /home/user/

# 移动目录
mv dir1 /home/user/

# 移动多个文件
mv file1.txt file2.txt /home/user/

# 强制移动(覆盖)
mv -f file1.txt file2.txt

# 交互式移动(覆盖前询问)
mv -i file1.txt file2.txt

# 显示移动过程
mv -v file1.txt file2.txt

9. rm - 删除文件或目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 删除文件
rm file1.txt

# 删除多个文件
rm file1.txt file2.txt file3.txt

# 删除目录(递归)
rm -r dir1

# 强制删除(不提示)
rm -f file1.txt

# 交互式删除(删除前询问)
rm -i file1.txt

# 显示删除过程
rm -v file1.txt

# 删除目录及其内容
rm -rf dir1

# 危险:删除所有文件(谨慎使用)
rm -rf *

10. ln - 创建链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建硬链接
ln file1.txt file2.txt

# 创建软链接(符号链接)
ln -s file1.txt link1

# 创建目录软链接
ln -s /home/user/dir1 link_dir

# 强制创建链接(覆盖已存在的)
ln -sf file1.txt link1

# 创建链接并显示信息
ln -sv file1.txt link1

11. find - 查找文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 按名称查找
find /home -name "*.txt"

# 按类型查找
find /home -type f # 文件
find /home -type d # 目录
find /home -type l # 链接

# 按大小查找
find /home -size +100M # 大于100MB
find /home -size -10M # 小于10MB
find /home -size 50M # 等于50MB

# 按时间查找
find /home -mtime -7 # 7天内修改
find /home -mtime +30 # 30天前修改
find /home -mmin -60 # 60分钟内修改

# 按权限查找
find /home -perm 644
find /home -perm -u+x # 用户有执行权限

# 按用户查找
find /home -user username
find /home -uid 1000

# 组合条件
find /home -name "*.log" -mtime +30 -delete # 删除30天前的日志

# 执行命令
find /home -name "*.txt" -exec ls -l {} \;
find /home -name "*.txt" -exec rm {} \;

三、查看文件及内容处理命令(17个)

1. cat - 显示文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 显示文件内容
cat file1.txt

# 显示多个文件
cat file1.txt file2.txt

# 显示行号
cat -n file1.txt

# 显示非空行行号
cat -b file1.txt

# 显示不可见字符
cat -A file1.txt

# 合并文件
cat file1.txt file2.txt > merged.txt

# 追加内容
cat >> file1.txt << EOF
新内容
EOF

2. more - 分页显示文件

1
2
3
4
5
6
7
8
9
10
11
12
# 分页显示
more file1.txt

# 从指定行开始
more +10 file1.txt

# 常用操作
# 空格键:下一页
# Enter:下一行
# b:上一页
# q:退出
# /pattern:搜索

3. less - 分页显示文件(more的增强版)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 分页显示
less file1.txt

# 显示行号
less -N file1.txt

# 常用操作
# 空格键/PageDown:下一页
# b/PageUp:上一页
# /pattern:向下搜索
# ?pattern:向上搜索
# n:下一个匹配
# N:上一个匹配
# g:跳转到开头
# G:跳转到结尾
# q:退出

4. head - 显示文件开头

1
2
3
4
5
6
7
8
9
10
11
12
# 显示前10行(默认)
head file1.txt

# 显示前N行
head -n 20 file1.txt
head -20 file1.txt

# 显示前N个字节
head -c 100 file1.txt

# 显示多个文件
head file1.txt file2.txt

5. tail - 显示文件结尾

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 显示后10行(默认)
tail file1.txt

# 显示后N行
tail -n 20 file1.txt
tail -20 file1.txt

# 实时监控文件(常用)
tail -f /var/log/messages
tail -F /var/log/messages # 文件被删除重建后继续监控

# 显示后N个字节
tail -c 100 file1.txt

# 从第N行开始显示
tail -n +20 file1.txt

6. cut - 截取文件内容

1
2
3
4
5
6
7
8
9
10
11
# 按列截取(按字符位置)
cut -c 1-10 file1.txt

# 按字段截取(按分隔符)
cut -d ':' -f 1,3 /etc/passwd

# 指定分隔符
cut -d ',' -f 1,2 file.csv

# 补充:常用组合
ps aux | cut -d ' ' -f 1 # 获取进程用户

7. sort - 排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 排序文件
sort file1.txt

# 反向排序
sort -r file1.txt

# 按数字排序
sort -n file1.txt

# 去重排序
sort -u file1.txt

# 忽略大小写
sort -f file1.txt

# 指定分隔符和字段
sort -t ':' -k 3 -n /etc/passwd

8. uniq - 去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 去除相邻重复行
uniq file1.txt

# 统计重复次数
uniq -c file1.txt

# 只显示重复行
uniq -d file1.txt

# 只显示不重复行
uniq -u file1.txt

# 通常与sort配合使用
sort file1.txt | uniq

9. wc - 统计文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 统计行数、单词数、字符数
wc file1.txt

# 只统计行数
wc -l file1.txt

# 只统计单词数
wc -w file1.txt

# 只统计字符数
wc -c file1.txt

# 只统计字节数
wc -m file1.txt

# 统计多个文件
wc file1.txt file2.txt

10. file - 查看文件类型

1
2
3
4
5
6
7
8
9
10
11
# 查看文件类型
file file1.txt

# 查看多个文件
file file1.txt file2.txt

# 详细模式
file -v file1.txt

# 不显示文件名
file -b file1.txt

11. diff - 比较文件差异

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 比较两个文件
diff file1.txt file2.txt

# 并排显示
diff -y file1.txt file2.txt

# 统一格式
diff -u file1.txt file2.txt

# 忽略空白字符
diff -w file1.txt file2.txt

# 递归比较目录
diff -r dir1 dir2

12. vimdiff - 可视化比较文件

1
2
3
4
5
6
7
8
9
# 可视化比较
vimdiff file1.txt file2.txt

# 常用操作
# ]c:跳转到下一个差异
# [c:跳转到上一个差异
# do:将当前差异应用到另一个文件
# dp:将另一个文件的差异应用到当前文件
# :wq:保存并退出

13. chattr - 修改文件属性

1
2
3
4
5
6
7
8
9
10
11
12
13
# 添加属性
chattr +i file1.txt # 不可变(不能删除、修改)
chattr +a file1.txt # 只能追加
chattr +A file1.txt # 不更新访问时间

# 移除属性
chattr -i file1.txt

# 递归设置
chattr -R +i dir1

# 查看属性
lsattr file1.txt

14. lsattr - 查看文件属性

1
2
3
4
5
6
7
8
9
10
11
# 查看文件属性
lsattr file1.txt

# 查看目录属性
lsattr -d dir1

# 递归查看
lsattr -R dir1

# 显示所有文件
lsattr -a dir1

15. rev - 反转文件内容

1
2
3
4
5
# 反转每行内容
rev file1.txt

# 示例
echo "hello" | rev # 输出:olleh

16. grep - 文本搜索

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 基本搜索
grep "pattern" file1.txt

# 忽略大小写
grep -i "pattern" file1.txt

# 显示行号
grep -n "pattern" file1.txt

# 反向匹配(显示不包含的行)
grep -v "pattern" file1.txt

# 递归搜索
grep -r "pattern" /home

# 只显示匹配的文件名
grep -l "pattern" *.txt

# 只显示匹配的内容
grep -o "pattern" file1.txt

# 统计匹配行数
grep -c "pattern" file1.txt

# 使用正则表达式
grep -E "pattern1|pattern2" file1.txt

# 高亮显示
grep --color "pattern" file1.txt

17. egrep - 扩展正则表达式搜索

1
2
3
4
5
6
# 等同于 grep -E
egrep "pattern1|pattern2" file1.txt

# 其他选项与grep相同
egrep -i "pattern" file1.txt
egrep -n "pattern" file1.txt

补充命令

split - 分割文件

1
2
3
4
5
6
7
8
# 按行数分割
split -l 1000 file1.txt output_

# 按大小分割
split -b 10M file1.txt output_

# 按文件数量分割
split -n 5 file1.txt output_

paste - 合并文件

1
2
3
4
5
6
7
8
# 按列合并
paste file1.txt file2.txt

# 指定分隔符
paste -d ':' file1.txt file2.txt

# 按行合并
paste -s file1.txt

iconv - 字符编码转换

1
2
3
4
5
# 转换编码
iconv -f GBK -t UTF-8 file1.txt > file2.txt

# 列出支持的编码
iconv -l

dos2unix - DOS到Unix格式转换

1
2
3
4
5
6
7
8
# 安装
yum install dos2unix -y

# 转换文件
dos2unix file1.txt

# 批量转换
dos2unix *.txt

四、文件压缩及解压缩命令(7个)

1. tar - 归档和压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 创建tar归档
tar -cf archive.tar dir1

# 解压tar归档
tar -xf archive.tar

# 创建gzip压缩
tar -czf archive.tar.gz dir1

# 解压gzip压缩
tar -xzf archive.tar.gz

# 创建bzip2压缩
tar -cjf archive.tar.bz2 dir1

# 解压bzip2压缩
tar -xjf archive.tar.bz2

# 创建xz压缩
tar -cJf archive.tar.xz dir1

# 解压xz压缩
tar -xJf archive.tar.xz

# 列出归档内容
tar -tzf archive.tar.gz

# 显示详细信息
tar -xzvf archive.tar.gz

# 常用选项说明
# -c:创建归档
# -x:解压
# -z:gzip压缩
# -j:bzip2压缩
# -J:xz压缩
# -v:显示过程
# -f:指定文件名
# -t:列出内容

2. unzip - 解压zip文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 解压zip文件
unzip archive.zip

# 解压到指定目录
unzip archive.zip -d /home/user/

# 列出zip文件内容
unzip -l archive.zip

# 测试zip文件完整性
unzip -t archive.zip

# 静默解压(不显示信息)
unzip -q archive.zip

# 覆盖已存在文件
unzip -o archive.zip

# 不覆盖已存在文件
unzip -n archive.zip

3. gzip - gzip压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 压缩文件(会删除原文件)
gzip file1.txt

# 解压文件
gzip -d file1.txt.gz
gunzip file1.txt.gz

# 保留原文件
gzip -k file1.txt

# 显示压缩信息
gzip -l file1.txt.gz

# 指定压缩级别(1-9,9最高)
gzip -9 file1.txt

# 递归压缩
gzip -r dir1

4. zip - 创建zip压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 压缩文件
zip archive.zip file1.txt

# 压缩目录
zip -r archive.zip dir1

# 压缩多个文件
zip archive.zip file1.txt file2.txt

# 指定压缩级别(0-9)
zip -9 archive.zip file1.txt

# 排除文件
zip -r archive.zip dir1 -x "*.log"

# 显示压缩过程
zip -v archive.zip file1.txt

5. bzip2 - bzip2压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 压缩文件(会删除原文件)
bzip2 file1.txt

# 解压文件
bzip2 -d file1.txt.bz2
bunzip2 file1.txt.bz2

# 保留原文件
bzip2 -k file1.txt

# 显示压缩信息
bzip2 -l file1.txt.bz2

# 测试压缩文件
bzip2 -t file1.txt.bz2

# 指定压缩级别(1-9)
bzip2 -9 file1.txt

6. zcat - 查看gzip压缩文件内容

1
2
3
4
5
6
7
8
# 查看压缩文件内容
zcat file1.txt.gz

# 分页查看
zcat file1.txt.gz | less

# 搜索内容
zcat file1.txt.gz | grep "pattern"

7. bzcat - 查看bzip2压缩文件内容

1
2
3
4
5
6
7
8
# 查看压缩文件内容
bzcat file1.txt.bz2

# 分页查看
bzcat file1.txt.bz2 | less

# 搜索内容
bzcat file1.txt.bz2 | grep "pattern"

五、信息显示命令(12个)

1. hostnamectl - 主机名管理

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看主机名信息
hostnamectl

# 设置主机名
hostnamectl set-hostname newhostname

# 查看静态主机名
hostnamectl status

# 查看主机名类型
hostnamectl --static
hostnamectl --transient
hostnamectl --pretty

2. uname - 显示系统信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 显示内核名称
uname

# 显示所有信息
uname -a

# 显示内核版本
uname -r

# 显示系统架构
uname -m

# 显示操作系统
uname -o

# 显示主机名
uname -n

# 显示内核版本号
uname -v

3. hostname - 显示或设置主机名

1
2
3
4
5
6
7
8
9
10
11
# 显示主机名
hostname

# 显示完整域名
hostname -f

# 显示IP地址
hostname -i

# 临时设置主机名
hostname newhostname

4. dmesg - 显示内核消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 显示所有内核消息
dmesg

# 显示最后N行
dmesg | tail -20

# 实时监控
dmesg -w

# 显示时间戳
dmesg -T

# 按级别过滤
dmesg -l err
dmesg -l warn
dmesg -l info

# 清除内核消息缓冲区
dmesg -c

5. uptime - 显示系统运行时间

1
2
3
4
5
# 显示系统运行时间和负载
uptime

# 输出示例
# 10:30:15 up 15 days, 2:45, 3 users, load average: 0.52, 0.58, 0.59

6. file - 查看文件类型(见第三部分)

7. stat - 显示文件详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 显示文件详细信息
stat file1.txt

# 显示目录信息
stat -d dir1

# 显示文件系统信息
stat -f /home

# 自定义格式
stat -c "%n %s %y" file1.txt

# 常用格式说明
# %n:文件名
# %s:文件大小
# %y:修改时间
# %a:权限(八进制)
# %U:用户名
# %G:组名

8. du - 显示目录磁盘使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示目录大小
du dir1

# 显示人类可读格式
du -h dir1

# 显示总计
du -sh dir1

# 显示所有子目录
du -h --max-depth=1 /home

# 按大小排序
du -h /home | sort -h

# 排除指定目录
du -h --exclude="*.log" dir1

9. df - 显示文件系统磁盘使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示所有文件系统
df

# 显示人类可读格式
df -h

# 显示inode使用情况
df -i

# 显示文件系统类型
df -T

# 显示指定文件系统
df -h /home

# 排除指定类型
df -h -x tmpfs -x devtmpfs

10. top - 实时显示进程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 启动top
top

# 按CPU使用率排序
top -o %CPU

# 按内存使用率排序
top -o %MEM

# 只显示特定用户
top -u username

# 设置刷新间隔
top -d 2

# 显示线程
top -H

# 批处理模式
top -b -n 1 > process_info.txt

# 常用交互命令
# P:按CPU排序
# M:按内存排序
# T:按时间排序
# k:杀死进程
# q:退出

11. free - 显示内存使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 显示内存使用(字节)
free

# 显示人类可读格式
free -h

# 显示详细信息
free -m # MB
free -g # GB

# 持续监控
free -s 2 # 每2秒刷新

# 显示总计
free -t

12. date - 显示或设置日期时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 显示当前日期时间
date

# 显示指定格式
date "+%Y-%m-%d %H:%M:%S"

# 显示时间戳
date +%s

# 时间戳转日期
date -d @1640995200

# 设置系统时间
date -s "2024-01-01 12:00:00"

# 显示日历
cal

# 显示指定月份
cal 1 2024

# 显示整年
cal 2024

六、搜索文件命令(4个)

1. which - 查找命令路径

1
2
3
4
5
6
7
8
9
10
11
# 查找命令路径
which ls
which python
which java

# 显示所有匹配
which -a command

# 常用场景
# 检查命令是否存在
which command > /dev/null && echo "存在" || echo "不存在"

2. whereis - 查找命令、源码、手册页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查找命令相关信息
whereis ls

# 只查找二进制文件
whereis -b ls

# 只查找手册页
whereis -m ls

# 只查找源码
whereis -s ls

# 指定搜索路径
whereis -B /usr/bin -f ls

3. locate - 快速查找文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装mlocate
yum install mlocate -y

# 更新数据库
updatedb

# 查找文件
locate file1.txt

# 忽略大小写
locate -i file1.txt

# 限制结果数量
locate -l 10 file1.txt

# 使用正则表达式
locate -r "\.txt$"

# 显示统计信息
locate -S

4. find - 查找文件(见第二部分)

1
2
3
4
5
6
7
8
9
10
11
# 在/etc目录下查找
find /etc -name "*.conf"

# 按类型查找
find /home -type f -name "*.log"

# 按大小查找
find /var -size +100M

# 按时间查找
find /tmp -mtime +7 -delete

七、用户管理命令(10个)

1. useradd - 添加用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 创建用户
useradd username

# 创建用户并指定主目录
useradd -d /home/username username

# 创建用户并指定UID
useradd -u 1001 username

# 创建用户并指定组
useradd -g groupname username

# 创建用户并指定多个组
useradd -G group1,group2 username

# 创建系统用户
useradd -r username

# 创建用户并设置shell
useradd -s /bin/bash username

# 创建用户并设置注释
useradd -c "User Comment" username

2. usermod - 修改用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 修改用户主目录
usermod -d /new/home username

# 修改用户UID
usermod -u 1002 username

# 修改用户组
usermod -g newgroup username

# 添加附加组
usermod -aG groupname username

# 修改用户shell
usermod -s /bin/zsh username

# 修改用户名
usermod -l newname oldname

# 锁定用户
usermod -L username

# 解锁用户
usermod -U username

3. userdel - 删除用户

1
2
3
4
5
6
7
8
# 删除用户
userdel username

# 删除用户及其主目录
userdel -r username

# 强制删除(即使用户已登录)
userdel -f username

4. groupadd - 添加组

1
2
3
4
5
6
7
8
# 创建组
groupadd groupname

# 创建组并指定GID
groupadd -g 1001 groupname

# 创建系统组
groupadd -r groupname

5. passwd - 修改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 修改当前用户密码
passwd

# 修改指定用户密码(root)
passwd username

# 锁定用户密码
passwd -l username

# 解锁用户密码
passwd -u username

# 删除用户密码
passwd -d username

# 设置密码过期
passwd -e username

# 查看密码状态
passwd -S username

6. chage - 修改密码过期信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看用户密码信息
chage -l username

# 设置密码最大有效期
chage -M 90 username

# 设置密码最小有效期
chage -m 7 username

# 设置密码过期前警告天数
chage -W 7 username

# 设置账户过期日期
chage -E 2024-12-31 username

# 交互式设置
chage username

7. id - 显示用户ID信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示当前用户ID
id

# 显示指定用户ID
id username

# 只显示用户ID
id -u username

# 只显示组ID
id -g username

# 显示所有组
id -G username

# 显示用户名
id -un username

8. su - 切换用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换到指定用户
su username

# 切换到root
su -

# 切换到用户并执行命令
su - username -c "command"

# 保持环境变量
su -p username

# 显示切换信息
su -v username

9. visudo - 编辑sudoers文件

1
2
3
4
5
6
7
8
9
10
# 编辑sudoers文件
visudo

# 检查sudoers文件语法
visudo -c

# 常用sudoers配置示例
# username ALL=(ALL) ALL
# %groupname ALL=(ALL) ALL
# username ALL=(ALL) NOPASSWD: ALL

10. sudo - 以其他用户身份执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 以root身份执行命令
sudo command

# 以指定用户执行
sudo -u username command

# 切换到root shell
sudo -i

# 切换到用户shell
sudo -u username -i

# 列出可执行的命令
sudo -l

# 显示sudo配置
sudo -v

八、基础网络操作命令(10个)

1. telnet - 远程登录

1
2
3
4
5
6
7
8
9
10
# 安装telnet
yum install telnet -y

# 连接远程主机
telnet hostname port

# 测试端口连通性
telnet 192.168.1.1 80

# 常用场景:测试服务是否可用

2. ssh - 安全远程登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 连接远程主机
ssh username@hostname

# 指定端口
ssh -p 2222 username@hostname

# 使用密钥登录
ssh -i /path/to/key username@hostname

# 执行远程命令
ssh username@hostname "command"

# 端口转发
ssh -L 8080:localhost:80 username@hostname

# 显示详细信息
ssh -v username@hostname

# 生成SSH密钥
ssh-keygen -t rsa -b 4096

# 复制公钥到远程主机
ssh-copy-id username@hostname

3. scp - 安全复制文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 复制文件到远程主机
scp file1.txt username@hostname:/path/

# 从远程主机复制文件
scp username@hostname:/path/file1.txt ./

# 复制目录
scp -r dir1 username@hostname:/path/

# 指定端口
scp -P 2222 file1.txt username@hostname:/path/

# 显示进度
scp -v file1.txt username@hostname:/path/

# 保持文件属性
scp -p file1.txt username@hostname:/path/

4. wget - 下载文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 下载文件
wget http://example.com/file.zip

# 下载到指定文件
wget -O output.zip http://example.com/file.zip

# 断点续传
wget -c http://example.com/file.zip

# 后台下载
wget -b http://example.com/file.zip

# 限制下载速度
wget --limit-rate=200k http://example.com/file.zip

# 递归下载
wget -r http://example.com/

# 下载指定类型文件
wget -r -A "*.jpg,*.png" http://example.com/

# 显示详细信息
wget -v http://example.com/file.zip

5. ping - 测试网络连通性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 测试连通性
ping hostname
ping 192.168.1.1

# 指定次数
ping -c 4 hostname

# 指定间隔
ping -i 2 hostname

# 设置超时
ping -W 5 hostname

# 显示详细信息
ping -v hostname

# 不分片
ping -M do hostname

6. route - 显示和操作路由表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 显示路由表
route -n

# 添加路由
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

# 删除路由
route del -net 192.168.1.0 netmask 255.255.255.0

# 添加默认路由
route add default gw 192.168.1.1

# 显示内核路由缓存
route -C

7. ifconfig - 配置网络接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 显示所有网络接口
ifconfig

# 显示指定接口
ifconfig eth0

# 配置IP地址
ifconfig eth0 192.168.1.100

# 配置子网掩码
ifconfig eth0 netmask 255.255.255.0

# 启用接口
ifconfig eth0 up

# 禁用接口
ifconfig eth0 down

# 配置MAC地址
ifconfig eth0 hw ether 00:11:22:33:44:55

8. ifup - 启用网络接口

1
2
3
4
5
6
7
8
# 启用网络接口
ifup eth0

# 显示详细信息
ifup -v eth0

# 强制启用
ifup -f eth0

9. ifdown - 禁用网络接口

1
2
3
4
5
6
7
8
# 禁用网络接口
ifdown eth0

# 显示详细信息
ifdown -v eth0

# 强制禁用
ifdown -f eth0

10. netstat - 显示网络连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 显示所有连接
netstat -a

# 显示TCP连接
netstat -t

# 显示UDP连接
netstat -u

# 显示监听端口
netstat -l

# 显示进程信息
netstat -p

# 显示数字格式
netstat -n

# 显示路由表
netstat -r

# 显示网络接口统计
netstat -i

# 组合使用
netstat -tulpn

九、深入网络操作命令(6个)

1. lsof - 列出打开的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 显示所有打开的文件
lsof

# 显示指定进程打开的文件
lsof -p PID

# 显示指定用户打开的文件
lsof -u username

# 显示指定端口
lsof -i :80

# 显示TCP连接
lsof -i tcp

# 显示UDP连接
lsof -i udp

# 显示指定IP的连接
lsof -i @192.168.1.1

# 显示指定目录打开的文件
lsof +D /home

# 杀死占用文件的进程
lsof -t /path/to/file | xargs kill

2. route - 路由管理(见第八部分)

3. mail - 发送邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 发送邮件
echo "邮件内容" | mail -s "主题" user@example.com

# 从文件发送
mail -s "主题" user@example.com < file.txt

# 发送附件
mail -s "主题" -a attachment.txt user@example.com

# 查看邮件
mail

# 配置邮件服务器
# 编辑 /etc/mail.rc

4. mutt - 邮件客户端

1
2
3
4
5
6
7
8
9
10
11
# 安装mutt
yum install mutt -y

# 发送邮件
mutt -s "主题" user@example.com < file.txt

# 交互式发送
mutt user@example.com

# 发送附件
mutt -a attachment.txt -s "主题" user@example.com

5. nslookup - 查询DNS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查询域名
nslookup example.com

# 查询指定DNS服务器
nslookup example.com 8.8.8.8

# 查询MX记录
nslookup -type=MX example.com

# 查询A记录
nslookup -type=A example.com

# 交互模式
nslookup
> set type=MX
> example.com

6. dig - DNS查询工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查询A记录
dig example.com

# 查询指定类型
dig example.com MX
dig example.com NS
dig example.com TXT

# 查询指定DNS服务器
dig @8.8.8.8 example.com

# 简短输出
dig +short example.com

# 反向查询
dig -x 8.8.8.8

# 显示详细信息
dig +trace example.com

十、有关磁盘文件系统的命令(8个)

1. mount - 挂载文件系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 显示所有挂载点
mount

# 挂载设备
mount /dev/sdb1 /mnt

# 挂载指定类型
mount -t ext4 /dev/sdb1 /mnt

# 挂载并指定选项
mount -o rw,noatime /dev/sdb1 /mnt

# 挂载ISO文件
mount -o loop image.iso /mnt

# 挂载NFS
mount -t nfs server:/path /mnt

# 重新挂载
mount -o remount,rw /mnt

# 显示挂载信息
mount -l

2. umount - 卸载文件系统

1
2
3
4
5
6
7
8
9
10
11
# 卸载设备
umount /mnt

# 卸载设备(通过设备名)
umount /dev/sdb1

# 强制卸载
umount -f /mnt

# 延迟卸载
umount -l /mnt

3. df - 显示磁盘使用(见第五部分)

4. du - 显示目录大小(见第五部分)

5. fsck - 检查文件系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 检查文件系统
fsck /dev/sdb1

# 自动修复
fsck -a /dev/sdb1

# 交互式修复
fsck -r /dev/sdb1

# 强制检查
fsck -f /dev/sdb1

# 显示详细信息
fsck -v /dev/sdb1

# 检查ext4文件系统
fsck.ext4 /dev/sdb1

6. dd - 数据复制和转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 复制文件
dd if=input.txt of=output.txt

# 复制磁盘
dd if=/dev/sda of=/dev/sdb bs=4M

# 创建镜像
dd if=/dev/sda of=backup.img bs=4M

# 恢复镜像
dd if=backup.img of=/dev/sda bs=4M

# 创建指定大小的文件
dd if=/dev/zero of=file.txt bs=1M count=100

# 显示进度
dd if=/dev/sda of=/dev/sdb bs=4M status=progress

# 转换大小写
dd if=input.txt of=output.txt conv=ucase
dd if=input.txt of=output.txt conv=lcase

7. dumpe2fs - 显示ext文件系统信息

1
2
3
4
5
6
7
8
# 显示文件系统信息
dumpe2fs /dev/sdb1

# 显示超级块信息
dumpe2fs -h /dev/sdb1

# 显示块组信息
dumpe2fs -g /dev/sdb1

8. dump - 备份文件系统

1
2
3
4
5
6
7
8
9
10
11
# 备份文件系统
dump -0u -f /backup/backup.dump /dev/sdb1

# 增量备份
dump -1u -f /backup/backup.dump /dev/sdb1

# 显示备份信息
dump -W

# 恢复备份
restore -r -f /backup/backup.dump

十一、关机/重启/注销命令(4个)

1. shutdown - 关机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 立即关机
shutdown -h now

# 定时关机
shutdown -h 20:00

# 10分钟后关机
shutdown -h +10

# 关机并发送消息
shutdown -h now "系统维护"

# 取消关机
shutdown -c

2. halt - 停止系统

1
2
3
4
5
6
7
8
# 停止系统
halt

# 强制停止
halt -f

# 停止并关闭电源
halt -p

3. init - 切换运行级别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换到单用户模式
init 1

# 切换到多用户模式
init 3

# 切换到图形界面
init 5

# 重启
init 6

# 关机
init 0

4. reboot - 重启系统

1
2
3
4
5
6
7
8
# 重启系统
reboot

# 强制重启
reboot -f

# 立即重启
reboot now

十二、系统管理相关命令(8个)

1. uptime - 系统运行时间(见第五部分)

2. top - 进程监控(见第五部分)

3. free - 内存使用(见第五部分)

4. vmstat - 虚拟内存统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示统计信息
vmstat

# 每2秒显示一次,共5次
vmstat 2 5

# 显示详细统计
vmstat -s

# 显示内存统计
vmstat -m

# 显示磁盘统计
vmstat -d

# 显示分区统计
vmstat -p /dev/sda1

5. mpstat - 多处理器统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装sysstat
yum install sysstat -y

# 显示CPU统计
mpstat

# 每2秒显示一次,共5次
mpstat 2 5

# 显示所有CPU
mpstat -P ALL

# 显示指定CPU
mpstat -P 0

6. iostat - I/O统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示I/O统计
iostat

# 每2秒显示一次,共5次
iostat 2 5

# 显示扩展统计
iostat -x

# 显示CPU统计
iostat -c

# 显示设备统计
iostat -d

# 显示详细信息
iostat -x 1

7. sar - 系统活动报告

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装sysstat
yum install sysstat -y

# 显示CPU使用率
sar -u

# 显示内存使用率
sar -r

# 显示I/O统计
sar -b

# 显示网络统计
sar -n DEV

# 显示指定时间范围
sar -s 10:00:00 -e 11:00:00

# 实时监控
sar -u 1 10

8. chkconfig - 服务管理(CentOS 6)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 列出所有服务
chkconfig --list

# 启用服务
chkconfig service_name on

# 禁用服务
chkconfig service_name off

# 设置运行级别
chkconfig --level 35 service_name on

# 添加服务
chkconfig --add service_name

# 删除服务
chkconfig --del service_name

注意:CentOS 7+使用systemctl替代chkconfig


十三、系统安全相关命令(10个)

1. chmod - 修改文件权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 添加执行权限
chmod +x file1.txt

# 移除执行权限
chmod -x file1.txt

# 设置权限(数字)
chmod 755 file1.txt
chmod 644 file1.txt

# 设置权限(符号)
chmod u+x file1.txt
chmod g+w file1.txt
chmod o-r file1.txt

# 递归设置
chmod -R 755 dir1

# 设置SUID
chmod u+s file1.txt

# 设置SGID
chmod g+s dir1

# 设置粘滞位
chmod +t dir1

2. chown - 修改文件所有者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 修改所有者
chown username file1.txt

# 修改所有者和组
chown username:groupname file1.txt

# 只修改组
chown :groupname file1.txt

# 递归修改
chown -R username:groupname dir1

# 显示修改过程
chown -v username file1.txt

# 保持符号链接
chown -h username link1

3. chgrp - 修改文件组

1
2
3
4
5
6
7
8
# 修改组
chgrp groupname file1.txt

# 递归修改
chgrp -R groupname dir1

# 显示修改过程
chgrp -v groupname file1.txt

4. chage - 密码过期管理(见第七部分)

5. passwd - 密码管理(见第七部分)

6. su - 切换用户(见第七部分)

7. sudo - 权限提升(见第七部分)

8. umask - 设置默认权限

1
2
3
4
5
6
7
8
9
10
11
12
13
# 显示当前umask
umask

# 设置umask
umask 022

# 显示符号格式
umask -S

# 常用umask值
# 022:文件644,目录755
# 027:文件640,目录750
# 077:文件600,目录700

9. chattr - 文件属性(见第三部分)

10. lsattr - 查看文件属性(见第三部分)


十四、查看系统用户登陆信息的命令(7个)

1. whoami - 显示当前用户

1
2
3
4
5
6
# 显示当前用户名
whoami

# 在脚本中使用
CURRENT_USER=$(whoami)
echo "当前用户: $CURRENT_USER"

2. who - 显示登录用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示登录用户
who

# 显示详细信息
who -a

# 显示系统启动时间
who -b

# 显示登录进程
who -p

# 显示运行级别
who -r

# 显示用户数
who -q

3. w - 显示登录用户及活动

1
2
3
4
5
6
7
8
9
10
11
# 显示登录用户及活动
w

# 显示指定用户
w username

# 不显示标题
w -h

# 显示简短信息
w -s

4. last - 显示登录历史

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示登录历史
last

# 显示指定用户
last username

# 显示指定数量
last -n 10

# 显示指定时间
last -t YYYYMMDDHHMMSS

# 显示系统重启记录
last reboot

# 显示系统关闭记录
last shutdown

5. lastlog - 显示最后登录时间

1
2
3
4
5
6
7
8
# 显示所有用户最后登录
lastlog

# 显示指定用户
lastlog -u username

# 显示指定时间之前
lastlog -t 7

6. users - 显示登录用户

1
2
3
4
5
# 显示登录用户名列表
users

# 输出示例
# user1 user2 user3

7. finger - 显示用户信息

1
2
3
4
5
6
7
8
9
10
11
# 安装finger
yum install finger -y

# 显示用户信息
finger username

# 显示所有用户
finger

# 显示简短信息
finger -s username

十五、查看硬件信息相关命令(8个)

1. ifconfig - 网络接口(见第八部分)

2. free - 内存信息(见第五部分)

3. fdisk - 磁盘分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 显示磁盘分区
fdisk -l

# 显示指定磁盘
fdisk -l /dev/sda

# 交互式分区
fdisk /dev/sda

# 常用fdisk命令
# n:新建分区
# d:删除分区
# p:显示分区表
# w:保存并退出
# q:不保存退出

4. ethtool - 以太网配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装ethtool
yum install ethtool -y

# 显示网卡信息
ethtool eth0

# 显示驱动信息
ethtool -i eth0

# 显示统计信息
ethtool -S eth0

# 显示链路状态
ethtool eth0 | grep Link

# 设置网卡速度
ethtool -s eth0 speed 1000 duplex full

5. mii-tool - 网络接口媒体信息

1
2
3
4
5
6
7
8
9
10
11
# 显示网络接口信息
mii-tool

# 显示指定接口
mii-tool eth0

# 显示详细信息
mii-tool -v eth0

# 强制设置
mii-tool -F 100baseTx-FD eth0

6. dmidecode - DMI信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装dmidecode
yum install dmidecode -y

# 显示所有信息
dmidecode

# 显示系统信息
dmidecode -t system

# 显示主板信息
dmidecode -t baseboard

# 显示CPU信息
dmidecode -t processor

# 显示内存信息
dmidecode -t memory

# 显示BIOS信息
dmidecode -t bios

7. dmesg - 内核消息(见第五部分)

8. lspci - 显示PCI设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 显示所有PCI设备
lspci

# 显示详细信息
lspci -v

# 显示非常详细的信息
lspci -vv

# 显示树形结构
lspci -t

# 显示内核驱动
lspci -k

十六、其它命令(19个)

1. echo - 显示文本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示文本
echo "Hello World"

# 显示变量
echo $HOME

# 不换行
echo -n "Hello"

# 解释转义字符
echo -e "Hello\nWorld"

# 输出到文件
echo "Hello" > file.txt

# 追加到文件
echo "World" >> file.txt

2. printf - 格式化输出

1
2
3
4
5
6
7
8
9
10
11
12
# 格式化输出
printf "Name: %s, Age: %d\n" "John" 25

# 常用格式
# %s:字符串
# %d:整数
# %f:浮点数
# %x:十六进制

# 输出示例
printf "%-10s %5d\n" "User1" 100
printf "%-10s %5d\n" "User2" 200

3. rpm - RPM包管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 安装RPM包
rpm -ivh package.rpm

# 升级RPM包
rpm -Uvh package.rpm

# 卸载RPM包
rpm -e package

# 查询已安装包
rpm -q package

# 查询所有包
rpm -qa

# 查询包信息
rpm -qi package

# 查询包文件
rpm -ql package

# 查询文件属于哪个包
rpm -qf /path/to/file

# 验证包
rpm -V package

# 显示包依赖
rpm -qpR package.rpm

4. yum - YUM包管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 安装软件包
yum install package

# 升级软件包
yum update package

# 升级所有软件包
yum update

# 卸载软件包
yum remove package

# 搜索软件包
yum search keyword

# 显示软件包信息
yum info package

# 列出已安装包
yum list installed

# 列出可用包
yum list available

# 清理缓存
yum clean all

# 更新缓存
yum makecache

# 显示软件包组
yum grouplist

# 安装软件包组
yum groupinstall "Development Tools"

5. watch - 定期执行命令

1
2
3
4
5
6
7
8
9
10
11
12
# 每2秒执行一次
watch -n 2 "command"

# 高亮差异
watch -d "command"

# 不显示标题
watch -t "command"

# 示例
watch -n 1 "ps aux | head -10"
watch -n 2 "free -h"

6. alias - 创建别名

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建别名
alias ll='ls -lah'
alias grep='grep --color'

# 显示所有别名
alias

# 删除别名
unalias ll

# 永久保存(添加到~/.bashrc)
echo "alias ll='ls -lah'" >> ~/.bashrc
source ~/.bashrc

7. unalias - 删除别名

1
2
3
4
5
# 删除别名
unalias ll

# 删除所有别名
unalias -a

8. date - 日期时间(见第五部分)

9. clear - 清屏

1
2
3
4
# 清屏
clear

# 快捷键:Ctrl+L

10. history - 命令历史

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 显示命令历史
history

# 显示最近N条
history 20

# 执行历史命令
!n # 执行第n条命令
!! # 执行上一条命令
!string # 执行最近以string开头的命令

# 搜索历史
history | grep "keyword"

# 清除历史
history -c

# 保存历史
history -w

# 读取历史
history -r

11. eject - 弹出可移动媒体

1
2
3
4
5
6
7
8
# 弹出CD/DVD
eject

# 弹出指定设备
eject /dev/cdrom

# 关闭托盘
eject -t

12. time - 测量命令执行时间

1
2
3
4
5
6
7
8
9
10
# 测量命令执行时间
time command

# 显示详细信息
time -v command

# 输出示例
# real 0m1.234s
# user 0m0.500s
# sys 0m0.200s

13. nohup - 后台运行命令

1
2
3
4
5
6
7
8
9
10
11
# 后台运行并忽略挂起信号
nohup command &

# 输出重定向
nohup command > output.log 2>&1 &

# 查看后台任务
jobs

# 查看进程
ps aux | grep command

14. nc - 网络工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 安装nc
yum install nc -y

# 端口扫描
nc -zv hostname 80

# 监听端口
nc -l 8080

# 连接远程主机
nc hostname 8080

# 传输文件
nc -l 8080 < file.txt # 发送端
nc hostname 8080 > file.txt # 接收端

# UDP模式
nc -u hostname 8080

15. xargs - 构建和执行命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 从标准输入构建命令
echo "file1 file2 file3" | xargs rm

# 指定参数数量
echo "1 2 3 4 5" | xargs -n 2 echo

# 交互式执行
find . -name "*.txt" | xargs -p rm

# 显示执行的命令
find . -name "*.txt" | xargs -t rm

# 处理包含空格的文件名
find . -name "*.txt" -print0 | xargs -0 rm

16. exec - 执行命令

1
2
3
4
5
6
7
8
9
# 执行命令并替换当前shell
exec command

# 重定向文件描述符
exec 3< input.txt
exec 3> output.txt

# 关闭文件描述符
exec 3<&-

17. export - 导出环境变量

1
2
3
4
5
6
7
8
9
10
11
12
# 导出变量
export VAR="value"

# 显示所有导出变量
export

# 移除导出变量
export -n VAR

# 常用环境变量
export PATH=$PATH:/new/path
export JAVA_HOME=/usr/java

18. unset - 删除变量

1
2
3
4
5
6
7
# 删除变量
unset VAR

# 删除函数
unset -f function_name

# 删除只读变量(需要特殊处理)

19. type - 显示命令类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 显示命令类型
type ls
type cd

# 显示详细信息
type -a command

# 显示函数定义
type -f function_name

# 输出示例
# ls is aliased to `ls --color=auto'
# cd is a shell builtin
# python is /usr/bin/python

十七、系统性能监视高级命令(12个)

内存监控

1. top - 实时监控(见第五部分)

2. free - 内存使用(见第五部分)

3. vmstat - 虚拟内存统计(见第十二部分)

4. mpstat - 多处理器统计(见第十二部分)

5. iostat - I/O统计(见第十二部分)

6. sar - 系统活动报告(见第十二部分)

CPU监控

7. top - CPU监控(见第五部分)

8. vmstat - CPU统计(见第十二部分)

9. mpstat - CPU统计(见第十二部分)

10. iostat - CPU统计(见第十二部分)

11. sar - CPU报告(见第十二部分)

I/O监控

12. vmstat - I/O统计(见第十二部分)

13. mpstat - I/O统计(见第十二部分)

14. iostat - I/O统计(见第十二部分)

15. sar - I/O报告(见第十二部分)

进程监控

16. ipcs - 显示IPC信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示所有IPC
ipcs

# 显示共享内存
ipcs -m

# 显示信号量
ipcs -s

# 显示消息队列
ipcs -q

# 显示详细信息
ipcs -a

# 显示指定用户
ipcs -u username

17. ipcrm - 删除IPC

1
2
3
4
5
6
7
8
9
10
11
# 删除共享内存
ipcrm -m shmid

# 删除信号量
ipcrm -s semid

# 删除消息队列
ipcrm -q msqid

# 删除所有(危险)
ipcrm -a

18. lsof - 打开文件(见第九部分)

19. strace - 系统调用跟踪

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 跟踪命令
strace command

# 跟踪进程
strace -p PID

# 显示时间戳
strace -t command

# 显示相对时间
strace -r command

# 统计系统调用
strace -c command

# 跟踪指定系统调用
strace -e trace=open,read command

# 输出到文件
strace -o output.txt command

20. ltrace - 库函数跟踪

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装ltrace
yum install ltrace -y

# 跟踪库函数
ltrace command

# 跟踪进程
ltrace -p PID

# 显示时间戳
ltrace -t command

# 统计函数调用
ltrace -c command

# 跟踪指定函数
ltrace -e malloc,free command

21. vmstat - 虚拟内存(见第十二部分)

负载监控

22. uptime - 系统负载(见第五部分)

1
2
3
4
5
6
# 显示负载平均值
uptime

# 输出示例
# 10:30:15 up 15 days, load average: 0.52, 0.58, 0.59
# 1分钟、5分钟、15分钟的平均负载

十八、进程管理命令(16个)

1. bg - 后台运行

1
2
3
4
5
6
7
8
# 将挂起的任务放到后台
bg

# 将指定任务放到后台
bg %1

# 查看后台任务
jobs

2. fg - 前台运行

1
2
3
4
5
6
7
8
# 将后台任务放到前台
fg

# 将指定任务放到前台
fg %1

# 查看任务
jobs

3. jobs - 显示后台任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 显示所有任务
jobs

# 显示任务ID
jobs -l

# 显示进程ID
jobs -p

# 只显示运行的任务
jobs -r

# 只显示停止的任务
jobs -s

4. kill - 终止进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 终止进程
kill PID

# 强制终止
kill -9 PID

# 发送指定信号
kill -SIGTERM PID
kill -SIGKILL PID

# 终止进程组
kill -TERM -PGID

# 列出所有信号
kill -l

5. killall - 按名称终止进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 终止所有匹配的进程
killall process_name

# 强制终止
killall -9 process_name

# 交互式终止
killall -i process_name

# 显示详细信息
killall -v process_name

# 等待进程结束
killall -w process_name

6. pkill - 按模式终止进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 按模式终止
pkill process_name

# 强制终止
pkill -9 process_name

# 显示匹配的进程
pkill -l process_name

# 按用户终止
pkill -u username process_name

# 按终端终止
pkill -t tty1 process_name

7. crontab - 定时任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 编辑定时任务
crontab -e

# 查看定时任务
crontab -l

# 删除定时任务
crontab -r

# 编辑指定用户的定时任务
crontab -u username -e

# 定时任务格式
# * * * * * command
# 分 时 日 月 周 命令

# 示例
# 0 2 * * * /path/to/script.sh # 每天2点执行
# */5 * * * * /path/to/script.sh # 每5分钟执行
# 0 0 1 * * /path/to/script.sh # 每月1号执行

8. ps - 显示进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 显示所有进程
ps aux

# 显示进程树
ps auxf

# 按CPU排序
ps aux --sort=-%cpu

# 按内存排序
ps aux --sort=-%mem

# 显示指定用户
ps -u username

# 显示进程树
ps -ef

# 显示完整命令
ps -f

# 显示进程环境
ps -e

9. pstree - 显示进程树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 显示进程树
pstree

# 显示进程ID
pstree -p

# 显示命令行
pstree -a

# 显示指定用户
pstree username

# 显示指定进程
pstree PID

10. top - 实时进程监控(见第五部分)

11. nice - 设置进程优先级

1
2
3
4
5
6
7
8
# 以指定优先级运行
nice -n 10 command

# 修改运行中进程的优先级
renice 10 PID

# 显示进程优先级
ps -o pid,ni,comm

12. screen - 终端复用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装screen
yum install screen -y

# 创建新会话
screen

# 创建命名会话
screen -S session_name

# 列出所有会话
screen -ls

# 恢复会话
screen -r session_name

# 分离会话
# 按 Ctrl+A,然后按 D

# 杀死会话
screen -X -S session_name quit

13. nohup - 后台运行(见第十六部分)

14. pgrep - 查找进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 按名称查找进程
pgrep process_name

# 显示进程名
pgrep -l process_name

# 显示完整命令行
pgrep -a process_name

# 按用户查找
pgrep -u username process_name

# 显示进程树
pgrep -t tty1

15. strace - 系统调用跟踪(见第十七部分)

16. ltrace - 库函数跟踪(见第十七部分)

17. vmstat - 虚拟内存统计(见第十二部分)


十九、Linux系统三剑客(3个)

1. grep - 文本搜索(见第三部分)

2. sed - 流编辑器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 替换文本
sed 's/old/new/g' file.txt

# 替换并保存
sed -i 's/old/new/g' file.txt

# 删除行
sed '2d' file.txt # 删除第2行
sed '2,5d' file.txt # 删除2-5行
sed '/pattern/d' file.txt # 删除匹配行

# 插入行
sed '2i\新行' file.txt # 在第2行前插入
sed '2a\新行' file.txt # 在第2行后插入

# 打印指定行
sed -n '2p' file.txt # 打印第2行
sed -n '2,5p' file.txt # 打印2-5行

# 多命令执行
sed -e 's/old1/new1/g' -e 's/old2/new2/g' file.txt

# 使用文件作为脚本
sed -f script.sed file.txt

# 常用示例
sed 's/^/# /' file.txt # 每行前加#
sed 's/$/;/' file.txt # 每行后加;
sed '/^$/d' file.txt # 删除空行

3. awk - 文本处理工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 基本用法
awk '{print $1}' file.txt

# 指定分隔符
awk -F ':' '{print $1}' /etc/passwd

# 打印指定列
awk '{print $1, $3}' file.txt

# 条件过滤
awk '$3 > 100 {print $1, $3}' file.txt

# 内置变量
awk '{print NR, NF, $0}' file.txt
# NR:当前行号
# NF:当前行字段数
# $0:整行
# $1, $2...:第1, 2...个字段

# BEGIN和END
awk 'BEGIN {print "开始"} {print} END {print "结束"}' file.txt

# 计算
awk '{sum+=$1} END {print sum}' file.txt

# 分组统计
awk '{count[$1]++} END {for (i in count) print i, count[i]}' file.txt

# 常用示例
awk '/pattern/ {print}' file.txt # 匹配行
awk 'NR==1 {print}' file.txt # 第一行
awk 'NR>1 {print}' file.txt # 除第一行
awk '{if ($1 > 100) print}' file.txt # 条件判断

三剑客组合使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# grep + sed
grep "pattern" file.txt | sed 's/old/new/g'

# grep + awk
grep "pattern" file.txt | awk '{print $1, $3}'

# sed + awk
sed 's/old/new/g' file.txt | awk '{print $1}'

# 三剑客组合
grep "pattern" file.txt | sed 's/old/new/g' | awk '{print $1, $3}'

# 实际案例
ps aux | grep java | awk '{print $2}' | xargs kill
cat /var/log/access.log | grep "404" | awk '{print $1}' | sort | uniq -c | sort -rn

附录:常用命令组合

1. 系统监控组合

1
2
3
4
5
6
7
8
# 查看系统负载和进程
watch -n 1 'uptime && ps aux --sort=-%cpu | head -10'

# 查看内存和磁盘
watch -n 2 'free -h && df -h'

# 查看网络连接
watch -n 1 'netstat -tulpn | grep LISTEN'

2. 日志分析组合

1
2
3
4
5
6
7
8
# 查看最新日志
tail -f /var/log/messages | grep -i error

# 统计错误日志
grep -i error /var/log/messages | awk '{print $1, $2, $3}' | uniq -c

# 分析访问日志
cat /var/log/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

3. 文件操作组合

1
2
3
4
5
6
7
8
# 查找并删除
find /tmp -name "*.tmp" -mtime +7 -delete

# 查找并压缩
find /var/log -name "*.log" -mtime +30 -exec gzip {} \;

# 查找并统计
find /home -type f -name "*.txt" | wc -l

4. 进程管理组合

1
2
3
4
5
# 查找并终止进程
ps aux | grep process_name | grep -v grep | awk '{print $2}' | xargs kill

# 监控进程资源
watch -n 1 'ps aux --sort=-%mem | head -10'

5. 网络诊断组合

1
2
3
4
5
6
7
8
# 检查端口
netstat -tulpn | grep :80

# 查看网络流量
watch -n 1 'netstat -i'

# 测试连通性
for ip in 192.168.1.{1..10}; do ping -c 1 $ip &>/dev/null && echo "$ip is up" || echo "$ip is down"; done

总结

本手册系统整理了Linux系统常用命令,涵盖了:

  1. 查询帮助:man, help
  2. 文件操作:ls, tree, pwd, mkdir, cd, touch, cp, mv, rm, ln, find
  3. 内容处理:cat, more, less, head, tail, cut, sort, uniq, wc, grep等
  4. 压缩解压:tar, zip, gzip, bzip2等
  5. 系统信息:uname, hostname, uptime, date等
  6. 用户管理:useradd, usermod, passwd, sudo等
  7. 网络操作:ssh, scp, ping, netstat等
  8. 进程管理:ps, top, kill, crontab等
  9. 性能监控:vmstat, iostat, sar等
  10. 三剑客:grep, sed, awk

掌握这些命令,能够高效地进行Linux系统运维工作。建议结合实际场景多加练习,形成自己的命令使用习惯。


更新日期:2024-01-01
适用系统:CentOS 6/7/8, RHEL, Ubuntu等主流Linux发行版
维护者:运维团队