我正在尝试从本地Mac OS在我的虚拟机上启动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;
然后,它起作用了。
我错过了什么吗?
您可能需要声明启动脚本的 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 &"
您的 ssh 命令立即返回的原因似乎是因为对pkill -f server.py
的调用也会以某种方式终止实际的 ssh 会话,因为它在命令行中也包含server.py
。
我这里没有我的常规 MacBook Pro 进行测试,但我认为添加另一个分号并以/bin/bash 结束命令行可能会做到这一点。