前言
当你用shell启动一个程序时,往往他是在前台工作的。程序会一直占用终端命令行,例如你在前台解压的时候必须等着,期间干不了别的事(除非另开一个终端)。 例如经常用连接到远程服务器执行脚本的时候,如果本地网络中断后,这个时候前台进程就结束了,比较的懊恼,必须重新执行。
简单例子
在后台运行一个命令,例如使用&符号。
代码语言:javascript复制./shella.sh &
使用jobs命令查看后台作业列表。
添加-l选项时,它提供更详细的输出,显示作业的详细信息。
代码语言:javascript复制jobs
jobs -l
使用fg命令将某个作业切换到前台。例如,如果作业号为1。
代码语言:javascript复制fg %1
使用(ctrl z)可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
代码语言:javascript复制bg
使用bg将一个在后台暂停的命令,变成在后台继续执行。
代码语言:javascript复制 kill %1
使用 kill %1可以直接终止后台运行的程序。
代码语言:javascript复制nohup ./myscript.sh &
这个命令将执行./myscript.sh脚本,并且即使你退出当前终端,该脚本仍将继续在后台运行(利用ps、jobs等可以查看到)。
以防止其输出被挂断,nohup会将命令的输出追加到一个文件(默认为nohup.out)。