Linux新手在这里.
我有一个perl脚本,它需要两个命令行输入.我试图在后台运行它但这就是我得到的:
[~user]$ nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
[2] 19603
[~user]$ nohup: appending output to `nohup.out'
Run Code Online (Sandbox Code Playgroud)
系统返回"nohup:将输出附加到'nohup.out'"后,不会出现新提示.然后只要我输入其他命令,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
Run Code Online (Sandbox Code Playgroud)
我看过这篇文章并试图在执行命令之前做"sudo date".仍然有同样的事情. http://www.sudo.ws/pipermail/sudo-users/2003-July/001648.html
dus*_*der 48
解决方案是使用-b标志为sudo在后台运行命令:
$ sudo -b ./ascii_loader_script.pl 20070502 ctm_20070502.csv
Run Code Online (Sandbox Code Playgroud)
如果您希望程序在关闭当前终端会话后继续,则应该只使用nohup
小智 20
这里的问题,imho,不是nohup,而是后台处理sudo.
您将进程置于后台(&命令结束),但可能sudo需要密码身份验证,这就是进程停止的原因.
尝试以下方法之一:
1)从命令结尾删除&符号,回复passord提示符,然后将其放在后台(通过键入CTRL-Z - 停止进程并发出bg命令将其发送到后台)
2)通过包含以下行来更改/ etc/sudoers以不要求用户密码:myusername ALL =(ALL)NOPASSWD:ALL
如果除了密码回复你的应用程序等待其他输入,那么你可以输入管道输入如下:$ cat responses.txt | sudo mycommand.php
心连心
您必须首先使用 sudo,然后使用 nohup。
sudo nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以试试
sudo su
Run Code Online (Sandbox Code Playgroud)
进而
nohup ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
Run Code Online (Sandbox Code Playgroud)
代替
nohup sudo ./ascii_loader_script.pl 20070502 ctm_20070502.csv &
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38349 次 |
最近记录: |