Linux 常用命令速查

面向运维和开发者的 Linux 命令快速参考,覆盖日常操作、文本处理、网络排查、系统诊断等常见场景。

一、 文件与目录操作

命令说明常用示例
ls列出目录内容ls -l (详细信息), ls -lh (人类可读), ls -a (含隐藏文件), ls -lt (按时间排序)
cd切换目录cd /optcd ..cd ~cd - (回到上一个目录)
pwd显示当前路径pwd
mkdir创建目录mkdir testmkdir -p a/b/c (递归创建)
rm删除文件或目录rm filerm -rf dir (慎用), rm -i file (删除前确认)
cp复制cp a bcp -r dir1 dir2cp -p file1 file2 (保留属性)
mv移动或重命名mv old newmv file /tmp/
touch创建空文件或更新时间戳touch test.log
ln创建链接ln -s /src /link (软链接), ln /src /link (硬链接)
stat查看文件详细元信息stat file.txt (显示 inode、权限、时间戳等)
realpath解析文件真实路径realpath script.sh (显示绝对路径)
rename批量重命名rename 's/\.txt$/\.md/' *.txt (Perl 风格)

二、 文件内容查看与编辑

命令说明常用示例
cat查看文件全部内容cat /etc/hostscat file1 file2 > merged
tac反向查看(从最后一行开始)tac file.log
less分页查看大文件less /var/log/syslog (/ 搜索, q 退出, g 到开头, G 到末尾)
more分页查看(较老)more file (空格翻页, 回车下一行)
head查看文件开头head -n 20 file.loghead -c 100 file (前100字节)
tail查看文件末尾tail -f app.log (实时追踪), tail -n 30 filetail -f --pid=12345 (进程退出后停止)
grep文本搜索grep "error" app.loggrep -i "warning" app.log (忽略大小写), grep -r "TODO" src/ (递归), grep -v "^#" file (排除注释)
wc统计行数、字数、字节数wc -l file (行数), wc -c file (字节数)
diff比较文件差异diff file1 file2diff -u file1 file2 (统一格式, 更易读)
vim文本编辑器vim file.conf (i 插入, Esc + :wq 保存退出, :q! 不保存退出, :%s/old/new/g 全文替换)

三、 查找与搜索

命令说明常用示例
find按条件查找文件find /var/log -name "*.log" -mtime -7 (7天内修改), find . -size +100M (大于100MB), find . -type f -exec chmod 644 {} \; (批量改权限)
which查找可执行命令路径which nginxwhich -a java (显示所有匹配路径)
whereis查找二进制、源码和手册路径whereis nginx
locate按数据库快速查找(需更新)locate nginx.confupdatedb (更新数据库)
type显示命令类型(内建/别名/外部)type cdtype ll
apropos搜索 man 手册页描述apropos "compress" (查找与压缩相关的命令)

四、 权限与用户管理

命令说明常用示例
chmod修改文件权限chmod 755 script.shchmod +x script.shchmod -R 644 dir/ (递归)
chown修改文件所有者chown www:www filechown -R www:www /var/www/html
chattr修改文件扩展属性(不可变等)chattr +i file (禁止任何修改包括 root), lsattr file (查看)
umask设置默认创建权限掩码umask 022 (文件默认 644, 目录默认 755)
useradd添加新用户useradd -m -s /bin/bash newuseruseradd -r -s /sbin/nologin appuser (系统用户)
usermod修改用户属性usermod -aG docker newuser (附加到组), usermod -L user (锁定用户)
passwd修改用户密码passwd newuserpasswd -l user (锁定)
userdel删除用户userdel -r newuser (同时删除家目录和邮件池)
groupadd添加组groupadd docker
id显示用户和组 ID 信息idid www
who / w显示当前登录用户who -b (上次启动时间), w (详细进程信息)
last显示最近登录记录last -n 10last reboot (重启记录)
su / sudo切换用户 / 提权su - usersudo -u user commandsudo -l (查看可用权限)

五、 进程管理

命令说明常用示例
ps显示进程快照ps auxps -efps aux --sort=-%mem (按内存降序)
pstree以树形显示进程关系pstree -p (显示 PID)
top实时进程监控top (按 M 按内存排序, 按 P 按 CPU 排序, 按 1 显示每个核心)
htop增强版 top(需安装)htop (交互式, F5 树形, F9 发送信号)
kill终止进程kill -15 PID (优雅终止), kill -9 PID (强制终止, 慎用), kill -HUP PID (重载配置)
killall按名称终止进程killall nginxkillall -9 java
pgrep按名称查找进程 PIDpgrep -f "java.*app.jar" (匹配完整命令行)
pkill按名称发送信号pkill -f "app.jar"
nohup忽略 HUP 信号运行命令nohup ./start.sh > output.log 2>&1 &
screen终端复用器screen -S session_nameCtrl+A D (分离), screen -r (重新连接)
tmux现代终端复用器tmux new -s nameCtrl+B d (分离), tmux attach -t name
systemctlsystemd 服务管理systemctl status/start/stop/restart/reload nginxsystemctl enable --now nginx

六、 系统状态与监控

命令说明常用示例
df查看磁盘空间df -h (人类可读), df -i (inode 使用情况)
du估算文件和目录的磁盘使用量du -sh /var/logdu -sh * | sort -rh (按大小降序)
free显示内存使用情况free -hfree -h -t (含总计)
uptime系统运行时间与平均负载uptime (load average 1/5/15分钟)
uname显示系统信息uname -a (全部), uname -r (内核版本)
lscpu显示 CPU 架构信息lscpu (型号、核心数、频率、缓存)
lsblk显示块设备信息lsblklsblk -f (含文件系统), lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
dmesg查看内核环形缓冲区消息dmesg | tail -20dmesg -w (实时追踪)
iostatCPU 和 I/O 统计iostat -xz 1 (1秒间隔, 含扩展统计), iostat -x (按设备)
vmstat虚拟内存统计vmstat 1vmstat -s (事件计数器)
sar系统活动报告(历史回顾利器)sar -u 1 3 (CPU), sar -r (内存), sar -b (IO), sar -n DEV (网络)
lsof列出打开的文件lsof -i :80 (谁在占 80 端口), lsof /var/log/sysloglsof -u www (某用户)
strace追踪系统调用和信号strace -p PIDstrace -f -e trace=network command (只看网络调用)
dd低层级数据复制和转换dd if=/dev/zero of=test bs=1M count=100 (IO 基准测试)

七、 网络命令

命令说明常用示例
ip网络配置(替代 ifconfigip a (地址), ip r (路由表), ip neigh (ARP 表)
ss套接字统计(替代 netstatss -tuln (TCP/UDP 监听), ss -tan | grep :80 | wc -l (连接数), ss -o state established (已建立连接)
ping网络连通性测试ping -c 4 8.8.8.8ping -I eth0 10.0.0.1 (指定网卡)
curlURL 数据传输curl -I http://example.com (HTTP 头部), curl -v https://api.example.comcurl -o output http://...
wget网络文件下载wget http://example.com/file.tar.gzwget -c http://... (断点续传)
nc网络瑞士军刀nc -zv ip port (端口连通性), nc -lvp 8080 (监听), nc file 设备传输
traceroute路由追踪traceroute 8.8.8.8mtr 8.8.8.8 (增强版, 实时显示)
digDNS 查询dig example.comdig @8.8.8.8 example.com +shortdig -x 8.8.8.8 (反向解析)
nslookupDNS 查询(较老的交互式工具)nslookup example.comnslookup 回车进入交互模式
host简化的 DNS 查询host example.comhost -a example.com (全量记录)
ethtool网卡参数查看与配置ethtool eth0 (速度/双工), ethtool -S eth0 (统计计数器)
tcpdump网络抓包tcpdump -i eth0 port 80 -w capture.pcaptcpdump -i any -c 100 -nn (不解析 DNS)

八、 服务管理 (Systemd)

命令说明常用示例
systemctl管理 systemd 服务systemctl status/start/stop/restart/reload nginxsystemctl enable --now nginxsystemctl list-units --type=service --state=running
journalctl查看 systemd 日志journalctl -u nginx -f (实时), journalctl -u nginx --since "1 hour ago"journalctl -p err -b (当前启动的错误日志)
systemd-analyze分析启动性能systemd-analyze blame (各服务启动耗时排序), systemd-analyze critical-chain

九、 压缩与解压

命令说明常用示例
tar归档压缩工具tar -czvf archive.tar.gz dir/ (压缩), tar -xzvf archive.tar.gz (解压), tar -tf archive.tar.gz (列出内容); tar cvf archive.tar dir/ (压缩), tar xvf archive.tar (解压)
gzip / gunzip.gz 格式gzip filegunzip file.gzzcat file.gz (查看内容)
bzip2 / bunzip2.bz2 格式(压缩率更高)bzip2 filebunzip2 file.bz2bzcat file.bz2
xz / unxz.xz 格式(高压缩率)xz fileunxz file.xzxzcat file.xz
zip / unzip.zip 格式zip -r archive.zip dir/unzip archive.zipunzip -l archive.zip (查看内容)
7z / 7za7-Zip 格式7z a archive.7z dir/7z x archive.7z

十、 软件包管理

发行版命令说明常用示例
Ubuntu/Debianapt高级包管理apt updateapt upgrade -yapt install nginx -yapt remove nginxapt autoremove
Ubuntu/Debiandpkg底层包管理dpkg -i package.debdpkg -l | grep nginxdpkg -L nginx (查看安装路径)
CentOS/RHELdnf / yum包管理器dnf install nginx -ydnf update -ydnf remove nginxdnf list installed
CentOS/RHELrpm底层包管理rpm -ivh package.rpmrpm -qa | grep nginxrpm -ql nginx (查看安装路径)
ELF 兼容snap / flatpak沙盒包管理snap install lxdflatpak install flathub org.vim.Vim

提示:CentOS 建议先安装 EPEL (dnf install epel-release),否则很多包找不到。

十一、 文本处理

命令说明常用示例
awk模式扫描和处理语言awk '{print $1, $NF}' file.logawk -F: '{print $1}' /etc/passwdawk '/error/ {sum++} END {print sum}' file
sed流编辑器sed -i 's/old/new/g' filesed -n '10,20p' file (打印10-20行), sed '/^#/d' file (删除注释行)
sort排序sort filesort -n (数字排序), sort -k 2 (按第二列), sort -u (去重)
uniq去重与计数(需先排序)uniq -c | sort -rn (统计各条出现次数并降序)
cut按列截取文本cut -d: -f1,3 /etc/passwdcut -c1-80 file (每行前80字符)
tr字符替换或删除tr '[:upper:]' '[:lower:]' < input > output (大写转小写), tr -d '\r' < win.txt > linux.txt (删除 Windows 换行符)
xargs构建和执行命令行参数find . -name "*.tmp" | xargs rm -fcat urls.txt | xargs -P 4 -I {} curl -O {} (并发下载)
tee同时输出到文件和标准输出echo "config" | sudo tee -a /etc/hosts (追加写入, 保留 sudo)
paste按列合并文件paste file1 file2
join按共有字段关联文件join -t, -1 2 -2 1 file1 file2

十二、 定时任务

命令说明常用示例
crontab管理用户定时任务crontab -e (编辑), crontab -l (查看), crontab -r (删除)
systemd-timersystemd 定时器(替代 cron 的现代方案)创建 .timer + .service 文件, systemctl start/stop/enable myapp.timer

crontab 格式分 时 日 月 周 命令

# 每天凌晨 3 点执行日志清理
0 3 * * * /usr/local/bin/cleanup.sh >/dev/null 2>&1
# 每 10 分钟检查服务健康
*/10 * * * * /usr/local/bin/healthcheck.sh

十三、 安全与证书

命令说明常用示例
opensslSSL/TLS 工具包openssl s_client -connect example.com:443 (查看证书详情), openssl x509 -in cert.pem -text -nooutopenssl genrsa -out key.pem 2048 (生成密钥)
ssh-keygenSSH 密钥对生成ssh-keygen -t ed25519 -C "comment" (推荐 Ed25519), ssh-keygen -y -f id_ed25519 (导出公钥)
ssh-copy-id将公钥复制到远程服务器ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
md5sum计算 MD5 哈希md5sum file.isomd5sum --check file.md5 (校验)
sha256sum计算 SHA-256 哈希sha256sum filesha256sum -c file.sha256

十四、 Shell 实用技巧

功能说明示例
alias设置命令别名alias ll='ls -lh'alias grep='grep --color=auto'
history查看命令历史history!100 (执行第 100 条), !! (执行上一条), !$ (上一个命令的最后一个参数)
export设置环境变量export PATH=$PATH:/usr/local/binexport LANG=zh_CN.UTF-8
source / .在当前 shell 执行脚本source ~/.bashrc. env/bin/activate
set -e脚本中出错即退出放在 bash 脚本开头, 避免错误继续执行
\命令换行长命令用 \ 拆行提高可读性
&后台运行./script.sh &command & disown (后台并脱离终端)

十五、 实用排查技巧

1. 看端口被谁占用
ss -tuln | grep 80
lsof -i :80
2. 看磁盘空间
df -h
du -sh * | sort -rh | head -10
3. 看内存和 CPU
free -h
top  # 按 M 按内存排序, 按 P 按 CPU 排序
ps aux --sort=-%mem | head -10
4. 看日志
journalctl -u nginx -f --since "10 min ago"
tail -f /var/log/nginx/access.log
5. 看内核和系统消息
dmesg -T | tail -20    # -T 显示人类可读时间
uptime                  # 平均负载
6. 文件传输
scp file user@host:/path/
rsync -avz dir/ user@host:/backup/dir/
7. 使用 .d 配置模式
# 将独立配置文件放入对应目录,主配置 include 该目录
/etc/nginx/conf.d/*.conf
/etc/sudoers.d/*
/etc/systemd/system/*.service

原创文章,如需转载,请注明出处。