blu*_*bit 3 ssh console tasks ubuntu
可能的重复:
如何在 ssh 断开连接后保持程序运行。
如何使用 ssh 在远程 Unix 机器上运行命令并在命令完成之前退出?
我在生产机器上运行 mongo 服务器。我通过 ssh 控制台访问它。如果我运行 mongo 服务器,它会在前台运行。如果我关闭客户端上的 SSH 窗口,mongo 进程就会在服务器上终止。
即使我在后台将它作为“mongod &”运行,如果连接丢失,它仍然会死亡。
如何正确运行此守护程序,使其不依赖于活动的 SSH 会话?
编辑:使用 ubuntu 10 控制台作为服务器
当你关闭一个 shell 时,它会向它产生的所有作业发送 SIGHUP 信号。默认情况下,SIGHUP 将终止任何进程。
如果您知道在生成进程时需要“保持运行”,则可以使用nohup
来生成您的进程。作为副作用,如果这些流指向终端,它会将 stdout 和 stderr 重定向到文件 nohup.out。如果你不想要这个文件,你可能想自己重定向这些。
您还可以使用 运行它setsid
,这会创建一个新的进程组。您的 shell 将不再向它发送 SIGHUP,因为它不在 shell 的进程组中。
如果您已经启动了程序,并且碰巧正在运行 bash 或 zsh(很可能在 Linux 上),则可以使用disown
.
要么运行命令&
以强制后台运行,要么运行它,键入 Ctrl-Z 以挂起它,然后bg %1
(假设它是作业#1)将其从挂起状态中取出并作为后台进程运行。然后你输入disown %1
让 bash/zsh 忘记它。
disown
是我常用的方法,我不需要记住像nohup
需要这样的输出流。
归档时间: |
|
查看次数: |
4237 次 |
最近记录: |