Linux 常用命令
本文按日常使用场景整理。示例中的路径、用户名、进程号和服务名需要替换为实际值。多数命令适用于常见 Linux 发行版;systemctl 适用于使用 systemd 的系统,软件安装命令按发行版选择。
1. 查看帮助与当前位置
| 命令 | 用途 |
|---|---|
pwd | 查看当前目录 |
ls -lah | 查看所有文件、权限和易读的文件大小 |
cd /var/log | 进入指定目录 |
cd .. | 返回上一级目录 |
cd ~ | 返回当前用户的家目录 |
cd - | 返回上一次所在目录 |
man ls | 查看命令手册,按 q 退出 |
ls --help | 查看简要帮助 |
command -v python3 | 查看命令的可执行文件位置 |
history | 查看历史命令 |
快捷键:Tab 补全命令或路径,Ctrl+C 中断前台命令,Ctrl+R 搜索历史命令,Ctrl+L 清屏,Ctrl+D 结束标准输入或退出当前 Shell。
2. 文件与目录操作
# 创建多级目录
mkdir -p ~/demo/logs
# 创建空文件;文件存在时更新其时间戳
touch ~/demo/app.log
# 复制文件、复制目录
cp ~/demo/app.log ~/demo/app.log.bak
cp -r ~/demo/logs ~/demo/logs-backup
# 移动或重命名;-i 在覆盖前询问
mv -i ~/demo/app.log.bak ~/demo/old.log
# 删除文件;-i 在删除前询问
rm -i ~/demo/old.log
# 删除空目录
rmdir ~/demo/logs-backup
# 删除目录及内容,逐项询问
rm -ri ~/demo/logs-backup
# 创建软链接:先写目标,再写链接路径
ln -s /opt/app/current/config.yml ~/config.yml
# 查看文件类型和元数据
file ~/demo/app.log
stat ~/demo/app.logrm 通常不会把文件放入回收站。删除前先用 ls 确认路径;rmdir 只能删除空目录。
3. 查看和编辑文本
| 命令 | 用途 |
|---|---|
cat app.log | 输出整个文件,适合小文件 |
less app.log | 分页查看,/关键词 搜索,n 下一个,q 退出 |
head -n 30 app.log | 查看前 30 行 |
tail -n 100 app.log | 查看最后 100 行 |
tail -F app.log | 持续跟踪日志,并尝试在文件轮转后重新打开 |
wc -l app.log | 统计换行符数量,通常用于估算行数 |
nano config.yml | 使用 nano 编辑(如已安装) |
vi config.yml | 使用 vi 编辑 |
vi 常用操作:按 i 进入插入模式,按 Esc 回到普通模式,输入 :wq 保存退出,输入 :q! 放弃修改退出。
4. 查找文件与搜索内容
# 按文件名查找;通配符加引号,交给 find 处理
find /var/log -type f -name '*.log'
# 查找最近 24 小时内修改的文件
find /var/log -type f -mtime -1
# 查找超过 100 MiB 的文件
find /var/log -type f -size +100M
# 查找空文件
find ~/demo -type f -empty
# 搜索内容,显示行号;-i 忽略大小写
grep -n 'ERROR' app.log
grep -ni 'timeout' app.log
# 递归搜索指定目录
grep -rn --include='*.yml' 'server' ./config
# 显示匹配行前后各 3 行
grep -n -C 3 'Exception' app.log
# 匹配多个关键词;-v 用于排除匹配行
grep -nE 'ERROR|WARN' app.log
grep -v 'DEBUG' app.log5. 管道、重定向与文本处理
| 写法 | 含义 |
|---|---|
命令1 | 命令2 | 将前一命令的标准输出交给后一命令 |
命令 > result.txt | 标准输出写入文件,会覆盖原内容 |
命令 >> result.txt | 标准输出追加到文件 |
命令 2> error.txt | 标准错误写入文件 |
命令 > all.log 2>&1 | 标准输出和标准错误写入同一文件 |
命令1 && 命令2 | 前一命令成功后才执行后一命令 |
# 统计包含 ERROR 的行数
grep -c 'ERROR' app.log
# 统计第一列的出现次数,并按次数降序排列
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
# 按冒号分隔,输出第一列
cut -d ':' -f 1 /etc/passwd
# 输出第 10~20 行
sed -n '10,20p' app.log
# 替换文本并输出结果,不修改原文件
sed 's/old/new/g' config.txt
# 同时显示结果并保存到文件;tee 默认覆盖
printf 'hello\n' | tee result.txtuniq 只合并相邻的重复行,所以统计重复值时通常先执行 sort。重定向中的 2>&1 顺序有意义,应放在目标输出重定向之后。
6. 权限与用户
# 查看当前用户及其用户组
whoami
id
# 查看文件权限
ls -l app.sh
# 为文件所有者增加执行权限
chmod u+x app.sh
# 所有者可读写,组内及其他用户只读
chmod 644 config.yml
# 所有者可读写执行,组内及其他用户可读执行
chmod 755 app.sh
# 修改文件所有者和所属组,需要相应权限
sudo chown appuser:appgroup /opt/app/config.yml
# 使用管理员权限执行单条命令
sudo systemctl status nginx权限数值:读 r=4、写 w=2、执行 x=1,三位依次对应所有者、所属组、其他用户。目录的 x 表示允许进入或访问目录中的条目。不要为解决权限问题直接把所有文件设为 777。
7. 进程与后台任务
# 查看全部进程
ps aux
# 按完整命令行查找进程
pgrep -af java
# 动态查看 CPU、内存和进程,按 q 退出
top
# 请求进程正常退出,12345 替换为实际 PID
kill -TERM 12345
# 正常退出无效时才强制终止,进程无法执行清理逻辑
kill -KILL 12345
# 后台运行,并将输出追加到日志
nohup ./app.sh >> app.log 2>&1 &
# 查看当前 Shell 的后台任务
jobs -l
# 将第 1 个后台任务切回前台
fg %1Ctrl+Z 暂停前台任务;bg %1 让已暂停的第 1 个任务在后台继续运行。长期运行的服务宜交给 systemd 等服务管理器管理。
8. 系统、内存与磁盘
| 命令 | 用途 |
|---|---|
uname -a | 查看内核及系统信息 |
cat /etc/os-release | 查看发行版信息 |
uptime | 查看运行时长和系统负载 |
date | 查看系统时间 |
free -h | 查看内存和交换空间 |
df -h | 查看文件系统容量使用情况 |
df -i | 查看 inode 使用情况 |
du -sh /var/log | 查看目录总大小 |
du -h --max-depth=1 /var/log | 查看一级子目录大小 |
lsblk | 查看块设备及挂载关系 |
vmstat 1 5 | 每秒采样一次,共 5 次(如已安装) |
free 的 available 比单看 free 更适合判断可用内存。磁盘仍有容量却无法新建文件时,可用 df -i 检查 inode 是否耗尽。
9. 网络与端口排查
# 查看 IP 地址和路由
ip addr
ip route
# 测试网络连通性;部分网络会禁用 ICMP
ping -c 4 example.com
# 查询 DNS 解析
dig example.com
# 查看 TCP 监听端口及进程,进程信息可能需要管理员权限
sudo ss -lntp
# 查看 UDP 监听端口
sudo ss -lnup
# 查看占用指定 TCP 端口的进程(需安装 lsof)
sudo lsof -nP -iTCP:8080 -sTCP:LISTEN
# 查看 HTTP 响应头;-I 发出 HEAD 请求
curl -I --connect-timeout 5 --max-time 15 https://example.com
# 查看请求及连接细节
curl -v --connect-timeout 5 --max-time 15 https://example.com
# 下载文件:HTTP 错误时返回失败,并跟随重定向
curl -fL --connect-timeout 5 --max-time 120 -o package.tar.gz https://example.com/package.tar.gz
# 测试 TCP 端口(需安装 nc;不同实现的选项可能不同)
nc -zv -w 3 127.0.0.1 8080ping 成功只能说明 ICMP 连通,不能证明业务端口或 HTTP 服务正常。dig、lsof、nc 在精简系统上可能需要单独安装。
10. 服务与系统日志
以下命令适用于 systemd 系统;修改服务状态通常需要管理员权限。
# 查看服务状态
systemctl status nginx
# 启动、停止、重启服务
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
# 请求服务重新加载配置,需服务本身支持
sudo systemctl reload nginx
# 设置开机自启;不等于立即启动
sudo systemctl enable nginx
# 查看是否设置了开机自启
systemctl is-enabled nginx
# 修改 systemd 单元文件后,重新加载单元定义
sudo systemctl daemon-reload
# 查看服务最近 100 条日志
journalctl -u nginx -n 100 --no-pager
# 持续跟踪服务日志
journalctl -u nginx -f
# 查看本次开机的错误级别及更严重日志
journalctl -b -p err --no-pager
# 按时间范围查询
journalctl -u nginx --since '2026-10-24 09:00:00' --until '2026-10-24 10:00:00'服务日志是否可见取决于当前用户权限;必要时使用 sudo journalctl。daemon-reload 重新读取单元定义,应用自身配置变更通常需要对应服务的 reload 或 restart。
11. 压缩与解压
# 打包并 gzip 压缩目录
tar -czf app-backup.tar.gz ./app
# 先查看压缩包内容
tar -tzf app-backup.tar.gz
# 解压到指定目录,目录需要先存在
mkdir -p ./restore
tar -xzf app-backup.tar.gz -C ./restore
# 创建 ZIP 压缩包(需安装 zip)
zip -r app.zip ./app
# 查看 ZIP 内容、解压到指定目录(需安装 unzip)
unzip -l app.zip
unzip app.zip -d ./restoretar 常用参数:c 创建、x 解包、t 列出内容、z 使用 gzip、f 指定归档文件。解压前检查内容和目标目录,避免覆盖现有文件。
12. 远程连接与文件传输
# SSH 连接;默认端口为 22
ssh user@192.0.2.10
# 使用指定端口和私钥连接
ssh -p 2222 -i ~/.ssh/id_ed25519 user@192.0.2.10
# 上传文件;scp 的端口参数是大写 -P
scp -P 2222 ./app.tar.gz user@192.0.2.10:/tmp/
# 下载远程文件
scp user@192.0.2.10:/var/log/app.log ./app.log
# 先预览同步结果,不实际传输
rsync -avhn ./app/ user@192.0.2.10:/opt/app/
# 执行同步(远程目标目录需要有写入权限)
rsync -avh ./app/ user@192.0.2.10:/opt/app/以上地址为文档示例地址,请替换。首次 SSH 连接应核对主机指纹。rsync 的源目录 ./app/ 表示复制目录内的内容,./app 表示复制目录本身;默认不会删除目标端多余文件。
13. 软件安装
# Debian / Ubuntu:更新软件包索引,再安装软件
sudo apt update
sudo apt install curl
# Fedora / 使用 dnf 的 RHEL 系发行版
sudo dnf install curl
# 较旧的 CentOS / RHEL 系统可能使用 yum
sudo yum install curl安装前确认发行版和管理员权限。apt update 更新包索引,升级已安装软件使用 apt upgrade,两者作用不同。
14. 常见排查顺序
服务无法访问
systemctl status 服务名:确认服务状态。journalctl -u 服务名 -n 100 --no-pager:查看启动错误。sudo ss -lntp:确认端口以及监听地址。curl -v http://127.0.0.1:端口:确认本机请求是否成功。- 本机正常、远程异常时,继续检查 DNS、路由、防火墙及云平台安全组。
磁盘空间不足
df -h:找到容量紧张的文件系统。df -i:排查 inode 是否耗尽。du -h --max-depth=1 /目标目录:逐层定位占用空间的目录。sudo lsof +L1:排查已删除但仍被进程打开的文件(需安装 lsof)。- 确认文件用途和保留要求后再归档或清理;仍被进程打开的已删除文件,通常需要让进程关闭文件后才会释放空间。
CPU 或内存占用过高
top:找到资源占用高的进程。ps -p 进程号 -o pid,ppid,%cpu,%mem,etime,args:查看进程及其运行时长。free -h:查看可用内存和交换空间。- 结合应用日志进一步定位原因;操作进程前确认其归属及影响。