我已经从 Go 脚本创建了一个二进制文件,现在我需要使用 crontab 运行它。二进制文件运行时不会出现问题,从命令行手动执行它。我正在使用 WSL 中的 Ubuntu。 crontab 保存成功,但脚本似乎没有执行。
定时任务看起来像这样:
*/1 01 * * * /home/tgr/test-bin/main/main -download > /dev/null 2>&1
- 我在凌晨 1 点对此进行了测试,这就是 crontab 小时字段位于 01 的原因。
使用“-download”标志运行脚本,尝试使用 YAML 配置文件从存储桶下载一些文件,然后执行一些辅助任务,例如解压缩、复制和验证文件的结构。它也会生成一个日志文件。
我已经启动了 cron 服务
sudo service cron start
您能否提一些建议?
答案1
通过cron
、 或at
、 或运行的作业batch
不会在桌面上的同一运行时环境中运行。您的任何PATH
更改或其他环境变量设置都不会自动传播到您的cron
作业。例如,没有$DISPLAY
,因此 GUI 程序需要特殊处理(读取man xhost
)。
可以在Read 文件cron
中为所有作业设置环境变量。crontab
man 5 crontab
echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
查看每个环境中的结果 。
由于默认情况下,command
该行的部分由 解释,它的语法比 更简单,因此我建议调用一个脚本(可执行文件,已安装,以 开头)来设置环境,然后调用所需的程序。crontab
/bin/sh
/bin/bash
command
bash
#!/bin/bash