如何编写Python脚本将指定文件自动添加到树莓派crontab定时任务
原写法问题说明
你提供的初始代码无法生效的核心原因是 crontab -e 是交互式编辑命令,不支持直接通过重定向写入内容,正确逻辑是先读取现有crontab规则、去重后再统一写入更新。
完整可运行代码
import subprocess def add_to_crontab(script_path, schedule="@reboot", python_path="/usr/bin/python3"): # 构造crontab规则 cron_rule = f"{schedule} {python_path} {script_path} &" # 读取当前所有crontab规则 try: current_crontab = subprocess.check_output(["crontab", "-l"], text=True, stderr=subprocess.STDOUT) except subprocess.CalledProcessError: # 无现有crontab规则时初始化为空 current_crontab = "" # 避免重复添加相同规则 if cron_rule in current_crontab: print("目标任务已存在,无需重复添加") return # 拼接新的crontab内容 new_crontab = current_crontab.rstrip('\n') + '\n' + cron_rule + '\n' # 写入更新crontab proc = subprocess.Popen(["crontab", "-"], stdin=subprocess.PIPE, text=True) proc.communicate(input=new_crontab) if proc.returncode == 0: print("任务添加成功") else: print("任务添加失败") # 调用示例 if __name__ == "__main__": target_file = "/home/pi/test/python_script.py" add_to_crontab(target_file)
注意事项
- 可通过
which python3命令查询你的树莓派Python3实际路径,和默认参数不一致时自行修改python_path入参即可 - 若要自定义定时周期,比如每天凌晨3点运行,将
schedule参数改为0 3 * * *即可 - 脚本运行需要当前用户有crontab编辑权限,树莓派默认pi用户符合要求
- 添加完成后可执行
crontab -l命令查看所有规则,确认是否添加成功 - 建议给目标Python脚本添加可执行权限,所有路径都写绝对路径避免运行时找不到文件
内容的提问来源于stack exchange,提问作者HAL 9000
相关产品推荐
相关产品推荐

