В файле .profile
пользователя root
я определил функцию, например,
function printDate() {
date
}
Я хочу запускать эту функцию каждую минуту и добавлять вывод в cron.log. Я попытался добавить следующую запись в crontab:
* * * * * printDate > $HOME/cron.log 2>&1
Но это не работает. Файл cron.log
создается, но он пуст. Я предполагаю, что это потому, что .profile
не читается cron, поэтому любые функции / псевдонимы, определенные в нем, для него недоступны. Поэтому я попытался изменить запись в crontab:
* * * * * source $HOME/.profile;printDate >> $HOME/cron.log 2>&1
Но это тоже не работает. Кажется, что cron все еще не имеет доступа к функции printDate
, потому что я вижу следующее в cron.log
/bin/sh: printDate: not found
Просто оберните это в другой скрипт bash. Ваши имена файлов будут другими, но у меня есть: test (.profile)
#!/bin/bash
function printDate() {
date
}
wrap (новый скрипт, который вы можете поместить куда угодно, просто измените URL)
#!/bin/bash
cd ~/
source ./test
printDate > ./date.log
, когда запустить из / bin / sh
$ ls
test wrap
$ ./wrap
$ cat date.log
Wed Apr 11 11:49:39 EDT 2012
$
Теперь просто убедитесь, что ваши пути / окружение правильные
Строки crontab, которые я только что протестировал, были:
SHELL=/bin/sh
HOME=/root
* * * * * $HOME/wrap >/dev/null 2>&1