任务管理
任务管理
操作系统最重要的任务之一是使用户充分有效的利用系统资源,当系统资源在一定或有限的情况下,需要同时执行更多程序,高效地完成更多任务。
进程、作业、任务调度是操作系统的重要任务之一,本节主要介绍管理相关的常用命令,包括ps、kill、fg/bg、nohup、crontab、重定向等。
ps命令
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,ps命令就是最基本的进程查看命令。使用该命令可以确定有哪些进程正在运行以及运行的状态、进程是否结束、进程是否处于僵尸态、哪些进程占用了过多的资源等。总之,大部分信息都是可以通过执行该命令得到。ps是显示进程的瞬间状态,并不动态实时显示;如果想对进程进行实时监控应该用top命令。统信服务器操作系统中进程有如下5种状态以及状态码:
-
运行(R):正在运行或在运行队列中等待。
-
中断(S):休眠中,受阻并在等待某个条件的形成或接受到信号。
-
不可中断(D):收到信号不唤醒和不可运行,进程必须等待直到有中断发生。
-
停止(T):收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信号后停止运行。
-
僵死(Z):进程已终止,但进程描述符依然存在,直到父进程调用wait4()系统,调用后释放。
■命令格式:ps [选项]
■常用选项
ps常用选项
| 选项 | 描述 |
|---|---|
| -A | 所有的进程均显示出来,与-e具有同样的效用。 |
| -a | 显示现行终端机下的所有进程,包括其他用户的进程。 |
| -u | 以用户为主的进程状态。 |
| -e | 选择所有进程,与-A相同。 |
| x | 通常与-a这个参数一起使用,可列出较完整信息。 |
| l | 较长、较详细的将所查询PID的信息列出。 |
| j | 工作的格式(jobs format)。 |
| f | 以完整格式输出,包括命令行。 |
■执行示例
◆执行ps -ef命令,显示所有进程的信息以及执行的命令行。
◆执行ps -u root命令,显示用户root的进程信息。
◆执行ps -ef | grep java命令,查找并显示java进程的信息。
kill命令
kill是向进程发送信号的命令。如果不指定信号,则发送SIGTERM(15)终止指定进程;如果无法正常终止该进程,可以向进程号发送SKILL(9)信号,该信号将强制结束进程。
■命令格式:kill [选项] [参数]
■常用信号
kill参数说明
| 选项 | 信号名 | 说明 |
|---|---|---|
| 0 | EXIT | 程序退出时收到该信息。 |
| 1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
| 2 | INT | 表示结束进程,但并不是强制性的,常用的“Ctrl+C”快捷键发出的就是该信号。 |
| 3 | QUIT | 退出。 |
| 9 | KILL | 杀死进程,即强制结束进程。 |
| 11 | SEGV | 段错误。 |
| 15 | TERM | 正常结束进程,是kill命令默认发送的信号。 |
■执行示例
◆执行kill -9 12345命令,强制杀死进程号为12345的进程。
◆执行kill -KILL 12345命令,强制杀死进程号为12345的进程。
◆执行kill -l命令,显示信号列表。
fg/bg命令
统信服务器操作系统提供了fg和bg命令,让管理员轻松调度正在运行的任务。fg命令可以将后台中的命令调至前台继续运行,如果后台中存在多个命令,可以用fg %jobnumber将选中的命令调出。bg命令可以将一个后台暂停的命令换成继续执行,如果后台中存在多个命令,可以用bg %jobnumber将选中的命令调出。
假设前台运行的一个程序需要很长的时间,但是需要处理其他的事情,可以按下键盘上的“Ctrl+z”快捷键,将此程序挂起,然后可以看到系统提示。
■命令格式:fg <作业号>;bg <作业号>
■执行示例
- 执行jobs命令,查看当前正在进行的任务。
[root@localhost ~]#jobs
[1] 运行中 tar cvf homebak.tar /home &
-
执行bg 1命令,将作业号为1且在后台暂停的命令,变成继续执行。
-
执行fg 1命令,将作业号为1调回到前台,继续执行。

:::note
执行tar cvf homebak.tar /home任务时,如果想要暂停,可以使用“Ctrl+z”快捷键。 :::
nohup命令
nohup命令用于运行由Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后,要使用nohup命令运行后台中的程序,需添加&(表示“and”的符号)到命令的尾部。
■命令格式:nohup Command [ Arg … ] [&]
■执行示例:
-
执行nohup start.sh &命令,将脚本程序在后台保持一直运行状态。
-
注销当前用户后,再次登录系统。
-
执行ps -ef | grep start.sh命令,显示脚本进程一直在运行中。
crontab命令
crontab命令用于定期执行程序。
■命令格式:crontab [选项] [参数]
■常用选项
crontab常用选项
| 选项 | 说明 |
|---|---|
| -u | user:用来设定某个用户的crontab服务,例如"-u demo"表示设备demo用户的crontab服务,此参数一般由root用户来运行。 |
| -e | 编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。 |
| -l | 显示某用户的crontab文件内容。如果不指定用户,则表示显示当前用户的crontab文件内容。 |
| -r | 从“/var/spool/cron”删除某用户的crontab文件。如果不指定用户,则默认删除当前用户的crontab文件。 |
| -i | 在删除用户的crontab文件时,给确认提示。 |
■常用时间对照表
crontab时间定义说明
| 位置 | 说明 | 数值范围 |
|---|---|---|
| 第一个* | 一小时当中的第几分钟(minute) | 0~59 |
| 第二个* | 一天当中的第几小时(hour) | 0~23 |
| 第三个* | 一个月当中的第几天(day) | 1~31 |
| 第四个* | 一年当中的第几个月(month) | 1~12 |
| 第五个* | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
■特殊符号
crontab特殊符号说明
| 符号 | 说明 |
|---|---|
| *(星号) | 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思。 |
| ,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的8点0分、12点0分、16点0分都执行一次命令。 |
| -(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨5点0分执行命令。 |
| /(正斜线) | 代表每隔多久执行一次。比如"/10***命令",代表每隔10分钟就执行一次命令。 |
■执行示例
◆执行crontab -e命令后,输入5 5 * * 2 /sbin/shutdown -r now,系统会在每周二的凌晨5点05分重启一次。
◆如在每月1日、10日、15日的凌晨3点30分都定时执行日志备份脚本autobak.sh,则执行crontab -e命令后,输入30 3 1,10,15 * * /root/sh/autobak.sh。
◆执行crontab -l命令,查看定时任务。
◆执行crontab -r命令,删除定时任务。
重定向命令
■命令格式
重定向格式说明
| 重定向格式 | 说明 |
|---|---|
| cmd > file | 把标准输出重定向到一个新文件中。 |
| cmd >> file | 把标准输出重定向到一个文件中(追加)。 |
| cmd 1 > file | 把标准输出重定向到一个文件中。 |
| cmd > file 2 > & 1 | 把标准输出和标准错误一起重定向到一个文件中。 |
| cmd 2 > file | 把标准错误重定向到一个文件中。 |
| cmd 2 >> file | 把标准错误输出重定向到一个文件中(追加)。 |
| cmd >> file 2 > & 1 | 把标准输出和标准错误一起重定向到一个文件中(追加)。 |
| cmd < file > file2 | cmd命令以file文件作为输入,以file2文件作为输出。 |
| cmd < file | cmd命令以file文件作为输入。 |
| cmd & m | 把标准输出重定向到文件描述符m中。 |
■执行示例
◆执行ls -l /usr/ > ls.txt命令,将某个目录下所有文件及目录的列表保存在一个文本文件中。
◆执行ls -l /usr/ >> ls.txt命令,将某个目录下所有文件及目录的列表追加到一个文本文件中。

:::note
使用>>可以在实现重定向时不覆盖原有内容,而是在文件末尾追加内容。 :::
◆执行ls /var/log/messages 2 > lserr.txt命令,将标准错误信息重定向到文件lserr.txt中。
◆执行ls /var/log/messgaes > /dev/null 2 > /dev/null命令,正常输出和错误信息都不显示,将把标准输出和标准错误都重定向到/dev/null。
No comments to display
No comments to display