今天用ssh登陆服务器运行一个后台服务的时候发现当我使用exit退出ssh命令行的时候,这个服务也随之停止运行了。这也很正常,因为我们如果以root的身份运行一个后台指令,当我们登出这个root用户的时候,它所运行的程序自然会关闭即使是我们在命令之后加了& 使其后台运行,这个程序依然归属于这个用户,那么这些程序同样会被关闭掉。
程序结束的原理是这样的,当用户登出或者网路连接断开的时候,其运行的程序会获得一个系统发出的HUP(HangUP)信号,当获得这个信号的时候,大部分程序就停止运行了。但是Linux下有一个nohup命令,这个命令可以让程序接受不到这个HUP信号,从而就可以保证其稳定的后台运行。具体使用方法如下
nohup ['Command'] >file
这个file所定向的是Command的stdoutput流,当然我们也可以再像&的程序一样 把他改成
nohup ['Command'] >file 2>&1 &
2>&1 的作用和普通用法一样,是将stderr流定向到stdoutput输出 最后一个&也是使nohup程序到后台运行
这样在我们exit登出服务器ssh的时候就可以使命令持久化了

分类: 其他技术

发表评论

电子邮件地址不会被公开。