保持bash脚本未登录就在远程终端上运行?


14

我有一个bash脚本,需要几个小时才能运行。在运行时,我想做其他事情,这可能涉及注销或断开Internet连接(我的脚本在各种计算机上运行网络测试)。

我知道有一条命令可以让我从远程终端运行测试,并在终端运行时注销终端。有谁知道这个命令是什么?

Answers:


17

您要查找的命令是nohup

还有screen,当您想让某些东西继续运行但稍后再返回并重新以交互式方式附加时,它是适用的。

nohup如果命令在启动后不需要用户输入,screen则更简单;如果您希望能够以交互方式运行该程序,则更好。


我现在看了nohup,显然输入和输出存在问题,可能会导致脚本挂断。我还看到了一些有关屏幕的内容,这让我印象深刻,就像我以前读过的一样。您知道如何使用其中一种吗?
Ritwik Bose 2010年

1
nohup适用于脚本不希望用户输入的情况-将所有输出保存到文件中。屏幕是用于当您要让某些东西继续运行但又回来并稍后以交互方式重新连接时。如果命令在启动后不需要用户输入,nohup会更简单;如果您希望能够交互式地运行程序,则nohup会更好。
贾斯汀·史密斯

啊找到了。对于屏幕,请使用ctrl-A d进行分离,使用-r + pid进行重新连接。
Ritwik Bose 2010年

好答案。您应该在回答中添加屏幕注释,以使其更加突出。
DaveParillo 2010年

1

我用nohup这个。以我为例,我有一个名为python的脚本,action.py 我在远程服务器上运行了该脚本,nohup python action.py & 然后关闭了终端。稍后,当它完成运行时,您可以nohup.out在与相同的目录中看到该进程创建的所有输出action.py。如果该文件已经存在,则将附加输出。

唯一的障碍是不知道脚本何时运行,因此,就我而言,脚本完成后向我发送了一封电子邮件。希望这对某人有所帮助!


0

如果您忘记在nohup命令开头添加命令,会发生什么情况?

假设您已运行以下Long命令:

长命令输出的开始

这被称为ls -Ral /应该以根格式从根文件夹开始递归列出所有文件和所有文件夹,包括隐藏的文件夹,包括长文件。它可能需要一段时间。

只需按ctrl+ Z

停止长命令

您如何找回它?

将其送回前台的命令为fg

带回命令

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.