进程管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程管理相关的知识,希望对你有一定的参考价值。

进程管理
目标:
1、熟悉进程管理的基本概念
2、熟悉进程的增、删、改(调优先级)、查
3、进程管理的相关命令:pstree、ps、pidof、top、kill、pkill、killall、xkill、nice、renice、vmstat、sar

基本概念和应用
程序(Program):实现某种功能的流程和顺序。程序是静态的,是以文件的形式存储在硬盘上的。
进程(process):正在运行的程序。进程是动态的,是工作在内存中的。打开一个程序就会产生一个父进程,甚至会产生多个子进程。

父进程:打开程序时产生的主进程。centos7系统启动时产生的第一个父进程是systemd,而centos6~5的第一个父进程是init(也称SystemV)。
子进程:由父进程产生的子集进程。

查看进程树:pstree ; pstree | grep ssh

练习:执行以下操作,体验进程增、删、改、查管理的基本操作。
vi /tmp/a.txt & 在后台运行vi命令。 &表示在后运行命令
vim /tmp/b.txt & 在后台运行vim命令。 &表示在后运行命令
ping 127.1 | grep ttl & 在后台运行ping命令
pstree | grep vi
ps -f 静态查看进程信息,-f显示完整信息(full)
kill -9 3400 3401 强制结束pid进程号为3400、3401的进程
killall -9 ping 强制结束ping命令的所有进程

进程的前后台管理(最小化、最大化)
进程的运行模式:
交互式:如vim等程序在运行时需要用户实时与电脑互动操作。
非交互式:程序在运行时,无需用户进行操作。如ls。

前台运行:会占用命令终端。如执行ping 127.1时,用户无法再执行其他的命令。用ctrl+c强制结束前台进程。用ctrl+z可将前台进程切换到后台暂停执行。用fg可将后台任务切换到前台执行。
后台运行:不会占用命令终端,通常是一些系统服务在后台运行。如防火墙、DHCP、vsftpd、httpd等服务。在命令后添加&可以让命令在后台运行。

练习:执行如下操作,体验进程的前、后(最小化)台切换操作。
firefox & 在后台运行firefox程序。&是在后台运行的符号
ping 127.1 > /tmp/1.txt 在前台运行ping命令
ctrl+z 将前台进程切换到后台,状态为暂停执行。相当于最小化。
ping 127.8 > /tmp/8.txt 在前台运行ping命令
ctrl+z 将前台进程切换到后台,状态为暂停执行
jobs 查询所有的后台任务。类似于windows的任务栏功能。
tail -0f /tmp/1.txt & 在后台运行tail命令。
bg 2 激活3号后台任务,即将3号任务在后台运行。
fg 2 将2号任务切换到前台运行。fg是foreground的缩写。
ctrl+c 强制终止当前的前台任务
killall -9 ping firefox tail 强制结束ping、firefox、tail程序的进程。killall是模糊匹配关键字。

nohup命令
问题:当命令终端关闭后,命令终端下后台运行的所有进程将会被自动终止。如何避免这种问题呢?
答:用nohup命令让后台运行的进程跟命令终端脱离关系。如nohup firefox &回车后关闭命令终端窗口,发现firefox软件并没有被关闭。

练习:执行如下操作,体验nohup命令让某条命令在后台运行时跟命令终端脱离关系。
killall -9 ping
ping 127.1 > /tmp/1.txt &
nohup ping 127.2 > /tmp/2.txt &
jobs
ps -f -C ping 或 ps aux | grep ping 查询ping命令的进程,-C是command命令的意思
exit
新开命令终端窗口,执行ps aux|grep ping,发现ping 127.1这条命令的进程没有了,而ping 127.2这条命令的进程依然存在。

ps命令
功能:显示进程状态。
用法:ps [选项]
查帮助手册:man ps
常见用法:用man ps在帮助手册中输入/EXAMPLES找到如下实例
ps -ef
ps axu

ps查看进程
静态查看进程某个时刻的状态,信息主要包括进程的用户、pid、stat状态、command命令等信息。

whatis ps 显示ps命令的功能描述
man ps 查看ps帮助手册(man是manual手册的缩写)

例:ps 查进程状态

查看当前终端号:tty
tty终端:即当前的命令窗口界面。当前终端号用tty命令查。
pts/0~n:是伪终端,通常是指远程登录到此linux服务器的命令界面。

ps选项:
(注,选项使用-的显示结果可能有差异)
a 显示其他终端的进程。例:ps a
u 以user、pid这种格式显示进程信息。例:ps u
x 显示系统中属于系统自己的所有进程,通常是开机启动系统时产生的进程(即tty终端为?表示没有终端)例:ps x
e 显示进程中命令的环境信息。例:ps e
f 以_显示进程间的父子关系。例:ps f
-C 显示指定命令(command)的进程。例:ps ef -C sshd
l 或-l,以BSD长格式显示进程信息。例:ps l
-o 按自定义格式输出(output)信息。例 ps -f -o user,pid,tname,time,cmd

ps l
ps u

ps aux 显示所有的进程

ps信息解释
ps u 以user、pid这种格式显示进程信息
USER 进程的用户
PID 进程的标识号
%CPU CPU的使用率
%MEM 内存的使用率
VSZ 虚拟内存使用量
RSS 真实物理内存使用量
TTY 控制台(虚拟终端号)
STAT 进程状态
START 开启进程的时间
TIME 占用cpu的时间
COMMAND 终端上进程的名字(命令名称)

PID
1 1号进程(init或systemd也称为初始化进程) 1号进程是其他进程的父进程 其他的进程是1号进程的子进程

进程的STAT状态
(红字母为必须知道的状态)
说明:以下状态在man ps的579行的位置(用/CODE查)
R(running) 运行状态 (cpu正在处理的)
S(sleeping) 睡眠状态、休眠状态 (暂时没正在运行,后台挂着,通常是系统服务或网络服务)
Z(zombie) 僵尸状态 ,看到僵尸状态的进程就是没有正常退出的 杀死
T(stopped) 暂停状态 挂起状态(不会占用cpu)。例ping 127.0.0.1回车后按ctrl+z即可暂停运行ping命令,用ps u查。

X 死掉的进程。
< 高优先级。例:ps aux | more
N 低优先级
s 包含子进程(sub)。例:ps uf

  • 位于后台的进程组。相当于win7文件夹窗口左侧目录树中的+号。
    l 多线程的进程。

孤儿进程:父进程死了,但子进程还活着在。通常是程序的进程异常时才会出现

以上是关于进程管理的主要内容,如果未能解决你的问题,请参考以下文章

进程管理 os编程

进程管理内存管理存储管理初步了解

Linux系统管理-进程管理

22. Linux的进程管理

进程管理之top命令

任务管理器 里面的进程