Почему унисон не работает в cronjob?
Я хочу двустороннюю синхронизацию данных между двумя CentOS
на основе серверов, поэтому я установил Unison
на обоих моих CentOS
сервера. Я создал файл сценария root, который работает в унисон и работает нормально, и синхронизирует файлы, когда запускаю его из терминала. Когда я помещаю этот скрипт в crontab, синхронизация просто не работает. мой /etc/crontab
является
*/1 * * * * root sh /root/syncaaa.sh &>/root/unison-cron.log
И что crontab вставляет в /root/unison-cron.log
Usage: unison [options]
or unison root1 root2 [options]
or unison profilename [options]
For a list of options, type "unison -help".
For a tutorial on basic usage, type "unison -doc tutorial".
For other documentation, type "unison -doc topics".
Мой файл unison.log не обновляется при запуске через cron, а обновляется только при запуске напрямую через терминал. Я проверил в журналах cron, и файл syncaaa.sh запускается каждый miunte. Может кто-нибудь предложить мне, что я должен сделать, чтобы отладить его?
Примечание: мой сервер 1 может войти на сервер 2 без пароля, так как я установил ключи rsa в server2 авторизованные_ключи.
> Обновление 1: я пытался set -x
в сценарии, и он напечатан
+ chmod -R 0777 /home/user11/folder/
+ /usr/bin/unison
Usage: unison [options]
or unison root1 root2 [options]
or unison profilename [options]
For a list of options, type "unison -help".
For a tutorial on basic usage, type "unison -doc tutorial".
For other documentation, type "unison -doc topics"
а также /usr/bin/unison
команда отлично работает на терминале
2 ответа
Я решил проблему, и это было HOME=/
в crontab, это должен быть путь, по которому ваш .unison
существует
Так что мой контент crontab сейчас
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/home/user1/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/1 * * * * user1 sh syncaaa.sh &>unison-cron.log
Добавлять set -x
в верхней части скрипта, поэтому он будет распечатывать каждую команду, прежде чем запустить ее.
Затем обратитесь к файлу журнала, чтобы увидеть, что пошло не так.
Сообщение об ошибке, которое вы цитировали от Unison, означает, что unison
Команда не получила правильное количество аргументов. Приведенный выше подход покажет вам, какая команда действительно запущена.