
许多初学者在尝试守护后台python程序时,倾向于使用bash脚本配合pgrep和tmux。这种方法看似简单,但在实际应用中常常暴露出其局限性。最初的尝试可能如下所示:
PATH=/opt/conda/bin:/opt/conda/condabin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
while true; do
if /bin/pgrep -f "miner_nbeats.py" | grep -v $$ >/dev/null; then
echo "script running"
else
echo "script not running"
tmux new-session -d -s my_python_script \; send-keys "source activate python310 && cd /home/putsncalls23/directory && python miner_nbeats.py" Enter
fi
sleep 300
done上述脚本旨在检测miner_nbeats.py是否正在运行,如果未运行,则通过tmux在一个新的会话中启动它。然而,这种方法存在以下几个主要问题:
当Python脚本因内存不足(OOM)或其他错误终止时,上述Bash脚本由于pgrep的误判,将无法有效地重新启动程序。
对于需要在Linux服务器上可靠运行的后台服务,systemd是现代Linux发行版中推荐的解决方案。systemd是一个系统和服务管理器,它提供了强大的进程守护、自动重启、依赖管理、日志集成和资源控制等功能。
使用systemd来守护Python程序,可以避免Bash脚本的诸多问题,实现更稳定、更专业的服务管理。
立即学习“Python免费学习笔记(深入)”;
要使用systemd守护Python程序,需要创建一个服务单元(Service Unit)文件。这个文件通常存放在/etc/systemd/system/目录下,并以.service为后缀。
假设我们要守护的Python脚本是miner_nbeats.py,位于/home/putsncalls23/directory,并且使用名为python310的conda环境。我们可以创建一个名为miner_nbeats.service的文件,内容如下:
# /etc/systemd/system/miner_nbeats.service [Unit] Description=Mining service for nbeats After=network.target [Service] Type=simple User=putsncalls23 WorkingDirectory=/home/putsncalls23/directory ExecStart=/opt/conda/envs/python310/bin/python miner_nbeats.py Restart=always RestartSec=300 [Install] WantedBy=multi-user.target
服务单元文件解析:
创建好服务单元文件后,需要执行以下命令来部署和管理服务:
重新加载systemd配置:
sudo systemctl daemon-reload
此命令通知systemd重新扫描服务单元文件,使其识别新创建的服务。
启用服务(开机自启动):
sudo systemctl enable miner_nbeats.service
此命令会在系统启动时创建必要的符号链接,确保miner_nbeats.service在系统启动时自动运行。
立即启动服务:
sudo systemctl start miner_nbeats.service
此命令会立即启动miner_nbeats服务。
常用管理命令:
查看服务状态:
systemctl status miner_nbeats.service
这将显示服务的当前状态、PID、内存使用、最近的日志输出等信息。
停止服务:
sudo systemctl stop miner_nbeats.service
禁用服务(取消开机自启动):
sudo systemctl disable miner_nbeats.service
查看服务日志:
journalctl -u miner_nbeats.service -f
-f选项可以实时跟踪日志输出。
通过采用systemd来守护Python程序,可以显著提升服务的健壮性、可管理性和可靠性,使其成为生产环境中运行后台应用的首选方案。
以上就是使用systemd守护Python程序:告别Bash脚本的局限性的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号