我有一个 cron 任务,每晚在我的用户下运行一次。我使用 crontab -e 并通过添加以下行来安装它:
0 1 * * * /home/username/diskreport.sh
crontab 的设置是将结果通过电子邮件发送给我。我似乎随机收到一封来自 Cron Daemon 的电子邮件,指出未找到脚本(与 diskreport.sh 的输出相反)。
/bin/sh: 1: /home/username/diskreport.sh: not found
脚本开始时确实出现了错误,我已经更正了,但这并没有阻止脚本运行。它在 sh 和 bash 下都可以正常运行:
#~/bin/bash
答案1
事实证明,这与 ecryptfs 和加密主目录有关。“看似随机”的行为是由我的用户登录后进行的活动 SSH 会话触发的。登录时,cron 能够读取我的主目录,因为它已挂载并解密。注销时,脚本不可用。感谢所有有用的建议。
答案2
所有 shell 脚本都应该以以下行开头#!/bin/bash
(替换bash
为你正在使用的 shell
答案3
做:
whereis sh
获取最短路径,例如,/bin/sh
将 crontab 作业更改为:
0 1 * * * /bin/sh /home/username/diskreport.sh