Если вы не используете wait()
, родительский процесс может завершиться до того, как дочерний получит шанс запуститься. К тому времени, когда дочерний процесс вызовет getppid()
, родительский завершится, поэтому дочерний будет принят init
. В обычной реализации Unix, PID init
равен 1, поэтому вы ожидаете, что он скажет мой родитель - процесс 1, когда это произойдет. Но, по-видимому, VirtualBox меняет это.
Если вы используете wait()
, это заставляет родителя ждать завершения дочернего процесса перед выходом. Таким образом, ребенок никогда не станет сиротой.
RUN+="/usr/bin/systemctl umount_extern_backup.service"
, как указано в комментарии выше, работает.
Проверил SYSTEMD_WANTS
свойство устройства здесь а они пишут:
Note that systemd will only act on Wants dependencies when a device first becomes active. It will not act on them if they are added to devices that are already active
Это объясняет, почему правило add
запускало службу systemd, а правило remove
— нет.