mis*_*yes 5 ssh sudo nohup background-process
我想以特权在远程主机上运行脚本sudo,有人建议我应该使用nohup和ssh -t,如以下命令:
该脚本ls; sleep 10; echo finish是在这里精心设计的,类似于我想做的事情。
ssh -t esolve@remote_host \
'sudo nohup bash -c "ls;sleep 100;echo finish" < /dev/null 2>&1 >> ssh.log'
Run Code Online (Sandbox Code Playgroud)
我想在本地主机上在后台运行此脚本,因为在我的脚本中,在此命令之后还有一些其他命令,例如
my script.sh:
ssh -t esolve@remote_host \
'sudo nohup bash -c "ls;sleep 100;echo finish" < /dev/null 2>&1 >> ssh.log'
... some other commands
Run Code Online (Sandbox Code Playgroud)
以下两个命令不起作用
ssh -t esolve@remote_host \
'sudo nohup bash -c "ls;sleep 100;echo finish" < /dev/null 2>&1 >> ssh.log' &
ssh -t esolve@remote_host \
'sudo nohup bash -c "ls;sleep 100;echo finish" < /dev/null 2>&1 >> ssh.log &'
Run Code Online (Sandbox Code Playgroud)
为什么?
如何使该命令在本地主机后台运行?此外,我不需要sudo在远程主机上输入密码。
添加-b标志sudo,如果需要,会提示输入密码,然后转到后台。(重定向也需要在 bash 中完成)(需要大括号才能将重定向应用于所有内容)
ssh -t esolve@remote_host 'sudo -b nohup bash -c "{ ls;sleep 100;echo finish; } < /dev/null 2>&1 >> ssh.log"'
Run Code Online (Sandbox Code Playgroud)
您可能还想尝试屏幕...
ssh -t esolve@remote_host 'sudo -b screen -m -d bash -c "{ ls;sleep 100;echo finish; } < /dev/null 2>&1 >> ssh.log"'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |