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

Posted

tags:

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

? 各位小伙伴们大家好,本次给大家带来的是Linux操作系统中的进程和计划任务的管理,首先大家都知道程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序,在Linux系统中,每个程序启动后可以创建一个或多个进程。
例如:提供Web服务的httpd程序当有大量用户同时访问Web页面时,httpd程序可能会创建多个进程来提供服务。那么接下来我将会从以下几点来告诉大家在Linux的CentOS 7系统中是如何查看进程信息和控制进程的。
1、查看进程
2、控制进程
3、at一次性任务设置
4、 crontab周期性任务设置

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

程序

  • 保存在 、光盘等介质中的可执行代码和数据
  • 静态保存的代码
    进程:
  • 在CPU及内存中运行的程序代码
  • 动态执行的代码
  • 父、子进程:每个进程可以创建一个或多个进程
    这里给大家补充一个知识点:线程和进程的关系
  • 每一个进程中包含多个线程,进程是线程的集合
    具体关系可以如下图所示:
    技术图片

一.查看进程

ps命令(查看静态的进程统计信息Processes Statistic)
? 是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照,通过不同的命令选项,可以有选择性的查看进程信息
ps -aux(将以简单列表形式显示出进程信息):

a:查看系统当中的所有进程
u:代表指定用户
x:该用户在所有终端下的进程(tty终端,ps/0远程终端)

如果我们想查看root用户当前系统下运行的进程有哪些,输入:ps aux,得到如下界面:
技术图片
我们来说一下各字段的含义描述:

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:使用完整的格式显示进程信息

技术图片

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

1、PPID:当前进程的父进程
2、PIR:用户态(人可以进行交互额)优先级
3、NI:内核态优先级(-20~19,数值越低优先级越高)
4、ADDR:-代表正在运行
5、SZ:占用swap交换分区的容量
6、WCHAN:当前进程内核态的名称
7、CMD:命令名称

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

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也显示进程名
技术图片
-U:查看指定用户的进程,此处例如zhangsan
技术图片

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

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

-p:同时列出相对应的PID号
-u:列出相对应的用户名
-a:列出完整的命令信息

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

二.控制进程

进程的启动方式
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、killkillall命令(跟号码,具有唯一性)
常用选项:

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

三.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(查看计划任务)
技术图片
到了计划时间之后输入:ls /opt/查看目录
此时显示计划的文件ps.txt被写入
技术图片

四.crontab周期性任务设置

crontab命令
1.crontab的配置文件和目录

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

主要设置文件

全局配置文件,位于文件: /etc/crontab
系统默认的设置,位于目录: /etc/cron.*/
用户定义的设置,位于文件: /ar/5poo/cron/用户名

管理cron计划任务

编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]

定时编辑格式
技术图片
每个字段的说明:

分钟:取值为从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(查看配置文件)
技术图片
输入:crontab -e(进如配置计划性任务列表单)
i进行输入:
输入:33 16 * * * /usr/bin/cp -r /home /zhangsan /opt/(计划每天下午16:33执行复制zhangsan的家目录到opt中)
输入:wq保存退出
输入:crontab -l(查看到有以上命令在执行)
技术图片
输入:ls /opt/(此时目录下是没有zhangsan用户的家目录的)
技术图片
到时间之后我们进行验证,再次输入ls /opt/,此时可以看到zhangsan用户的家目录已经被复制到opt的目录下
技术图片
此时说明设置的计划性任务执行成功。

以上是关于Linux系统中查看进程和计划任务管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统管理10——进程和计划任务管理

linux系统进程和计划任务管理

linux进程和计划任务管理操作题

Linux系统管理10——进程和计划任务管理练习题

Linux系统管理10——进程和计划任务管理

Centos进程作业管理与计划任务