查看进程
ps命令的选项——查看静态进程(processes statistic)
ps 直接加选项:三种选项风格 (a)
- BSD风格(free 风格)(ps aux)
- Unix风格(ps -elf)
- GNU风格(Gnu is not Unix)(ps --user root)
|
常用选项 |
说明 |
|
a: |
显示当前终端下的所有进程信息,包括其他用户的进程。与“x"选项结合时将显 示系统中所有的进程信息 |
|
u: |
使用以用户为主的格式输出进程信息 |
|
x: |
显示当前用户在所有终端下的进程信息 |
|
-e: |
显示系统内的所有进程信息 |
|
-l: |
使用长(Long)格式显示进程信息 |
|
-f: |
使用完整的(FuI)格式显示进程信息 |
例:
1、执行[root@localhost ~]# ps aux命令后,将以简单列表的形式显示出进程信息

- 第一行为列表标题,其中各字段的含义:
- USER:启动该进程的用户账号的名称
- PID:该进程在系统中的数字ID号,在当前系统中是唯一的
- %CPU:CPU 占用的百分比
- %MEM:内存占用的百分比
- VSZ:占用虚拟内存(swap 空间)的大小
- RSS:占用常驻内存(物理内存)的大小
- TTY:表明该进程在哪个终端上运行。“?”表示未知或不需要终端(TTY终端、虚拟终端)
- STAT:显示进程当前的状态,如 S(休眠)、R(运行)、Z(僵死)、
- START:启动该进程的时间
- TIME:该进程占用的 CPU 时间
- COMMAND:启动该进程的命令的名称
2、执行“ps -elf”命令,则将以长格式显示系统中的进程信息,并且包含更丰富的内容
3、执行不带任何选项的 ps 命令时,将只显示当前用户会话中打开的进程
4、由于系统中运行的进程数量较多,需要查询某一个进程的信息时可以结合管道操作和grep 命令进行过滤
top命令——查看进程动态信息
- 使用 ps 命令查看到的是一个静态的进程信息,并不能连续地反馈出当前进程的运行状态,若希望以动态刷新的方式显示各进程的状态信息,可以使用top 命令
1、执行[root@localhost ~]# top命令后,将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒钟刷新一次,其作用基本类似于 Windows 操作系统中的任务管理器

- 开头的部分显示了系统任务(Tasks)、CPU 占用、内存占用(Mem)、交换空间(Swap)等汇总信息
- 系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数
- CPU 占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/0等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的 CPU 百分比,主要看%id 部分
- 内存占用(Mem)信息:total,总内存空间:free,空闲内存;used,已用内存;buff/cache,物理内存和交换内存的缓冲区总和
- 交换空间(Swap)占用:total,总交换空间;free,空闲交换空间;used,已用交换空间;avail Mem,可用物理空间
pgrep命令——查询进程信息
- 通过 pgrep 命令,可以只指定进程的一部分名称进行查询,结合"-l"选项可同时输出对应的进程名(否则只输出 PID 号,不便于理解)
- 结合“-U”选项查询特定用户的进程
- 结合“-t"选项查询在特定终端运行的进程
pstree命令——查看进程树
- pstree 命令默认情况下只显示各进程的名称
- 结合“-p”选项使用时可以同时列出对应的 PID 号
- 结合“-u”选项可以列出对应的应户名
- 结合“-a”选项可以列出完整的命令信息
- 执行“pstree -aup"命令可以查看当前系统的进程树,包括各进程对应的PID 号、用户名、完整命令等信息,可以看出systemd进程确实是Linux操作系统所有进程的始祖
控制进程
1、启动进程
(1)手工启动进程
- 由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动
- 进程在前台运行(如执行“ls-l"命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行
- 启动后台进程需要使用“&"操作符,将“&"操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作
(2)调度启动进程
- 在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务,这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务
- 进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务
2、改变进程运行的方式
(1)挂起当前的进程
- 当 Linux 操作系统中的命令正在前台执行时(运行尚未结束),按 Ctr+Z 组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用
(2)查看后台的进程
- 需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合“-l"选项可以同时显示该进程对应的 PID 号
[root@localhost ~]# jobs -l
[1]+28584 停止 wget ftp://173.17.17.13/firefox-3.6.13.tar.bz2
(3)将后台的进程恢复运行
- 使用 bg(BackGround,后台)命令,可以将后台中暂停执行(如按Ctr+Z组合键挂起)的任务恢复运行,继续在后台执行操作
- 而使用fg命令(ForeGround,前台),可以将后台任务重新恢复到前台运行
- (多个后台时,bg和fg都需要指定后台进程的编号)
3、终止进程执行
- 当用户在前台执行某个进程时,可以按 Ctr+C 组合键强制进行中断
- 当想无法终止程序或终止其他或后台进程时,可以使用专用的进程终止工具 kil、killall 和 pkill
(1)使用kill命令终止进程
- 通过 ki 命令终止进程时,需要使用进程的 PID 号作为参数,若该进程已经无法响应终止信号,则可以结合“-9”选项强行终止进程
(2)使用killall命令终止进程
- 可以结束多个想通名称的进程,同样也有“-9”选项
(3)使用pkill命令终止进程
- 使用 pki 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与 pgrep 命令基本类似,如“-U”(指定用户)、“-t”(指定终端)等选项,使用起来非常方便
计划任务管理
在 Linux 操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务(如定期备份、定期采集监测数据)
1、at一次性任务设置
- 设置一次性计划任务时,在 at命令行中依次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按 Ctr+D组合键提交任务
[root@localhost ~]# date
Sun May 7 10:33:13 EDT 2017
[root@localhost ~]# at 10:35 2017-05-07
at> pgrep -U root |wc -l> /tmp/ps.root
at> <EOT> //任务设置完毕后按 Ctrl+D 组合键提交
job 1 at Sun May 7 10:35:00 2017
[root@localhost ~]# cat /tmp/ps.root //等过了计划时间后验证命令结果
202
- 对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atg 命令进行查询
- 若要删除指定编号的 at任务,可以使用 atrm 命令
2、crontab周期性任务设置
使用 crontab 命令设置的计划任务可以按预设的周期重复执行,从而大大减轻设置重复性系统管理任务的操作。启用周期性任务也有一个前提条件,即对应的系统服务 crond 必须已经运行
1、crontab的配置文件和目录
(1)/etc/crontab--系统任务配置文件

(2)/varlspool/cron/--用户 cron 任务的配置文件存放目录
- 由用户自行设置(使用 crontab 命令)的 cron 计划任务将被保存到目录var/spool/cron/中,文件名与用户名相同
[root@localhost ~]# ls -l /var!spoolcron/*
-rw------.1 root root 33 May 7 11:01 /var/spool/cron/root
2、使用crontab 命令管理用户的计划任务
- -e:编辑计划任务列表
- -u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)
- -1:列表显示计划任务
- -r:删除计划任务列表
(1)编辑用户的任务计划列表
执行“crontab -e”命令后,将打开计划任务编辑界面(与v中的操作相同),用户可以自行添加具体的任务配置,每行代表一个记录,配置的格式与/etc/crontab 文件中的主体部分类似
01 *** * /root/run hourly_cmd
02 4*** /root/run_daily_cmd
22 4**0 /root/run weekly_cmd
42 4 1** /root/run_monthly_cmd
50 3 2 1 * /root/run_yearly_cmd
|
分钟 |
小时 |
日期 |
月份 |
星期 |
执行的命令 |
|
取值为 0~59 的任意整数 |
取值为 0~23 的任意整数 |
取值为 1~31 的任意整数(日期在该月份中必须有效) |
取值为 1~12 的任意整数 |
取值为 0~7的任意整数,0或7代表星期日 |
可以是普通的命令,也可以是自己编写的程序脚本 |
|
01 |
* |
* |
* |
* |
run_hourly_cmd |
|
02 |
4 |
* |
* |
* |
run daily_cmd |
|
22 |
4 |
* |
* |
0 |
run weekly_cmd |
|
42 |
4 |
1 |
* |
* |
run_monthly_cmd |
|
50 |
3 |
2 |
1 |
* |
run yearly cmd |
|
除了“*”以外,还可以使用“”(减号)、“,”(逗号)、"”(斜杠)与数字构成表达式来表示较复杂的时间关系 | |||||
|
减号“-”:可以表示一个连续的时间范围,如“1-4”表示整数 1、2、3、4 | |||||
|
逗号“,”:可以表示一个间隔的不连续范围,如“3,4,6,8” | |||||
|
斜杠符号“/:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3天 | |||||

被折叠的 条评论
为什么被折叠?



