我写了一个shell脚本,内容如下:
#!/bin/bash
value=`cat test.txt`
echo "Output: $value" >> currentOutput.txt
通过在 shell 中执行此脚本,它会正确地将值写入 currentOutput.txt 中。通过在 /etc/crontab 上执行此脚本,文件只会填充“Output:”。
shell 和 crontab 中的执行用户是 root。此外,“currentOutput.txt”、“test.txt”和脚本的所有者也是 root。我只是想知道正常执行和 crontab 执行之间的输出有何不同。
这是我的 crontab 条目:
*/5 * * * * root /bin/sh /var/www/testscript.sh
有什么建议么?
答案1
尝试使用绝对路径test.txt
,crontab 不太可能使用与您执行脚本时相同的本地目录,并且该文件可能不存在。
答案2
工作目录很可能不是文件存储的目录(例如/var/www
)。请尝试指定完整路径test.txt
。
您应该始终在 cron 作业中尽可能具体,因为整个环境与您的正常 shell 环境完全不同。