пример:
$ cat main.sh
#!/bin/bash
./child_level1.sh &
$ cat child_level1.sh
#!/bin/bash
./child_level2.sh &
$ cat child_level2.sh
#!/bin/bash
echo Hi, fork()s! &
$ ./main.sh # outputs Hi, fork()s
цель: написать скрипт follow.sh, который запускает $1 и собирает идентификаторы всех форков. Как это:
$ ./follow.sh ./main.sh
[pid_main.sh] [pid_child_level1.sh] [pid_child_level2.sh] [pid_of_echo]
4 числа для этого примера). Цифры могут появиться с некоторого времени. Может быть, есть известное название утилиты follow.sh, например pidtracer?
ps
содержит информацию об идентификаторе родительского процесса, или, если вас устраивает решение только для Linux, вы можете получить к нему доступ в машиночитаемой форме из файловой системы/proc
. - person tripleee   schedule 01.03.2013strace -f main.sh
искатьfork
в выводе или, возможно, создать простую оболочкуLD_PRELOAD
для печати каждого PID послеfork()
ing. - person tripleee   schedule 03.03.2013