Linux 设置开机自启动运行 Python 程序

在日常使用 Linux 的过程中,有时我们需要在系统启动时自动运行某些 Python 程序。这对于需要常驻后台的服务、数据采集脚本、或任何需要按时执行的任务来说都是非常有用的。本文将详细介绍如何在 Linux 系统中设置 Python 程序的开机自启动,包括具体步骤和代码示例。

1. 准备 Python 程序

首先,你需要有一个可以运行的 Python 程序。假设我们有一个简单的 Python 脚本 hello.py,代码如下:

# hello.py
import time

while True:
    print("Hello, world!")
    time.sleep(5)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

这个程序会每隔 5 秒打印一次 “Hello, world!”。

2. 选择自启动的方式

在 Linux 系统中,我们可以通过多种方式来实现开机自启动,以下是几种常用的方法:

  1. 使用 Systemd 服务:适合大多数现代 Linux 发行版。
  2. 使用 crontab:适合简单的任务安排。
  3. 使用 init.d 方式:适合老旧的 Linux 发行版。

本文将重点介绍 Systemd 服务的方式,因为它是现代 Linux 系统的标准。

3. 创建 Systemd 服务

步骤 1:创建服务文件

/etc/systemd/system/ 目录下创建一个 .service 文件。我们将其命名为 hello.service。使用你喜欢的文本编辑器(例如 nano, vi),输入以下命令:

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

在该文件中添加以下内容:

[Unit]
Description=Hello World Service
After=multi-user.target

[Service]
ExecStart=/usr/bin/python3 /path/to/your/hello.py
WorkingDirectory=/path/to/your/
StandardOutput=journal
StandardError=journal
Restart=always

[Install]
WantedBy=multi-user.target
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
说明:
  • Description:服务的描述信息。
  • ExecStart:指定要执行的命令,这里需要替换 /path/to/your/hello.py 为你 Python 程序的绝对路径。
  • WorkingDirectory:指定程序运行的工作目录。
  • StandardOutput/StandardError:将输出和错误重定向到系统日志。
  • Restart:设置服务意外退出后自动重启。
步骤 2:重载 Systemd 配置

在创建好服务文件之后,执行以下命令以让 Systemd 识别新的服务:

sudo systemctl daemon-reload
  • 1.
步骤 3:启动服务并设置开机自启动

执行以下命令启动服务,并设置为开机自启动:

sudo systemctl start hello.service
sudo systemctl enable hello.service
  • 1.
  • 2.

这样设置之后,hello.py 脚本将会在每次系统启动时自动运行。

步骤 4:检查服务状态

可以使用以下命令检查服务的状态,确保它正常运行:

sudo systemctl status hello.service
  • 1.

4. 使用 Crontab 设置自启动

除了 Systemd,我们也可以使用 crontab 来设置开机自启动。使用以下命令编辑用户的 crontab 文件:

crontab -e
  • 1.

在文件末尾添加如下行:

@reboot /usr/bin/python3 /path/to/your/hello.py
  • 1.

这将在每次系统重启后执行指定的 Python 程序。

5. 总结

现在你已经了解了如何在 Linux 系统中设置 Python 程序的开机自启动。无论是通过 Systemd 服务还是 crontab,都可确保你的脚本在每次启动时自动运行。选择适合你的方法,进行相应的设置,你的 Python 程序将会在后台执行,为你的工作提供便利。

在这个过程中需要注意以下几点:

  • 确保你的 Python 程序路径正确。
  • 监控程序的运行状态,以便及时发现和处理潜在问题。
  • 在开发过程中,你可能希望禁用自启动功能,确保测试时不会干扰其他进程。

流程图

下面是整个流程的流程图,帮助你更好地理解开机自启动的过程:

准备 Python 程序 选择自启动方式 创建 Systemd 服务 重载 Systemd 配置 启动服务并设置开机自启动 检查服务状态 使用 crontab 设置自启动

无论你选择哪种方法,都希望这能提高你的工作效率,帮助你更好地管理 Linux 系统中的任务。