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
请注意,您需要根据实际情况修改ExecStart
和WorkingDirectory
字段中的路径和文件名。ExecStart
表示Python解释器的路径和您的Python程序的路径。WorkingDirectory
表示Python程序所在的目录。
此外,您还可以修改Description
和User
字段的值以满足您的需求。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](