You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Systemd服务无法执行Python定时脚本,求助实现开机自启与后台运行

解决Python定时脚本无法通过Systemd运行的问题

我来帮你一步步排查并解决这个问题,分脚本修复和Systemd服务配置两部分来处理:

一、先修复Python脚本的几个问题

你的脚本里有几个小问题会导致运行失败,先调整一下:

  1. 语法错误:f.close(... 这里多了三个点,而且用with语句打开文件的话,不需要手动调用close(),with会自动帮你处理文件关闭。
  2. 缺少定时循环:schedule库需要启动循环才能持续检测定时任务,你的脚本里没有这部分代码,运行后会直接退出。
  3. 相对路径隐患:如果用相对路径company.txt,Systemd运行时的工作目录可能不是脚本所在目录,导致文件找不到,建议用绝对路径。

修复后的完整脚本示例:

import schedule
import time
from datetime import datetime

def job():
    print("Scheduling is Working...")
    createfile()

def createfile():
    company = "Example file"
    # 👇 替换成你实际想要保存文件的绝对路径,比如/home/frank/company.txt
    file_path = "/home/your_username/company.txt"
    with open(file_path, 'w+') as f:
        # 可以把时间也写入文件,方便查看创建记录
        content = f"{company}\nCreated at: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
        f.write(content)
        print(f"File Created on: {time.ctime(time.time())}")

# 配置每隔1分钟执行一次任务
schedule.every(1).minutes.do(job)

# 启动定时任务循环,保持脚本运行
while True:
    schedule.run_pending()
    time.sleep(1)

二、配置Systemd服务实现后台运行+开机自启

接下来创建Systemd服务文件,让脚本能在后台稳定运行,并且系统重启后自动恢复:

1. 创建服务文件

用sudo权限编辑一个服务文件,比如:

sudo nano /etc/systemd/system/file-creator.service

2. 写入服务配置内容

把下面的内容粘贴进去,注意替换所有带your_username和脚本路径的占位符:

[Unit]
Description=定时创建文本文件的Python服务
After=network.target  # 不需要网络的话可以去掉这行

[Service]
User=your_username  # 替换成你的系统用户名,尽量不要用root运行
WorkingDirectory=/home/your_username/scripts/  # 替换成你的Python脚本所在的绝对目录
ExecStart=/usr/bin/python3 /home/your_username/scripts/your_script.py  # 替换成脚本的绝对路径
Restart=always  # 脚本意外退出时自动重启
RestartSec=5  # 重启间隔5秒
# 把日志输出到指定文件,方便排查问题
StandardOutput=append:/home/your_username/file-creator.log
StandardError=append:/home/your_username/file-creator.log

[Install]
WantedBy=multi-user.target

3. 启动并启用服务

执行以下命令完成配置:

  • 重新加载Systemd配置:
    sudo systemctl daemon-reload
    
  • 启动服务:
    sudo systemctl start file-creator.service
    
  • 设置开机自启:
    sudo systemctl enable file-creator.service
    

4. 验证服务状态

  • 查看服务是否正常运行:
    sudo systemctl status file-creator.service
    
  • 查看日志确认任务执行情况:
    tail -f /home/your_username/file-creator.log
    

三、常见问题排查

如果服务还是无法运行,可以从这几个方向检查:

  • 权限问题:确保脚本、文件保存目录、日志文件所在目录有对应用户的读写权限。
  • Python路径错误:用which python3查看你的Python3实际路径,替换到ExecStart里。
  • 脚本路径错误:一定要用绝对路径,Systemd的默认工作目录是/,相对路径大概率会找不到文件。

内容的提问来源于stack exchange,提问作者frank hk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:26:13