管理进程
本单元涵盖的主题:
监控进程
终止进程
计划定期任务
延迟任务
监控进程
进程是运行程序的实例。 ps 命令可用于列出进程。默认情况下,它提供的有用信息很少。它仅显示从此终
端启动的进程(在 X 会话中,每个窗口是一个终端 ... )。但是如果需要帮助。可以使用 ps 命令的命令行参
数(数量很多,其中有些没必要了解),您可以对其进行定制以提供非常简要的信息。每个人都有自己偏好
的选项,但是建议您采用一下设置:
# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19244 1424 ? Ss 08:49 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 08:49 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:49 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 08:49 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 08:49 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S 08:49 0:00 [migration/1]
root 7 0.0 0.0 0 0 ? S 08:49 0:00 [ksoftirqd/1]
root 8 0.0 0.0 0 0 ? S 08:49 0:00 [watchdog/1]
root 9 0.0 0.0 0 0 ? S 08:49 0:00 [events/0]
top 实用程序显示当前进程的自动更新列表:
top - 09:10:55 up 21 min, 2 users, load average: 0.43, 0.21, 0.14
Tasks: 185 total, 1 running, 184 sleeping, 0 stopped, 0 zombie
Cpu(s): 8.5%us, 13.5%sy, 0.0%ni, 76.6%id, 1.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2037892k total, 1949432k used, 88460k free, 17760k buffers
Swap: 1584528k total, 0k used, 1584528k free, 418948k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2043 qemu 20 0 757m 510m 2896 S 21.2 25.7 4:15.88 qemu-kvm
2095 qemu 20 0 832m 528m 2920 S 16.9 26.6 3:45.13 qemu-kvm
2409 william 20 0 283m 13m 9344 S 4.0 0.7 0:01.31 gnome-terminal
2148 root 20 0 157m 33m 8236 S 1.7 1.7 1:45.62 Xorg
2382 william 9 -11 425m 4916 3540 S 0.7 0.2 0:00.21 pulseaudio
2322 william 20 0 32180 1636 788 S 0.3 0.1 0:00.16 dbus-daemon
2883 william 20 0 14940 1236 896 R 0.3 0.1 0:00.09 top
1 root 20 0 19244 1424 1156 S 0.0 0.1 0:00.81 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
7 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
可在 top 内使用一下键管理显示内容:
M :按内存使用率排列进程
P :按处理器使用率排列进程
h :显示有关更多命令的帮助
q :退出
如果按内存使用情况排列进程, top 认为 RES 比 VIRT 更重要。 RES 是进程当前使用的物理内存量(“驻留集”)。 VIRT 是进程在虚拟内存映射中当前预留待用的空间,意义要小得多。甚至连 RES 都可能是高估值因为它包含与其他进程共享的内存。在 ps 中, VIRT 标记为 VSZ , RES 是 RSS 。
终止和管理进程
进程使用称为信号的消息进行通信。进程随时都会接受信号(异步)。除信号编号(表示信号属于哪种类型)之外,信号不携带其他任何信息。
根据信号编号,进程能以不同方式处理信号:它可以退出、退出并转储内存副本、忽略信号或执行其他操作。大多数情况下,如果用户要向进程发送信号,就是要终止(退出)进程。系统事件可以向进程发送信号,
用户也可以使用 kill 命令向进程发送任意信号。
信号
1. top 和 kill 都可用于向进程发送信号。
2. kill -l :显示定义的信号编号表。
3. kill -9 3245 :向 PID 为 3245 的进程发送编号为 9 的信号。
编号 名称 功能
1 HUP 重新初始化后台程序
9 KILL 强制进程立即终止
15 TERM 请求在进行清理后终止进程(默认)
进程计划( nice 值)
Linux 系统可同时运行的进程数与它的 CPU 逻辑处理单元总数相同。
通过是进程在逻辑处理单元上轮流运行(“时间分片”),系统中运行的进程数似乎更多。
默认情况下,每个进程的 nice 值,以调整进程的优先级,使它所占的 CPU 时间份额大于或小于其他进程
。
nice 值的范围从 -20 (非常希望占用其他进程的 CPU 时间)到 19 (非常愿意将 CPU 时间让给其他进程
)默认值为 0 。
用户可以提高进程的 nice 值(请求更小的时间份额)。
只有 root 用户可以降低进程的 nice 值(请求更大的时间份额)。
renice 和 top 都可用于更改正在运行的进程的 nice 值。
Nice 可用于设置新进程的 nice 值。
示例:
renice -n 10 PID
调整 PID 的 nice 值为 10
nice -n 5 cat /dev/zero > /dev/null &
指定新进程的 nice 值为 5
6
管理定期任务
cron 设备管理必须按计划定期重复运行的程序。后台程序 crond 每分钟唤醒一次,以运行计划的任何任务
用户使用 crontab 命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务。
单个用户使用称为 crontab ( cron 表)的文本文件登记任务。 crontab -l 列出文件。 crontab -r 删除文件。 crontab -e 编辑文件。 crontab -e 使用默认编辑器是 vi 。
Crontab -e 命令将打开空的 crontab 文件。 crontab 文件的语法记录在 crontab(5) 手册中。每一行定义计划的任务,或者定义影响任务执行的“环境变量”。任务行包含六个字段:前五个字段定义分钟、小时、几号、月份和星期几,行的余下一个字段指定要运行的命令。
以下示例显示了每分钟运行 ls 命令的 cron 条目:
* * * * * ls
1 2 3 4 5 6
1 分钟:验证值为 0-59
2 小时:验证值为 0-23 , 20 表示 8:00pm
3 几号:验证值为 1-31
4 月:验证值为 1-12 ,或者该名称的前三个字母(例如 Jan )
5 星期几:验证值为 0-7 ( 0 或 7 为星期日),或者该名称的前三个字母(例如 Sun )
6 命令:如同您在命令行中键入命令一般来添加命令。使用分号 (;) 来分隔同时运行的多个命令。在不同时间添加单独行来运行命令
cron 语法 命令何时运行
05 * * * * 每小时整点过 5 分钟
05 02 * * * 每天 2:05am
30 08 01 * * 每月第一天 8:30pm
00 07 25 12 * 12 月 25 日 7:00am
30 16 * * 5 每个星期五 4:30pm
*/5 * * * * 每 5 分钟( 0 、 5 、 10...45 、 50 、 55 )
*/10 9-17 1,15 * * 在每月第一天和第十五天 9:00am 至 5:00pm 之间(在 5:00pm 不会运行,最后一次运行是在 4:50pm )每隔 10 分钟
0 0 1 jan 0 1 月 1 日午夜和 1 月的每个星期日(不仅是 1 月 1 日所在的星期日)
属于系统的任务通常保存在 /etc/crontab 文件中而不是使用 crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中(避免更新系统软件包 cronie 时出现问题)。 /etc/cron.d/crontab 文件在日期说明后另加一个字段,表示将运行作业的用户。
对于需要每天、每周或每月运行一次的脚本,可以直接将其设置为可执行文件,并保存在 /etc/cron.{daily,weekly,monthly} 中相应目录下。这些任务由 /etc/anacrontab 配置的系统 anacron 服务运行anacron 是 cron 的集成组件,用于更好地管理作业,并确保在作业因计算机关闭而未运行的情况下,在系统引导后运行作业。
计划延迟的任务
at 命令
at 命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后您便可以安全注销,因为该任务会在与 shell 会话断开连接的情况下运行。
at 命令必须指定任务应运行的时间。该指定可以是具体时间和 / 或日期(例如星期一, 10:00pm 或 7 月15 日)。也可以是当前时间的相对时间(现在时间加上 5 分钟,现在时间加上 3 天或 4:00pm 加上 1 周)通过添加其他选项,您可以在任务完成是发送邮件( -m ),或者从文件中读取任务( -f 文件),而无需通过标准输入进行。
在键入 at 命令行之后,按 Enter 并继续键入作业中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时,在单独出现的一行中按 Ctrl+d 完成任务。例如:
[root@serverX ~]# at now +2 min
at> echo "Hello from the at command" > /dev/pts/0
at> <EOT>
job 4 at 2011-08-10 14:05
在将某一 at 作业设置为运行之后,可以通过使用 atq 命令列出作业编号以及次数。若要查看作业中所包含的命令,键入 at -c # ( # 号为作业编号)。键入 Atrm # ( # 号为作业编号) 则是删除指定作业。