1. 查看进程

ps -aux
ps -ajx
# a: 显示终端上所有进程,包括其他用户进程
# u: 显示进程的详细信息
# x: 显示没有控制端的进程
# j: 列出与作业控制相关的信息

ps -aux 查看格式:

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root10.10.100?Ss3月261:22./main

STAT 参数意义:

D不可中断 Uninterruptible(usually IO
R正在运行,或在队列中的进程
S(大写)处于休眠状态
T停止或被追踪
Z僵尸进程
W进入内存交换(从内核2.6开始无效
X死掉的进程
<高优先级
N低优先级
s包含子进程
+位于前台的进程组

2. 动态显示进程

top 实时显示进程动态

top -d 5 : 指定显示信息更新时间间隔为5秒

可按以下键对显示结果进行排序:

内存CPU运行时长用户名筛选输入PID杀死进程
MPTUK

3. 杀死进程

# 列出所有 signal
kill -l

# 根据进程号
kill [-signal] pid
# eg:
kill -9 pid
kill -SIGKILL pid

# 根据进程名
killall name p_name

4. 进程号和相关函数

  • 每个进程都由进程号来标识,其类型为 pid_t(整型),进程号的范围:0~32767。进程号总是唯一的,但可以重用。当一个进程终止后,其进程号就可以再次使用。
  • 任何进程(除 init 进程)都是由另一个进程创建,该进程称为被创建进程的父进程,对应的进程号称为父进程号(PPID)。
  • 进程组是一个或多个进程的集合。他们之间相互关联,进程组可以接收同一终端的各种信号,关联的进程有一个进程组号(PGID)。默认情况下,当前的进程号会当做当前的进程组号。

相关系统调用:

// 获取自身进程号
pid_t getpid(void);

// 获取父进程号
pid_t getppid(void);

// 获取进程组号
pid_t get pgid(pid_t pid);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐