进程基础概念

什么是进程

进程是程序的一次执行实例,是系统进行资源分配和调度的基本单位。每个进程都有自己的进程ID(PID)和父进程ID(PPID)。

进程状态

状态 说明
R 运行或就绪
S 可中断睡眠
D 不可中断睡眠
Z 僵尸进程
T 停止或跟踪

进程查看命令

1. ps - 查看进程状态

查看所有进程

ps aux

查看进程树

ps auxf

查看特定用户的进程

ps -u username

按CPU使用率排序

ps aux --sort=-%cpu

按内存使用率排序

ps aux --sort=-%mem

2. top - 动态进程监控

基本使用

top

按CPU使用率排序

top -o %CPU

按内存使用率排序

top -o %MEM

只显示特定用户的进程

top -u username

更新间隔设置为3秒

top -d 3

3. htop - 增强版进程监控

启动htop

htop

常用快捷键: - F3 - 搜索进程 - F4 - 过滤进程 - F5 - 进程树视图 - F6 - 排序方式 - F9 - 结束进程

进程控制命令

1. kill - 发送信号给进程

终止进程

kill PID

强制终止进程

kill -9 PID

重新加载配置

kill -HUP PID

列出所有信号

kill -l

2. nice和renice - 调整进程优先级

以较低优先级启动进程

nice -n 10 command

调整运行中进程的优先级

renice -n 10 -p PID

3. nohup - 后台运行进程

后台运行命令

nohup command &

后台运行并重定向输出

nohup command > output.log 2>&1 &

任务管理

1. jobs - 查看后台任务

列出所有后台任务

jobs

显示任务PID

jobs -l

将任务放到前台运行

fg %job_number

将任务放到后台运行

bg %job_number

2. screen - 终端会话管理

创建新会话

screen -S session_name

列出所有会话

screen -ls

重新连接会话

screen -r session_name

分离当前会话

Ctrl + A, D

系统监控

1. vmstat - 系统资源统计

每秒显示一次统计信息

vmstat 1

显示内存统计

vmstat -s

显示磁盘统计

vmstat -d

2. iostat - IO统计信息

显示CPU和IO统计

iostat

每3秒更新一次

iostat 3

显示设备使用率

iostat -d

3. sar - 系统活动报告

CPU使用率报告

sar -u

内存使用报告

sar -r

IO和传输速率报告

sar -b

实用技巧

1. 进程监控脚本

监控特定进程的CPU使用率

while true; do
    ps -p PID -o %cpu,%mem,cmd
    sleep 5
done

2. 系统负载监控

查看系统负载

uptime

查看进程数量

ps aux | wc -l

查看CPU使用前10的进程

ps aux | sort -rk 3,3 | head -n 10

3. 内存使用分析

查看内存使用情况

free -h

查看进程内存使用详情

pmap PID

清理系统缓存

sync; echo 3 > /proc/sys/vm/drop_caches

注意事项

  1. 使用kill -9要谨慎,优先使用正常终止信号
  2. 注意进程的父子关系,避免误杀重要进程
  3. 定期检查系统负载和资源使用情况
  4. 合理使用nice值调整进程优先级
  5. 重要进程考虑使用supervisor等进程管理工具