如何运行进程并将其与其父 shell 完全分离

Ben*_*fez 4 ssh process csh

可能的重复:
在未登录的情况下让 bash 脚本在远程终端上运行?
如何完全从终端分离进程?

我正在 linux 服务器上运行一个需要几天才能完成的程序。

我从我的工作站从 SSH 终端启动它,因为这个程序只是命令行。

我希望能够做到所有这些:

  • 启动那个程序,
  • 将标准输出重定向到文件,
  • 退出我的 SSH 会话,而不会终止进程。

我想过 $ ./MyProg.csh -params -foo -bar </dev/null 1>~/out.log 2>~/err.log &

但是,该过程在我关闭 SSH 会话的那一刻就终止了。我的工作站运行的是 Windows XP,我不能保证它的正常运行时间超过几天,这是在 Linux 服务器上处理我的数据所必需的。

您可能已经注意到,我的程序需要从 CSH 启动。

是否有可能做到这一点 ?

谢谢。

Ya *_*ang 8

您可以使用用户screennohup

如果您选择screen

screen在运行服务之前启动:

$ screen

然后,在以下内容中运行您的服务screen

./MyProg.sh > myprog.log (或任何你想要的东西)。

然后Ctrl+a d

当你回来时,只需:

$ screen -r

更多信息:http : //www.gnu.org/s/screen/


关于 nohup :只是:

nohup ./MyProg.sh > myprog.log &