1、前台作业与后台作业

(1)概念

前台作业:通过终端启动,并且在启动后一直占据终端。
后台作业:启动时与终端无关,或者通过终端启动后转入后台运行(即释放终端),不影响用户继续在终端中工作。

(2)如何将前台作业转入后台

正在运行中的作业使用 Ctrl + Z 组合键将命令调至后台并停止运行;
尚未启动的作业则直接在命令后面添加“ & ”字符即可。

注意:后台作业虽然被送往后台运行,但其依然与程序的启动终端相关,如果退出终端,那么此终端的后台作业也随之关闭。如果希望送往后台的作业脱离与其启动终端的关系,可以使用nohup命令达到目的。

(3)nobup命令

nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中(此文件存放在用户的当前工作目录“ echo $PWD ”)当然我们也可以给nohup命令指定一个输出位置。
1)语法
nohup COMMAND [ARG]...
2)示例
[root@localhost cron.hourly]# echo $PWD/etc/cron.hourly
[root@localhost cron.hourly]# nohup ping 127.0.0.1 &[2] 4142[root@localhost cron.hourly]# nohup: ignoring input and appending output to `nohup.out'^C
[root@localhost cron.hourly]# ls0anacron  nohup.out
[root@localhost cron.hourly]# cat nohup.out PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.264 ms64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.061 ms64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.060 ms64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.128 ms

(4)jobs命令

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。
1)语法
jobs [-lnprs] [jobspec ...]
2)选项
-l:显示进程号;-p:仅显示对应任务的进程号;-n:显示任务状态的变化;-r:仅输出运行状态(running)的任务;-s:仅输出停止状态(stoped)的任务。
3)示例

2、作业管理的相关命令

(1)fg命令

将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。若后台任务中只有一个,则使用该命令时,可以省略任务号。
1)语法
fg [job_spec]
2)示例

(2)bg命令

将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号“ & ”的效果是相同的。也可将已经在后台的停止的任务继续再后台运行。
1)语法
bg [job_spec ...]
2)示例

(3)kill命令

kill命令主要用来终止后台程序的,常用的信号有:1) SIGHUP:无须关闭进程而让其重读配置文件2) SIGINT:中止正在运行的进程;相当于Ctrl+c9) SIGKILL:杀死正在运行的进程15) SIGTERM:终止正在运行的进程18) SIGCONT:让后台作业继续运行19) SIGSTOP:将作业放入后台休眠

3、设置进程的优先级

进程的优先级越高,程序越先被执行。系统默认的优先值范围为100至139,此值越小优先级越高。不过系统中存在一个命令可以调整进程优先级,被称为nice(命令)值,此值的范围为-20至19,也是值越小优先级越高,因此,进程的优先级=进程优先级(旧)+nice值。比如,进程A的系统优先值为115,进程B的系统优先值为120,很明显进程A的优先级比进程B高,但是我们可以调整进程B的nice值为-10,此时进程的优先级就变为110了,会优先被CPU执行。

(1)nice命令

适用于未启动的进程
1)语法
nice [OPTION] [COMMAND [ARG]...]-n:指定优先级数值
2)示例
[root@localhost testdir]# ./test.sh &[1] 4975[root@localhost testdir]# nice -n -10 ./test.sh &[2] 4983[root@localhost testdir]# ps -lF S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD4 S     0   4757   4753  0  80   0 - 27121 wait   pts/2    00:00:00 bash0 T     0   4975   4757  0  80   0 - 26527 signal pts/2    00:00:00 test.sh4 T     0   4983   4757  0  70 -10 - 26527 signal pts/2    00:00:00 test.sh4 R     0   4984   4757  0  80   0 - 27035 -      pts/2    00:00:00 ps

[2]+  Stopped                 nice -n -10 ./test.sh

(2)renice命令

适用于已经运行的进程
1)语法
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
2)选项
-n:指定优先级数值-g:指定进程组id;-p<程序识别码>:改变该程序的优先权等级,此参数为预设值。-u:指定开启进程的用户名。
3)示例