Я пытаюсь создать systemd сервис для унисона, с помощью следующего unison.system
файл:
[Unit]
Description=Unison Sync
After=network.target
[Service]
ExecStart=/home/adamfg/bin/unison default
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
Type=simple
User=root
Environment=HOME=/home/adamfg/
[Install]
WantedBy=multi-user.target
Alias=unison.service
Вот мой default.prf
файл, расположенный в /home/adamfg/.unison
:
root = /home/adamfg/workplace
root = ssh://adamfg@my-server.com//home/adamfg/workplace
{Some Ignore Rules}
ignorecase = false
repeat = watch
log = true
logfile = /home/adamfg/.unison/unison.log
backup = Name *
maxbackups = 5
retry = 1
auto = true
batch = true
confirmbigdeletes = true
times = true
prefer = newer
terse = true
contactquietly = true
silent = true
Если я работаю /home/adamfg/bin/unison default
унисон запустится и продолжится прекрасный.
Однако, когда я пытаюсь выполнить использование унисона systemctl start unison.service
и затем я запрашиваю использование состояния systemctl status unison.service
Я получаю следующее:
unison.service - Unison Sync
Loaded: loaded (/etc/systemd/system/unison.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2019-10-07 09:14:25 IST; 884ms ago
Process: 14607 ExecStart=/home/adamfg/bin/unison default (code=exited, status=3)
Main PID: 14607 (code=exited, status=3)
Как я могу зафиксировать это так я способный выполнить унисон как systemd сервис?
Проблема была то, что унисон не мог определить местоположение ssh файла секретных ключей при выполнении как услуга, но это автоматически использует по умолчанию для пользователя, если Вы работаете в из командной строки.
Для фиксации этого, я добавил следующую строку к моему default.prf
файл:
sshargs= -oIdentityFile=/path/tos/ssh/key/id_rsa