我有一个脚本,在调用时可以运行:
/usr/local/bin/myscript #this works fine
该文件的权限为:
-rwxr-xr-x 1 root root 155 Jan 27 09:34 myscript
我在 /etc/crontab 中添加了一行:
* * * * * root /usr/local/bin/myscript
但 cron 似乎无法运行它。
crontab 已设置 PATH 变量:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
该脚本是 mysqldump 到 /var/tmp/ 目录:
#!/bin/bash
DAY=`date +%y%m%d`
TIME=`date +%k%M`
mysqldump test -u john -pxxxxxxx > /var/tmp/$DAY.$TIME.test.sql
我想不出这有什么问题,但是脚本没有运行。
编辑:/var/log/syslog 显示以下条目:
Jan 27 10:20:01 hector CRON[8286]: (root) CMD (/bin/bash /usr/local/bin/myscript)
Jan 27 10:20:01 hector CRON[8285]: (CRON) info (No MTA installed, discarding output)
所以我猜它正在尝试运行脚本,但它一定是在某个地方失败了,因为我没有得到与使用 运行它时相同的输出/usr/local/bin/myscript
。
答案1
我猜测(缺少调试信息)这是一个受限环境/路径问题,您似乎已尝试部分解决该问题。
更新/usr/local/bin/myscript
以包含使用完整路径,例如:
#!/bin/bash
DAY=`/bin/date +%y%m%d`
TIME=`/bin/date +%k%M`
/usr/bin/mysqldump -u john -pxxxxxxx test > /var/tmp/$DAY.$TIME.test.sql
(我认为date
完整路径是多余的,mysqldump
关键的是看到:whereis mysqldump
在你的系统上)