Python在Linux开机自启动

在Linux系统中,有时候我们希望将Python程序设置为开机自启动,以便在系统启动时自动运行。本文将介绍如何使用systemd服务来实现这一目标。

什么是systemd服务

systemd是Linux系统中的一个初始化系统,它负责管理系统的启动、停止和管理各种服务。我们可以使用systemd来创建一个服务单元,然后配置该服务单元以在系统启动时自动运行我们的Python程序。

编写Python程序

首先,我们需要编写一个Python程序,用于开机自启动。下面是一个简单的示例程序,它将输出一条欢迎信息:

# welcome.py

def main():
    print("Welcome to my Python program!")

if __name__ == '__main__':
    main()

保存以上代码为welcome.py

创建systemd服务单元

接下来,我们需要创建一个systemd服务单元,以便在系统启动时自动运行Python程序。在Linux系统中,systemd服务单元以.service扩展名结尾。我们可以使用任何文本编辑器创建一个新文件,然后将以下内容复制到文件中:

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

[Service]
ExecStart=/usr/bin/python3 /path/to/welcome.py
WorkingDirectory=/path/to/
StandardOutput=journal
StandardError=journal
User=myuser

[Install]
WantedBy=default.target

请注意,您需要根据实际情况修改ExecStartWorkingDirectory字段中的路径和文件名。ExecStart表示Python解释器的路径和您的Python程序的路径。WorkingDirectory表示Python程序所在的目录。

此外,您还可以修改DescriptionUser字段的值以满足您的需求。Description将在启动时显示给用户,User指定服务运行的用户。

保存该文件并将其命名为myprogram.service,然后将其移动到/etc/systemd/system/目录下。

启用和启动服务

完成上述步骤后,我们可以启用和启动我们的服务。

打开终端,并执行以下命令来启用服务:

sudo systemctl enable myprogram.service

然后,执行以下命令来启动服务:

sudo systemctl start myprogram.service

检查服务状态

要检查服务是否正常运行,我们可以执行以下命令:

sudo systemctl status myprogram.service

如果一切正常,您将看到类似于以下内容的输出:

● myprogram.service - My Python Program
   Loaded: loaded (/etc/systemd/system/myprogram.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-07-12 12:00:00 CST; 1min ago
 Main PID: 12345 (python3)
    Tasks: 1 (limit: 4915)
   Memory: 10.0M
   CGroup: /system.slice/myprogram.service
           └─12345 /usr/bin/python3 /path/to/welcome.py

Jul 12 12:00:00 hostname systemd[1]: Started My Python Program.

自启动服务配置

如果您希望服务在每次系统启动时都自动启动,可以执行以下命令:

sudo systemctl enable myprogram.service

如果您不再需要自启动服务,可以执行以下命令来禁用它:

sudo systemctl disable myprogram.service

总结

通过使用systemd服务,我们可以方便地将Python程序设置为Linux系统的开机自启动。在本文中,我们了解了如何编写Python程序和创建systemd服务单元,以及如何启用和启动服务。希望这篇文章能帮助您实现Python程序的开机自启动。

pie
    title Linux系统中服务占比
    "systemd" : 70
    "其他" : 30

参考资料

  • [systemd官方文档](
  • [How To Set Up a Python Development Environment on Ubuntu 18.04](