整理下热门Linux常用命令

一、基础命令

sudo 权限提升

sudo 是 Linux 系统中用于以超级用户(root)权限执行命令的工具。

常用参数

  • -u 指定用户
  • -i 登录为 root 用户
  • -s 执行 shell
  • -b 在后台执行

使用示例

# 以 root 权限执行命令
sudo nginx -t
​
# 以 root 权限打开 shell
sudo -i
​
# 以指定用户执行命令
sudo -u nginx nginx -t
​
# 编辑系统文件
sudo vi /etc/nginx/nginx.conf
​
# 查看sudo权限
sudo -l

为什么要用 sudo

  • 系统配置文件通常需要 root 权限修改
  • 服务管理需要 root 权限
  • 日志文件需要 root 权限查看
  • 端口 80、443 需要 root 权限绑定

chmod 文件权限

chmod 用于修改文件或目录的权限。

权限说明

  • r (read):读权限,数值 4
  • w (write):写权限,数值 2
  • x (execute):执行权限,数值 1

常用参数

  • -R 递归修改
  • -v 显示详细信息
  • -c 类似 -v,但只显示修改过的文件

使用示例

# 数字方式:755 = rwxr-xr-x
chmod 755 /path/to/file
​
# 符号方式:给所有用户添加执行权限
chmod +x /path/to/script.sh
​
# 移除其他用户的写权限
chmod o-w /path/to/file
​
# 给所有者添加写权限
chmod u+w /path/to/file
​
# 递归修改目录权限
chmod -R 755 /var/www/html
​
# 配置文件权限(所有者可读写,其他人只读)
chmod 644 /etc/nginx/nginx.conf
​
# 目录权限(可执行)
chmod 755 /var/www/html
​
# 脚本文件(可执行)
chmod +x deploy.sh

常用权限值

  • 644:文件(rw-r--r--),所有者可读写,其他人只读
  • 755:目录/脚本(rwxr-xr-x),所有者可读写执行,其他人读执行
  • 600:敏感文件(rw-------),只有所有者可读写
  • 777:完全开放(不推荐生产环境使用)

chown 文件所有者

chown 用于修改文件或目录的所有者和所属组。

常用参数

  • -R 递归修改
  • -v 显示详细信息

使用示例

# 修改文件所有者
sudo chown nginx:nginx /var/www/html/index.html
​
# 修改目录所有者
sudo chown www-data:www-data /var/www/html
​
# 只修改所有者(不修改组)
sudo chown nginx /var/www/html
​
# 只修改组
sudo chown :nginx /var/www/html
​
# 递归修改目录及其内容
sudo chown -R nginx:nginx /var/www/html
​
# 修改为当前用户
sudo chown $USER:$USER /path/to/file

useradd 用户管理

useradd 用于创建新用户。

常用参数

  • -m 创建用户主目录
  • -s 指定 shell
  • -g 指定主组
  • -G 指定附加组
  • -d 指定主目录

使用示例

# 创建运行用户
sudo useradd -r -s /sbin/nologin nginx
​
# 创建普通用户
sudo useradd -m -s /bin/bash username
​
# 创建用户并指定主目录
sudo useradd -m -d /home/custom username
​
# 创建用户并添加到多个组
sudo useradd -m -G sudo,docker username
​
# 设置用户密码
sudo passwd username
​
# 删除用户
sudo userdel username
​
# 删除用户及其主目录
sudo userdel -r username
​
# 查看用户信息
id username

cp 复制文件

cp 用于复制文件或目录。

常用参数

  • -r 递归复制目录
  • -p 保留文件属性
  • -v 显示详细信息
  • -i 覆盖前提示
  • -a 归档模式(保留所有属性)

使用示例

# 复制文件
cp file1.txt file2.txt
​
# 复制文件到目录
cp file.txt /path/to/directory/
​
# 复制目录
cp -r /source/dir /destination/dir
​
# 保留文件属性复制
cp -p file.txt file_backup.txt
​
# 覆盖前提示
cp -i file.txt /path/to/existing_file.txt
​
# 复制多个文件到目录
cp file1.txt file2.txt file3.txt /path/to/directory/
​
# 配置备份
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup

mv 移动/重命名文件

mv 用于移动或重命名文件。

常用参数

  • -i 覆盖前提示
  • -v 显示详细信息
  • -u 只更新较旧的文件

使用示例

# 重命名文件
mv oldname.txt newname.txt
​
# 移动文件到目录
mv file.txt /path/to/directory/
​
# 移动目录
mv /source/dir /destination/dir
​
# 配置备份
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

mkdir 创建目录

mkdir 用于创建目录。

常用参数

  • -p 递归创建父目录
  • -v 显示详细信息

使用示例

# 创建目录
mkdir /path/to/directory
​
# 递归创建多级目录
mkdir -p /path/to/nested/directory
​
# 创建多个目录
mkdir dir1 dir2 dir3
​
# 创建日志目录
sudo mkdir -p /var/log/nginx

rm 删除文件

rm 用于删除文件或目录。

常用参数

  • -r 递归删除目录
  • -f 强制删除(不提示)
  • -i 删除前提示
  • -v 显示详细信息

使用示例

# 删除文件
rm file.txt
​
# 递归删除目录
rm -r /path/to/directory
​
# 强制递归删除(不提示)
rm -rf /path/to/directory
​
# 删除前提示
rm -i file.txt
​
# 删除空目录
rmdir empty_directory
​
**警告**:rm -rf 命令非常危险,特别是删除系统目录!使用前务必确认路径正确。

cat 查看文件内容

cat 用于查看文件内容。

常用参数

  • -n 显示行号
  • -b 显示行号(空白行不编号)
  • -s 压缩多个空白行为一行

使用示例

# 查看文件内容
cat /etc/nginx/nginx.conf

# 查看文件并显示行号
cat -n /etc/nginx/nginx.conf

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

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

# 查看文件并翻页
cat /etc/nginx/nginx.conf | less

tail 查看文件尾部

tail 用于查看文件尾部内容,常用于查看日志。

常用参数

  • -f 实时跟踪文件变化
  • -n 指定显示行数
  • -F 类似 -f,但文件被删除后会重试

使用示例

# 查看文件最后 10 行
tail /var/log/nginx/access.log

# 查看文件最后 100 行
tail -n 100 /var/log/nginx/access.log

# 实时跟踪日志变化
tail -f /var/log/nginx/access.log

# 实时跟踪多个日志文件
tail -f /var/log/nginx/*.log

head 查看文件头部

head 用于查看文件头部内容。

常用参数

  • -n 指定显示行数

使用示例

# 查看文件前 10 行
head /etc/nginx/nginx.conf

# 查看文件前 50 行
head -n 50 /etc/nginx/nginx.conf

grep 搜索文本

grep 用于在文件中搜索文本。

常用参数

  • -i 忽略大小写
  • -r 递归搜索
  • -n 显示行号
  • -v 反向匹配(显示不匹配的行)
  • -E 使用正则表达式

使用示例

# 在文件中搜索
grep "error" /var/log/nginx/error.log

# 忽略大小写搜索
grep -i "error" /var/log/nginx/error.log

# 显示行号
grep -n "error" /var/log/nginx/error.log

# 递归搜索目录
grep -r "server_name" /etc/nginx/

# 正则表达式搜索
grep -E "error|warn|fail" /var/log/nginx/error.log

# 统计匹配行数
grep -c "200" /var/log/nginx/access.log

# 管道配合使用
ps aux | grep nginx

less 分页查看

less 用于分页查看文件内容,可以上下翻页。

常用参数

  • -N 显示行号
  • -S 不换行

使用示例

# 分页查看文件
less /etc/nginx/nginx.conf

# 查看大日志文件
less /var/log/nginx/access.log

# 搜索内容(在 less 中按 /)
# 按 n 查找下一个,N 查找上一个
# 按 q 退出

快捷键

  • 空格 / f:向下翻页
  • b:向上翻页
  • j / :向下一行
  • k / :向上一行
  • /关键词:搜索
  • n:下一个搜索结果
  • N:上一个搜索结果
  • q:退出

find 查找文件

find 用于在目录中查找文件。

常用参数

  • -name 按文件名查找
  • -type 按文件类型查找(f=文件,d=目录)
  • -size 按文件大小查找
  • -mtime 按修改时间查找
  • -exec 对查找到的文件执行命令

使用示例

# 按名称查找文件
find /etc -name "nginx.conf"

# 查找目录
find /var -type d -name "log"

# 查找大于 100M 的文件
find /var/log -size +100M

# 查找 7 天前修改的文件
find /var/log -mtime +7

# 查找并删除日志文件
find /var/log -name "*.log" -mtime +30 -delete

# 查找空目录
find /path -type d -empty

二、文件操作

zip 文件压缩

zip 是常用的压缩工具,但默认可能没安装。

安装 zip

# Ubuntu/Debian
sudo apt-get install zip unzip

# CentOS/RHEL
sudo yum install zip unzip

# macOS
brew install zip

常用参数

  • -r 递归压缩目录
  • -q 静默模式
  • -e 加密
  • -9 最高压缩率

使用示例

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

# 递归压缩目录
zip -r archive.zip /path/to/directory

# 排除某些文件
zip -r archive.zip /path/to/directory -x "*.log"

# 查看压缩包内容(不解压)
unzip -l archive.zip

# 解压到指定目录
unzip archive.zip -d /path/to/destination

tar 归档

tar 是 Linux 上常用的归档工具。

常用参数

  • -c 创建归档
  • -x 解压归档
  • -v 显示详细信息
  • -f 指定文件名
  • -z 使用 gzip 压缩
  • -j 使用 bzip2 压缩

使用示例

# 创建 .tar.gz 归档
tar -czf archive.tar.gz /path/to/directory

# 解压 .tar.gz 归档
tar -xzf archive.tar.gz

# 解压到指定目录
tar -xzf archive.tar.gz -C /path/to/destination

# 查看 .tar.gz 内容(不解压)
tar -tzf archive.tar.gz

# 创建 .tar.bz2 归档(压缩率更高)
tar -cjf archive.tar.bz2 /path/to/directory

# 解压 .tar.bz2 归档
tar -xjf archive.tar.bz2

三、系统监控

top 进程监控

top 实时显示系统进程和资源使用情况。

使用示例

# 启动 top
top

# 指定更新间隔(3秒)
top -d 3

# 监控指定用户
top -u nginx

# 监控指定进程
top -p 1234

交互命令

  • P:按 CPU 排序
  • M:按内存排序
  • N:按 PID 排序
  • q:退出
  • k:杀死进程(输入 PID)
  • r:重新设置进程优先级

htop 增强 top

htop 是 top 的增强版,界面更友好。

安装 htop

# Ubuntu/Debian
sudo apt-get install htop

# CentOS/RHEL
sudo yum install htop

# macOS
brew install htop

使用示例

htop

特点

  • 彩色显示
  • 鼠标操作
  • 可视化 CPU、内存、交换分区
  • F3 搜索进程
  • F9 杀死进程
  • F10 退出

ps 查看进程

ps 用于查看当前运行的进程。

常用参数

  • -aux 显示所有进程(BSD 格式)
  • -ef 显示所有进程(Unix 格式)
  • -e 显示所有进程
  • -f 显示完整格式
  • --sort 排序

使用示例

# 查看所有进程
ps aux

# 查看指定进程
ps aux | grep nginx

# 查看进程树
ps axjf

# 按 CPU 使用率排序
ps aux --sort=-%cpu | head -n 10

# 按内存使用率排序
ps aux --sort=-%mem | head -n 10

# 查看指定用户的进程
ps -u nginx

# 查看进程的完整信息
ps -f -p 1234

输出字段说明

  • USER:进程所属用户
  • PID:进程 ID
  • %CPU:CPU 使用率
  • %MEM:内存使用率
  • VSZ:虚拟内存大小(KB)
  • RSS:常驻内存大小(KB)
  • STAT:进程状态
  • START:启动时间
  • TIME:累计 CPU 时间
  • COMMAND:命令名称

free 内存使用

free 用于查看内存使用情况。

常用参数

  • -h 以人类可读格式显示(GB/MB)
  • -b 以字节为单位
  • -m 以 MB 为单位
  • -g 以 GB 为单位
  • -s 持续监控(指定间隔秒数)

使用示例

# 查看内存使用
free -h

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

# 以 MB 为单位显示
free -m

# 以 GB 为单位显示
free -g

输出说明

  • total:总内存
  • used:已使用内存
  • free:空闲内存
  • shared:共享内存
  • buff/cache:缓冲和缓存
  • available:可用内存

df 磁盘使用

df 用于查看磁盘使用情况。

常用参数

  • -h 以人类可读格式显示
  • -T 显示文件系统类型
  • -i 显示 inode 使用情况

使用示例

# 查看磁盘使用
df -h

# 查看指定目录
df -h /var/log

# 查看文件系统类型
df -Th

# 查看 inode 使用情况
df -i

# 查看所有文件系统
df -a

du 目录大小

du 用于查看目录占用的磁盘空间。

常用参数

  • -h 以人类可读格式显示
  • -s 只显示总计
  • --max-depth 设置显示深度

使用示例

# 查看当前目录大小
du -sh .

# 查看指定目录大小
du -sh /var/log

# 查看子目录大小
du -h --max-depth=1 /var/log

# 查看最大的 10 个目录
du -h /var/log | sort -rh | head -n 10

# 排除某些目录
du -h --exclude="*.log" /path/to/dir

uptime 系统运行时间

uptime 用于查看系统运行时间和平均负载。

使用示例

uptime

输出说明

  • 当前时间
  • 系统运行时间
  • 登录用户数
  • 1分钟、5分钟、15分钟平均负载

w 登录用户

w 用于查看已登录用户和他们在做什么。

使用示例

w

输出说明

  • 登录用户
  • 终端
  • 远程主机
  • 登录时间
  • 空闲时间
  • CPU 使用
  • 当前正在执行的命令

四、网络相关

curl 测试接口

curl 是常用的命令行工具,用于测试 HTTP 接口。

常用参数

  • -X 请求方法
  • -H 添加请求头
  • -d 发送 POST 数据
  • -v 显示详细信息
  • -o 保存到文件
  • -I 只显示响应头
  • -k 忽略证书错误

使用示例

# GET 请求
curl http://example.com/api

# POST JSON 数据
curl -X POST http://example.com/api \
  -H "Content-Type: application/json" \
  -d '{"key":"value"}'

# 发送文件
curl -X POST http://example.com/upload \
  -F "file=@/path/to/file.txt"

# 包含认证信息
curl -u username:password http://example.com/api

# 只查看响应头
curl -I http://example.com

# 保存响应到文件
curl -o output.html http://example.com

# 查看详细请求过程(调试用)
curl -v http://example.com/api

# 忽略 SSL 证书错误
curl -k https://example.com

# 设置超时时间
curl -m 10 http://example.com

wget 下载文件

wget 用于从网络下载文件。

安装 wget

# Ubuntu/Debian
sudo apt-get install wget

# CentOS/RHEL
sudo yum install wget

# macOS
brew install wget

常用参数

  • -O 保存为指定文件名
  • -P 保存到指定目录
  • -c 断点续传
  • -b 后台下载
  • -r 递归下载
  • --limit-rate 限制下载速度

使用示例

# 下载文件
wget http://example.com/file.zip

# 下载并重命名
wget -O newname.zip http://example.com/file.zip

# 下载到指定目录
wget -P /path/to/directory http://example.com/file.zip

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

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

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

# 递归下载整个网站
wget -r -np -k http://example.com/

ping 网络连通性测试

ping 用于测试网络连通性。

常用参数

  • -c 发送次数
  • -i 间隔时间(秒)
  • -s 设置数据包大小
  • -W 超时时间(秒)

使用示例

# 测试网络连通性
ping www.baidu.com

# 发送 4 次后停止
ping -c 4 www.baidu.com

# 设置超时时间为 2 秒
ping -W 2 www.baidu.com

# 间隔 1 秒发送一次
ping -i 1 www.baidu.com

netstat 网络状态

netstat 用于查看网络连接状态。

使用示例

# 查看所有监听端口
sudo netstat -tlnp

# 查看 TCP 连接
sudo netstat -tnp

# 查看 80 端口占用情况
sudo netstat -tlnp | grep :80

# 统计各状态连接数
sudo netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c

# 持续监控网络连接
sudo watch -n 1 'netstat -an | grep :80 | wc -l'

ss 网络状态(推荐)

ss 是 netstat 的现代替代品,速度更快。

使用示例

# 查看所有监听端口
sudo ss -tlnp

# 查看 80 端口占用
sudo ss -tlnp | grep :80

# 查看所有 TCP 连接
sudo ss -tnp

# 查看进程打开的所有端口
sudo ss -p

# 显示套接字统计信息
sudo ss -s

# 查看连接到特定端口的进程
sudo ss -tlnp | grep :80 | awk '{print $6}' | sort -u

lsof 查看打开的文件

lsof 可以查看哪些进程打开了哪些端口。

使用示例

# 查看所有监听的端口
sudo lsof -i -P -n

# 查看 80 端口被哪个进程占用
sudo lsof -i :80

# 查看指定进程打开的文件
sudo lsof -p 1234

# 查看 Nginx 进程打开的所有文件
sudo lsof -c nginx

# 查看 TCP 连接
sudo lsof -i TCP

# 查看删除但还被占用的文件
sudo lsof +L1

ip 地址管理

ip 是现代 Linux 网络配置工具。

使用示例

# 查看所有网络接口
ip addr show
# 或
ip a

# 查看路由表
ip route show

# 查看特定接口的 IP 地址
ip addr show eth0

# 添加临时 IP 地址
sudo ip addr add 192.168.1.100/24 dev eth0

# 删除 IP 地址
sudo ip addr del 192.168.1.100/24 dev eth0

# 查看邻居信息(ARP 表)
ip neigh show

iptables 防火墙

iptables 用于配置防火墙规则。

使用示例

# 查看所有规则
sudo iptables -L -n -v

# 查看 NAT 规则
sudo iptables -t nat -L -n -v

# 清空所有规则
sudo iptables -F

# 开放 80 端口
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

# 开放 443 端口
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

# 保存规则
# Ubuntu/Debian
sudo netfilter-persistent save
# CentOS/RHEL 7/8
sudo iptables-save > /etc/sysconfig/iptables

# 添加端口转发
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

五、服务管理

systemctl 服务管理

systemctl 用于管理 systemd 服务。

使用示例

# 启动服务
sudo systemctl start nginx

# 停止服务
sudo systemctl stop nginx

# 重启服务
sudo systemctl restart nginx

# 平滑重启(不断开连接)
sudo systemctl reload nginx

# 查看服务状态
sudo systemctl status nginx

# 开机自启
sudo systemctl enable nginx

# 关闭开机自启
sudo systemctl disable nginx

# 查看是否开机自启
sudo systemctl is-enabled nginx

# 查看服务启动失败日志
sudo journalctl -u nginx -e

# 查看所有服务状态
sudo systemctl list-units --type=service --state=running

service 服务管理(旧版)

service 是旧版的服务管理命令,兼容 SysVinit。

使用示例

# 启动服务
sudo service nginx start

# 停止服务
sudo service nginx stop

# 重启服务
sudo service nginx restart

# 查看服务状态
sudo service nginx status

六、性能测试

ab 压力测试

ab (Apache Bench) 是常用的 HTTP 压力测试工具。

安装 ab

# Ubuntu/Debian
sudo apt-get install apache2-utils

# CentOS/RHEL
sudo yum install httpd-tools

# macOS
brew install httpd

使用示例

# 发送 100 个请求,并发数 10
ab -n 100 -c 10 http://example.com/

# 发送 1000 个请求,并发数 50,保存详细信息
ab -n 1000 -c 50 -g result.txt http://example.com/

# 设置超时时间
ab -n 100 -c 10 -t 30 http://example.com/

# POST 请求测试
ab -n 100 -c 10 -p data.txt -T application/json http://example.com/api

wrk 压力测试

wrk 是更现代的性能测试工具。

安装 wrk

# Ubuntu/Debian
sudo apt-get install wrk

# CentOS/RHEL
sudo yum install wrk

# macOS
brew install wrk

使用示例

# 12 线程,连接数 100,持续 30 秒
wrk -t12 -c100 -d30s http://example.com/

# 使用 POST 请求
wrk -t12 -c100 -d30s -s post.lua http://example.com/api

七、问题排查

查看 CPU 占用

# 查看整体 CPU 使用情况
top

# 查看所有进程 CPU 使用率
ps aux --sort=-%cpu | head -n 10

# 持续监控 CPU(每 2 秒)
watch -n 2 "ps aux --sort=-%cpu | head -n 10"

# 查看某个进程的 CPU 使用
top -p 1234

# 查看每个 CPU 核心的使用情况
mpstat -P ALL

查看内存占用

# 查看内存使用情况
free -h

# 查看进程内存占用排序
ps aux --sort=-%mem | head -n 10

# 持续监控内存
watch -n 2 free -h

# 查看某个进程的内存占用
ps -o pid,ppid,cmd,%mem,%cpu -p 1234

查看磁盘占用

# 查看磁盘使用情况
df -h

# 查看某个目录大小
du -sh /var/log

# 查看 Inode 使用情况
df -i

# 查找最大的文件
find /var/log -type f -exec du -h {} + | sort -rh | head -n 10

# 查找最大的目录
du -h --max-depth=2 /var/log | sort -rh | head -n 10

查看网络问题

# 测试网络连通性
ping -c 4 www.baidu.com

# 查看 DNS 解析
nslookup www.baidu.com

# 跟踪路由
traceroute www.baidu.com

# 查看端口占用
sudo netstat -tlnp | grep :80
sudo ss -tlnp | grep :80
sudo lsof -i :80

# 测试端口连通性
telnet 192.168.1.1 80
nc -zv 192.168.1.1 80

# 查看网络连接数
sudo netstat -an | grep ESTABLISHED | wc -l

# 查看各状态 TCP 连接数
sudo netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c

查看系统负载

# 查看系统负载
uptime
top
htop

# 查看系统运行时间
uptime

# 查看登录用户
w
who

查看进程问题

# 查看所有进程
ps aux

# 查找僵尸进程
ps aux | grep Z

# 查看指定进程
ps aux | grep nginx

# 查看进程树
ps axjf

# 查看父进程和子进程
pstree -p

# 杀死进程
sudo kill 1234

# 强制杀死进程
sudo kill -9 1234

# 杀死所有同名进程
sudo killall nginx

查看日志问题

# 实时查看日志
sudo tail -f /var/log/nginx/error.log

# 查看最近 100 行日志
sudo tail -n 100 /var/log/nginx/error.log

# 搜索错误日志
sudo grep "error" /var/log/nginx/error.log

# 搜索所有日志文件
sudo grep -r "error" /var/log/nginx/

# 查看系统日志
sudo journalctl -xe

# 查看某个服务的日志
sudo journalctl -u nginx -f

# 查看内核日志
sudo dmesg | tail

八、常用组合命令

快速排查问题

# 1. 检查配置文件语法
sudo nginx -t

# 2. 查看服务状态
sudo systemctl status nginx

# 3. 查看错误日志
sudo tail -f /var/log/nginx/error.log

# 4. 查看监听端口
sudo netstat -tlnp | grep nginx

# 5. 测试本地访问
curl http://localhost

# 6. 检查进程是否存在
ps aux | grep nginx | grep -v grep

性能监控组合

# 查看 CPU、内存、负载
top

# 查看进程和资源使用
htop

# 实时监控资源
vmstat 1

# 查看 I/O 状态
iostat -x 1

# 查看详细系统信息
uname -a

相关文章


最后修改:2026 年 01 月 25 日
如果觉得我的文章对你有用,请随意赞赏