Мой Perl-скрипт должен ждать, пока другой скрипт не завершит свою работу

Я новичок в скриптовых языках и хочу задать простой вопрос.

#!/usr/bin/perl

my $process_id = shift;
execute();

sub execute() {
  system("cd", "bin");
  my $output = `pcp.sh -p $process_id`;
  if (index($output, "some string") != -1) {
    print("Information 1.0 :Standalone server works fine \n");
  }
  else {
    print("Information 2.0 Standalone server have some problems)\n");
  }
}

для 'pcp.sh' перейдите по ссылке:

http://www.oracle.com/technetwork/systems/security/pcp-149863.txt

Этот скрипт работает на терминале и возвращает

Information 1.0 Standalone server works fine

Но я занимаюсь мониторингом скриптов, и инструмент мониторинга получает выходные данные как возвращаемое значение. (Это очень странно.) На инструменте мониторинга во время работы скрипта написано

Information 2.0 Standalone server have some problems

Мне нужно получить вывод из pcp.sh, И это pcp.sh -p $process_id часть этого кода выполняется в течение одной минуты. Инструмент мониторинга работает в течение пяти секунд. Я понимаю, что мне нужно ждать, но я не знаю, как справиться с этой работой.

1 ответ

Попробуйте использовать отладчик Perl. Это просто в использовании, просто запустите:

perl -d yourscript

и это начнется. Тогда вы можете использовать следующие команды:

n - запустить следующее заявление

l - список сценариев Perl

p var - выведите некоторую переменную

s - перейти в функцию (а не выполнять всю функцию)

b 16 - установить точку останова в строке 16

r - работать до следующей точки останова или до конца

q - уволиться

Другие вопросы по тегам