本文整理 Linux 系统管理相关的常用命令,涵盖进程管理、用户权限、磁盘监控和服务管理。这些命令是日常运维和排查问题的核心工具。
一、权限管理
chmod — 修改文件权限
Linux 权限使用 9 位三位一组表示:所有者(u) / 所属组(g) / 其他人(o)
chmod 755 script.sh # 数字法:rwxr-xr-x
chmod u+x script.sh # 给所有者加执行权限
chmod g+w file.txt # 给组加写权限
chmod o-r file.txt # 移除其他人的读权限
chmod -R 755 dir/ # 递归修改目录及内部文件常用权限速查表:
| 数字 | 权限 | 说明 |
|---|---|---|
| 755 | rwxr-xr-x | 程序文件、目录(常用) |
| 644 | rw-r--r-- | 普通文本文件(常用) |
| 600 | rw------- | 私密文件(SSH密钥等) |
| 700 | rwx------ | 私密目录 |
| 777 | rwxrwxrwx | ❌ 危险,慎用 |
chown — 修改文件所有者
chown user:group file.txt # 同时修改所有者和组
chown user file.txt # 只修改所有者
chown :group file.txt # 只修改所属组
chown -R user:group dir/ # 递归修改示例: 修复 Web 目录权限
chown -R www-data:www-data /var/www/html/
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;chgrp — 修改文件所属组
chgrp devteam project/ # 修改目录所属组
chgrp -R devteam project/ # 递归修改umask — 设置默认权限掩码
umask # 查看当前掩码(如 0022)
umask 0022 # 文件默认 644,目录默认 755
umask 0007 # 文件默认 660,目录默认 770💡 默认文件权限 = 666 - umask,目录权限 = 777 - umask
useradd / adduser — 创建用户
useradd -m -s /bin/bash username # 创建用户并创建家目录
useradd -m -G sudo,docker username # 创建用户并加入附加组
adduser username # 交互式创建(更友好)💡
useradd是底层命令(Debian 上不会自动创建家目录),adduser是带交互的增强版。
passwd — 设置密码
passwd # 修改当前用户密码
passwd username # 修改指定用户密码
passwd -l username # 锁定用户
passwd -u username # 解锁用户
passwd -S username # 查看密码状态usermod — 修改用户属性
usermod -aG sudo username # 将用户加入 sudo 组
usermod -aG docker username # 将用户加入 docker 组
usermod -l newname oldname # 修改用户名
usermod -d /new/home -m username # 移动家目录⚠️
-a(append)使用-G时必须加,否则会移除用户不在列表中的其他组!
userdel — 删除用户
userdel username # 删除用户
userdel -r username # 删除用户及其家目录和邮件池id — 查看用户信息
id # 查看当前用户 UID、GID、所属组
id username # 查看指定用户groups — 查看用户所属组
groups # 查看当前用户所属组
groups username # 查看指定用户sudo — 以超级权限执行
sudo command # 以 root 执行命令
sudo -i # 切换到 root shell
sudo -u www-data command # 以指定用户执行
sudo -l # 查看当前用户可执行的 sudo 命令💡
visudo编辑/etc/sudoers配置文件,比直接编辑更安全(语法检查)。
su — 切换用户
su - username # 切换到指定用户并加载环境变量
su username # 切换但不加载环境
su - # 切换到 root二、进程管理
ps — 查看进程
ps aux # 查看所有进程(BSD格式)
ps -ef # 查看所有进程(标准格式)
ps aux | grep nginx # 查找特定进程
ps aux --sort=-%mem # 按内存使用排序
ps aux --sort=-%cpu | head # 按 CPU 使用排序输出示例解释:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 169172 13704 ? Ss 08:00 0:01 systemd| 字段 | 含义 |
|---|---|
| PID | 进程 ID |
| %CPU | CPU 使用率 |
| %MEM | 内存使用率 |
| RSS | 实际物理内存占用 (KB) |
| STAT | 进程状态(S=睡眠, R=运行, Z=僵尸) |
| TIME | 累计 CPU 时间 |
top / htop — 动态进程监控
top # 实时进程监控
# 交互命令:
# P 按 CPU 排序
# M 按内存排序
# k 杀死进程
# q 退出htop # 增强版(需安装)💡
htop比top更直观:彩色显示、可鼠标操作、更易读的进程树。
kill — 终止进程
kill PID # 发送 SIGTERM(优雅终止)
kill -9 PID # 发送 SIGKILL(强制终止)
kill -15 PID # 发送 SIGTERM(默认)
kill -1 PID # 发送 SIGHUP(重载配置)
killall nginx # 杀死所有 nginx 进程
pkill -f "python app.py" # 按进程名匹配杀死信号优先级(由轻到重):
SIGTERM (15)— 请求终止,程序可自行清理SIGHUP (1)— 重载配置(Nginx/SSH 等常用)SIGKILL (9)— 强制终止,无法被捕获
nohup — 后台运行不受终端退出影响
nohup python script.py & # 后台运行,输出到 nohup.out
nohup python script.py > log.out 2>&1 & # 指定输出文件jobs / fg / bg — 作业控制
jobs # 查看后台作业
fg %1 # 将作业 1 放到前台
bg %1 # 将作业 1 放到后台继续运行
Ctrl+Z # 暂停当前进程并放入后台systemctl — systemd 服务管理
systemctl status nginx # 查看服务状态
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 重载配置(不中断服务)
systemctl enable nginx # 开机自启
systemctl disable nginx # 禁用开机自启
systemctl list-units --type=service # 列出所有服务
systemctl daemon-reload # 重新加载服务配置journalctl — 查看 systemd 日志
journalctl -u nginx # 查看 nginx 服务日志
journalctl -u nginx --since "1 hour ago" # 最近 1 小时日志
journalctl -f # 实时跟踪日志
journalctl -xe # 查看最近的日志(排查错误)crontab — 定时任务
crontab -e # 编辑当前用户的定时任务
crontab -l # 查看当前用户的定时任务
crontab -r # 删除所有定时任务Cron 时间格式:
* * * * * command
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 星期 (0-7, 0和7=周日)
│ │ │ └─── 月份 (1-12)
│ │ └───── 日 (1-31)
│ └─────── 时 (0-23)
└───────── 分 (0-59)实用示例:
# 每天凌晨 3 点备份数据库
0 3 * * * /usr/bin/mysqldump -u root mydb > /backup/mydb_$(date +\%Y\%m\%d).sql
# 每小时同步日志
0 * * * * rsync -av /var/log/app/ /backup/logs/
# 每 5 分钟检查服务状态
*/5 * * * * systemctl is-active nginx || systemctl restart nginx三、系统信息与监控
uname — 查看系统内核信息
uname -a # 全部信息
uname -r # 内核版本
uname -m # 架构(x86_64 / aarch64)df — 查看磁盘空间
df -h # 人性化显示所有挂载点
df -h / # 查看根分区
df -i # 查看 inode 使用情况du — 查看目录大小
du -sh /var/log # 目录总大小
du -sh * | sort -rh # 按大小排序
du -h --max-depth=1 /home # 指定深度free — 查看内存使用
free -h # 人性化显示内存和 Swap
free -h -t # 显示总计解读示例:
total used free shared buff/cache available
Mem: 15Gi 3.2Gi 2.1Gi 245Mi 9.8Gi 11Gi
Swap: 2.0Gi 0.0 2.0Gi💡
available才是真实的可用内存,不是free。
lscpu — 查看 CPU 信息
lscpu # 显示 CPU 架构、核心数、频率等lsblk — 查看块设备
lsblk # 列出磁盘和分区
lsblk -f # 显示文件系统和 UUIDuptime — 查看运行时间
uptime # 运行时间、登录用户、负载
# 输出示例:10:00:00 up 30 days, 2:00, 3 users, load average: 0.08, 0.03, 0.01dmesg — 查看内核日志
dmesg | tail -20 # 最近的内核消息
dmesg -T # 显示人类可读的时间戳
dmesg | grep -i error # 查看内核错误lsof — 查看打开的文件
lsof # 列出所有打开的文件
lsof -i :80 # 查看占用 80 端口的进程
lsof -u nginx # 查看 nginx 用户打开的文件
lsof +D /var/log # 查看目录下被打开的文件四、压缩与归档
tar — 打包与压缩
# 创建
tar -czf archive.tar.gz dir/ # 打包并 gzip 压缩
tar -cjf archive.tar.bz2 dir/ # bzip2 压缩(更小更慢)
tar -cJf archive.tar.xz dir/ # xz 压缩(最小最慢)
# 解压
tar -xzf archive.tar.gz # 解压到当前目录
tar -xzf archive.tar.gz -C /path/ # 解压到指定目录
# 查看
tar -tzf archive.tar.gz # 查看压缩包内容参数详解:
-c:创建归档-x:解压-z:通过 gzip 处理-j:通过 bzip2 处理-J:通过 xz 处理-f:指定文件名-v:显示处理过程-t:查看内容
zip / unzip
zip -r archive.zip dir/ # 压缩目录
zip file.zip file.txt # 压缩单个文件
unzip archive.zip # 解压
unzip archive.zip -d /path/ # 解压到指定目录
unzip -l archive.zip # 查看压缩包内容gzip / gunzip
gzip file.txt # 压缩为 file.txt.gz(原文件删除)
gunzip file.txt.gz # 解压
gzip -k file.txt # 保留原文件
gzip -d file.txt.gz # 解压(同 gunzip)五、综合排查实战
系统负载过高排查
# 第一步:查看整体负载
uptime
# 第二步:找出最耗 CPU 的进程
top -b -n 1 -o %CPU | head -15
# 第三步:查看具体进程详情
ps -fp PID
# 第四步:查看内存占用
free -h
ps aux --sort=-%mem | head -10磁盘空间不足排查
# 查看分区使用
df -h
# 查找大文件
du -sh /* 2>/dev/null | sort -rh | head -20
# 查找超过 100MB 的文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
# 检查日志文件
ls -lhS /var/log/*.log | head -10
# 查看已删除但仍被占用的文件(进程未释放)
lsof | grep deleted端口占用排查
# 查看端口监听情况
ss -tlnp
netstat -tlnp
# 查看指定端口
ss -tlnp | grep :80
# 查看哪个进程占用端口
lsof -i :8080小结: 系统管理与权限命令是运维人员的日常工具。建议重点掌握 systemctl、journalctl、ps、lsof 等排查利器,遇到问题时能快速定位。
下一篇将介绍 Linux 网络管理与软件管理相关命令。