【问题标题】:Crontab running script but nothing happenscrontab 运行脚本但没有任何反应
【发布时间】:2020-06-09 00:21:14
【问题描述】:

在花了一整天的时间思考这个问题之后,我想我会问我的第一个 SO 问题。

所以,我有这个 bash 脚本,当我从任何地方以及从我的用户和 root 运行它时,它完全可以工作。它所做的只是移动一些文件,然后执行 python3 脚本和 mysql 语句:

    #!/bin/bash
    rm -rf /some/directory
    cp -r /origin/directory /destination/directory
    /usr/bin/python3 /python/script/directory.py
    /usr/bin/mysql --login-path=host --database=dbname -e 'CALL function()'

当我尝试将其放入 cron 时出现问题。由于这些命令需要 sudo,我将其添加到 sudo crontab -e 并进行了一些测试。 问题是命令执行了,但什么也没发生。

这是我在 crontab 中输入的内容: 0 * * * * bash /directory/with/script.sh 2>&1 > /directory/with/script/latest_run

这是检查sudo grep CRON /var/log/syslog时的输出:

Jun 8 00:42:01 hostname CRON[7148]: (root) CMD (bash /directory/with/script.sh 2>&1 > /directory/with/script/latest_run)

但是,当我检查文件 latest_run 时,它返回空。它确实每次都被创建。更令人担忧的是,我试图更新的数据库根本没有得到任何数据,但是当我自己手动执行它时,它会完成我需要它做的所有事情。

我整天都在玩我的发行版上的东西,看看我是否可以解决这个问题,但我找不到任何解决方案。如果有人知道出了什么问题,我将不胜感激!

谢谢!

【问题讨论】:

  • 你能试试这个吗?键入sudo su -,如果询问,请键入密码。您将进入根目录。然后执行crontab -e 并在不久的将来在那里输入您的cron 条目。看看是否运行。
  • 刚试过,结果一样。数据库没有任何反应,输出文件为空。
  • 好的,所以,也许你的脚本在 cron 下运行良好,但脚本没有完成它应该做的工作。像这样更改您的.sh 文件并允许cron 运行shell 脚本:ideone.com/jHmRsk。在您的输出中,您是否看到所有正在运行和已完成的运行行?
  • 感谢脚本。是的,当 cron 执行时,所有的回声都会被触发并打印到文件中。我认为问题可能是 bash 试图执行 python 和/或 mysql 调用?我不知道如何明确地将这些打印异常放入文件中。
  • directory.py 是做什么的?

标签: python-3.x bash cron


【解决方案1】:

我想通了!

我看到很多人都说 cron 的 root 环境其实很小,但是作为一个 bash 初学者我不确定这是什么意思。

事实证明,如果没有预先设置环境并指定它能够使用它们,cron 就无法执行 python3 或 mysql。

因此添加 HOME=/home/myuserSHELL=/bin/bash(因为我使用 bash 而不是 sh)就可以了。

换句话说,crontab 最终是这样的:

SHELL=/bin/bash
HOME=/home/myuser
0 * * * * /bin/bash /directory/with/script.sh 2>&1 > /directory/with/script/latest_run

我知道出于安全考虑,不应该将根 cron 设置为使用个人 $HOME 变量,但这很好,因为无论如何只有 3 个人使用此服务器进行同一个项目。

谢谢大家!

【讨论】:

  • 查看您是否可以将自己的答案标记为已接受以结束您的问题。你的答案应该有一个勾号。如果它在那里,请单击它以将您自己的答案标记为已接受。
  • 好节目!我认为您必须等待 48 小时才能接受您自己的答案,但请按照上面的说明这样做,这将帮助您获得宝贵的声望点数。 ;-)!
  • 谢谢你们!只要它允许我一定会的。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多