获得sudo和nohup一起工作

Linux新手在这里。

我有一个perl脚本,它需要两个命令行input。 我试图在后台运行它,但这是我得到的:

[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv & [2] 19603 [~user]$ nohup: appending output to `nohup.out' 

系统返回“nohup:将输出追加到nohup.out”后,不会出现新的提示。 然后只要我input其他命令,shell会告诉我这个进程已经停止了:

 [~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv & [2] 19603 [~user]$ nohup: appending output to `nohup.out' ls ascii_loader_script.pl format_wrds_trd.txt nohup.out norm_wrds_trd.cfg [2]+ Stopped nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv 

我已经看了这个post,并尝试执行“sudo date”之前执行该命令。 仍然有同样的事情。 http://www.sudo.ws/pipermail/sudo-users/2003-July/001648.html

这里的问题,恕我直言,不是nohup,但后台处理sudo。

您正在将该进程置于后台(&,在命令结束时),但可能sudo需要密码身份验证,这就是进程停止的原因。

尝试其中之一:

1)从命令结尾删除“&”符号,回复passord提示符并将后缀放在后台(通过输入CTRL-Z – 停止进程并发出bg命令将其发送到后台)

2)将/ etc / sudoers更改为不要求用户密码:myusername ALL =(ALL)NOPASSWD:ALL

如果除了密码回复你的应用程序等待其他输入,那么你可以管输入命令是这样的:$ cat responses.txt | sudo mycommand.php

心连心

解决方案是使用-b标志来sudo在后台运行该命令:

 $ sudo -b ./ascii_loader_script.pl 20070502 ctm_20070502.csv 

如果您希望程序在您关闭当前终端会话之后继续运行,则只应使用nohup

你必须先使用sudo,nohup秒。

 sudo nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv & 

首先,你应该切换sudonohup 。 接着:

 if sudo echo Starting ... then sudo nohup <yourProcess> & fi 

echo Starting ...可以由任何不太多的命令取代。 我只用它作为sudo虚拟命令。

通过这个在if条件中的sudo触发密码检查。 如果没问题,那么sudo会话将被登录,第二次调用将会成功,否则if将会失败并且不会执行实际的命令。

这应该工作
sudo -b -u userName ./myScript> logFile

我只是想知道,我可以发送这个logFile作为一个电子邮件后./myScript成功运行在后台。

我打开一个编辑器,输入这些行:

 #!/bin/bash sudo echo Starting ... sudo -b MyProcess 

MyProcess是我想以超级用户身份运行的任何东西。)

然后,将我想要的文件保存为MyShellScript.sh。

然后更改文件权限以允许执行。 然后在终端上运行。 “-b”选项告诉sudo在后台单独运行进程,所以进程在终端会话终止后继续运行。

在linux-mint中为我工作。

尝试:

 xterm -e "sudo -b nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null" 

当你关闭xterm时,php web服务器仍然活着,

不要在“sudo”之前放置“nohup”,否则php web服务器在关闭xterm后会被终止。

您可以将其设置为您的别名。

sudo sh -c'nohup openvpn /etc/openvpn/client.ovpn 2>&1> / dev / null&'