linux 查看进程关系,Linux系统中查看进程和计划任务管理

 各位小伙伴们大家好,本次给大家带来的是Linux操作系统中的进程和计划任务的管理,首先大家都知道程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序,在Linux系统中,每个程序启动后可以创建一个或多个进程。

例如:提供Web服务的httpd程序当有大量用户同时访问Web页面时,httpd程序可能会创建多个进程来提供服务。那么接下来我将会从以下几点来告诉大家在Linux的CentOS 7系统中是如何查看进程信息和控制进程的。

1、查看进程

2、控制进程

3、at一次性任务设置

4、 crontab周期性任务设置

首先我们了解一下程序和进程的关系:

程序

保存在 、光盘等介质中的可执行代码和数据

静态保存的代码

进程:

在CPU及内存中运行的程序代码

动态执行的代码

父、子进程:每个进程可以创建一个或多个进程

这里给大家补充一个知识点:线程和进程的关系

每一个进程中包含多个线程,进程是线程的集合

具体关系可以如下图所示:

c2b64d453a781d681083eca284fd37c3.gif

一.查看进程

ps命令(查看静态的进程统计信息Processes Statistic)

 是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照,通过不同的命令选项,可以有选择性的查看进程信息

ps -aux(将以简单列表形式显示出进程信息):

a:查看系统当中的所有进程

u:代表指定用户

x:该用户在所有终端下的进程(tty终端,ps/0远程终端)

如果我们想查看root用户当前系统下运行的进程有哪些,输入:ps aux,得到如下界面:

516e84a381830c4f46307e12f5c69cea.png

我们来说一下各字段的含义描述:

1、USER:用户

2、PID:进程号(ls -l | grep init可以看到init的软链接,1进程为init)

3、%CPU:进程的cpu占用率

4、%MEM:进程的内存占用率

5、VSZ:虚拟内存占用

6、RSS:物理内存占用

7、TTY:终端(?代表未知,大多为本地)

8、STAT:当前进程状态,其中

“S”:可中断休眠进程

“D”:不可中断休眠进程

“s”:父进程

“N”:代表优先级低

“R”:代表正在运行的进程

“I”:多线性进程

“Z”:僵尸进程

“+”:前台进程

9、START:启动时间

10、TIME:进程占用cpu的总时间

11、COMMAND:进程的名称

ps -elf(将以长格式显示系统中的进程信息):

e:当前系统内的所有进程信息

l:使用长格式显示进程信息

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

c9a56424e2ad8103487ed5c16c59d7a1.png

我们来说一下和上面不相同的各字段的含义描述:

1、PPID:当前进程的父进程

2、PIR:用户态(人可以进行交互额)优先级

3、NI:内核态优先级(-20~19,数值越低优先级越高)

4、ADDR:-代表正在运行

5、SZ:占用swap交换分区的容量

6、WCHAN:当前进程内核态的名称

7、CMD:命令名称

top命令(查看进程动态信息)

 使用ps命令查看到的是一个静态的进程信息,并不能连续的反馈出当前进程的运行状态,若希望以动态刷新的方式显示各进程的状态信息,可以使用top命令,该命令将会在当前终端全屏交互式的界面显示进程排名,及时跟踪包括CUP、内存等系统资源占用情况,默认情况下每隔3秒刷新一次,其作用类似于windows系统中的“任务管理器”。

输入top得到如下界面:

e16560466751576d503af0b6d9ec4395.png

表中的信息表述含义如下:

1、total:总进程数

2、running:正在运行的进程数

3、sleeping:休眠的进程数、

4、stopped:中止的进程数

5、zombie:僵死无响应的进程数

6、%Cpu(s):CPU占用信息,其中:

“us”:用户占用

“sy”:内核占用

“ni”:内核调度优先级

“id”:空闲空间占用

“wa”:IO读写占用

“hi”:硬线程占用

“si”:软线程占用

“st”:虚拟化占用

7、Men:内存占用信息,其中:

“total”:总内存空间

“free”:空闲内存

“used”:已用内存

“buff/cahce”:缓存占用

8、Swap:交换空间占用,其中:

“total”:总交换空间

“free”:空闲交换空间

“used”:已用交换空间

“avail men”:物理占用

pgrep命令(查询进程信息):

 当使用ps命令查询某个进程新的PID信息时,往往需要配合grep命令对输出结果进行过滤,但这样使用非常不方便,而pgrep命令则正是用来查询特定进程信息的专用工具,使用pgrep命令可以根据进程的名称、运行该进程的用户、进城所在的终端等多种属性查询特定进程的PID号。

常见的选项:

-l:既显示PID也显示进程名

2a74250a6c94d4fb0b141b37bda4ad02.png

-U:查看指定用户的进程,此处例如zhangsan

2bd88e92b07916698e85bccda66398ed.png

此处需要注意的点:当查看指定用户的进程时,需要在虚拟机中先用zhangsan用户登录,因为只有登陆了系统才会加载进程,否侧是无法查看到的!

pstree命令(查看进程树):

 pstree命令可以输出Linux系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系(父、子进程)。

常用选项:

-p:同时列出相对应的PID号

-u:列出相对应的用户名

-a:列出完整的命令信息

输入petree -aup得到当前系统的进程数,包括各进程对应的PID号、用户名、完整命令等信息,如下图所示:

048c21b45ccf254a37fb02847cc4b80e.png

二.控制进程

进程的启动方式

1、手工启动

前台启动:用户输入命令,直接执行程序

后台启动:在命令行尾加入按&符号

后台启动举例:

当使用cp命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可以结合&符号将复制操作放到后台运行,以便于用户可以继续执行其他命令操作,执行过程和结果如下:

[root@localhost~]#cp /dev/cdrom mycd/iso &

[1]28454

2、调度启动

使用at命令,是指一次性计划任务

使用crontab命令,设置周期性计划任务

进程的前后台调度

1、Ctrl+Z组合键:

 当Linux系统中的命令正在前台执行时,按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。

2、jobs命令:

 需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合“-l”选项可以同时显示处该进程对应的PID号,在jobs命令的输出结果中,每一行记录对应一个后台进程的状态信息,首行的数字表示该进程在后台的任务编号。

3、fg命令:

 将后台进程恢复到前台运行,可指定任务序号,示例如下:

[root@localhost~]#jobs

[1]- Stopped cp/dev/cdrom mycd.iso

[2]+ Stopped top

[root@localhost~]#fg 1

终止进程的运行:

1、Ctrl+C组合键

中断正在执行的命令

2、kill、killall命令(跟号码,具有唯一性)

常用选项:

kill:用于终止指定PID号的进程

killall:用于终止指定名称的所有进程

-9:选项用于强制终止

pkill命令

1.根据特定条件终止相应的进程

2.常用选项:

-U:根据进程所属的用户名终止相应进程

-t:根据进程所在的终端终止相应进程

例如以下形式:

[root@localhost~]#pgrep -l -U“hackli”

[root@localhost~]#pkill -9 -U“hackli”

[root@localhost~]#pgrep -l -U“hackli”

举例:我们在系统中登录zhangsan用户,进入桌面:

995571eeb75a99bae9943f68df5a4d16.png

如果此时我们想把张三用户踢出,使用Xshell界面登录的root账户下输入:pkill -9 -U zhangsan,敲回车,此时系统会自动跳回开机之后的用户登录界面,zhangsan用户的所有进程全部被终止:

bf202e3cea8b8f652d57d33b1c139cea.png

三.at一次性任务设置

格式:at [HH:MM] [yyyy-mm-dd]

具体执行操作如下:

1、[root@localhost~]#date(获取系统的当前时间)

2、2019年 08月 24日 星期六 16:08:24 CST

3、[root@localhost~]#at 16:12 2019-08-24(计划性时间要在系统当前时间之后)

4、at>ps aux | wc -l > /opt/ps.txt(确定执行的动作)

5、ctrl+d(提交)

6、atq(查看计划任务)

fe6e498af1ed6c5fa1d78d09c5f3a7c7.png

到了计划时间之后输入:ls /opt/查看目录

此时显示计划的文件ps.txt被写入

589101429d2d8a8742ba911e8f77139a.png

四.crontab周期性任务设置

crontab命令

1.crontab的配置文件和目录

按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作

属于周期性计划任务

主要设置文件

全局配置文件,位于文件: /etc/crontab

系统默认的设置,位于目录: /etc/cron.*/

用户定义的设置,位于文件: /ar/5poo/cron/用户名

管理cron计划任务

编辑计划任务:crontab -e [-u 用户名]

查看计划任务:crontab -l [-u 用户名]

删除计划任务:crontab -r [-u 用户名]

定时编辑格式

4620bffe6f4ae74600e940e3cb86b00e.png

每个字段的说明:

分钟:取值为从0到59之间的任意整数

小时:取值为从0到23之间的任意整数

日期:取值为从1到31之间的任意整数

月份:取值为从1到12之间的任意整数

星期:取值为从0到7之间的任意整数,0或者7代表星期日

命令:要执行的命令或程序脚本

时间数值的特殊表示方法:

*:表示该范围内的任意时间:

,:表示间隔的多个不连续时间点

-:表示一个连续的时间范围

/:指定间隔的时间频率

应用示例:

0 17 * * 1-5 (周一到周五每天17:00)

30 8 * * 1,3,5 (每周一、三、五的8点30分)

0 8-18/2 * * * (8点到18点之间每2个小时)

0 * */3 * * (每3天)

计划性周期任务实验:

输入:cat /etc/crontab(查看配置文件)

02060cfe947700c3260a13750446cce6.png

输入:crontab -e(进如配置计划性任务列表单)

按i进行输入:

输入:33 16 * * * /usr/bin/cp -r /home /zhangsan /opt/(计划每天下午16:33执行复制zhangsan的家目录到opt中)

输入:wq保存退出

输入:crontab -l(查看到有以上命令在执行)

c3f0bb4e6a42780d68acb85427be579e.png

输入:ls /opt/(此时目录下是没有zhangsan用户的家目录的)

f1d524fefb7a3d3d293f4775ccb318b8.png

到时间之后我们进行验证,再次输入ls /opt/,此时可以看到zhangsan用户的家目录已经被复制到opt的目录下

32a882680c73c2704fbdc77ba1c79787.png

此时说明设置的计划性任务执行成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值