进程和计划任务:命令操作
前言:
程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序。在Linux系统中, 每个程序启动后可以创建一个或多个进程。例如,提供Web服务的httpd程序,当有 大量用户同时访问Web页面时,httpd程序可能会创建多个进程来提供服务。
一:查看进程
了解系统中进程的状态是对进程进行管理的前提,使用不同的命令工具可以从不 同的角度査看进程状态。下面将学习几个常用的进程查看命令,命令执行结果仅供参 考,因环境不同执行结果有差异。
1. ps命令 查看静态的进程统计信息(Processes Statistic)
ps命令是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的 各进程完整信息的静态快照。通过不同的命令选项,可以有选择性地查看进程信息。
a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结 合时将显示系统中所有的进程信息。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
-e:显示系统内的所有进程信息。
-1:使用长(Long)格式显示进程信息。
(1)直接执行不带任何选项的ps命令时,将只显示当前用户会话中打开的进程。
(2)执行“ps -aux”命令后,将以简单列表的形式显示出进程信息。
上述输出信息中,第1行为列表标题,其中各字段的含义描述如下。
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID号,在当前系统中是唯一的。
TTY:表明该进程在哪个终端上运行。“?”表示未知或不需要终端。
STAT:显示了进程当前的状态,如S (休眠)、R (运行)、Z (僵死)、< (高 优先级)、N (低优先级)、s (父进程)、+ (前台进程)。对处于僵死状 态的进程应该予以手动终止。
START:启动该进程的时间。
TIME:该进程占用的CPU时间。
COMMAND:启动该进程的命令的名称。
%CPU: CPU占用的百分比。
%MEM:内存占用的百分比。
VSZ:占用虚拟内存(swap空间)的大小。
RSS:占用常驻内存(物理内存)的大小。
(3)若执行“ps-elf"命令,则将以长格式显示系统中的进程信息,并且包含更丰富的内容。输出信息中还包括PPID列(父进程的PID号)![进程和计划任务:命令操作 进程和计划任务:命令操作](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk5Ni9mNjhhNzY3ODc5OTQ0ZjI1NmJiNTA2NzhmNmZhZWE4Yy5wbmc=)
2. top命令 – 查看进程动态信息
使用top命令,能连续地反馈出当前进程的运行状态,以动态刷新的方式显示各进程的状态信息。top命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系 统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的 “任务管理器”。
上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、 交换空间(Swap)等汇总信息;汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。
•CPU占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id, 空闲CPU; wa, I/O等待占用;hi,硬件中断占用;si,软件中断占用;st, 虚拟化占用。
•内存占用(Mem)信息:total,总内存空间;used,已用内存;free,空闲内存; buffers,缓冲区域。
•交换空间(Swap)占用:total,总交换空间;used,己用交换空间;free,空 闲交换空间;cached,缓存空间。
在top命令的全屏操作界面中,可以按c键根据CPU占用情况对进程列表进行排 序,或按M键根据内存占用情况进行排序,按h键可以获得top程序的在线帮助信息, 按q键可以正常地退出top程序。
若通过top排名工具发现某个进程CPU占用率非常高,需要终止该进程的运行时, 可以在top操作界面中按k键,然后在列表上方将会出现“PID to signal/kill [default pid = 3172]”的提示信息,3127是top进程的PID,默认直接回车键是kill掉top这个进程, 如果输入其他进程的pid号并按Enter键确认即可终止对应的进程。
3. pgrep命令 查询进程信息
当使用ps命令查询某个进程的PID信息时,往往需要结合grep命令对输出结果 进行过滤,但这样使用非常不方便,而pgrep命令则正是用来査询特定进程信息的专 用工具。使用pgrep命令可以根据进程的名称、运行该进程的用户、进程所在的终端 等多种属性查询特定进程的PID号。
通过pgrep命令,可以只指定进程的一部分名称进行查询,结合“-1”选项可同时输出对应的进程名。
还可结合“-U ” 查询特定用户的进程 , “-t ” 查询在特定终端运行的进程。
4. pstree命令 查看进程树
pstree命令可以输出Linux系统中各进程的树形结构,更加直观地判断出各进程之间的相互关系(父、子进程)。
结合 “-p” 选项使用时可以同时列出对应的PID号,
结合 "-u” 选项可以列出对应的用户名,
结合 “-a” 选项可以列出完整的命令信息。
(1) pstree 命令默认情况下只显示各进程的名称。
(2) “pstree-aup”命令可以査看当前系统的进程树,包括各进程对应的 PID号、用户名、完整命令等信息。
(3) "pstree -ap"命令,只要指定用户名 作为参数,可以只查看属于指定用户的进程树结构。
二:启动进程,终止进程
1. 手工启动进程
手工启动又可以分为前台启动和后台启动。进程在前台运行时,用户必须等到该进程执行结束并退出 以后才能继续输入其他命令,大多数的命令操作都是在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无需等待该进程结束,适用于运 行耗时较长的操作。
启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面, 进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。
2. 査看后台的进程
需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合"-1” 选项可以同时显示出该进程对应的PID号。 在jobs命令的输出结果中,每一行记录对 应一个后台进程的状态信息,行首的数字表示该进程在后台的任务编号。
3,终止进程执行
按Ctrl+C组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程终止工具kill、killall和pkill。
(1)使用kill命令终止进程
通过kill命令终止进程时,需要使用进程的PID号作为参数。无特定选项时,kill 命令将给该进程发送终止信号并正常退出运行,若该进程已经无法响应终止信号,则 可以结合 “-9”选项强行终止进程。
(2)使用killall命令终止进程
使用killall命令可以通过进程名来终止进程,同样有“ -9 "选项。
(3)使用pkill命令终止进程
使用pkill命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与pgrep命令基本类似,如“-U”(指定用户)、“-t” (指定终端)等选项,使用起来非常方便。
三:at 一次性任务设置
使用at命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务 atd必须已经运行。需要注意的是,计划执行任务的时间、日期必须安排在当前系统的时刻之后,否则将无法正确设置计划任务。
设置一次性计划任务时,在at命令行中依次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间), 确认后将进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设 置多条语句,最后按Ctrl+D组合键提交任务即可。所设置的命令操作将在计划的时间 点被依次执行。
对于已经设置但还未执行(未到时间点)的计划任务,可以通过 “ atq ” 命令进行查询。 但已执行过的at任务将不会再出现在列表中。
若要删除指定编号的at任务,可以使用 “ atrm ” 命令。删除后的at任务将不会被执行, 并且不会显示在atq命令的显示结果中。但已经执行过的任务无法删除。
四:crontab周期性任务设置
用crontab命令设置的计划任务可以按预设的周期重复执行,可以减轻设置重复性系统管理任务的操作。
crontab命令,结合不同的选项可以完成不同的计划任务管理操作。常用的选项如下。
• -e:编辑计划任务列表。
• -u:指定所管理的计划任务属于哪个用户,默认时针对当前用户(自己), 一般只有root用户有权限使用此选项(用于编辑、删除其他用户的计划任务)o
• -1:列表显示计划任务。
• -r:删除计划任务列表。
crontab计划任务的配置字段说明
项目 | 说明 |
---|---|
分钟 | 取值为从0〜59的任意整数 |
小时 | 取值为从0〜23的任意整数 |
日期 | 取值为从1〜31的任意整数(日期在该月份中必须有效) |
月份 | 取值为从1〜12的任意整数 |
星期 | 取值为从0〜7的任意整数,0或7代表星期日 |
命令 | 可以是普通的命令,也可以是自己编写的程序脚本 |
除了 以外,还可以使用减号“-”、逗号",” 、 斜杠"/”与数字构成表达式 来表示较复杂的时间关系。
• 减号“-” : 可以表示一个连续的时间范围,如“1-4”表示整数1、2、3、4。
• 逗号",” : 可以表示一个间隔的不连续范围,如“3,4, 6, 8”。
• 斜杠符号"/” :可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔3天。