【问题标题】:Shell Script not functioning properly in crontab [duplicate]Shell 脚本在 crontab 中无法正常运行 [重复]
【发布时间】:2023-10-13 23:31:01
【问题描述】:

我们正在运行一个 Cron 作业,该作业在我们托管在谷歌云和 Debian Linux 10 操作系统中的远程数据库服务器中执行脚本。 该脚本将登录到远程服务器并执行一些数据库查询。当我们手动运行脚本时它工作正常,我们得到了正确的输出。当我们在 Cronjob 上运行相同的脚本时,我们没有得到正确的输出。当我们从 cron 运行脚本时,我们得到的输出低于输出,但如果我们手动执行,它正在获取记录。

查询正常,0 行受影响记录:0 已删除:0 跳过:0 警告:0

当我们尝试调试问题时,我们发现脚本没有获取根环境变量,我们在 /etc/crontab 中添加了 cron 而不是 crontab -e。添加后,我们得到了权限问题,我们通过提供执行权限来修复它。

一旦我们提供了权限,我们没有收到任何错误,但日志没有打印,我们无法找到问题。请找到以下 cron 条目。

* * * * * 根 /root/scripts/test.script > /root/scripts/test.log 2>&1

任何建议将不胜感激。

【问题讨论】:

  • “日志未打印”是什么意思? /root/scripts/test.log 是空的吗?
  • 在此处显示您的脚本(无用户名/密码)。在 test.script 的顶部插入 date; exit 并检查您的 test.log
  • @user2693302:你可以在-x开启的情况下运行你的bash脚本.....

标签: bash shell cron crontrigger


【解决方案1】:

最常见的问题是登录 shell 中缺少环境变量。有些人在 cron 脚本中包含 .profile、.bash_profile 等,但这不是一个好主意,您可能会引入更多的不稳定问题。我建议让你的脚本运行

env -i /root/scripts/test.script

为了方便调试,之后,使用修改后的脚本再次尝试 cron。

【讨论】:

    最近更新 更多