4

我的脚本需要 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

我在这里做错了什么?

4

3 回答 3

2

尝试这个:

sudo nohup ./script

回答密码提示后,键入Ctrl-z以将其挂起,并将bg其置于后台。

如果您在决定需要在后台运行一个长进程时正在运行一个长进程,这将特别有用。

于 2013-01-31T20:39:40.517 回答
1

这里的一种选择是使用屏幕实用程序。启动屏幕,运行脚本,使用 CTRL+A、D 分离。稍后,重新登录,通过再次运行屏幕重新连接到进程。

于 2013-01-31T20:40:28.490 回答
1

正如其他答案中提到的,如果一个后台进程开始nohup尝试读取或写入终端,它将进入“停止”状态。您正在执行的sudo进程试图从终端读取您的密码,因此该进程被停止(由于某种原因,读取似乎是在按下 Enter 时触发的)。

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

sudo bash -c 'nohup ./myScript.sh arg1 &'
于 2019-05-29T15:26:16.543 回答