Я хочу двустороннюю синхронизацию данных между двумя CentOS
на базе серверов, поэтому я установил Unison
на обоих моих CentOS
серверы. Я создал файл сценария в корневом каталоге, который работает в унисон, отлично работает и синхронизирует файлы, когда я запускаю его с терминала. Когда я помещаю этот сценарий в 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 запускается каждый раз. Может ли кто-нибудь предложить мне, что мне делать, чтобы отладить его?
Примечание. Мой сервер 1 может войти на сервер 2 без пароля, так как я установил ключи rsa в server2 authorized_keys.
> Обновление 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
команда отлично работает на терминале
Я решил проблему, и это был 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
команда не получила нужное количество аргументов. Вышеупомянутый подход покажет вам, какая команда действительно была запущена.