Назад | Перейти на главную страницу

Сервис CentOS дважды появляется в списке процессов

Мне нужно синхронизировать каталог между двумя серверами, и я решил создать службу, которая прослушивает изменения в файле и запускает rsync.

/usr/lib/systemd/system/mediasync.service

[Unit]
Description=SyncCdnImages

[Service]
#Type=simple
ExecStart=/usr/bin/mediasync.sh
#Restart=on-abort

[Install]
WantedBy=multi-user.target   

/usr/bin/mediasync.sh

#!/bin/sh
inotifywait -mr -e close_write -e create "/var/www/html/folder/backend/utils/sync.log" | while read line

do
        rsync -avzr --update /var/www/html/cdnimages/* myip:/var/www/html/cdnimages/cdnimages/
done

ps aux | grep sync

root     25540  0.0  0.0 115244  1424 ?        Ss   11:31   0:00 /bin/sh /usr/bin/mediasync.sh
root     25541  0.0  0.0   6472   408 ?        S    11:31   0:00 inotifywait -mr -e close_write -e create /var/www/html/folder/backend/utils/sync.log
root     25542  0.0  0.0 115244   392 ?        S    11:31   0:00 /bin/sh /usr/bin/mediasync.sh

Я запускаю службу, используя systemctl start mediasync но я не понимаю, почему он дважды появляется в списке процессов. Это нормальное поведение?

Редактировать:

Убиваем одну из служб ради бывшего kill 25540, убивает и двух других.

В while в вашем сценарии bash выполняется как разветвленный дочерний процесс исходного bash.

Это нормальное поведение.

Если вы это сделаете ps auxf вы увидите отношения родитель / ребенок, хотя он не скажет while как имя команды как while это внутренняя команда bash.