拒绝后如何退出进程

拒绝后如何退出进程

我习惯disown通过 SSH 运行长时间运行的进程。例如我运行以下程序:

vmd -e script.tcl > out.txt &

然后我用它disown -a把它从外壳上拆下来。当我重新连接终端时,out.txt显示程序已完成。但是,它显示 vmd ( vmd>) 的命令提示符。 VMD 是一个运行 TCL 脚本进行化学模拟的程序。你可以假设它是类似 python 的东西,有自己的 shell

http://www.ks.uiuc.edu/Training/Tutorials/vmd/tutorial-html/node8.html

一段时间后,由于运行进程的限制,我无法连接到 ssh ( fork retry: Resource temporary unavailable)。首先,我想知道如何杀死那些处于等待状态的否认进程。

其次,我想知道如果我vmd通过放在exitmy 的末尾来退出程序script.tcl,是否可以解决上述问题以供将来使用?

答案1

有不止一种方法可以做到这一点。 (TM值)

解决方案 1(可能是最好的):将退出命令添加vmd到脚本末尾。

解决方案 2:将vmd命令的标准输入重定向到(或来自,取决于您的心态)空设备,如下所示:

vmd -e script.tcl > out.txt < /dev/null &

这样,当vmd脚本完成并尝试从标准输入读取下一个命令时,它将收到“文件结尾”并退出。

解决方案 3:使用 终止剩余vmd进程kill。您将需要它的 PID,您可以在 shell 启动后打印它时记下它&,或者通过命令查找ps ax。首先尝试kill -TERM(默认),如果不起作用,请使用kill -HUP.做不是使用kill -KILL又名kill -9.

解决方案 4:使用screentmux代替disown.这样您就可以重新连接到正在运行的vmd进程并输入更多命令,例如exit.

相关内容