通过SSH命令从Mac OS X计算机启动远程脚本

时间:2017-08-01 19:14:21

标签: python linux macos unix ssh

我正在尝试从我的本地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;

然后,它有效。

我错过了什么吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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