Linux 如何查看进程和控制进程
更新:HHH   时间:2023-1-7


Linux如何查看进程和控制进程

前言: 程序是保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序。在Linux系统中,每个程序启动后可以创建一个或多个进程。例如,提供Web服务的httpd程序,当有大量用户同时访问Web页面时,httpd程序可能会创建多个进程来提供服务 。

一:查看和控制进程

使用不同的命令工具可以从不同的角度查看进程状态 。

1、查看静态的进程统计信息 ——ps

​ ps aux ps -elf

a:显示当前终端下的所有进程信息

u:以用户为主的格式输出进程信息

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

-e:显示系统内的所有进程信息

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

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

第一行列表字段表示的含义:

​ USER:启动该进程的用户账号名称

​ PID:该进程的ID号,在当前系统中是唯一的

​ TTY:该进程在哪个终端上运行。“?”表未知或不需要终端

​ STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状态的进程应予以手动终止。

​ START:启动该进程的时间

​ TIME:该进程占用CPU时间

​ COMMAND:启动该进程的命令的名称

​ %CPU:CPU占用的百分比

​ %MEM:内存占用的百分比

​ VSZ:占用虚拟内存(swap空间)的大小

​ RSS:占用常驻内存(物理内存)的大小

在系统中运行的进程数量较多,需要查询某一个进程信息时,可以结合管道操作和grep命令过滤。 如:过滤出包含“bash”的进程信息

2、查看动态的进程信息 ——top

​ top命令在当前终端以全屏交互的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次。作用相当于Windows系统的任务管理器。

3、查询进程信息 ——pgrep

​ pgrep 是用来查询特定进程信息的专用工具,使用pgrep 可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性查询特定进程的PID号。

结合“-l” 可同时输出对应的进程名。例如: 查询进程名中包含“log” 的进程及PID号

4、查看进程树——pstree

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

​ pstree -aup

a : 列出完整的命令信息

u:列出对应的用户名

p: 同时列出对应的PID号

查看指定用户的进程树结构,只要指定用户名作为参数即可。前提这个用户是可以被登录的

二 :控制进程
1、启动进程

在Linux中,可以由用户手工启动或按预定计划调度启动新的进程。

(1)手工启动进程

​ 由用户手工输入命令或可执行程序的路径,可以至少启动一个进程。可分为前台启动和后台启动。进程在前台运行时必须等到该进程执行结束并退出才能继续输入其他命令,大多数命令都是在前台启动运行。 启动后台进程需要使用“&”操作符,放在执行命令的最后,进程启动会直接放入后台运行,不占用前台命令操作界面。

​ 例如:把目录/mnt/packages 复制到/opt/ 下,由于需要复制的数据较多,因此可结合“&” 符号将复制操作放到后台运行,以便可以继续执行其他命令操作。

(2)调度启动进程

​ 进程的调度启动可以通过at、crontab 命令进行设置,at 命令用于设置一次性计划任务,crontab 用于设置周期性运行的计划任务。

at 一次性任务设置

​ 只在指定的时间点执行一次,前提是对应的系统服务atd必须已经运行。注意:计划执行任务的时间、日期必须安排在当前系统的时刻之后,否则无法正确设置计划任务。

删除第2条at计划任务:atrm 2

crontab周期性任务设置

​ 使用crontab命令设置的计划任务可以按预设的周期重复执行,大大减轻设置重复性系统管理任务的操作,由软件包cronie提供crontab工具、系统服务crond和配置文件/etc/crontab。 前提是对应的系统服务crond必须已运行。

首先需要知道配置文件在哪边

-e:编辑计划任务列表

-u:指定所管理的计划任务属于哪个用户,默认时针对当前用户自己,一般只有root用户有权限使用此选项

-l:列表显示计划任务

-r:删除计划任务

Crontab计划任务的配置格式中,五个时间字段依次为分钟、小时、日期、月份、星期。

实例:

1、每一分钟执行一次myCommand

* * * * * myCommand

2、每小时的第3和第10分钟执行myCommand

3,10 * * * * myCommand

3、每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2 * * myCommand

4、每晚的21:30重启smb

30 21 * * * /etc/init.d/smb restart

5、每天18:00至23:00之间每隔30分钟重启smb

0,30 18-23 * * * /etc/init.d/smb restart

6、每一小时重启smb

* */1 * * * /etc/init.d/smb restart

7、晚上11点到早上7点之间每隔一小时重启smb

* 23-7/1 * * * /etc/init.d/smb restart
返回云计算教程...