CentOS 服务在进程列表中出现两次

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同时终止另外两项服务。

答案1

您的 bash 脚本中的while作为原始 bash 的分叉子进程执行。

这是正常行为。

如果你这样做,ps auxf你会看到父/子关系,尽管它不会像bash 内部命令while那样作为命令名称。while

相关内容