Что я хочу сделать, так это иметь команду, которая будет возвращаться при закрытии программы. Например, скажем, я открыл браузер chromium с помощью диспетчера окон или другого окна консоли, я хотел бы иметь команду, которую я мог бы выдать, которая будет возвращаться только при закрытии браузера хрома, чтобы я мог предпринять соответствующие действия.

Есть идеи?

1 ответ1

3

Я делаю что-то похожее на своем домашнем сервере, где мне нужна быстрая и грязная система очередей для квантово-химических вычислений. Ниже приведен фрагмент из моего сценария очередей:

# If second argument passed, treat as PID to check for
#  completion before proceeding
if [ -n "$2" ]
then
  while [ `ps aux | grep orca | sed -r 's/[a-z0-9]+[ ]+([0-9]+).*/\1/' | grep "^$2\$" | wc -l` -gt 0 ]
  do
    sleep 1m
  done
fi

Команды внутри обратных тиков выполняют следующее:

  1. Вызовите ps aux чтобы получить список процессов
  2. grep имя исполняемого файла (здесь « orca ») для защиты от редкого случая, когда интересующий процесс выполняется достаточно долго, чтобы использование PID было свернуто, а интересующий PID был назначен несвязанному процессу
  3. sed каждый оставшийся список процессов, используя расширенный Regex, чтобы оставить только номер PID в каждой строке
  4. grep чтобы проверить, совпадают ли какие-либо из PID с целевым PID
  5. wc -l предоставляет простой способ подсчета количества совпадающих PID (счет должен быть только один или ноль, но реализация -gt 0 должна быть устойчивой к необычным обстоятельствам)

Затем сценарий спит в течение одной минуты (легко настраивается) и повторяет проверку PID. В какой-то момент интересующий PID больше не обнаруживается, сценарий продолжается. В моем случае последующие команды выполняют соответствующие вычисления; Вы можете адаптироваться для выполнения любых действий, которые вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .