作业控制是bash Shell提供的一项强大功能,它允许你选择在前台还是后台运行程序,即作业。
1、开启bash的作业控制功能
#set -o monitor
或
#set -m
2、显示在后台运行的作业
#jobs
[1]- 运行中 gedit &
[2]+ 运行中 sleep 1000 &
+代表最后放到后台运行的作业
-代表倒数第二个放到后台运行的作业
#jobs -l //会显示PID
[1]- 3403 运行中 gedit &
[2]+ 3408 运行中 sleep 1000 &
#jobs %% //显示在作业表中最近执行的命令
[2]+ 运行中 sleep 1000 &
#jobs -r //列出所有正在运行的作业
#jobs -s //列出所有挂起(暂停执行)的作业
3、作业控制:fg和bg命令
# gedit & //将作业丢到后台执行
[1] 15465
#fg %1 //将作业放到前台执行
gedit
^Z //将前台作业送后台,并挂起(暂停执行),显示提示符
#bg %1 //启动后台停止的作业1
#kill %1 //杀掉作业1
#kill -9 %1 //强制杀掉作业1
kill常用信号:
-1 :重新读取一次参数的配置文件 (类似 reload);
-2 :代表和由键盘输入 [ctrl]-c 同样的动作;
-9 :立刻强制删除一个工作;
-15:以正常的程序方式终止一顷工作。与-9 是不一样的。
#disown %1 //将作业1从从作业表中移除,shell不会将其识别为可用的作业(成为一个正常的进程,ps能查看)
4、终端后台和系统后台
在终端模式下,通过& 或 ^Z放到后台的作业都是放到终端的后台,而不是系统后台。当后台任务未执行完,而终端退出时(exit),终端后台的任务会终止。
系统后台的任务则不会随着终端的退出而终止,与终端无关。
可以通过at命令或nohup命令将作业放到系统后台执行,当退出终端或注销系统后,程序还能够工作继续运行。
通过nohup运行的程序的输出,都重定向到~/nohup.out文件中。
nohup不支持Bash内建命令,只支持外部程序。
#nohup cmd
#nohup cmd &
Bash函数简述 http://www.linuxidc.com/Linux/2015-06/118796.htm
Linux Bash脚本编程语言中的美学与哲学 http://www.linuxidc.com/Linux/2015-03/114436.htm
提高Linux工作效率的十大bash技巧 http://www.linuxidc.com/Linux/2015-03/114349.htm
bash的登录与欢迎信息:/etc/issue,/etc/motd http://www.linuxidc.com/Linux/2014-08/105419.htm
Bash常用的几个配置文件 http://www.linuxidc.com/Linux/2014-08/105202.htm
Bash脚本15分钟进阶教程 http://www.linuxidc.com/Linux/2014-04/100750.htm
10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例 http://www.linuxidc.com/Linux/2014-03/98159.htm
Ubuntu下shell脚本运行异常:Bash和dash的区别 http://www.linuxidc.com/Linux/2013-10/91100.htm
Bash脚本之for语句if语句以及各种测试语句 http://www.linuxidc.com/Linux/2013-07/87922.htm
什么是Bash Shell的内建(build in)命令 http://www.linuxidc.com/Linux/2013-06/86039.htm
分享有用的 bash 别名和函数 http://www.linuxidc.com/Linux/2015-01/111178.htm
Linux Bash Shell入门教程 http://www.linuxidc.com/Linux/2013-08/8848.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/120877.htm