进程管理

返回 Linux


查看进程

ps aux                        # 所有进程详情
ps -ef                        # 标准格式,含父进程 PID
ps aux | grep java            # 过滤特定进程
 
# 动态监控
top                           # 实时资源使用(按 M 按内存排序,P 按 CPU)
htop                          # top 增强版(需安装)
 
# 进程树
pstree -p                     # 树形显示进程及 PID

ps aux 输出字段:

字段说明
USER所属用户
PID进程 ID
%CPUCPU 占用率
%MEM内存占用率
VSZ虚拟内存(KB)
RSS物理内存(KB)
STAT进程状态(S睡眠 R运行 Z僵尸 D不可中断)
COMMAND启动命令

发送信号

kill -9 <PID>          # SIGKILL 强制终止
kill -15 <PID>         # SIGTERM 优雅终止(默认)
kill -1 <PID>          # SIGHUP 重新加载配置
killall nginx          # 按名称终止所有匹配进程
pkill -f "java.*app"   # 按完整命令行匹配并终止
 
# 查看可用信号
kill -l

前后台控制

command &              # 后台运行
jobs                   # 查看后台任务
fg %1                  # 将任务 1 调到前台
bg %1                  # 继续后台运行任务 1
Ctrl+Z                 # 暂停当前前台进程
Ctrl+C                 # 终止当前前台进程

nohup / disown

# 挂起后仍运行,输出到 nohup.out
nohup java -jar app.jar &
 
# 指定输出文件
nohup java -jar app.jar > /var/log/app.log 2>&1 &
 
# 让已运行的后台任务脱离终端
disown -h %1

优先级

nice -n 10 command         # 以较低优先级启动(-20~19,值越小优先级越高)
renice -5 -p <PID>         # 调整运行中进程的优先级

查看进程资源

# 打开的文件 / 端口
lsof -p <PID>              # 进程打开的所有文件
lsof -i :8080              # 占用 8080 端口的进程
 
# 进程详细状态
cat /proc/<PID>/status
 
# 线程
ps -T -p <PID>             # 进程的线程列表

systemd 管理服务进程

systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl status nginx
systemctl enable nginx     # 开机自启
systemctl disable nginx
 
journalctl -u nginx -f     # 实时查看服务日志
journalctl -u nginx --since "1 hour ago"

相关文档