如何使用 crontab 执行 go 二进制文件?

如何使用 crontab 执行 go 二进制文件?

我已经从 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中为所有作业设置环境变量。crontabman 5 crontab

echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias查看每个环境中的结果 。

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

相关内容