Я получил предложения от моего друга Эл. адрес. Два решения: 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. Оно сработало очень хорошо. Поместите его сюда на случай, если у других людей возникнут похожие проблемы.
Учитывая 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
Попробуйте использовать встроенную -в оболочке 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 такая же.