Linux 命令大全
目录
- 文件操作命令
- 系统信息命令
- 进程管理命令
- 网络命令
- 用户管理命令
- 权限管理命令
- 文本处理命令
- 压缩解压命令
- 系统服务命令
- 软件包管理命令
- 磁盘管理命令
- 远程连接命令
- 文件传输命令
- 系统监控命令
- 日志查看命令
- 环境变量命令
- 定时任务命令
- 防火墙命令
- 系统信息命令
- 网络诊断命令
- 文件系统命令
- 进程调试命令
- 关机命令
- 系统信息命令
- 硬件信息命令
- 内核模块命令
文件操作命令
ls - 列出目录内容
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 显示所有文件,包括隐藏文件 | ls -a |
-l | 使用长列表格式显示 | ls -l |
-h | 以人类可读的格式显示文件大小 | ls -lh |
-t | 按修改时间排序 | ls -lt |
-r | 反向排序 | ls -lr |
-R | 递归显示子目录 | ls -R |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| 权限字段 | 文件类型和权限 | drwxr-xr-x |
| 链接数 | 硬链接数量 | 2 |
| 所有者 | 文件所有者 | user |
| 用户组 | 文件所属组 | group |
| 文件大小 | 文件大小(字节) | 4096 |
| 修改时间 | 最后修改时间 | Dec 15 10:30 |
| 文件名 | 文件或目录名 | example.txt |
指令输出示例:
$ ls -la
total 32
drwxr-xr-x 5 user group 4096 Dec 15 10:30 .
drwxr-xr-x 3 user group 4096 Dec 15 10:25 ..
-rw-r--r-- 1 user group 220 Dec 15 10:30 .bash_logout
-rw-r--r-- 1 user group 3771 Dec 15 10:30 .bashrc
-rw-r--r-- 1 user group 807 Dec 15 10:30 .profile
drwxr-xr-x 2 user group 4096 Dec 15 10:30 documents
-rw-r--r-- 1 user group 25 Dec 15 10:30 test.txt
cp - 复制文件或目录
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-r | 递归复制目录 | cp -r dir1 dir2 |
-p | 保留文件属性 | cp -p file1 file2 |
-v | 显示详细过程 | cp -v file1 file2 |
-f | 强制覆盖 | cp -f file1 file2 |
-i | 交互式复制 | cp -i file1 file2 |
指令输出示例:
$ cp -v test.txt backup/
'test.txt' -> 'backup/test.txt'
$ cp -r documents/ backup/
documents/file1.txt -> backup/documents/file1.txt
documents/file2.txt -> backup/documents/file2.txt
mv - 移动或重命名文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 交互式移动 | mv -i file1 file2 |
-v | 显示详细过程 | mv -v file1 file2 |
-f | 强制移动 | mv -f file1 file2 |
-n | 不覆盖已存在文件 | mv -n file1 file2 |
指令输出示例:
$ mv -v oldname.txt newname.txt
'oldname.txt' -> 'newname.txt'
$ mv -i file1.txt documents/
mv: overwrite 'documents/file1.txt'? y
rm - 删除文件或目录
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-r | 递归删除目录 | rm -r directory |
-f | 强制删除,不提示 | rm -f file |
-i | 交互式删除 | rm -i file |
-v | 显示详细过程 | rm -v file |
指令输出示例:
$ rm -i test.txt
rm: remove regular file 'test.txt'? y
$ rm -rf temp/
# 静默删除temp目录及其内容
系统信息命令
top - 显示系统进程信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 指定进程 ID | top -p 1234 |
-u | 指定用户名 | top -u username |
-n | 刷新次数 | top -n 5 |
-d | 刷新间隔(秒) | top -d 2 |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| PID | 进程 ID | 1234 |
| USER | 进程所有者 | root |
| PR | 进程优先级 | 20 |
| NI | nice 值 | 0 |
| VIRT | 虚拟内存使用量 | 123456 |
| RES | 物理内存使用量 | 1234 |
| SHR | 共享内存大小 | 456 |
| S | 进程状态 | S (睡眠) |
| %CPU | CPU 使用率 | 2.5 |
| %MEM | 内存使用率 | 1.2 |
| TIME+ | 累计 CPU 时间 | 0:15.30 |
| COMMAND | 命令名称 | bash |
指令输出示例:
$ top
top - 14:30:45 up 2 days, 3:45, 2 users, load average: 0.52, 0.58, 0.59
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.2 sy, 0.0 ni, 96.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 1234.5 free, 2345.6 used, 4611.9 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 5123.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 1234 456 S 2.5 1.2 0:15.30 bash
5678 user 20 0 234567 2345 567 S 1.8 2.1 0:25.45 nginx
df - 显示磁盘空间使用情况
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 以人类可读格式显示 | df -h |
-T | 显示文件系统类型 | df -T |
-i | 显示 inode 信息 | df -i |
-a | 显示所有文件系统 | df -a |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| Filesystem | 文件系统名称 | /dev/sda1 |
| Size | 总大小 | 20G |
| Used | 已使用空间 | 15G |
| Avail | 可用空间 | 4.0G |
| Use% | 使用率百分比 | 79% |
| Mounted on | 挂载点 | / |
指令输出示例:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 15G 4.0G 79% /
tmpfs 3.2G 0 3.2G 0% /dev/shm
/dev/sdb1 100G 50G 45G 53% /home
free - 显示内存使用情况
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 以人类可读格式显示 | free -h |
-s | 持续监控,指定间隔 | free -s 5 |
-t | 显示总计行 | free -t |
-m | 以 MB 为单位显示 | free -m |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| total | 总内存 | 8192 |
| used | 已使用内存 | 4096 |
| free | 空闲内存 | 2048 |
| shared | 共享内存 | 512 |
| buff/cache | 缓冲/缓存内存 | 1536 |
| available | 可用内存 | 3584 |
指令输出示例:
$ free -h
total used free shared buff/cache available
Mem: 8.0Gi 4.0Gi 2.0Gi 512Mi 2.0Gi 3.5Gi
Swap: 2.0Gi 0Bi 2.0Gi
进程管理命令
ps - 显示进程状态
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
aux | 显示所有用户的所有进程 | ps aux |
-ef | 显示所有进程的详细信息 | ps -ef |
-p | 指定进程 ID | ps -p 1234 |
-u | 指定用户名 | ps -u username |
-o | 自定义输出格式 | ps -o pid,ppid,cmd |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| USER | 进程所有者 | root |
| PID | 进程 ID | 1234 |
| PPID | 父进程 ID | 1 |
| %CPU | CPU 使用率 | 2.5 |
| %MEM | 内存使用率 | 1.2 |
| VSZ | 虚拟内存大小 | 123456 |
| RSS | 物理内存大小 | 1234 |
| TTY | 终端 | pts/0 |
| STAT | 进程状态 | S |
| START | 启动时间 | 10:30 |
| TIME | 累计 CPU 时间 | 0:15.30 |
| COMMAND | 命令 | bash |
指令输出示例:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 123456 1234 ? Ss 10:30 0:01 /sbin/init
root 123 0.0 0.0 234567 2345 ? S 10:30 0:00 /usr/sbin/sshd
user 1234 0.5 1.2 345678 3456 pts/0 Ss 10:35 0:15 bash
user 5678 0.0 0.5 456789 4567 pts/0 R+ 14:30 0:00 ps aux
kill - 终止进程
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-9 | 强制终止进程 | kill -9 1234 |
-15 | 正常终止进程(默认) | kill -15 1234 |
-l | 列出所有信号 | kill -l |
-s | 指定信号 | kill -s SIGTERM 1234 |
指令输出示例:
$ kill -9 1234
# 强制终止进程ID为1234的进程
$ 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
网络命令
netstat - 显示网络连接状态
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-t | 显示 TCP 连接 | netstat -t |
-u | 显示 UDP 连接 | netstat -u |
-l | 显示监听端口 | netstat -l |
-n | 显示数字地址 | netstat -n |
-p | 显示进程信息 | netstat -p |
-a | 显示所有连接 | netstat -a |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| Proto | 协议类型 | tcp |
| Recv-Q | 接收队列 | 0 |
| Send-Q | 发送队列 | 0 |
| Local Address | 本地地址 | 127.0.0.1:8080 |
| Foreign Address | 远程地址 | 0.0.0.0:* |
| State | 连接状态 | LISTEN |
| PID/Program name | 进程 ID/程序名 | 1234/nginx |
指令输出示例:
$ netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1234/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5678/sshd
tcp6 0 0 :::80 :::* LISTEN 9012/apache2
ping - 测试网络连通性
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-c | 指定发送次数 | ping -c 4 8.8.8.8 |
-i | 指定发送间隔(秒) | ping -i 2 8.8.8.8 |
-s | 指定数据包大小 | ping -s 1000 8.8.8.8 |
-t | 设置 TTL 值 | ping -t 64 8.8.8.8 |
-W | 设置超时时间 | ping -W 5 8.8.8.8 |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| icmp_seq | ICMP 序列号 | 1 |
| ttl | 生存时间 | 64 |
| time | 响应时间 | 2.5 ms |
| bytes | 数据包大小 | 64 |
指令输出示例:
$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=64 time=2.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=64 time=2.3 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=64 time=2.4 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=64 time=2.6 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 2.300/2.450/2.600/0.100 ms
用户管理命令
useradd - 创建新用户
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-m | 创建用户主目录 | useradd -m username |
-s | 指定默认 shell | useradd -s /bin/bash username |
-g | 指定主组 | useradd -g users username |
-G | 指定附加组 | useradd -G sudo username |
-u | 指定用户 ID | useradd -u 1001 username |
指令输出示例:
$ useradd -m -s /bin/bash -G sudo newuser
# 创建用户newuser,包含主目录,默认shell为bash,加入sudo组
$ id newuser
uid=1001(newuser) gid=1001(newuser) groups=1001(newuser),27(sudo)
passwd - 设置用户密码
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-l | 锁定用户账户 | passwd -l username |
-u | 解锁用户账户 | passwd -u username |
-d | 删除用户密码 | passwd -d username |
-S | 显示密码状态 | passwd -S username |
指令输出示例:
$ passwd newuser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
$ passwd -S newuser
newuser P 12/15/2023 0 99999 7 -1
权限管理命令
chmod - 修改文件权限
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-R | 递归修改目录权限 | chmod -R 755 dir |
-v | 显示详细过程 | chmod -v 644 file |
-c | 只在有变化时显示 | chmod -c 755 file |
权限数字说明:
| 数字 | 权限 | 说明 |
|---|---|---|
0 | --- | 无权限 |
1 | --x | 执行权限 |
2 | -w- | 写权限 |
3 | -wx | 写和执行权限 |
4 | r-- | 读权限 |
5 | r-x | 读和执行权限 |
6 | rw- | 读和写权限 |
7 | rwx | 读、写和执行权限 |
指令输出示例:
$ chmod 755 script.sh
$ ls -l script.sh
-rwxr-xr-x 1 user group 1234 Dec 15 10:30 script.sh
$ chmod -R 644 documents/
$ ls -la documents/
total 8
drwxr-xr-x 2 user group 4096 Dec 15 10:30 .
drwxr-xr-x 3 user group 4096 Dec 15 10:30 ..
-rw-r--r-- 1 user group 25 Dec 15 10:30 file1.txt
-rw-r--r-- 1 user group 30 Dec 15 10:30 file2.txt
chown - 修改文件所有者
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-R | 递归修改目录 | chown -R user:group dir |
-v | 显示详细过程 | chown -v user file |
-c | 只在有变化时显示 | chown -c user file |
指令输出示例:
$ chown newuser:newgroup file.txt
$ ls -l file.txt
-rw-r--r-- 1 newuser newgroup 25 Dec 15 10:30 file.txt
$ chown -R user:group documents/
$ ls -la documents/
total 8
drwxr-xr-x 2 user group 4096 Dec 15 10:30 .
drwxr-xr-x 3 user group 4096 Dec 15 10:30 ..
-rw-r--r-- 1 user group 25 Dec 15 10:30 file1.txt
-rw-r--r-- 1 user group 30 Dec 15 10:30 file2.txt
文本处理命令
cat - 查看文件内容
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 显示行号 | cat -n file.txt |
-A | 显示所有字符 | cat -A file.txt |
-s | 压缩空行 | cat -s file.txt |
-T | 显示制表符 | cat -T file.txt |
-E | 显示行结束符 | cat -E file.txt |
指令输出示例:
$ cat -n example.txt
1 这是第一行
2 这是第二行
3 这是第三行
$ cat -A example.txt
这是第一行$
这是第二行$
这是第三行$
grep - 搜索文本
命令参数解释表格:
| 参数 | 说明 | 示例 | | ---- | -------------- | ----------------------- | -------- | | -i | 忽略大小写 | grep -i "hello" file | | -r | 递归搜索目录 | grep -r "pattern" dir | | -n | 显示行号 | grep -n "hello" file | | -v | 反向匹配 | grep -v "hello" file | | -l | 只显示文件名 | grep -l "hello" * | | -c | 只显示匹配行数 | grep -c "hello" file | | -E | 使用扩展正则 | grep -E "a | b" file |
指令输出示例:
$ grep -n "error" log.txt
15:ERROR: Connection failed
23:ERROR: Timeout occurred
45:ERROR: Invalid input
$ grep -i "hello" *.txt
file1.txt:Hello World
file2.txt:hello there
sed - 流编辑器
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 直接修改文件 | sed -i 's/old/new/g' file |
-n | 不输出默认行 | sed -n '1,5p' file |
-e | 指定编辑命令 | sed -e 's/a/b/' -e 's/c/d/' file |
-f | 从文件读取命令 | sed -f script.sed file |
常用编辑命令:
| 命令 | 说明 | 示例 |
|---|---|---|
s | 替换 | s/old/new/g |
p | 打印 | 1,5p |
d | 删除 | 1,5d |
a | 追加 | 1a\new line |
i | 插入 | 1i\new line |
指令输出示例:
$ sed 's/old/new/g' file.txt
# 替换所有old为new
$ sed -n '1,5p' file.txt
# 只显示第1-5行
$ sed -i 's/^/# /' file.txt
# 在每行开头添加注释符号
awk - 文本处理工具
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-F | 指定分隔符 | awk -F: '{print $1}' /etc/passwd |
-v | 定义变量 | awk -v var=value '{print var}' |
-f | 从文件读取脚本 | awk -f script.awk file |
常用内置变量:
| 变量 | 说明 | 示例 |
|---|---|---|
$0 | 整行内容 | {print $0} |
$1 | 第一个字段 | {print $1} |
NF | 字段数量 | {print NF} |
NR | 当前行号 | {print NR} |
FS | 输入字段分隔符 | BEGIN{FS=":"} |
OFS | 输出字段分隔符 | BEGIN{OFS="\t"} |
指令输出示例:
$ awk -F: '{print $1, $3}' /etc/passwd
root 0
bin 1
daemon 2
$ awk '{sum += $1} END {print sum}' numbers.txt
150
$ awk 'NR>1 {print $1, $2}' data.csv
John 25
Jane 30
Bob 35
head - 查看文件开头
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 指定行数 | head -n 10 file |
-c | 指定字节数 | head -c 100 file |
-q | 不显示文件名 | head -q file1 file2 |
-v | 显示文件名 | head -v file |
指令输出示例:
$ head -n 5 large_file.txt
第1行内容
第2行内容
第3行内容
第4行内容
第5行内容
$ head -c 50 file.txt
这是文件的前50个字符内容
tail - 查看文件结尾
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 指定行数 | tail -n 10 file |
-c | 指定字节数 | tail -c 100 file |
-f | 持续监控文件 | tail -f log.txt |
-q | 不显示文件名 | tail -q file1 file2 |
-v | 显示文件名 | tail -v file |
指令输出示例:
$ tail -n 5 log.txt
2023-12-15 14:30:15 INFO: Service started
2023-12-15 14:30:16 INFO: Database connected
2023-12-15 14:30:17 INFO: Cache initialized
2023-12-15 14:30:18 INFO: API ready
2023-12-15 14:30:19 INFO: Server listening
$ tail -f /var/log/nginx/access.log
# 实时监控nginx访问日志
find - 查找文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-name | 按文件名查找 | find /path -name "*.txt" |
-iname | 忽略大小写按文件名查找 | find /path -iname "*.txt" |
-type | 按文件类型查找 | find /path -type f (文件) |
-size | 按文件大小查找 | find /path -size +100M |
-mtime | 按修改时间查找 | find /path -mtime -7 (7 天内) |
-atime | 按访问时间查找 | find /path -atime +30 (30 天前) |
-user | 按所有者查找 | find /path -user username |
-group | 按组查找 | find /path -group groupname |
-perm | 按权限查找 | find /path -perm 644 |
-exec | 执行命令 | find /path -name "*.txt" -exec rm {} \; |
-delete | 删除找到的文件 | find /path -name "*.tmp" -delete |
-print | 打印找到的文件 | find /path -name "*.txt" -print |
-maxdepth | 最大搜索深度 | find /path -maxdepth 2 -name "*.txt" |
-mindepth | 最小搜索深度 | find /path -mindepth 2 -name "*.txt" |
文件类型说明:
| 类型 | 说明 |
|---|---|
f | 普通文件 |
d | 目录 |
l | 符号链接 |
c | 字符设备 |
b | 块设备 |
p | 命名管道 |
s | 套接字 |
时间参数说明:
| 参数 | 说明 |
|---|---|
-mtime -n | n 天内修改的文件 |
-mtime +n | n 天前修改的文件 |
-mtime n | 正好 n 天前修改的文件 |
-atime -n | n 天内访问的文件 |
-atime +n | n 天前访问的文件 |
-ctime -n | n 天内状态改变的文件 |
大小参数说明:
| 参数 | 说明 |
|---|---|
-size +100M | 大于 100MB 的文件 |
-size -100M | 小于 100MB 的文件 |
-size 100M | 正好 100MB 的文件 |
-size +100c | 大于 100 字节的文件 |
-size +100k | 大于 100KB 的文件 |
指令输出示例:
$ find /home -name "*.txt"
/home/user/documents/file1.txt
/home/user/documents/file2.txt
/home/user/backup/old.txt
$ find /var/log -type f -mtime -7
/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log
$ find /tmp -name "*.tmp" -size +1M
/tmp/large_file.tmp
/tmp/backup.tmp
$ find /home -user user -type f -exec ls -lh {} \;
-rw-r--r-- 1 user user 25 Dec 15 10:30 /home/user/file1.txt
-rw-r--r-- 1 user user 30 Dec 15 10:31 /home/user/file2.txt
$ find /var/www -name "*.php" -exec grep -l "mysql_connect" {} \;
/var/www/app/config.php
/var/www/app/database.php
$ find /home -type f -name "*.log" -mtime +30 -delete
# 删除30天前的日志文件
$ find /usr -name "*.conf" -maxdepth 3
/usr/share/doc/nginx/examples/nginx.conf
/usr/share/apache2/conf-available/security.conf
$ find /home -type f -perm 644 -user user
/home/user/.bashrc
/home/user/.profile
/home/user/documents/readme.txt
压缩解压命令
tar - 打包压缩
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-c | 创建归档 | tar -cf archive.tar dir |
-x | 解压归档 | tar -xf archive.tar |
-t | 列出归档内容 | tar -tf archive.tar |
-v | 显示详细过程 | tar -cvf archive.tar dir |
-f | 指定文件名 | tar -cf archive.tar dir |
-z | 使用 gzip 压缩 | tar -czf archive.tar.gz dir |
-j | 使用 bzip2 压缩 | tar -cjf archive.tar.bz2 dir |
-J | 使用 xz 压缩 | tar -cJf archive.tar.xz dir |
-C | 指定解压目录 | tar -xf archive.tar -C /tmp |
指令输出示例:
$ tar -czf backup.tar.gz documents/
documents/file1.txt
documents/file2.txt
documents/subdir/file3.txt
$ tar -tf backup.tar.gz
documents/
documents/file1.txt
documents/file2.txt
documents/subdir/
documents/subdir/file3.txt
$ tar -xzf backup.tar.gz -C /tmp/
# 解压到/tmp目录
gzip - 压缩文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-d | 解压缩 | gzip -d file.gz |
-v | 显示详细信息 | gzip -v file |
-k | 保留原文件 | gzip -k file |
-l | 显示压缩信息 | gzip -l file.gz |
-r | 递归处理目录 | gzip -r dir |
指令输出示例:
$ gzip -v large_file.txt
large_file.txt: 85.2% -- replaced with large_file.txt.gz
$ gzip -l file.gz
compressed uncompressed ratio uncompressed_name
1234 5678 78.3% file
$ gzip -d file.gz
# 解压文件
unzip - 解压 ZIP 文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-l | 列出压缩包内容 | unzip -l archive.zip |
-d | 指定解压目录 | unzip archive.zip -d /tmp |
-o | 覆盖已存在文件 | unzip -o archive.zip |
-q | 静默模式 | unzip -q archive.zip |
-v | 显示详细信息 | unzip -v archive.zip |
指令输出示例:
$ unzip -l archive.zip
Archive: archive.zip
Length Date Time Name
--------- ---------- ----- ----
123 2023-12-15 10:30 file1.txt
456 2023-12-15 10:31 file2.txt
--------- -------
579 2 files
$ unzip archive.zip -d /tmp/
Archive: archive.zip
inflating: /tmp/file1.txt
inflating: /tmp/file2.txt
系统服务命令
systemctl - 系统服务管理
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
start | 启动服务 | systemctl start nginx |
stop | 停止服务 | systemctl stop nginx |
restart | 重启服务 | systemctl restart nginx |
status | 查看服务状态 | systemctl status nginx |
enable | 开机自启 | systemctl enable nginx |
disable | 禁用自启 | systemctl disable nginx |
reload | 重新加载配置 | systemctl reload nginx |
服务状态说明:
| 状态 | 说明 |
|---|---|
active (running) | 服务正在运行 |
active (exited) | 服务已退出但成功 |
inactive (dead) | 服务未运行 |
failed | 服务启动失败 |
指令输出示例:
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-12-15 10:30:00 CST; 2h ago
Docs: man:nginx(8)
Main PID: 1234 (nginx)
Tasks: 3 (limit: 4915)
Memory: 2.5M
CGroup: /system.slice/nginx.service
├─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1235 nginx: worker process
└─1236 nginx: worker process
$ systemctl start nginx
# 启动nginx服务
$ systemctl enable nginx
# 设置nginx开机自启
service - 传统服务管理
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
start | 启动服务 | service nginx start |
stop | 停止服务 | service nginx stop |
restart | 重启服务 | service nginx restart |
status | 查看状态 | service nginx status |
reload | 重新加载 | service nginx reload |
指令输出示例:
$ service nginx status
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Mon 2023-12-15 10:30:00 CST; 2h ago
Docs: man:nginx(8)
Main PID: 1234 (nginx)
Tasks: 3 (limit: 4915)
Memory: 2.5M
CGroup: /system.slice/nginx.service
├─1234 nginx: master process
├─1235 nginx: worker process
└─1236 nginx: worker process
软件包管理命令
apt - Debian/Ubuntu 包管理
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
update | 更新包列表 | apt update |
upgrade | 升级包 | apt upgrade |
install | 安装包 | apt install nginx |
remove | 删除包 | apt remove nginx |
purge | 完全删除包 | apt purge nginx |
search | 搜索包 | apt search nginx |
show | 显示包信息 | apt show nginx |
list | 列出包 | apt list --installed |
指令输出示例:
$ apt update
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Fetched 379 kB in 2s (189 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
$ apt install nginx
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
nginx-common nginx-core
The following NEW packages will be installed:
nginx nginx-common nginx-core
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,234 kB of archives.
After this operation, 3,456 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
yum - CentOS/RHEL 包管理
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
install | 安装包 | yum install nginx |
remove | 删除包 | yum remove nginx |
update | 更新包 | yum update |
search | 搜索包 | yum search nginx |
info | 显示包信息 | yum info nginx |
list | 列出包 | yum list installed |
clean | 清理缓存 | yum clean all |
指令输出示例:
$ yum install nginx
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.16.1-1.el7 will be installed
--> Finished dependency resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
nginx x86_64 1:1.16.1-1.el7 epel 1.5 M
Transaction Summary
================================================================================
Install 1 Package
Total download size: 1.5 M
Installed size: 5.2 M
Is this ok [y/d/N]: y
磁盘管理命令
fdisk - 磁盘分区管理
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-l | 列出所有分区 | fdisk -l |
-u | 显示扇区信息 | fdisk -u -l |
-s | 显示分区大小 | fdisk -s /dev/sda1 |
常用交互命令:
| 命令 | 说明 |
|---|---|
p | 打印分区表 |
n | 新建分区 |
d | 删除分区 |
w | 写入并退出 |
q | 退出不保存 |
t | 更改分区类型 |
指令输出示例:
$ fdisk -l
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 12345678-1234-1234-1234-123456789012
Device Start End Sectors Size Type
/dev/sda1 2048 209715166 209713119 100G Linux filesystem
mount - 挂载文件系统
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-t | 指定文件系统类型 | mount -t ext4 /dev/sda1 /mnt |
-o | 指定挂载选项 | mount -o ro /dev/sda1 /mnt |
-a | 挂载所有文件系统 | mount -a |
-l | 显示已挂载信息 | mount -l |
常用挂载选项:
| 选项 | 说明 |
|---|---|
ro | 只读挂载 |
rw | 读写挂载 |
noexec | 禁止执行 |
nosuid | 禁止 SUID |
defaults | 默认选项 |
指令输出示例:
$ mount /dev/sda1 /mnt
# 挂载分区到/mnt目录
$ mount -l
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1638400k,mode=755)
/dev/sdb1 on /home type ext4 (rw,relatime)
$ mount -o ro /dev/sdc1 /backup
# 只读挂载备份分区
umount - 卸载文件系统
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 强制卸载 | umount -f /mnt |
-l | 延迟卸载 | umount -l /mnt |
-a | 卸载所有文件系统 | umount -a |
指令输出示例:
$ umount /mnt
# 卸载/mnt目录
$ umount -f /mnt
# 强制卸载,即使有进程在使用
$ umount -l /mnt
# 延迟卸载,等进程结束后自动卸载
远程连接命令
ssh - 安全远程连接
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 指定端口号 | ssh -p 2222 user@host |
-i | 指定私钥文件 | ssh -i ~/.ssh/id_rsa user@host |
-X | 启用 X11 转发 | ssh -X user@host |
-L | 本地端口转发 | ssh -L 8080:localhost:80 user@host |
-D | 动态端口转发 | ssh -D 1080 user@host |
-t | 强制分配伪终端 | ssh -t user@host |
-v | 详细模式 | ssh -v user@host |
指令输出示例:
$ ssh user@192.168.1.100
user@192.168.1.100's password:
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-74-generic x86_64)
$ ssh -p 2222 -i ~/.ssh/id_rsa user@host
# 使用指定端口和私钥连接
$ ssh -L 8080:localhost:80 user@host
# 本地8080端口转发到远程80端口
scp - 安全文件传输
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-r | 递归复制目录 | scp -r dir/ user@host:/path/ |
-P | 指定端口号 | scp -P 2222 file user@host:/path/ |
-i | 指定私钥文件 | scp -i ~/.ssh/id_rsa file user@host:/path/ |
-v | 详细模式 | scp -v file user@host:/path/ |
-C | 启用压缩 | scp -C file user@host:/path/ |
-p | 保留文件属性 | scp -p file user@host:/path/ |
指令输出示例:
$ scp file.txt user@192.168.1.100:/home/user/
user@192.168.1.100's password:
file.txt 100% 25 0.0KB/s 00:00
$ scp -r documents/ user@192.168.1.100:/home/user/
user@192.168.1.100's password:
file1.txt 100% 25 0.0KB/s 00:00
file2.txt 100% 30 0.0KB/s 00:00
rsync - 远程同步
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 归档模式 | rsync -a source/ dest/ |
-v | 详细模式 | rsync -v file dest/ |
-z | 压缩传输 | rsync -z file dest/ |
-r | 递归复制 | rsync -r dir/ dest/ |
-P | 显示进度 | rsync -P file dest/ |
-n | 试运行 | rsync -n -a source/ dest/ |
--delete | 删除目标多余文件 | rsync -a --delete source/ dest/ |
-e | 指定远程 shell | rsync -e "ssh -p 2222" file user@host:/path/ |
指令输出示例:
$ rsync -avz /local/dir/ user@host:/remote/dir/
sending incremental file list
./
file1.txt
file2.txt
sent 1234 bytes received 567 bytes 3602.00 bytes/sec
total size is 8901 speedup is 4.94
$ rsync -avz --delete /backup/ user@host:/backup/
sending incremental file list
deleting old_file.txt
./
new_file.txt
sent 2345 bytes received 678 bytes 6046.00 bytes/sec
total size is 12345 speedup is 2.04
文件传输命令
wget - 下载文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-c | 断点续传 | wget -c http://example.com/file |
-O | 指定输出文件名 | wget -O filename http://example.com/file |
-P | 指定下载目录 | wget -P /downloads/ http://example.com/file |
-r | 递归下载 | wget -r http://example.com/ |
-np | 不跟随父目录链接 | wget -r -np http://example.com/ |
-q | 静默模式 | wget -q http://example.com/file |
-b | 后台下载 | wget -b http://example.com/file |
--limit-rate | 限制下载速度 | wget --limit-rate=1m http://example.com/file |
指令输出示例:
$ wget http://example.com/file.txt
--2023-12-15 14:30:00-- http://example.com/file.txt
Resolving example.com... 93.184.216.34
Connecting to example.com|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1234 (1.2K) [text/plain]
Saving to: 'file.txt'
100%[======================================>] 1,234 --.-K/s in 0.1s
2023-12-15 14:30:00 (12.3 KB/s) - 'file.txt' saved [1234/1234]
$ wget -c -O backup.tar.gz http://example.com/backup.tar.gz
# 断点续传并指定输出文件名
curl - 传输数据
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-o | 保存到文件 | curl -o file http://example.com/file |
-O | 使用远程文件名 | curl -O http://example.com/file.txt |
-L | 跟随重定向 | curl -L http://example.com/redirect |
-H | 添加 HTTP 头 | curl -H "Authorization: Bearer token" http://api.com |
-d | 发送 POST 数据 | curl -d "name=value" http://api.com |
-X | 指定 HTTP 方法 | curl -X POST http://api.com |
-k | 忽略 SSL 证书 | curl -k https://example.com |
-s | 静默模式 | curl -s http://example.com |
-w | 自定义输出格式 | curl -w "%{http_code}" http://example.com |
指令输出示例:
$ curl -o file.txt http://example.com/file
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1234 100 1234 0 0 12340 0 --:--:-- --:--:-- --:--:-- 12340
$ curl -H "Content-Type: application/json" -d '{"key":"value"}' http://api.com
{"status":"success","message":"Data received"}
$ curl -w "HTTP Status: %{http_code}\nTime: %{time_total}s\n" http://example.com
HTTP Status: 200
Time: 0.123s
系统监控命令
htop - 交互式进程查看器
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 指定进程 ID | htop -p 1234 |
-u | 指定用户名 | htop -u username |
-d | 设置刷新间隔 | htop -d 5 |
-C | 隐藏 CPU 使用率 | htop -C |
-t | 显示树状结构 | htop -t |
htop 界面说明:
| 按键 | 功能 |
|---|---|
F1 | 显示帮助 |
F2 | 设置 |
F3 | 搜索进程 |
F4 | 过滤进程 |
F5 | 树状显示 |
F6 | 排序 |
F9 | 杀死进程 |
F10 | 退出 |
指令输出示例:
$ htop
# 显示交互式进程管理器界面
# 显示CPU、内存使用情况,可交互操作
iotop - 监控磁盘 I/O
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-o | 只显示有 I/O 的进程 | iotop -o |
-b | 批处理模式 | iotop -b |
-n | 指定刷新次数 | iotop -n 10 |
-d | 设置刷新间隔 | iotop -d 2 |
-p | 指定进程 ID | iotop -p 1234 |
指令输出示例:
$ iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1234 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd
1235 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % kthreadd
nethogs - 监控网络使用
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-t | 跟踪模式 | nethogs -t |
-d | 设置刷新间隔 | nethogs -d 5 |
-v | 详细模式 | nethogs -v |
-c | 指定刷新次数 | nethogs -c 10 |
指令输出示例:
$ nethogs
# 显示网络使用情况
# 按进程显示网络流量
日志查看命令
journalctl - 查看系统日志
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 实时跟踪日志 | journalctl -f |
-n | 显示最后 N 行 | journalctl -n 50 |
-u | 指定服务 | journalctl -u nginx |
-p | 指定优先级 | journalctl -p err |
-S | 指定开始时间 | journalctl -S "2023-12-15 10:00" |
-U | 指定结束时间 | journalctl -U "2023-12-15 11:00" |
--since | 相对时间 | journalctl --since "1 hour ago" |
--until | 相对时间 | journalctl --until "30 minutes ago" |
优先级说明:
| 优先级 | 说明 |
|---|---|
emerg | 紧急 |
alert | 警报 |
crit | 严重 |
err | 错误 |
warning | 警告 |
notice | 通知 |
info | 信息 |
debug | 调试 |
指令输出示例:
$ journalctl -f
-- Logs begin at Mon 2023-12-15 10:00:00 CST. --
Dec 15 14:30:00 hostname systemd[1]: Started nginx.service.
Dec 15 14:30:01 hostname nginx[1234]: nginx: [notice] 1#1: start worker processes
Dec 15 14:30:02 hostname nginx[1235]: nginx: [notice] 1#1: start worker processes
$ journalctl -u nginx -f
-- Logs begin at Mon 2023-12-15 10:00:00 CST. --
Dec 15 14:30:00 hostname nginx[1234]: nginx: [notice] 1#1: start worker processes
Dec 15 14:30:01 hostname nginx[1235]: nginx: [notice] 1#1: start worker processes
$ journalctl -p err --since "1 hour ago"
-- Logs begin at Mon 2023-12-15 10:00:00 CST. --
Dec 15 14:15:30 hostname kernel: [ERROR] Disk I/O error on /dev/sda1
dmesg - 查看内核日志
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-T | 显示时间戳 | dmesg -T |
-H | 人类可读格式 | dmesg -H |
-w | 实时监控 | dmesg -w |
-k | 显示内核消息 | dmesg -k |
-l | 指定日志级别 | dmesg -l err |
指令输出示例:
$ dmesg -T
[Mon Dec 15 14:30:00 2023] Linux version 5.4.0-74-generic (buildd@lgw01-amd64-038) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021
[Mon Dec 15 14:30:01 2023] Command line: BOOT_IMAGE=/boot/vmlinuz-5.4.0-74-generic root=UUID=12345678-1234-1234-1234-123456789012 ro quiet splash
[Mon Dec 15 14:30:02 2023] KERNEL supported cpus:
[Mon Dec 15 14:30:03 2023] Intel GenuineIntel
环境变量命令
export - 设置环境变量
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 显示所有环境变量 | export -p |
-n | 取消环境变量 | export -n VAR |
指令输出示例:
$ export PATH=$PATH:/usr/local/bin
$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
$ export -p
declare -x HOME="/home/user"
declare -x JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin"
env - 显示环境变量
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 忽略继承的环境变量 | env -i command |
-u | 取消指定变量 | env -u VAR command |
-0 | 以 null 结尾 | env -0 |
指令输出示例:
$ env
USER=user
HOME=/home/user
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
TERM=xterm-256color
$ env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
unset - 删除环境变量
指令输出示例:
$ export TEST_VAR="test value"
$ echo $TEST_VAR
test value
$ unset TEST_VAR
$ echo $TEST_VAR
定时任务命令
crontab - 管理定时任务
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-e | 编辑定时任务 | crontab -e |
-l | 列出定时任务 | crontab -l |
-r | 删除所有任务 | crontab -r |
-u | 指定用户 | crontab -u username -e |
crontab 时间格式:
| 字段 | 说明 | 范围 |
|---|---|---|
| 分钟 | 分钟 | 0-59 |
| 小时 | 小时 | 0-23 |
| 日期 | 日期 | 1-31 |
| 月份 | 月份 | 1-12 |
| 星期 | 星期几 | 0-7 (0 和 7 都是周日) |
常用时间表达式:
| 表达式 | 说明 |
|---|---|
* * * * * | 每分钟执行 |
0 * * * * | 每小时执行 |
0 0 * * * | 每天 0 点执行 |
0 0 * * 0 | 每周日 0 点执行 |
0 0 1 * * | 每月 1 号 0 点执行 |
*/5 * * * * | 每 5 分钟执行 |
指令输出示例:
$ crontab -l
# m h dom mon dow command
0 2 * * * /usr/bin/backup.sh
0 0 * * 0 /usr/bin/weekly-cleanup.sh
*/15 * * * * /usr/bin/check-disk-space.sh
$ crontab -e
# 打开编辑器,可以添加新的定时任务
# 0 3 * * * /usr/bin/daily-backup.sh
at - 一次性定时任务
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 从文件读取命令 | at -f script.sh 10:00 |
-m | 任务完成时发送邮件 | at -m 10:00 |
-l | 列出待执行任务 | at -l |
-d | 删除指定任务 | at -d 1 |
时间格式示例:
| 格式 | 说明 |
|---|---|
10:00 | 今天 10:00 |
10:00 tomorrow | 明天 10:00 |
now + 1 hour | 1 小时后 |
now + 2 days | 2 天后 |
midnight | 午夜 |
noon | 中午 |
指令输出示例:
$ at 10:00
at> echo "Hello World" > /tmp/hello.txt
at> <EOT>
job 1 at Mon Dec 15 10:00:00 2023
$ at -l
1 Mon Dec 15 10:00:00 2023 a user
$ at now + 1 hour
at> /usr/bin/backup.sh
at> <EOT>
job 2 at Mon Dec 15 15:30:00 2023
防火墙命令
ufw - Ubuntu 防火墙
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
enable | 启用防火墙 | ufw enable |
disable | 禁用防火墙 | ufw disable |
status | 查看状态 | ufw status |
allow | 允许端口 | ufw allow 80 |
deny | 拒绝端口 | ufw deny 22 |
delete | 删除规则 | ufw delete allow 80 |
reload | 重新加载 | ufw reload |
指令输出示例:
$ ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
$ ufw allow 8080
Rules updated
Rules updated (v6)
$ ufw deny 3306
Rules updated
Rules updated (v6)
iptables - Linux 防火墙
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-A | 添加规则 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
-D | 删除规则 | iptables -D INPUT -p tcp --dport 80 -j ACCEPT |
-L | 列出规则 | iptables -L |
-F | 清空规则 | iptables -F |
-P | 设置默认策略 | iptables -P INPUT DROP |
-s | 指定源地址 | iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT |
-d | 指定目标地址 | iptables -A OUTPUT -d 8.8.8.8 -j ACCEPT |
-p | 指定协议 | iptables -A INPUT -p tcp -j ACCEPT |
--dport | 目标端口 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
--sport | 源端口 | iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT |
常用链说明:
| 链 | 说明 |
|---|---|
INPUT | 入站流量 |
OUTPUT | 出站流量 |
FORWARD | 转发流量 |
常用动作说明:
| 动作 | 说明 |
|---|---|
ACCEPT | 接受 |
DROP | 丢弃 |
REJECT | 拒绝 |
LOG | 记录日志 |
指令输出示例:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP tcp -- anywhere anywhere tcp dpt:telnet
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许80端口入站流量
$ iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# 允许192.168.1.0/24网段的入站流量
firewall-cmd - CentOS 防火墙
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
--state | 查看状态 | firewall-cmd --state |
--reload | 重新加载 | firewall-cmd --reload |
--list-all | 列出所有规则 | firewall-cmd --list-all |
--add-port | 添加端口 | firewall-cmd --add-port=80/tcp |
--remove-port | 删除端口 | firewall-cmd --remove-port=80/tcp |
--add-service | 添加服务 | firewall-cmd --add-service=http |
--remove-service | 删除服务 | firewall-cmd --remove-service=http |
--permanent | 永久规则 | firewall-cmd --permanent --add-port=80/tcp |
指令输出示例:
$ firewall-cmd --state
running
$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 80/tcp 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich-rules:
$ firewall-cmd --add-port=8080/tcp
success
$ firewall-cmd --permanent --add-service=http
success
文件系统命令
mount - 挂载文件系统
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-t | 指定文件系统类型 | mount -t ext4 /dev/sda1 /mnt |
-o | 指定挂载选项 | mount -o ro /dev/sda1 /mnt |
-a | 挂载所有文件系统 | mount -a |
-l | 显示已挂载信息 | mount -l |
常用挂载选项:
| 选项 | 说明 |
|---|---|
ro | 只读挂载 |
rw | 读写挂载 |
noexec | 禁止执行 |
nosuid | 禁止 SUID |
defaults | 默认选项 |
指令输出示例:
$ mount /dev/sda1 /mnt
# 挂载分区到/mnt目录
$ mount -l
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1638400k,mode=755)
/dev/sdb1 on /home type ext4 (rw,relatime)
$ mount -o ro /dev/sdc1 /backup
# 只读挂载备份分区
umount - 卸载文件系统
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 强制卸载 | umount -f /mnt |
-l | 延迟卸载 | umount -l /mnt |
-a | 卸载所有文件系统 | umount -a |
指令输出示例:
$ umount /mnt
# 卸载/mnt目录
$ umount -f /mnt
# 强制卸载,即使有进程在使用
$ umount -l /mnt
# 延迟卸载,等进程结束后自动卸载
关机命令
shutdown - 关机
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 关机 | shutdown -h now |
-r | 重启 | shutdown -r now |
-c | 取消关机 | shutdown -c |
-t | 设置延迟时间 | shutdown -t 60 |
-k | 发送信号但不关机 | shutdown -k |
指令输出示例:
$ shutdown -h now
# 立即关机
$ shutdown -r now
# 立即重启
$ shutdown -c
# 取消关机
$ shutdown -t 60
# 设置延迟时间为60秒
$ shutdown -k
# 发送信号但不关机
reboot - 重启
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 强制重启 | reboot -f |
-w | 模拟重启 | reboot -w |
-d | 不写入日志 | reboot -d |
-i | 关闭网络接口 | reboot -i |
-n | 不同步磁盘 | reboot -n |
指令输出示例:
$ reboot
# 重启系统
$ reboot -f
# 强制重启
$ reboot -w
# 模拟重启,不实际重启
halt - 停止系统
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 强制停止 | halt -f |
-i | 关闭网络接口 | halt -i |
-n | 不同步磁盘 | halt -n |
-w | 模拟停止 | halt -w |
-d | 不写入日志 | halt -d |
指令输出示例:
$ halt
# 停止系统
$ halt -f
# 强制停止系统
$ halt -w
# 模拟停止,不实际停止
poweroff - 关闭电源
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 强制关闭 | poweroff -f |
-w | 模拟关闭 | poweroff -w |
-d | 不写入日志 | poweroff -d |
-i | 关闭网络接口 | poweroff -i |
-n | 不同步磁盘 | poweroff -n |
指令输出示例:
$ poweroff
# 关闭电源
$ poweroff -f
# 强制关闭电源
$ poweroff -w
# 模拟关闭电源,不实际关闭
init - 切换运行级别
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
0 | 关机 | init 0 |
1 | 单用户模式 | init 1 |
2 | 多用户模式 | init 2 |
3 | 多用户模式(无图形) | init 3 |
5 | 多用户模式(有图形) | init 5 |
6 | 重启 | init 6 |
指令输出示例:
$ init 0
# 关机
$ init 6
# 重启
$ init 3
# 切换到多用户模式(无图形界面)
$ init 5
# 切换到多用户模式(有图形界面)
systemctl - 系统控制
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
poweroff | 关机 | systemctl poweroff |
reboot | 重启 | systemctl reboot |
halt | 停止系统 | systemctl halt |
suspend | 挂起 | systemctl suspend |
hibernate | 休眠 | systemctl hibernate |
指令输出示例:
$ systemctl poweroff
# 关机
$ systemctl reboot
# 重启
$ systemctl halt
# 停止系统
$ systemctl suspend
# 挂起系统
$ systemctl hibernate
# 休眠系统
硬件信息命令
lscpu - 显示 CPU 信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 显示所有核心 | lscpu -p |
-e | 显示扩展信息 | lscpu -e |
-a | 显示所有信息 | lscpu -a |
指令输出示例:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
Stepping: 10
CPU MHz: 1992.000
CPU max MHz: 4100.0000
CPU min MHz: 1200.0000
BogoMIPS: 4192.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-3
NUMA node1 CPU(s): 4-7
lsblk - 显示块设备信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 显示文件系统 | lsblk -f |
-b | 显示块设备 | lsblk -b |
-p | 显示挂载点 | lsblk -p |
-a | 显示所有设备 | lsblk -a |
指令输出示例:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1000.2G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 995.2G 0 part /
└─sda3 8:3 0 5G 0 part /home
hdparm - 显示硬盘信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 显示硬盘信息 | hdparm -i /dev/sda |
-x | 显示扩展信息 | hdparm -x /dev/sda |
-C | 显示缓存信息 | hdparm -C /dev/sda |
-T | 显示传输速度 | hdparm -T /dev/sda |
指令输出示例:
$ hdparm -i /dev/sda
/dev/sda:
Timing cached reads: 12 ms
Timing buffered disk reads: 12 ms
内核模块命令
lsmod - 显示已加载的内核模块
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-e | 显示扩展信息 | lsmod -e |
-a | 显示所有模块 | lsmod -a |
指令输出示例:
$ lsmod
Module Size Used by
modprobe - 加载或卸载内核模块
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-r | 移除模块 | modprobe -r module_name |
-a | 添加模块 | modprobe module_name |
-c | 显示配置文件 | modprobe -c |
指令输出示例:
$ modprobe -r module_name
$ modprobe module_name
$ modprobe -c
系统信息命令
uname - 显示系统信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 显示所有信息 | uname -a |
-s | 显示内核名称 | uname -s |
-n | 显示主机名 | uname -n |
-r | 显示内核版本 | uname -r |
-v | 显示内核编译信息 | uname -v |
-m | 显示硬件架构 | uname -m |
-p | 显示处理器类型 | uname -p |
-i | 显示硬件平台 | uname -i |
-o | 显示操作系统 | uname -o |
指令输出示例:
$ uname -a
Linux hostname 5.4.0-74-generic #83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ uname -r
5.4.0-74-generic
$ uname -m
x86_64
hostname - 显示或设置主机名
显示命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 显示完整主机名 | hostname -f |
-s | 显示短主机名 | hostname -s |
-d | 显示域名 | hostname -d |
-i | 显示 IP 地址 | hostname -i |
-y | 显示 NIS 域名 | hostname -y |
指令输出示例:
$ hostname
hostname
$ hostname -f
hostname.example.com
$ hostname -i
192.168.1.100
设置主机名命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
set | 临时设置主机名 | hostname newname |
ctl | 永久设置主机名(需 root 权限,推荐) | hostnamectl set-hostname newname |
-F | 从文件读取主机名 | hostname -F /etc/hostname |
设置主机名指令输出示例:
# 永久设置主机名(推荐方法)
$ sudo hostnamectl set-hostname myserver
$ hostname
myserver
uptime - 显示系统运行时间
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 显示运行时间 | uptime -p |
-s | 显示启动时间 | uptime -s |
-V | 显示版本信息 | uptime -V |
指令输出示例:
$ uptime
14:30:45 up 2 days, 3:45, 2 users, load average: 0.52, 0.58, 0.59
$ uptime -p
up 2 days, 3 hours, 45 minutes
$ uptime -s
2023-12-13 10:45:00
who - 显示当前登录用户
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 显示所有信息 | who -a |
-b | 显示系统启动时间 | who -b |
-d | 显示死进程 | who -d |
-H | 显示标题行 | who -H |
-l | 显示登录进程 | who -l |
-m | 显示当前用户 | who -m |
-q | 显示用户数量 | who -q |
-r | 显示运行级别 | who -r |
-s | 显示简短信息 | who -s |
-T | 显示终端状态 | who -T |
-u | 显示空闲时间 | who -u |
-w | 显示终端写状态 | who -w |
指令输出示例:
$ who
user pts/0 2023-12-15 10:30 (192.168.1.100)
user pts/1 2023-12-15 14:25 (192.168.1.101)
$ who -a
system boot 2023-12-13 10:45
run-level 5 2023-12-13 10:45
user + pts/0 2023-12-15 10:30 . 1234 (192.168.1.100)
user + pts/1 2023-12-15 14:25 . 5678 (192.168.1.101)
w - 显示当前登录用户和系统负载
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 不显示标题行 | w -h |
-s | 显示简短格式 | w -s |
-f | 显示远程主机 | w -f |
-i | 显示 IP 地址 | w -i |
-u | 显示用户信息 | w -u |
指令输出示例:
$ w
14:30:45 up 2 days, 3:45, 2 users, load average: 0.52, 0.58, 0.59
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user pts/0 192.168.1.100 10:30 4:05m 0.05s 0.05s bash
user pts/1 192.168.1.101 14:25 5:05m 0.02s 0.02s w
last - 显示用户登录历史
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 显示指定行数 | last -n 10 |
-f | 指定日志文件 | last -f /var/log/wtmp |
-R | 不显示主机名 | last -R |
-x | 显示系统关闭 | last -x |
-a | 显示主机名 | last -a |
指令输出示例:
$ last -n 5
user pts/1 192.168.1.101 Wed Dec 15 14:25 still logged in
user pts/0 192.168.1.100 Wed Dec 15 10:30 still logged in
user pts/1 192.168.1.101 Wed Dec 15 09:15 - 14:20 (05:05)
user pts/0 192.168.1.100 Tue Dec 14 16:30 - 18:45 (02:15)
user pts/1 192.168.1.101 Tue Dec 14 14:20 - 16:25 (02:05)
wtmp begins Tue Dec 14 14:20:01 2023
date - 显示或设置系统时间
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-d | 显示指定日期 | date -d "2023-12-15" |
-s | 设置系统时间 | date -s "2023-12-15 14:30:00" |
-u | 显示 UTC 时间 | date -u |
-R | 显示 RFC 格式 | date -R |
-I | 显示 ISO 格式 | date -I |
指令输出示例:
$ date
Wed Dec 15 14:30:45 CST 2023
$ date -R
Wed, 15 Dec 2023 14:30:45 +0800
$ date -I
2023-12-15
$ date -d "2023-12-15"
Fri Dec 15 00:00:00 CST 2023
cal - 显示日历
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-1 | 显示当月 | cal -1 |
-3 | 显示前月、当月、后月 | cal -3 |
-s | 以周日为第一天 | cal -s |
-m | 以周一为第一天 | cal -m |
-j | 显示儒略日 | cal -j |
-y | 显示整年 | cal -y |
指令输出示例:
$ cal
December 2023
Su Mo Tu We Th Fr Sa
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
$ cal -3
November 2023 December 2023 January 2024
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 23 24 25 26 27 28 29 28 29 30 31
30 31
常用命令速查表
| 命令 | 功能 | 常用参数 |
|---|---|---|
ls | 列出目录内容 | -la, -lh, -R |
cd | 切换目录 | -, ~, .. |
pwd | 显示当前目录 | 无 |
cp | 复制文件 | -r, -v, -p |
mv | 移动文件 | -i, -v |
rm | 删除文件 | -r, -f, -i |
mkdir | 创建目录 | -p, -v |
rmdir | 删除空目录 | -p |
cat | 查看文件内容 | -n, -A |
less | 分页查看文件 | -N, -S |
head | 查看文件开头 | -n, -c |
tail | 查看文件结尾 | -n, -f |
grep | 搜索文本 | -i, -r, -n |
find | 查找文件 | -name, -type, -mtime |
sed | 流编辑器 | -i, -n, -e |
awk | 文本处理 | -F, -v, -f |
tar | 打包压缩 | -c, -x, -z, -f |
gzip | 压缩文件 | -d, -v |
ssh | 远程连接 | -p, -i, -X, -L |
scp | 远程复制 | -r, -P, -i |
rsync | 远程同步 | -a, -v, -z, --delete |
wget | 下载文件 | -c, -O, -P, -r |
curl | 传输数据 | -o, -O, -L, -H, -d |
top | 进程监控 | -p, -u, -d |
htop | 交互式进程监控 | -p, -u, -d |
ps | 显示进程 | aux, -ef, -p |
kill | 终止进程 | -9, -15, -l |
df | 磁盘空间 | -h, -T, -i |
free | 内存使用 | -h, -s, -t |
netstat | 网络连接 | -tulpn, -a |
ping | 网络连通性 | -c, -i, -s |
systemctl | 服务管理 | start, stop, status |
service | 传统服务管理 | start, stop, restart |
apt | Ubuntu 包管理 | install, update, upgrade |
yum | CentOS 包管理 | install, update, remove |
fdisk | 磁盘分区 | -l, -u |
mount | 挂载文件系统 | -t, -o, -a |
umount | 卸载文件系统 | -f, -l, -a |
chmod | 修改权限 | -R, -v, -c |
chown | 修改所有者 | -R, -v, -c |
useradd | 创建用户 | -m, -s, -g, -G |
passwd | 设置密码 | -l, -u, -d, -S |
journalctl | 系统日志 | -f, -n, -u, -p |
dmesg | 内核日志 | -T, -H, -w |
export | 环境变量 | -p, -n |
env | 显示环境变量 | -i, -u |
unset | 删除环境变量 | 无 |
crontab | 定时任务 | -e, -l, -r |
at | 一次性任务 | -f, -l, -d |
ufw | Ubuntu 防火墙 | enable, status, allow |
iptables | Linux 防火墙 | -A, -D, -L, -F |
firewall-cmd | CentOS 防火墙 | --state, --reload, --add-port |
shutdown | 关机 | -h, -r, -c |
reboot | 重启 | -f, -w |
halt | 停止系统 | -f, -w |
poweroff | 关闭电源 | -f, -w |
init | 切换运行级别 | 0, 1, 3, 5, 6 |
lscpu | 显示 CPU 信息 | -p, -e, -a |
lsblk | 显示块设备信息 | -f, -b, -p, -a |
hdparm | 显示硬盘信息 | -i, -x, -C, -T |
lsmod | 显示内核模块 | -e, -a |
modprobe | 加载或卸载模块 | -r, -a, -c |
uname | 显示系统信息 | -a, -r, -m |
hostname | 显示主机名 | -f, -i |
uptime | 显示运行时间 | -p, -s |
who | 显示登录用户 | -a, -H, -u |
w | 显示用户和负载 | -h, -s |
last | 显示登录历史 | -n, -f |
date | 显示系统时间 | -d, -s, -R |
cal | 显示日历 | -1, -3, -y |
