编辑这是固定的。请参阅下面的答案。
我有一台无头服务器在Angstrom Linux上运行传输守护进程。我能够通过this init script SSH进入机器并调用传输守护进程;但是,一旦我退出,该过程就会终止。
脚本中发出的命令是:
start-stop-daemon --chuid transmission --start --pidfile /var/run/transmission-daemon.pid --make-pidfile --exec /usr/local/bin/transmission-daemon --background -- -f
通过# /etc/init.d/transmission-daemon start
启动守护程序后,我可以使用ps
验证该进程是否由用户transmission
拥有(这不是我通过SSH登录的用户)
我已经尝试了上述命令的每个变体,包括:
--background
选项> /dev/null 2>&1 &
附加到start-stop-daemon命令(source - 虽然该线程中似乎有不同的结果,但这是否是正确的方法)> /dev/null 2>&1 & </dev/null &
(source)&
添加到命令的末尾nohup
这些似乎都不起作用 - 结果始终相同:关闭SSH会话后,进程立即退出。
在断开SSH会话后,我可以/应该做些什么来保持守护程序运行?
答案 0 :(得分:2)
您是否尝试过使用GNU Screen?
它允许您即使断开连接也会保持会话打开(但如果退出则不会。)
这是一个简单的例子:
apt-get install screen
或
yum install screen
答案 1 :(得分:2)
由于我还不能发表评论:),这里有一个很好的网站,解释了屏幕的一些功能,http://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/
我一直使用屏幕,完全按照你所说的去做。您在终端中打开一个屏幕,执行您需要执行的操作,然后您可以注销,您的流程仍将继续运行。
答案 2 :(得分:2)
sudo loginctl enable-linger your_user
# This allows users who are not logged in to run long-running
# service after ssh session ends
答案 3 :(得分:0)
现在已经解决了。这是背景:在遇到这个问题之前的某个时刻,我的$ PATH(我不记得是什么)和传播守护进程所在的位置(/sbin
)发生了什么事。除去。在传输守护程序不再出现在系统上的错误印象下,我再次从ipk安装。这是我最初提出这个问题时系统所处的状态。
我不知道为什么会有所不同,但是一旦我纠正了$ PATH并开始在/ sbin上安装了传输守护进程,一切都恢复了。我退出后守护进程继续运行。