Могу ли я связать процесс с файлом в bash? - PullRequest
0 голосов
/ 05 января 2011

Я хотел бы сделать следующее:

Я хочу связать процесс A с файлом F, поэтому:

  • Если F исчезает, происходит сбой A.
  • F исчезнет, ​​только когда закончится А.

Возможно ли это?Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 11 января 2011

Не следует избегать PID.Они являются идентификаторами процессов и предназначены для использования.

Bash автоматически отслеживает дочерние процессы, которые он запускает.Самый последний идентификатор фонового процесса поддерживается в $ !.Bash также поддерживает элементы управления заданиями, используя синтаксис «% n».

Вы можете отследить изменения статуса дочерних процессов с помощью ловушки SIGCHLD, и вы можете «ждать», пока один или все дочерние процессы завершатся с помощью команды ожидания.Мониторинг процесса, который состоит из запускаемых «job1» и «job2» в примере сценария:

job1 &    # start job1 in background
j1pid=$!  # get its process id
job2 &    # start job2 in background
j2pid=$1  # get its process id

trap 'err=1' ERR  # trap all errors
err=
wait $j1pid  # wait for job1 to complete

# at this point job1 could have completed normally,
# or either process could have had an error

trap - ERR   # revert to "normal" handling of most errors

# kill the processes nicely, or abruptly
# kill -TERM sends the TERM signal to the process, which it can trap
# and do whatever pre-exit process is needed.
# kill -9 cannot be trapped.

for pid in $j1pid $j2pid ; do
  kill -TERM $pid 2>/dev/null || kill -9 $pid
done
0 голосов
/ 05 января 2011

У вас уже есть файл с почти этим свойством в Linux.Если вы создали процесс, то / proc / procNum будет существовать, пока процесс активен.Например, если номер вашего процесса - 1050, / proc / 1050 будет существовать до тех пор, пока процесс не прекратит работу.Я не знаю, уничтожит ли этот файл процесс, но вы можете попробовать связать их вместе.

...