在 Ubuntu 20 上设置 Python 脚本开机自启动

在现代计算机使用中,自动启动某些服务或脚本可以提高效率,尤其是在服务器或物联网设备上。本文将指导您如何在 Ubuntu 20 上设置 Python 脚本在系统启动时自动运行。我们将一步步了解如何实现这一目标,并提供具体的代码示例。

一、准备工作

首先,您需要一台安装了 Ubuntu 20 的计算机,并且已经安装了 Python 环境。如果还没有安装 Python,可以通过以下命令进行安装:

sudo apt update
sudo apt install python3

接下来,我们需要创建一个简单的 Python 脚本。打开您喜欢的文本编辑器,创建一个名为 startup_script.py 的文件,内容如下:

# startup_script.py
import datetime

def log_time():
    with open('/home/your_username/startup.log', 'a') as f:
        f.write(f"Script started at: {datetime.datetime.now()}\n")

if __name__ == "__main__":
    log_time()

请确保将 your_username 替换为您的实际用户名。这个脚本的功能是在每次启动时记录当前时间到 startup.log 文件中。

二、给脚本添加执行权限

在终端中,给脚本添加可执行权限,运行以下命令:

chmod +x /home/your_username/startup_script.py

三、使用 Systemd 设置开机自启动

Ubuntu 使用 systemd 作为其服务管理器。通过创建一个 systemd 单元文件,可以轻松设置 Python 脚本的自启动。

1. 创建一个单元文件

/etc/systemd/system/ 目录下创建一个新的服务文件,命名为 startup_script.service

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

在文件中输入以下内容:

[Unit]
Description=Startup Python Script

[Service]
ExecStart=/usr/bin/python3 /home/your_username/startup_script.py
WorkingDirectory=/home/your_username
StandardOutput=append:/home/your_username/startup.log
StandardError=append:/home/your_username/startup_error.log
Restart=always

[Install]
WantedBy=multi-user.target

2. 重新加载 systemd 管理器配置

为了让 systemd 识别我们刚才创建的服务文件,我们需要运行以下命令:

sudo systemctl daemon-reload

3. 启用并启动服务

接下来,我们需要启用该服务,以便它能在开机时自动运行:

sudo systemctl enable startup_script.service

您可以手动启动该服务以测试其功能:

sudo systemctl start startup_script.service

然后,您可以查看运行日志,确保服务正在正常工作:

cat /home/your_username/startup.log
cat /home/your_username/startup_error.log

四、关系图

为了更清晰地展示 systemd 服务与 Python 脚本之间的关系,我们使用 Mermaid 语法来构建一个 ER 图:

erDiagram
    SYSTEM {
        string name
    }
    SERVICE {
        string name
        string status
    }
    SCRIPT {
        string name
        string path
    }
    
    SYSTEM ||--o| SERVICE : manages
    SERVICE ||--|| SCRIPT : executes

此图表说明了系统 (SYSTEM) 管理的服务 (SERVICE),而服务则执行特定的脚本 (SCRIPT)。

五、旅行图

我们以旅行图的形式描述这个过程,展示从编写 Python 脚本到实现开机自启动的整个旅程:

journey
    title 从零开始设置 Python 脚本开机自启
    section 步骤 1: 编写 Python 脚本
      创建脚本: 5: 脚本无误
    section 步骤 2: 提供执行权限
      使用 chmod: 5: 权限设置成功
    section 步骤 3: 创建 systemd 服务
      创建服务文件: 5: 服务文件创建完成
    section 步骤 4: 启用服务
      启用服务: 5: 服务启用成功
    section 步骤 5: 验证日志
      检查日志: 5: 日志记录正常

结论

本文详细介绍了如何在 Ubuntu 20 上设置 Python 脚本为开机自启动,涉及从编写脚本到设置 systemd 服务的各个步骤。通过上述步骤,不仅提升了工作效率,也为日常管理提供了便利。今后,您可以在此基础上,根据需要进一步扩展功能,增加更多复杂的逻辑,使得您的 Python 脚本能够在启动时执行更多的任务。希望本文能对您的学习和工作有所帮助!