Linux之进程管理篇(2)

发布时间:2024年01月23日

管理进程任务

1. 监视查看进程

1.1 ps命令

格式: ps? [选项]

作用:显示进程的状态。没有选项的时候显示当前用户在当前终端启动的进程。

选项:*高亮的为常用选项

a

显示所有进程

u

指定用户的所有进程

x

显示当前用户在所有终端下的进程信息

c

显示进程的真实名称k|--sort 属性 对属性排序,属性前加 - 表示倒序 ? ?ps aux k -%cpu

e

显示环境变量

f

显示程序间的关系

r

显示当前中断的进程

T

显示当前终端的所有进程

-e

显示系统内所有的进程信息,等同于-A

-f

使用完整的格式显示进程信息

-l

将目前属于用户自己这次登入的PID与相关信息列示出来,使用长格式显示

-o

pid,ppid,pgrp,tpgid,cmd、%cpu、%mem... 选项显示定制的信息,输出指定的字段

-H

显示树状结构

-a

显示统一终端下的所有程序

-N

反向选择

k|--sort

对属性排序,属性前加 - 表示倒序 ? ?ps aux k -%cpu

ps aux命令输出格式的各字段详解:

选项

功能

USER

行程拥有者,该进程是由哪个用户产生的

PID

pid,进程的 ID

%CPU

CPU使用率

%MEM

内存使用率

VSZ

占用的虚拟内存的大小

RSS

占用实际物理内存的大小

TTY

终端的次设备号,该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程

START

进程的状态如下:

D:不可中断的静止,通常用于 I/O 情况。

R:正在执行中

S:静止状态,可以被唤醒

T:暂停执行

Z:僵尸状态

W:没有足够的内存分页可分配,内存交互状态

X:死掉的进程(应该不会出现)

<:高优先序的行程

N:低优先序的行程

L:有记忆体分页分配并锁在内存内

s:包含子进程

l:多线程(小写 L)

+:位于后台。

START

进程开始的时间

TIME

执行的时间,该进程占用 CPU 的运算时间,注意不是系统时间

COMMAND

所执行的命令

ps? -elf命令输出格式的各字段详解:

选项

功能

F

进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限

S

进程状态。具体的状态和"psaux"命令中的 STAT 状态一致

UID

运行此进程的用户的 ID

PID

进程的 ID

PPID

父进程的 ID

C

该进程的 CPU 使用率,单位是百分比

?PRI?

进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改

NI

?进程的优先级,数值越小,该进程越早被执行;可以人为修改?

ADDR

该进程在内存的哪个位置

SZ

该进程占用多大内存

WCHAN

该进程是否运行。"-"代表正在运行

TTY

该进程由哪个终端产生

TIME

该进程占用 CPU 的运算时间,注意不是系统时间

CMD

产生此进程的命令名

部分相关选项所拓展的综合命令:

1)与grep组合用法,查找特定的进程

2)列出类似程序树的程序显示

3)找出与cron与syslog这两个服务有关的PID

4)如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令

拓展:

prtstat命令

作用:查看进程信息

1.2 pstree命令

格式:pstree? [选项]

作用:以树状的方式表项进程的父子关系。清楚的表达进程间的相互关系。如果指定用户名称,会以隶属于该用户的第一个进程作为根然后显示该用户的所有进程;如果不指定,则会把系统启动时的第一个进程视为根,并显示之后的所有进程。不加选项,默认只显示各进程的名称。

主要选项:*高亮的为常用选项

-a

显示每个程序的完整指令,包含路径,参数或是常驻服务的标示

-c

不使用精简标示法

-G

使用VT100终端机的列绘图字符

-h

列出树状图时,特别标明现在执行的程序。

-H

和-h类似,但特别标明(高亮显示)指定的程序

-l

采用长列格式显示树状图

-n

用程序识别码排序,预设是以程序名称来排序

-p

显示程序识别码(PID)

-u

显示用户名称

-U

使用UTF-8列绘图字符

-T

不显示线程thread,默认显示线程

1.3 top命令

格式:top? [-d秒数]

功能:动态显示CPU利用率,内存利用率和进程状态等相关信息,是目前使用最广泛的实时系统性能监视系统。默认每5秒更新显示信息,"??-d秒数? "选项可指定刷新频率。

ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

主要选项:

-b

以批处理模式显示程序信息,一般和"-n"选项合用,用于把 top 命令重定向到文件中

-c

显示完整命令

-d

指定 top 命令每隔几秒更新。默认是 3 秒

-n

指定 top 命令执行的次数(也可以表示更新几次后停止更新显示),一般和"-"选项合用

-S

以累积模式显示程序信息

-s

使 top 命令在安全模式(不使用交互指令)中运行,避免在交互模式中出现错误

-p

查看指定 ID 的进程

-u?? 用户名

只监听某个用户的进程

然后执行top命令后,在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作

?或 h

显示交互模式的帮助

c

按照CPU的使用率排序,默认遵循此选项排序

M

按照内存的使用率排序

N

按照PID排序

T

按照CPU的累积运算时间排序,也就是按照“TIME+项”排序

k

按照PID给予某个进程一个信号,一般用于终止某个进程,信号9是强制中止的信号

r

按照PID给某个进程重设优先级(Nice)值

q

退出top命令

2. 搜索查找进程

pgrep命令

格式: pgrep? ?[options]? pattern

作用:通过程序的名字或其他属性查找进程,一般用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了。pgrep程序检查系统中活动的进程,报告进程属性,匹配命令行上指定条件的进程ID。每一个进程 ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

-U或-u

指定用户进程

-l

显示进程名

-a

显示完整格式的进程名

-P

显示指定进程的子进程

注:有时候已知程序名不知道pid号,我们可以使用如下命令:

pidof? ?命令

作用:根据进程名 来找pid号

3. 控制管理进程

3.1 kill命令

格式:kill ?[信号] ?PID

作用:kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。而且通常中止一个前台进程可以使用Ctrl+c,对于后台进程就需要使用kill命令来中止,就需要先使用ps/pidof/pstree/top/等工具获取PID。

也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

注:kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。Linux 定义了几十种不同类型的信号,可以使用 kill -l 命令查看所有信号及其编号。

日常主要的信号代码如下:

-0

给所有在当前进程组中的进程发送信号,程序退出时收到该信息

-1

挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化

-2

表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号

-3

退出

-9

杀死进程,即强制结束进程

-11

段错误

-15

正常结束进程,是 kill 命令的默认信号

-17

将进程挂起

-19

将挂起的进程激活

3.2 killall命令

格式:killall ?[选项] ?[信号] ?进程名

作用:killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。

选项:

-i

交互式,询问是否要杀死某个进程

-l

忽略进程名的大小写

3.3 pkill命令

格式:pkill ?[信号代码] ?进程名

作用:当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程。

前台进程与后台进程

默认情况下,一个命令执行后,此命令将独占Shell,并拒绝其他输入。称为前台进程。反之,则称为后台进程。对每一个终端,都允许有多个后台进程。对前台进程/后台进程的控制与调度,被称为任务控制。

将一个前台进程放入后台:

command &? ? ? ? ? ?#将一个进程直接放入后台。

ctrl + z? ? ? ? ? ? #将一个正在运行的前台进程暂时停止,并放入后台。

控制后台进程:

jobs? ? ? ? ? ? ? ?   ? ?  #列出系统作业号和名称

fg? [%作业号]? ? ? ? ? ? ? #前台恢复运行

bg  [%作业号]? ? ? ? ? ? ? #后台恢复运行

kill [%作业号]? ? ? ? ? ? ?#给对应的作业发送中止信号

注:& 还可以并行执行任务

如:ping 127.0.0.1&ping 127.0.0.2&ping 127.0.0.3&

调度进程

1. at 调度

格式:at? [选项]? [时间]

作用:设置指定时间执行指定的命令(一次性的调度)

选项

-f

从指定文件而非标准输入设备获取将要执行的命令

-l

显示等待执行的调度作业

-d

删除指定的调度作业

进程开始执行的时间格式如下:

绝对计时法:

HH:MM

采用24小时计时制,如果采用12小时计时制,则需要在时间后面加上AM或PM。

比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。

MMDDYY 或 MM/DD/YY 或 DD.MM.YY

指定具体日期,必须在 “HH:MM” 后,比如 011518 表示 2018 年 1 月 15 号。

相对计时法:

now+时间间隔

以 minutes、hours、days 或 weeks 为单位

例如 now+5 days 表示命令在 5 天之后的此时此刻执行。

直接计时法:

today? ? ? ? ? ? ? ? ? ? ? ? ? 今天

tomorrow? ? ? ? ? ? ? ? ? ? 明天

Midnight(midnight)深夜,代表 12:00 AM(也就是 00:00)

Noon(noon)? ? ? ? ? ?中午,代表 12:00 PM(相当于 12:00)

Teatime(teatime)? ?下午茶,代表 4:00 PM(相当于 16:00)

2. batch调度

格式:batch? [选项]? [时间]

作用:与at命令几乎一模一样,二者命令的选项也相同。唯一的区别在于,如果不指定运行时间,进程将在系统较空闲时运行。batch调度适合于时间上要求不高,但是运行时占用系统资源较多的工作。

3. cron调度

at调度和batch调度中指定的命令只能执行一次,但是实际工作时,,有些命令需要在指定日期和时间重复执行,这时,cron调度就能很好满足这一点。

cron调度与crond进程 , crontab命令和crontab配置文件有关。

3.1 crontab配置文件

用户的crontab配置文件保存于 “/var/spool/cron” 目录中,其文件名与用户名相同。crontab配置文件保存cron调度的内容,共有6个字段,从左到右依次为分钟、时、日期、月份、星期和命令,如表所示。

字段

*

*

*

*

*

分钟

日期

月份

星期

命令

取值范围

0~59

0~23

01~31

01~12

0~6,0为星期天

1)所有字段不能为空,字段之间用空格分开,如果不指定字段内容,则使用 *符号,代表任何时间。

2)可使用 “-”符号表示。如在日期字段中输人“1一5”,表示每个月前5天每天都要执行该命令。

3)可使用 "," 符号来表示指定的时间。如在日期字段中输入“5,15,25”,则表示每个月的5日、15日? ? ? ? 和25日都要执行该命令。

4)可使用 "/(正斜线)" 代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一? ? ? ? ? 次命令。

5)如果执行的命令未使用输出重定向,那么系统把执行结果以邮件的方式发送给crontab文件的? ? ? ? ? 所有者,用户可用mail命令查看邮件。

3.2 crontab 命令

格式: crontab? [选项]

作用:维护用户的crontab配置文件

选项

-e

创建并编辑crontab配置文件

-l

显示crontab配置文件的内容

-r

删除crontab配置文件

-i

在删除用户的 crontab 文件时,给确认提示。

-u

用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行

3.3 crond进程

crond进程在系统启动时自动启动,并一直运行于后台。crond 进程负责检测crontab配置文件,并按照其设置内容定期重复执行指定的cron调度工作。创建或修改了crontab配置文件后,要用“service crond restart”命令重启crond服务。

注:在创建crontab 定时任务时,需要注意以下几个事项

6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

文章来源:https://blog.csdn.net/qq_66204767/article/details/135748351
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。