Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过SSH命令从Mac OS X计算机启动远程脚本_Python_Linux_Macos_Unix_Ssh - Fatal编程技术网

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

Python 通过SSH命令从Mac OS X计算机启动远程脚本,python,linux,macos,unix,ssh,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-in,它会快速运行这些命令,并很快将我注销。我希望它在SSH会话中保持打开状态 我的脚本正在运行中 ps-aux|grep python root 901 0.0 0.2 553164 18584

我正在尝试从本地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-in,它会快速运行这些命令,并很快将我注销。我希望它在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"
然后

然后,它起作用了


我遗漏了什么吗

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

您可能需要声明启动脚本的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
。请注意,您需要将进程置于后台,并重定向
stdin
stdout
stderr
以完全脱离远程进程:

-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 &"
-i/key/path/id\u rsaroot@111.11.1.0“sleep 5s;cd/root/Server;nohup/bin/bash./Server.pystd.out 2>std.err&”
ssh命令立即返回的原因似乎是,调用
pkill-f server.py
也会终止实际的ssh会话,因为它在命令行中还包含
server.py

您能问一下包含这个server.py程序内容的问题吗?您是什么意思“我希望它保持开放”?为什么它会这样做?它已经完成了你要求的一切,所以命令完成了。
-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 &"