【问题标题】:Start a remote script from a Mac OS X machine via SSH command通过 SSH 命令从 Mac OS X 机器启动远程脚本
【发布时间】:2018-01-08 19:13:44
【问题描述】:

我正在尝试从本地 Mac OS 在我的 VM 上启动 python 脚本

我做到了

ssh -i /key/path/id_rsa root@111.11.1.0 "sleep 5s; cd /root/Server;pkill -f server.py;./server.py;"

结果

它是 SSH,它可以快速运行这些命令,并迅速将我注销。我期待它在 SSH 会话中保持打开状态。

我的脚本没有正在运行...

ps -aux | grep python

root       901  0.0  0.2 553164 18584 ?        Ssl  Jan19  20:37 /usr/bin/pytho -Es /usr/sbin/tuned -l -P
root     15444  0.0  0.0 112648   976 pts/0    S+   19:16   0:00 grep --color=auto python

如果我这样做,它会起作用

ssh -i /key/path/id_rsa root@111.11.1.0 "sleep 5s; cd /root/Server"

然后

./server.py;

然后,它起作用了。

我错过了什么吗?

【问题讨论】:

  • 你能edit你的问题包括这个server.py程序的内容吗?
  • 你是什么意思“我期待它保持开放”?为什么会这样做?它已完成您要求的所有操作,因此命令完成。

标签: python linux macos unix ssh


【解决方案1】:

您可能需要说明启动脚本的 shell,即 /bin/bash server.py:

ssh -i /key/path/id_rsa root@111.11.1.0 "sleep 5s; cd /root/Server; pkill -f server.py; /bin/bash ./server.py;"

如果您想启动脚本并在结束 ssh 会话后继续运行,您可以使用nohup。请注意,您需要将进程置于后台并重定向stdinstdoutstderr 以完全脱离远程进程:

-i /key/path/id_rsa root@111.11.1.0 "sleep 5s; cd /root/Server; nohup /bin/bash ./server.py < /dev/null > std.out 2> std.err &"

您的 ssh 命令立即返回的原因似乎是因为对 pkill -f server.py 的调用也会以某种方式终止实际的 ssh 会话,因为它还包含命令行中的 server.py

【讨论】:

    【解决方案2】:

    我这里没有我的常规 MacBook Pro 来测试,但我认为添加另一个分号并以 /bin/bash 结束命令行可能会做到这一点。

    【讨论】:

      猜你喜欢
      • 2020-10-21
      • 2018-03-26
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多