Чтобы получить имя процесса по его pid:
pid=42
ps -o comm= -p $pid
Чтобы получить имена дочерних процессов данного pid (Linux procps):
ps -o comm= --ppid $pid
Чтобы получить имена дочерних процессов данного pid (POSIX):
for cpid in $(ps -eo pid=,ppid= | awk -v pid=$pid '$2==pid{print $1}'); do ps -o comm= -p $cpid; done
Чтобы получить имя родительского процесса данного pid:
ps -o comm= -p $(ps -o ppid= -p $pid)
Чтобы получить имя родительского процесса данного pid (, предполагая, что вы еще не запустили систему инициализации):
ps -o comm= -p $(ps -o ppid= -p $(ps -o ppid= -p $pid))
Я сделал это:
вB.service
:
[Service]
ExecStartPre=/bin/systemctl stop A.mount
вA.mount
:
[Unit]
Requires=B-stopped.service
After=B-stopped.service
вB-stopped.service
:
[Service]
Type=oneshot
ExecStart=/bin/sh -c '! systemctl --quiet is-active B'