管理进程
本单元涵盖的主题:
 监控进程
 终止进程
 计划定期任务
 延迟任务
监控进程
进程是运行程序的实例。 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 # ( # 号为作业编号) 则是删除指定作业。