linux环境下如何使进程在后台运行
在Linux中,如果我们希望进程在后台运行,一般来说,我们可以在命令后面添加它,这实际上是将命令放入作业队列中。美元/ test.sh。
{ 1 } 17208
就业机会
{ 1 } + 17208 / test.sh运行。
对于已经在前台执行的命令,它也可以放在后台执行中。首先,用于暂停正在运行的进程。然后,BG命令用于将其余的工作放在后台。
美元/ test.sh。
{ 1 } +停止。 / test.sh
美元1
{ 1 } +。 / test.sh
就业机会
{ 1 } + 22794 / test.sh运行。
但是,如果进程在后台执行,则父进程是当前shell的进程。一旦父进程,它将所有的子进程发送挂断信号,和子过程也将退出后接收的问题。如果我们想继续这个过程当我们退出外壳,我们需要使用nohup忽略hangup信号,或者setsid将父进程init进程(进程数为1)。
回声$
二十一万七百三十四
使用nohup美元/ test.sh。
{ 1 } 29016
$ ps -ef grep测试|
51529710217340分/ 12 00:00:00 /斌/建议/ test.sh在11
51529713217340分/ 12 00:00:00 grep试验在11
美元/ test.sh setsid。
{ 1 } 409
$ ps -ef grep测试|
51541010 00:00:00 / bin SH / test.sh 11时49分
515413217340分/ 12 00:00:00 grep试验11时49分
以上实验表明使用nohup / setsid加进程在后台运行的应用,而目前壳牌退出的影响。那么做的一个过程,一直在后台运行,可以使用与命令:
美元/ test.sh。
{ 1 } 2539
就业机会
{ 1 } + 2539 / test.sh运行。
不认- h为1美元
$ ps -ef grep测试|
51541010 00:00:00 / bin SH / test.sh 11时49分
5152542217340分/ 12 00:00:00 grep测试11:52
还有另一种方式,即使过程实际上是在一个壳层,执行,这是因为setsid相同。方法很简单,和命令是括在括号中():
$()
$ ps -ef grep测试|
51541010 00:00:00 / bin SH / test.sh 11时49分
51512483217340分/ 12 00:00:00 grep试验在11:59
注:本文中的测试环境是红帽企业Linux 4版本(Nahant更新5),壳 /斌/ bash,不同的操作系统和 /斌/ bash会有所不同。例如,AIX的ksh,没有否认,但你可以用使用nohup P PID获得同样的效果,不认。
还有一种更有效的方法是利用屏幕,首先创建一个断开模式的虚拟终端,然后使用-r选项连接虚拟终端,它的任何命令,可以实现使用nohup的影响,当有多个命令需要连续执行的背景更方便:
屏幕DMS screen_test美元
屏幕列表
屏幕上有:
27963.screen_test(分离)
1插座在/tmp / / s-jiangfeng uscreens。
屏幕- R screen_test美元