实时进程监控与资源查看
-
top:
- 功能: 经典的实时动态查看系统关键信息(CPU、内存、Swap 使用率)和进程列表(默认按 CPU 使用率排序)。
- 常用操作:
P(大写): 按 CPU 使用率排序。M(大写): 按内存使用量排序。T(大写): 按运行时间排序。1: 显示所有 CPU 核心的单独使用情况。k: 终止指定 PID 的进程(需输入 PID)。r: 调整进程的优先级(需输入 PID 和 nice 值)。h: 查看帮助。q: 退出。
-
htop:- 功能:
top的增强版,提供更直观的彩色界面、垂直/水平滚动、鼠标支持、树状视图(按 F5)显示进程父子关系、更方便地查找、过滤、终止进程等。 - 安装: 通常需要额外安装 (
sudo apt install htopfor Debian/Ubuntu,sudo yum install htopfor 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(恢复最近一个被挂起的作业)。
- 功能: 将挂起(用 Ctrl+Z)的作业放到后台继续运行。
-
nohup:- 功能: 运行命令,并忽略挂断信号(SIGHUP),即使关闭终端或退出登录,命令也能继续运行,输出默认重定向到
nohup.out。 - 用法:
nohup command &(通常与&一起使用)。
- 功能: 运行命令,并忽略挂断信号(SIGHUP),即使关闭终端或退出登录,命令也能继续运行,输出默认重定向到
-
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。
- 功能: 根据进程名查找进程的 PID,常与
系统状态与性能分析 (高级)
-
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 是日期)。
- 功能: 系统活动报告器 (System Activity Reporter),收集、报告和保存系统活动信息(CPU, 内存, 磁盘, 网络等),需要安装
小编总结与建议
- 实时监控:
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),务必谨慎确认目标!
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/292856.html

