整理下热门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):读权限,数值 4w(write):写权限,数值 2x(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/fileuseradd 用户管理
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 usernamecp 复制文件
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.backupmv 移动/重命名文件
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.bakmkdir 创建目录
mkdir 用于创建目录。
常用参数:
-p递归创建父目录-v显示详细信息
使用示例:
# 创建目录
mkdir /path/to/directory
# 递归创建多级目录
mkdir -p /path/to/nested/directory
# 创建多个目录
mkdir dir1 dir2 dir3
# 创建日志目录
sudo mkdir -p /var/log/nginxrm 删除文件
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 | lesstail 查看文件尾部
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/*.loghead 查看文件头部
head 用于查看文件头部内容。
常用参数:
-n指定显示行数
使用示例:
# 查看文件前 10 行
head /etc/nginx/nginx.conf
# 查看文件前 50 行
head -n 50 /etc/nginx/nginx.confgrep 搜索文本
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 nginxless 分页查看
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/destinationtar 归档
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 -adu 目录大小
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/diruptime 系统运行时间
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.comwget 下载文件
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.comnetstat 网络状态
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 -ulsof 查看打开的文件
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 +L1ip 地址管理
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 showiptables 防火墙
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=runningservice 服务管理(旧版)
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/apiwrk 压力测试
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相关文章: