我在Python3中编写了一个股票交易机器人。我把它托管在服务器(Ubuntu 18.10)上,我用iTerm来SSH。想知道如何保持脚本主动运行,这样当我退出会话时,它不会杀死活动进程。
基本上,我想要SSH到我的服务器,启动脚本然后关闭,并在停止过程的日子回来。
你可以使用屏幕
sudo apt-get install screen
screen
./run-my-script
Ctrl-A then D to get out of your screen
从那里你可以关闭你的ssh终端。稍后回来跑吧
screen -ls
screen -r $screen_running
屏幕运行通常是您列出所有屏幕后看到的前5位数字。您可以查看脚本是否仍在运行,或者如果您已添加日志记录,则可以查看您在此过程中的位置。
您可以使用nohup并在命令末尾添加&
以安全地退出会话而不会终止原始进程。例如,如果您的脚本名称是script.py
:
nohup python3 script.py &
通常,当使用&
运行命令并在之后退出shell时,shell将使用挂断信号(kill -SIGHUP <pid>
)终止子命令。这可以使用nohup
来防止,因为它捕获信号并忽略它,以便它永远不会到达实际的应用程序。
使用tmux
是一个不错的选择。或者,您可以在末尾运行&
命令,让它在后台运行。
TMUX非常适用于此。感谢大家!