我设置了一个 cron 任务:
20 * * * * /usr/bin/sh /home/lucky/myfile.sh
主要问题是,在预定的时间,出现错误:“邮件已发送至 /var/spool/mail/lucky”。
myfile.sh的内容为:
mkdir jh
cd jh
答案1
对于设置为 cron 作业的脚本来说,这是不行的:
mkdir jh
cd jh
您应该给出必须创建目录的完整路径jh
。此外,您应该有权限在此路径中创建新文件/目录。
例如,您的脚本应如下所示:
#!/bin/sh
mkdir /home/lucky/jh
cd /home/lucky/jh
也不/usr/bin/sh
是 的正确路径sh
。正确的路径是/bin/sh
。您可以使用whereis sh
命令检查这一点。即便如此,您的 cron 作业也应该如下所示:
20 * * * * /home/lucky/myfile.sh
不要忘记使脚本可执行:
chmod +x /home/lucky/myfile.sh
答案2
似乎创建文件夹的路径是/
。这是因为crontab
需要文件夹和文件的完整路径 在它执行的所有文件中。
因此 myfile.sh 中的路径应该是
mkdir <absolutePath>/jh
cd <absolutePath>/jh
20 * * * * /usr/bin/sh /home/lucky/myfile.sh
这一行是正确的,但你应该检查路径以查看 sh 是否存在于 /usr/bin/sh(用于which sh
查看 sh 存在的路径;我的是 /bin/sh)
如果你急着开始编写 crontab,这个链接有非常好的例子
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/