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

树莓派使用at命令延迟执行Python脚本失败问题排查

问题:树莓派中使用at命令延迟执行Python脚本失败

在树莓派上开发Linux脚本时,需要延迟调用另一Python脚本,通过Python代码调用at命令后,到指定时间脚本未执行,具体信息如下:

调用at命令的Python代码

import shlex
import subprocess
subprocess.call(shlex.split("at now + 5 minutes -f /home/raspberry/Desktop/Filename.py"))

直接执行at命令的反馈

warning: commands will be executed using /bin/sh
job 13 at Sun Feb 19 23:17:00 2023

待执行的Filename.py代码

#!/usr/bin/env python3
print("Hallo Welt")

/var/spool/mail/raspberry中的错误反馈

From raspberry@raspberrypi Sun Feb 19 23:17:00 2023
Return-path: <raspberry@raspberrypi>
Envelope-to: raspberry@raspberrypi
Delivery-date: Sun, 19 Feb 2023 23:17:00 +0100
Received: from raspberry by raspberrypi.fritz.box with local (Exim 4.94.2)
    (envelope-from <raspberry@raspberrypi>)
    id 1pTrzQ-0000we-Fr
    for raspberry@raspberrypi; Sun, 19 Feb 2023 23:17:00 +0100
Subject: Output from your job       13
To: raspberry@raspberrypi
Message-Id: <E1pTrzQ-0000we-Fr@raspberrypi.fritz.box>
From: raspberry@raspberrypi
Date: Sun, 19 Feb 2023 23:17:00 +0100

sh: 47: Syntax error: word unexpected (expecting ")")

解决方案

问题根源

at命令的-f参数用于读取shell命令序列文件,而非直接执行脚本文件。你直接将Python脚本传给-f,at会调用/bin/sh解析该脚本,shell无法识别Python语法,因此抛出语法错误。

调整步骤

  • 方法一:修改Python代码,传递正确的执行命令给at
    放弃-f参数,通过管道将执行Python脚本的命令传给at,示例代码:

    import subprocess
    cmd = 'echo "/usr/bin/env python3 /home/raspberry/Desktop/Filename.py" | at now + 5 minutes'
    subprocess.call(cmd, shell=True)
    
  • 方法二:让Python脚本可直接执行

    1. 先给脚本添加可执行权限:
      chmod +x /home/raspberry/Desktop/Filename.py
      
    2. 修改Python调用代码,传递执行脚本的命令给at:
      import subprocess
      cmd = 'echo "/home/raspberry/Desktop/Filename.py" | at now + 5 minutes'
      subprocess.call(cmd, shell=True)
      
  • 额外检查项

    • 确认atd服务正在运行:执行systemctl status atd,确保服务处于active (running)状态,否则at任务无法被触发。
    • 如果需要查看脚本输出,可以在命令中指定日志文件,避免查邮件:
      echo "/home/raspberry/Desktop/Filename.py > /home/raspberry/Desktop/script_output.log 2>&1" | at now + 5 minutes
      

内容的提问来源于stack exchange,提问作者Daniel Stappenbeck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:05:18