进程管理
1.1 程序与进程的关系
程序 -> 软件
-
程序是保存在尾部存储介质(如硬盘,光盘)等中的可执行静态
-
静态保存代码
进程:
-
加载到内存中的程序代码(计算机程序,由cup运行)
-
动态执行的代码
-
父子进程:每一个进程可以创建爱你一个或多个进程
-
systemd为系统请懂得第一个程序:pid号为1
-
守护进程:常驻内存,与终端无关的进程(自己在系统后台执行)
-
用户进程:通过终端执行加载的程序
1.2 ps命令:
-
查看静态的进程统计量
-
linux上进程有5种状态:
-
运行(正在运行或在运行队列中等待)
-
中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
-
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
-
僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
-
停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
-
-
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
-
参数
a 显示所有进程-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示
-
ps aux #查看所有进程
-
-
user:,用户名字
-
pid:pid号
-
%cup:cup使用率
-
%mem:内存使用率
-
vsz:虚拟内存
-
Rss: 常驻物理内存
-
tty:终端 “?”表示为之活着不需要终端
-
stat:状态
S:可中断的睡眠
R:就绪或者运行的状态
Z:僵死状态
<:高优先级进程
+:前台进程组中的进程 -
start:使用时间
-
time:运行时间
-
command:命令
-
-
ps -elf #比aux多一个ppid号和一个ni:启动时候的优先级负数
-
ps aux | grep "sshd" #查看sshd进程是否活着
最后一个进程是查询sshd时的进程,前面两个是运行的进程
ps -C sshd --no-headers #查询进程名称且检查是否存活
1.4. 终止进程:
-
Ctrl+c
-
kill命令:-9 ipd号:强制杀死
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号 -
killall命令
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示
-u 指定用户 -
pkill命令:根据指定条件终止
pkill 和killall 应用方法差不多,也是直接杀死运行中的程式;如果你想杀掉单个进程,请用kill 来杀掉。