Что-то делать после завершения процесса

Я получил предложения от моего друга Эл. адрес. Два решения: 1. введите настоящую команду в "".

bsub "fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq | fastq_quality_trimmer -Q33 -t 18 -l 20 -o Trimmed_file.fastq”
  1. написать сценарий bash для bsub.

Я попробовал решение 1. Оно сработало очень хорошо. Поместите его сюда на случай, если у других людей возникнут похожие проблемы.

1
07.08.2017, 21:06
2 ответа

Учитывая Debian (Linux )и при условии, что существует только одинlong_running_command:

while [ -d /proc/$(pgrep -f 'long_running_command') ]; do sleep 0.1; done;  second_command

Или, если вы знаете PID:

while [ -d /proc/PID-HERE ]; do sleep 0.1; done; second_command

Если это обычная ситуация:

waitrun() {
  while [ -d /proc/$1 ]; do sleep 0.1; done;
  shift
  "$@"
}
waitrun PIDHERE second_command
0
27.01.2020, 23:45

Попробуйте использовать встроенную -в оболочке zsh команду wait-, она сделает всю работу за вас.

% date; sleep 30s &
Tue Aug  8 22:24:07 EDT 2017
[1] 31875
% wait %1; date
[1]  + done       sleep 30s
Tue Aug  8 22:24:37 EDT 2017

Вы также можете использовать PID вместо спецификации задания -выше. Итак,:

% date; sleep 30s &
Tue Aug  8 22:26:04 EDT 2017
[1] 1821
% wait 1821; date
[1]  + done       sleep 30s
Tue Aug  8 22:26:34 EDT 2017

Семантика в bash такая же.

0
27.01.2020, 23:45

Теги

Похожие вопросы