【问题标题】:cd command for Working directory shell script工作目录 shell 脚本的 cd 命令
【发布时间】: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


【解决方案1】:

尝试安装邮件服务

sudo apt-get install postfix

【讨论】:

  • 没有帮助。我相信文件路径不匹配
猜你喜欢
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 2015-11-08
  • 2021-09-10
相关资源
最近更新 更多