#每日Linux小练习#11作业命令继续分析

在对比中发现不同

1、进程作业的概念有所区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。例如“nroff -man ps.1|grep kill|more”这个作业就同时启动了三个进程

2、作业和bash是相关的,在进行工作管理的行为中,其实每个工作都是目前bash的子进程,即彼此之间具有相关性。比如无法使用job control的方式由tty1的环境去管理tty2的bash。

前台作业和后台作业

只有前台程序可以接受终端输入,后台作业试图读终端,并不是一个错误,但是终端驱动程序会检测出来,然后发送一个特定信号SIGTTIN给后台作业,就会暂停后台作业。我们想要它运行,就必须转到前台来。前台后台转换的命令是:fg,bg。

1、在终端下,前台程序运行时,用户只能给该程序输入输出,如果需要给终端输入指令,是不可行的。需要将现在的前台程序终止或者暂停

2、后台程序无法接收终端的指令,需要转到前台才行

3、前台后台转换的命令是:fg,bg。

fg %1表示将1号作业转为前台,bg %4表示将4号作业转为后台。

fg - 表示将-号的那个工作号码取出来

4、kill命令可以管理后台中的工作

kill -signal %jobnumber

signal:

只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:

HUP    1    终端断线

INT     2    中断(同 Ctrl + C)

QUIT    3    退出(同 Ctrl + )

TERM   15    终止

KILL    9    强制终止

CONT   18    继续(与STOP相反, fg/bg命令)

STOP    19    暂停(同 Ctrl + Z)

echo "PID is $$"
echo "Start 20150813jobControl_test.sh"
./20150813jobControl_test.sh &
./20150813jobControl_test.sh &
./20150813jobControl_test.sh &
echo "Finish the test"


sleep 1
jobs

kill -9 %1
echo "kill -19 %1"

sleep 1
jobs

kill -18 %1
echo "kill -18 %1"

5、脱机管理

需要注意的是,工作管理中所谓的“后台”指的是终端机模式下可以避免 ctrl-C 中断的一个情境,并不是放到系统的后台去。

工作管理的后台依旧与终端机有关。

对于nohup前台运行的程序,如果在工作尚未结束的情况下脱机,该工作不会继续下去,而是被中断掉

对于nohup后台运行的程序,如果在工作尚未结束的情况下脱机,该工作会继续下去

nohup [命令与参数]          #在前台运行

nohup [命令与参数]  &      #在后台运行

原文地址:https://www.cnblogs.com/wuqi/p/4737656.html