Я планирую использовать inosync для синхронизации данных с главного сервера на несколько клиентских серверов. Я создал пользователя с именем rsyncuser как на главном, так и на подчиненных серверах с разрешениями на доступ и беспарольным доступом по ssh от главного к подчиненным серверам.
Inosync работает, когда я использую его из командной строки как rsyncuser.
Затем я хочу, чтобы это запускалось автоматически при включении сервера. Я подумал, что выскочка - это способ заставить это работать.
Я не могу найти правильную команду выскочки, чтобы заставить это работать.
Вот мой файл конфига выскочки. Проблема, похоже, связана с запуском "inosync -d -c /etc/inosync/inosync_rsyncuser.py" от имени данного пользователя.
Как видите, я перепробовал несколько разных вариантов!
description "start inosync to sync data to other CDN Servers as rsyncuser" console output #start on startup #stop on shutdown start on (net-device-up and local-filesystems) stop on runlevel [016] #start on runlevel [2345] #stop on runlevel [!2345] #kill timeout 30 env RUN_AS_USER=rsyncuser expect fork script echo "Inosync updtart job seems to have started" >> /tmp/upstart.log # exec sudo -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1 # LOGFILE=/var/log/logfile.`date +%Y-%m-%d`.log # exec su - $RUN_AS_USER -c "inosync -d -c /etc/inosync/inosync_rsyncuser.py" >> $LOGFILE 2>&1 # exec su -c "ls -la" >> /tmp/upstart.log 2>&1 # emit inosync_running end script
sudo по умолчанию воздействует на большую часть среды. Попробуйте это (добавив -E):
exec sudo -E -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1
-E
сообщает sudo о необходимости сохранения окружающей среды.