编辑:我的脚本位于$HOME文件夹中。这就是问题的原因。问题末尾有更多详细信息。无论如何,这不是一个重复的问题!
我有一个非常简单的脚本,用于删除一些日志文件。从命令行运行完美。但是,如果我在 crontab 上安装它,偶尔我会得到
/bin/sh: 1: $MyScript.sh: 未找到
我认为这可能与 crontab 配置有关,因此我通过以下方式将其专门安装到 crontab 中供我的用户使用
sudo vi /etc/crontab
不幸的是,我仍然会时不时地收到相同的错误。以下是我的脚本。
#!/bin/sh
NOW=$(date +"%m-%d-%Y-%T")
echo "$NOW Starting deleting of log files"
find /$PATH_TO_DIR/logs/* -mtime +30 -type f -delete
if [ $? -eq 0 ]
then
echo "$NOW Successfully deleted files"
else
echo "$NOW Could not delete files"
fi
任何帮助均感激不尽。
编辑:问题是我的主文件夹被加密了。这就是为什么它只能在我登录到终端时才能间歇性地工作。(然后主文件夹被解密并找到我的脚本)。所以我将脚本移到其他地方,它开始工作了。
答案1
有几个问题:
crontabs(无论是crontab -e
还是文件)的/etc/cron.d
指定如下:
17 * * * * root /usr/local/bin/script.sh
此示例以 root 身份在每小时的第 17 分钟运行。
但是,您可以放入常规脚本/etc/cron.daily/
(或每周、每月、每小时)。注意:不要.
在文件名中放入,否则将被跳过。
您的脚本还引用了未定义的变量。这将导致/logs/*
使用该路径,因为$PATH_TO_DIR
计算结果为空。您可以通过set -u
在脚本开头的某个位置运行来修复此问题(免责声明:我不知道非 bash shell 如何处理此问题)。
我还认为我们缺少信息,因为我没有看到任何关于$MyScript