我不知道如何在远程设备上通过ssh执行这个特定的组合shell脚本命令。
_wrapLine
发生的错误是:
#!/bin/bash
cmd=""
command="restart"
case "$command" in
restart)
cmd+="pkill -f fileA.py;"
cmd+="python3 -u fileA.py >> fileA.log &"
;;
*)
echo "Unknown command"
esac
cmd=$(ssh root@foobar $cmd)
我知道整个字符串被解释为一个命令,但这不是我想要的。
我感谢任何帮助。
答案 0 :(得分:0)
您确定要粘贴正确的代码吗? pkill错误消息来自-u
或
-U
个选项。请先检查一下。
接下来,您缺少报价会导致问题。在shell替换变量之后,你有了这个:
cmd=$(ssh root@foobar pkill -f fileA.py;python3 -u fileA.py >> fileA.log &)
因此,您要在远程系统上终止该进程,并在本地系统上启动它。
我认为你真的需要这个:
case "$command" in
restart)
cmd="pkill -f fileA.py; nohup python3 -u fileA.py >> fileA.log & disown"
;;
*)
echo "Unknown command"
esac
cmd=$(ssh root@foobar bash -c "$cmd")
nohup
和disown
允许后台进程在shell退出后继续运行。