首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Shell脚本ssh命令的执行

Shell脚本ssh命令的执行
EN

Stack Overflow用户
提问于 2018-06-10 01:09:57
回答 1查看 69关注 0票数 0

我不知道如何在远程设备上通过ssh执行这个特定的组合shell脚本命令。

代码语言:javascript
复制
#!/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)

出现的错误是:

pkill -f fileA.py;python3 -u fileA.py >> fileA.log & pkill: invalid user name: fileA.py

我知道整个字符串被解释为一个命令,但这不是我想要实现的。

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-06-10 01:27:53

你确定你粘贴了正确的代码吗?该pkill错误消息来自使用-u

-U选项。请先检查一下。

其次,你缺少引号给你带来了问题。在shell替换变量之后,您将获得以下内容:

代码语言:javascript
复制
cmd=$(ssh root@foobar pkill -f fileA.py;python3 -u fileA.py >> fileA.log &)

因此,您将终止远程系统上的进程,并在本地系统上启动它。

我认为你真的需要这个:

代码语言:javascript
复制
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")

nohupdisown允许后台进程在外壳退出后继续运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50776688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档