如何在 Ubuntu 中实现 Python 程序的开机自启动

在 Linux 系统中,特别是 Ubuntu,你可以轻松地设置 Python 程序在开机时自动启动。接下来的内容将详细描述实现这一目标的步骤,并提供相关代码示例供你参考。

流程概述

以下是实现 Python 程序开机自启动的流程:

步骤 描述
1 创建 Python 程序
2 制作 Shell 脚本
3 赋予脚本执行权限
4 创建 Systemd 服务文件
5 启动和启用服务

步骤详解

第一步:创建 Python 程序

首先,创建一个简单的 Python 程序。我将以一个名为 hello.py 的程序为例。

# hello.py
import time

while True:
    print("Hello, World!")
    time.sleep(5)  # 每5秒输出一次

将该文件保存到你的主目录或你偏好的位置,例如 /home/username/hello.py

第二步:制作 Shell 脚本

接下来,你需要创建一个 Shell 脚本来启动该 Python 程序。这是必要的,因为 Systemd 首先将调用 Shell 脚本。

创建 start_hello.sh 文件:

#!/bin/bash
# start_hello.sh

# 进入脚本所在目录并运行 Python 程序
cd /home/username/  # 替换成你的程序路径
python3 hello.py    # 启动你的 Python 程序

保存该文件后,确保它位于 /home/username/

第三步:赋予脚本执行权限

要运行 Shell 脚本,你需要确保它具有执行权限。

打开终端并输入以下命令:

chmod +x /home/username/start_hello.sh

这样就赋予了 start_hello.sh 脚本执行权限。

第四步:创建 Systemd 服务文件

现在,你需要创建一个 Systemd 服务文件,以便在启动时运行该 Shell 脚本。

在终端中输入以下命令来创建服务文件:

sudo nano /etc/systemd/system/hello.service

在这个文件中,添加如下内容:

[Unit]
Description=Hello World Python Service
After=network.target

[Service]
ExecStart=/home/username/start_hello.sh
Restart=always
User=username  # 替换成你的用户名

[Install]
WantedBy=multi-user.target

确保将 username 替换为你的用户名。

第五步:启动和启用服务

现在,你需要启动你创建的服务并设置为开机自启。

在终端中输入以下命令:

# 启动服务
sudo systemctl start hello.service

# 设置服务在启动时自动运行
sudo systemctl enable hello.service

你可以通过运行以下命令来查看服务状态:

sudo systemctl status hello.service

这将告诉你服务是否正在运行。

> 如果需要停止服务,你可以使用:
> 
> ```bash
> sudo systemctl stop hello.service
> ```

流程图

以下是使用 Mermaid 语法的流程图,直观展示了以上步骤:

journey
    title Python 程序开机自启动流程
    section 创建程序
      创建 Python 程序: 5: 用户
    section 创建脚本
      制作 Shell 脚本: 4: 用户
    section 赋予权限
      赋予执行权限: 4: 用户
    section 创建服务
      创建 Systemd 服务文件: 4: 用户
    section 启动服务
      启动和启用服务: 5: 用户

结尾

通过以上步骤,你就成功地在 Ubuntu 系统中设置了 Python 程序的开机自启动。这是一个很好的技巧,可以用于服务器监控、数据处理等多种应用场景。希望这些指导对你有所帮助,并激励你深入学习 Linux 系统和 Python 编程!如果你在过程中遇到任何问题,不要犹豫,随时寻求帮助!