nohup和enter将停止这个过程:为什么?

时间:2013-01-31 20:31:04

标签: bash process terminal nohup

我的脚本需要root权限,我想在远程计算机上运行它,然后才能关闭我的本地计算机。

所以我做了: $ nohup sudo ./myScript arg1&

...我总是这样做,但是在我总是root的不同机器上,所以没有sudo。出于某种原因现在它无法正常工作:

nohup sudo ./myScript.sh 1 &  //then I press enter twice
[8] 24264
me@my-laptop:~/myFolder$ nohup: ignoring input and appending output to `nohup.out'


[8]+  Stopped                 nohup sudo ./myScript.sh 1

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

sudo nohup ./script

在回答密码提示后,输入 Ctrl-z 暂停,然后bg将其置于后台。

如果您决定需要在后台运行长途流程,那么这将非常有用。

答案 1 :(得分:1)

此处的一个选项是使用屏幕实用程序。启动屏幕,运行脚本,使用CTRL + A,D分离。稍后,重新登录,再次运行屏幕重新连接到进程。

答案 2 :(得分:0)

如其他答案所述,如果以nohup开头的后台进程尝试从终端读取或写入终端,则它将进入“已停止”状态。您正在执行的sudo进程尝试从终端读取密码,因此该进程被停止(由于某些原因,按Enter键似乎触发了读取)。

因此,为避免这种情况,您必须确保在执行nohup之前输入密码并成为root用户。例如,像这样:

sudo bash -c 'nohup ./myScript.sh arg1 &'