Linux环境下后台一直运行程序不退出的方法

14 篇文章 0 订阅

有的时候我们需要长时间地运行background programs,而且不希望程序退出,今天我们要来看一下如何在linux环境下来实现这个目的。

我的演示环境是Ubuntu 16.04 LTS

首先第一种办法,使用系统命令:

$ nohup command > /dev/null 2>&1 &

其中command是我们要运行的命令,需要我们替换上去。(比如我们要运行一个名为EagleJobDispatcher的程序,那么以上命令就是

$ nohup ./EagleJobDispatcher > /dev/null 2>&1 &
  1. nohup的意思是即使登出也不会终止该进程。

  2. > /dev/null意思是将stdout引导到/dev/null这个不存在的设备(所以程序的输出将不会被记录)。

  3. 2>&1的意思是stderr也引导至stdout,而stdout已经被引导至/dev/null。我们可以用一个文件路径来替换&1,用以保存程序的错误信息,比如2>/tmp/errorLogs

  4. 最后的&表示我们希望这个程序在后台运行。


第二种方法,我们需要使用screen这个程序。首先我们需要安装screen

$ sudo apt-get install screen

完成后我们输入screen,回车后进入screen的提示信息后再按回车来进入。接下来我们输入我们要运行的命令:

$ ./EagleJobDispatcher

当程序开始运行后,我们输入Ctrl + A,然后按D键来detach,完成后screen会脱离:

[screen is terminating]

然后我们可以输入

$ screen -ls

来查看我们运行的进程:

$ screen -ls
There is a screen on:
        29478.pts-8.localhost   (08/25/2017 08:35:16 AM)        (Detached)
1 Socket in /var/run/screen/S-root.

screen的强大在于我们可以再回到运行的程序里,而第一种方法是不可以的:

$ screen -r 29478.pts-8.localhost

现在就算我们关闭terminal我们的程序依然会持续运行,如果需要关闭我们再通过以上命令回到程序退出即可。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值