【发布时间】:2020-02-26 10:25:05
【问题描述】:
我正在尝试为 2 个域设置分析。为此,我使用了 sitespeed.io。当我以 root 身份登录到我的 Ubuntu 服务器并运行 shell 脚本时,输出是我想要的。
但是当我将它作为 crontab 运行时,该命令没有执行。它选择的工作目录是 /root 不正确,因为 docker-compose.yml 文件位于 /home/administrator/ 目录中。
我无法弄清楚 shell 脚本的哪一部分是造成这种情况的原因。
Shell 脚本:
dir=$PWD
cd /home/administrator/ && echo $dir
(cd /home/administrator/ && docker-compose run sitespeed.io https://example.com/ --graphite.host=graphite)
(cd /home/administrator/ && docker-compose run sitespeed.io https://example2.com/ --graphite.host=graphite)
Crontab 代码
*/10 * * * * /home/administrator/dataload.sh >> /home/administrator/dataload.log
日志文件只包含 /root
systemctl status cron 给出以下内容。
Oct 31 09:50:01 ubuntu40new CRON[20119]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 31 09:50:01 ubuntu40new CRON[20120]: (root) CMD (/home/administrator/dataload.sh >> /home/administrator/dataload.log)
Oct 31 09:50:01 ubuntu40new CRON[20119]: (CRON) info (No MTA installed, discarding output)
Oct 31 09:50:01 ubuntu40new CRON[20119]: pam_unix(cron:session): session closed for user root
shell 脚本中的命令没有被执行。
【问题讨论】:
-
正在运行的 crontab 可能是 root 用户的 crontab,而不是管理员用户。检查一下 - stackoverflow.com/questions/8475694/… - ,为管理员用户设置 crontab,看看是否有任何变化。
-
我拥有的 shell 脚本只有在以 root 用户身份登录时才会运行。
标签: shell docker ubuntu cron docker-compose