Linux 作业管理
经常在服务器上登陆,操作,有些命令一旦执行,就一直在屏幕上输出内容,如果想切换到终端去干其他的事,新手通常是直接Ctrl+c
强制删除任务,然后再回来重新执行.其实完全没这个必要,我们可以把任务切换到后台挂起,然后去干我们自己的事情,干完了之后再切回来,继续执行之前没执行完的任务就行了,听上去是不是像操作系统的进程和线程调度,下面是一些常用的Shell作业管理命令.
作业管理
将当前作业放到后台暂停:
Ctrl+z
观察当前前后台作业状态:
jobs
-l 除了列出作业号之外同时列出PID
-r 列出仅在后台运行(run)的作业
-s 仅列出暂停的作业将后台作业拿到前台处理:
fg
fg %jobnumber (%可有可无)
让作业在后台运行:
bg
Ctrl+z让当前作业到后台去暂停,bg作业号就可以在后台run
管理后台作业:
kill
前面讲的都是把作业放到后台,或者切换到前台,要么挂起,要么执行.如果要删除作业或者重启作业,需要给作业发送特定信号kill -signal %jobnumber
-l 列出当前kill能够使用的信号
signal 表示给后台作业什么指示,用man 7 signal可知
-1 重新读取一次参数的设置文件,类似 reload
-2 表示与由键盘输入Ctrl+c同样的作用
-9 立刻强制删除一个作业
-15 以正常方式终止一项作业,与-9不一样
应用场合
有些程序没办法通过应用图标运行,只能调用脚本运行,并且一堆输出日志,当你在服务器上使用Vim
编辑一个文件时,想去运行一个脚本,可以先保存Vim
内容,然后把Vim
切换到后台挂起,去执行脚本之后再且回来继续编辑Vim
.