我需要远程重启多台机器。通常我只是发出
for host in <hostlist>;do ssh ${host} 'sudo shutdown -r now';done
Run Code Online (Sandbox Code Playgroud)
但我想在重启前给用户一些时间。但是,即使我使用,他们的 ssh 会话也不会断开连接:
ssh -f 'sudo shutdown -r +5 &;disown'
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
bash: -c: line 0: 意外标记附近的语法错误
;' bash: -c: line 0:sudo shutdown -r +5 &;disown'
有什么建议?
kas*_*erd 31
如错误消息所述,您的命令中有语法错误。这是由于一个稍微令人惊讶的事实,&它不是 shell 命令的一部分,而是命令之间的分隔符(如;is)。虽然两者都是命令分隔符&,但对其左侧的命令有额外的影响。这当然有时也让我感到困惑,我经常犯同样的错误。一旦你知道它,它很容易修复。
解决方法是不写&;,而只是根据您的意图写两个分隔符之一。(并且在大多数情况下,一个人写&;的意图是只写&)。
这应该有效:
ssh server 'sudo shutdown -r +5 & disown'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7579 次 |
| 最近记录: |