linux - 如何防止通过 SSH 启动的守护进程在注销时终止?

标签 linux ssh daemon

编辑这是固定的。请参阅下面我的回答。


我有一个在 Angstrom Linux 上运行传输守护进程的 headless 服务器。我能够通过 SSH 连接到机器并通过 this init script 调用传输守护进程;但是,该过程在我注销后立即终止。

脚本中发出的命令是:

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 session 后立即退出。

在断开 SSH session 后,我可以/应该做什么来保持守护程序运行?

最佳答案

您尝试过使用 GNU Screen 吗?

它允许您保持 session 打开,即使您断开连接(但如果您退出则不会)。

这是一个简单的例子:

apt-get install screen

yum install screen

关于linux - 如何防止通过 SSH 启动的守护进程在注销时终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24643451/

相关文章:

python - 通过基于 Python 的守护程序在 NFS 共享上执行文件 I/O 时的特殊注意事项?

c - 内置 gcc 自旋锁

Git Azure 无法以任何方式克隆存储库

java - 为什么连接到 main() 线程的守护线程在 main() 线程执行结束时没有死掉?

apache - Crontab -e将忽略我的编辑

windows - 上传大文件时出现WinSCP错误代码4

python - python守护进程中的子进程kill

regex - 查找文本文件中至少有两个相同单词的所有行 (Bash)

linux - 可用作程序和模块的 Perl 脚本

c++ - 尝试将 gSoap 与 WCF 和 WSHttpBinding 一起使用