Xuxicheta
@Xuxicheta
инженер

Как запустить bash скрипт как демон в systemd?

Есть скрипт слежения за файловой системой
/root/.bin/monitor.sh
inotifywait -e create,delete,modify,move -mrq /tmp/mydir | while read events
do
    echo "$(date +"%m.%d.%Y_%T")   $events"  >> /var/log/files.log
done


/etc/systemd/system/mymonitor.service
[Unit]
Description=Monitoring file systems
DefaultDependencies=no
Wants=network.target
After=local-fs.target network.target systemd-sysctl.service systemd-modules-load.service

[Install]
WantedBy=multi-user.target
WantedBy=network-online.target

[Service]
Type=oneshot
ExecStart=/root/.bin/monitor.sh
ExecStop=
RemainAfterExit=true
TimeoutStartSec=5min


на что системд пишет
дек 16 15:49:26 systemd[1]: Starting Monitoring file systems...
дек 16 15:49:26 systemd[1]: monitor.service: Main process exited, code=exited, status=203/EXEC
дек 16 15:49:26 systemd[1]: Failed to start Monitoring file systems.
дек 16 15:49:26 systemd[1]: monitor.service: Unit entered failed state.
дек 16 15:49:26 systemd[1]: monitor.service: Failed with result 'exit-code'.

Никак не могу понять как запустить его корректно.
Если просто выполнить срипт командой в консоли, он работает.
  • Вопрос задан
  • 3653 просмотра
Решения вопроса 1
Xuxicheta
@Xuxicheta Автор вопроса
инженер
Решил проблему.
Скрипт
#!/bin/bash -
#ссылка на интерпретатор обязательна

function monitoring() {
    inotifywait -e create,delete,modify,move -mrq $1 | while read events 
    do
       echo "$(date +"%m.%d.%Y_%T")   $events"
    done
}
DIR="%mydir%"
LOGFILE="%mylogfile%"
echo "Start filesystem monitoring: Directory is $DIR, monitor logfile is $LOGFILE"
monitoring $DIR  >> $LOGFILE &

Сервис-файл
[Unit]
Description=File system Monitoring -- /root/.bin/monitor.sh
After=local-fs.target systemd-sysctl.service systemd-modules-load.service

[Service]
Type=forking
ExecStart=/root/.bin/monitor.sh
EnvironmentFile=/root/monitor.cfg

[Install]
WantedBy=multi-user.target
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы