У меня есть скрипт, который работает при вызове:
/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
.
Я предполагаю (с отсутствующей информацией об отладке), что это ограниченная проблема среды / пути, которую вы, кажется, частично пытались решить.
Обновить /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
в вашей системе)