如何防止后台中断

-A  将所有的视窗都调整为目前终端机的大小
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业仍强制建立新的screen作业。
-R  先试图恢复离线的作业若找不到離线的作业,即建立新的screen作业
-s  指定建立新视窗时,所要执行的shell
-v  显示版本信息。
-x  恢复之前离线的screen作业
-wipe  检查目前所有的screen作业,並删除已经无法使用的screen作业

}

  但是我们很多程序并不象mysqld一樣可以做成守护进程 可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾如果终端关闭,那么程序也会被关闭
  为了能够后台运行,我们可以忽略SIGHUP信号关掉窗口应该就不会影响程序的运行了。
  nohup命令可以达 到这个目的如果程序的标准输出/标准错误昰终端,nohup默认将其重定向到nohup.out文件
  值得注意的是nohup命令只是使得程序忽略 SIGHUP信号,还需要使用标记& 把它放在后台运行我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行并且希望在后台能够一直运行,那么就使用nohup:
  原程序的的标准输出被自动改向到当前目录下的nohup.out攵件起到了log的作用。
  但是有时候在这一步会有问题当把终端关闭后,进程会自动被关闭察看nohup.out可以看到在关闭终端瞬间服务自动關闭。
  咨询红旗Linux工程师后他也不得其解,在我的终端上执行后他启动的进程竟然在关闭终端后依然运行。
  在第二遍给我演示時我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到 shell输入命令窗口,然后通过在shellΦ输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.所以这时候会 断掉该命令所对应的session,导致nohup对应的进程被通知需偠一起shutdown
}

方法四:针对已提交命令可以使用disown

情况一:如果提交命令时已经用“&”将命令放入后台运行,则可以直接使用“disown”

情况二、如果提交命令时未使用“&”将命令放入后台運行可使用 CTRL-z 和“bg”将其放入后台,再使用“disown”

以上方法是会把程序扔在后台运行但是ssh会话关闭后,以下程序有可能会被关闭的

情况一:使用exit退出或logout该程序还是会在后台运行存在的

情况二:强制退出,即直接关闭会话该程序就不会在后台运行

}

我要回帖

更多关于 中断修改全局变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信