上一篇
服务器任务管理命令有哪些?常用Linux任务操作命令详解
- 互联网
- 2026-02-12
- 3569
实时进程监控与资源查看
-
top:
- 功能: 经典的实时动态查看系统关键信息(CPU、内存、Swap 使用率)和进程列表(默认按 CPU 使用率排序)。
- 常用操作:
- P (大写): 按 CPU 使用率排序。
- M (大写): 按内存使用量排序。
- T (大写): 按运行时间排序。
- 1: 显示所有 CPU 核心的单独使用情况。
- k: 终止指定 PID 的进程(需输入 PID)。
- r: 调整进程的优先级(需输入 PID 和 nice 值)。
- h: 查看帮助。
- q: 退出。
-
htop:
- 功能: top 的增强版,提供更直观的彩色界面、垂直/水平滚动、鼠标支持、树状视图(按 F5)显示进程父子关系、更方便地查找、过滤、终止进程等。
- 安装: 通常需要额外安装 (sudo apt install htop for Debian/Ubuntu, sudo yum install htop for CentOS/RHEL)。
- 常用操作: 界面友好,功能键提示清晰(如 F9 杀进程, F3 搜索等)。
-
glances:
- 功能: 更现代化的跨平台系统监控工具,在一个界面内展示 CPU、内存、磁盘 I/O、网络、文件系统、传感器、进程列表等极其丰富的信息。
- 安装: 需要额外安装 (pip install glances 或使用系统包管理器)。
进程快照查看与过滤
- ps:
- 功能: 报告当前进程状态的快照,参数组合极其灵活。
- 常用组合:
- ps aux: 显示所有用户的详细信息进程(BSD 风格)。
- ps -ef: 显示所有进程的完整格式信息(标准 Unix 风格)。
- ps aux | grep '进程名': 查找包含特定名称的进程。
- ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head: 显示 PID、父 PID、命令、内存占比、CPU 占比,并按内存使用降序排序,取前几行。
- ps -p PID -o lstart: 查看指定 PID 进程的启动时间。
资源使用概览
-
free:
- 功能: 显示系统内存(RAM)和交换空间(Swap)的使用情况。
- 常用选项:
- free -h: 以人类可读的单位(G, M)显示。
- free -m: 以 MB 为单位显示。
- free -s 5: 每 5 秒刷新显示一次。
-
df:
- 功能: 报告文件系统磁盘空间使用情况。
- 常用选项:
- df -h: 以人类可读的单位显示。
- df -Th: 同时显示文件系统类型和人类可读单位。
-
du:
- 功能: 估算文件和目录的磁盘使用空间。
- 常用选项:
- du -sh /path/to/directory: 显示指定目录的总大小(-s 汇总, -h 人类可读)。
- du -h --max-depth=1 /path: 显示指定目录下第一级子目录的大小(人类可读)。
- du -ah /path | sort -rh | head -n 20: 显示指定路径下所有文件/目录的大小(含隐藏文件),按大小降序排序,显示最大的前 20 个。
-
uptime:
- 功能: 显示系统运行时间、当前登录用户数以及过去 1、5、15 分钟的系统平均负载。
服务管理 (Systemd 系统 – 主流现代 Linux 发行版)
- systemctl:
- 功能: 管理系统服务(守护进程)的核心命令。
- 常用操作:
- systemctl start service_name: 启动服务。
- systemctl stop service_name: 停止服务。
- systemctl restart service_name: 重启服务。
- systemctl reload service_name: 重新加载服务配置文件(如果服务支持)。
- systemctl status service_name: 查看服务状态(非常常用!包含是否运行、日志片段等)。
- systemctl enable service_name: 设置服务开机自启。
- systemctl disable service_name: 禁止服务开机自启。
- systemctl is-enabled service_name: 检查服务是否设置为开机自启。
- systemctl is-active service_name: 检查服务当前是否正在运行。
- systemctl list-unit-files --type=service: 列出所有可用的服务及其启用状态。
- systemctl list-units --type=service --state=running: 列出所有正在运行的服务。
- journalctl -u service_name: 查看特定服务的日志(需要 sudo 权限查看完整日志)。
后台任务管理
-
&:
- 功能: 将命令放到后台运行,命令后加 & (long_running_command &),会返回一个 [jobid] PID。
-
jobs:
- 功能: 列出当前 shell 会话中的后台作业(jobs)。
- 常用选项:
- jobs -l: 同时列出作业的 PID。
-
fg:
- 功能: 将后台作业(或指定作业)切换到前台运行。fg %jobid 或 fg (恢复最近一个被挂起的作业)。
-
bg:
- 功能: 将挂起(用 Ctrl+Z)的作业放到后台继续运行。bg %jobid 或 bg (恢复最近一个被挂起的作业)。
-
nohup:
- 功能: 运行命令,并忽略挂断信号(SIGHUP),即使关闭终端或退出登录,命令也能继续运行,输出默认重定向到 nohup.out。
- 用法: nohup command & (通常与 & 一起使用)。
-
disown:
- 功能: 将当前 shell 中的作业(job)从作业表中移除,使其不再受当前 shell 会话生命周期的影响(即使 shell 退出,作业也会继续运行,除非被显式终止)。
- 用法: 先用 jobs 找到 jobid,disown %jobid 或 disown -h %jobid。
-
screen / tmux:
- 功能: 强大的终端复用器,允许创建多个虚拟终端会话,并在这些会话之间自由切换、分离(detach)和重新附加(attach)。分离后的会话及其运行的命令会在服务器上持续运行,不受用户网络断开或终端关闭的影响,是管理长时间后台任务的理想选择。
- tmux (推荐, 更现代强大):
- tmux new -s session_name: 创建新会话。
- tmux ls: 列出所有会话。
- tmux attach -t session_name: 重新连接到指定会话。
- Ctrl+b d: 从当前会话分离(会话在后台继续运行)。
- Ctrl+b %: 垂直分割窗格。
- Ctrl+b ": 水平分割窗格。
- Ctrl+b 方向键: 在窗格间切换。
- Ctrl+b c: 创建新窗口。
- Ctrl+b n/p: 切换到下一个/上一个窗口。
- screen:
- screen -S session_name: 创建新会话。
- screen -ls: 列出所有会话。
- screen -r session_name: 重新连接到指定会话。
- Ctrl+a d: 从当前会话分离。
- Ctrl+a c: 创建新窗口。
- Ctrl+a n/p: 切换到下一个/上一个窗口。
定时任务
-
crontab:
- 功能: 管理用户的定时任务(cron jobs)。
- 常用操作:
- crontab -e: 编辑当前用户的 crontab 文件(使用默认编辑器)。
- crontab -l: 列出当前用户的 crontab 内容。
- crontab -r: 删除当前用户的 crontab 文件(谨慎使用!)。
- crontab -u username -e: 编辑指定用户的 crontab (需要 root 权限)。
- crontab 格式: 分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 周几(0-7, 0和7都是周日) 要执行的命令
- 日志: 通常位于 /var/log/cron 或 /var/log/syslog 中。
-
at / batch:
- 功能: 安排一次性任务在指定时间点(at)或系统负载较低时(batch)运行。
- 用法:
- at 时间 然后输入要执行的命令,按 Ctrl+D 结束。
- atq: 列出待处理的 at 作业。
- atrm job_id: 删除指定的 at 作业。
进程信号与终止
-
kill:
- 功能: 向进程发送信号,默认信号是 SIGTERM (15),请求进程正常终止。
- 用法: kill PID (发送 SIGTERM), kill -SIGKILL PID 或 kill -9 PID (发送 SIGKILL, 强制终止, 最后手段)。
- 常用信号:
- SIGHUP (1): 挂起信号,常用来让守护进程重新读取配置文件。
- SIGINT (2): 中断信号 (通常由 Ctrl+C 触发)。
- SIGQUIT (3): 退出信号 (通常由 Ctrl+ 触发)。
- SIGKILL (9): 强制终止信号,进程无法捕获或忽略。
- SIGTERM (15): 终止信号(默认),请求进程正常退出。
- SIGSTOP (17,19,23): 停止信号 (通常由 Ctrl+Z 触发),暂停进程执行。
-
killall:
- 功能: 根据进程名向所有匹配的进程发送信号。谨慎使用!
- 用法: killall process_name (发送 SIGTERM), killall -9 process_name (发送 SIGKILL)。
-
pkill:
- 功能: 根据进程名或其他属性(如用户)查找并发送信号,比 killall 更灵活。
- 用法: pkill process_name (发送 SIGTERM), pkill -9 process_name, pkill -u username (终止属于指定用户的所有进程)。
-
pgrep:
- 功能: 根据进程名查找进程的 PID,常与 pkill 或 kill 配合使用。
- 用法: pgrep process_name。
系统状态与性能分析 (高级)
-
vmstat:
- 功能: 报告关于进程、内存、分页、块 IO、中断和 CPU 活动的信息,用于查看系统性能瓶颈。
- 用法: vmstat 2 5 (每 2 秒采样一次,共采样 5 次)。
-
iostat:
- 功能: 监控系统磁盘 I/O 和 CPU 使用情况。
- 用法: iostat -dx 2 (每 2 秒显示一次扩展设备统计信息)。
-
sar:
- 功能: 系统活动报告器 (System Activity Reporter),收集、报告和保存系统活动信息(CPU, 内存, 磁盘, 网络等),需要安装 sysstat 包并配置。
- 用法: sar -u (CPU使用), sar -r (内存), sar -b (I/O), sar -n DEV (网络) 等,通常查看历史数据 /var/log/sa/saXX (XX 是日期)。
小编总结与建议
- 实时监控: top, htop, glances
- 进程快照: ps aux | grep ...
- 资源概览: free -h, df -h, du -sh, uptime
- 服务管理: systemctl status/start/stop/restart/enable/disable service_name (Systemd)
- 后台任务: &, jobs, fg, bg, nohup ... &, tmux/screen (强烈推荐)
- 定时任务: crontab -e, crontab -l
- 终止进程: kill PID, kill -9 PID, pkill process_name
- 深入分析: vmstat, iostat, sar
选择哪个命令取决于你的具体需求:
- 快速看下谁在吃资源? top 或 htop
- 我的程序还在运行吗? ps aux | grep myprogram
- 内存/磁盘满了? free -h, df -h, du -sh /path | sort -h
- 启动/停止 Nginx 服务? sudo systemctl start/stop/restart nginx
- 让一个脚本在后台运行且退出终端也不中断? nohup ./script.sh & 或 tmux
- 每天凌晨备份? crontab -e
- 强制干掉一个卡死的进程? kill -9 PID 或 pkill -9 processname
熟练掌握这些命令是有效管理 Linux/Unix 服务器的基础,建议多在测试环境中练习使用,对于关键操作(尤其是 kill -9, rm -rf, crontab -r),务必谨慎确认目标!


