Python 项目后台运行

作者:user 发布日期: 浏览量:109

1、使用 systemd 管理服务

  • 如果你需要长期稳定地运行 Python 项目,推荐使用 systemd 创建服务文件。

配置步骤:
- 创建一个服务文件,例如:/etc/systems/system/myproject.service

[Unit]
Description=My Python Project
After=network.target

[Service]
User=your_user
WorkingDirectory=/path/to/your/project
ExecStart=/usr/bin/python /path/to/your_script.py
Restart=always

[Install]
WantedBy=multi-user.target
  • 重新加载 systemd 配置
sudo systemctl daemon-reload
  • 启动服务
sudo systemctl start myproject
  • 设置开机自启
sudo systemctl enable myproject
  • 查看服务状态
sudo systemctl status myproject

2、使用 nohup 命令

  • nohup 是一个常用的 Linux 工具,用于忽略挂起信号,使得进程在终端关闭后仍然可以继续运行。
  • 操作命令
"""
    nohup:确保进程不会因为终端关闭而终止
    > output.log:将标准输出重定向到 output.log 文件
    2>&1:将错误输出(stderr)也重定向到标准输出(stdout)
    &:将进程放入后台运行
"""
nohup python your_script.py > output.log 2>&1 &
  • 查看运行状态
ps aux | grep your_script.py
  • 停止进程
kill <PID>

3、使用 supervisord

  • supervisord 是一个专门用于管理后台进程的工具,适合需要监控和自动重启的场景。
  • 安装 supervisor
pip install supervisor
  • 创建配置文件 supervisord.conf
[program:myproject]
command=python /path/to/your_script.py
directory=/path/to/your/project
autostart=true
autorestart=true
stderr_logfile=/var/log/myproject.err.log
stdout_logfile=/var/log/myproject.out.log
  • 启动 supervisord
supervisord -c /path/to/supervisord.conf
  • 管理进程
supervisorctl status
supervisorctl start myproject
supervisorctl stop myproject

4、使用 Docker

  • 如果项目需要更复杂的环境隔离,可以考虑使用 Docker 将项目容器化。
  • 创建一个 Dockerfile
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "your_script.py"]
  • 构建镜像
docker build -t myproject .
  • 运行容器
docker run -d --name myproject_container myproject
  • 查看日志
docker logs myproject_container

5、使用 screen 或 tmux

  • screen 和 tmux 是终端复用工具,可以创建一个会话并在其中运行程序。即使断开连接,程序也会继续运行。

使用 screen:
- 启动一个新的 screen 会话

screen -S mysession
  • 在会话中运行 python 脚本
python your_script.py
  • 按下 ctrl + A,然后按 D 键分离会话
  • 重新连接会话
screen -r mysession

使用 tmux:
- 启动一个新的 tmux 会话

tmux new -s mysession
  • 在会话中运行 python 脚本
python your_script.py
  • 按下 ctrl + B,然后按 D 键分离会话
  • 重新连接会话
tmux attach -t mysession
下一篇: Canvas 入门