如何编写 cronjob

如何编写 cronjob

我尝试为erpnext_sync.py位于的Python 脚本设置 cronjob/home/user_name/frappe-bench/biometric-attendance-sync-tool

$ crontab -l
* * * * * /usr/bin/python3 -c 'from erpnext_sync import main; main()'

当我重新启动 PC 并启动 Ubuntu 或 Windows 终端时,此 cronjob 不起作用。

我可以知道如何每分钟运行这个 cronjob 吗,即使在重启计算机之后。

答案1

通过 运行的作业cron或启动脚本或systemd脚本不会在桌面上的同一运行时环境中运行。启动脚本以 运行root。您的任何PATH更改或其他环境变量设置都不会~/.bashrc自动传播到您的cron作业。例如,没有$DISPLAY,因此 GUI 程序需要特殊处理(阅读man xhost)。

cron人们可以在crontab文件 Read中为所有作业设置环境变量man 5 crontab

echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias查看每个环境中的结果 。
一种简单的方法是将命令存储在bash脚本中,并从终端会话中执行该脚本,保存输出,然后从“其他”环境执行该脚本,保存输出。使用比较保存的输出diff

#!/bin/bash
echo "=== id ===";id
echo "=== set ===";set
echo "=== env ===";env | sort
echo "=== alias ===";alias`

由于command该行的一部分crontab默认由 解释/bin/sh,其语法比 更简单/bin/bash,因此我建议command调用一个bash脚本(可执行、已安装、以 开头#!/bin/bash)来设置环境,然后调用所需的程序。

相关内容