Как ожидать в течение определенного промежутка времени в Perl на Linux

Я хочу, чтобы сценарий Perl проверял определенный PID каждые несколько минут и затем уничтожал процесс. Как я ожидаю те несколько минут?Спасибо.

26
задан Svante 6 July 2010 в 13:28
поделиться

5 ответов

sleep (n); где n - количество секунд, в течение которых вы хотите спать.

31
ответ дан 28 November 2019 в 06:53
поделиться

Crontab


Если вы хотите, чтобы программа Perl выполнялась в заданное время или интервал времени, вы можете рассмотреть crontab или другой планировщик.

Perl


Если вы хотите выполнить ожидание из сценария Perl, у вас есть несколько легко развертываемых опций.

Системные вызовы

  1. системный вызов sleep ($ n) , где $ n - числовое значение для секунд
  2. usleep ($ n) системный вызов, где $ n - числовое значение для микросекунд

Модули Perl

Time :: HiRes предоставляет ряд функций, некоторые из которых перекрывают системные вызовы. Некоторые из функций включают: sleep () , usleep () , nanosleep () , alarm () , ualarm ()

В отличие от системного вызова usleep () , тот, который упакован с Time :: HiRes , позволяет спать дольше секунды.

use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
                    clock_gettime clock_getres clock_nanosleep clock
                    stat );

Предложение

Скорее всего, вы захотите разветвить свой процесс, чтобы ваша основная программа могла продолжать работать, пока этот процесс спит в фоновом режиме.

11
ответ дан 28 November 2019 в 06:53
поделиться

Вы ищете sleep($numSeconds);

Чтобы подождать 2 минуты, вы выполните sleep(120);

perldoc -f sleep

4
ответ дан 28 November 2019 в 06:53
поделиться

Используйте sleep():

sleep(120);  # sleep for 120 seconds 

Для задержек более мелкой детализации, чем одна секунда, вы можете использовать usleep из Time::HiRes module. Вы также можете использовать четырехаргументную версию Perl select() , оставив первые три аргумента неопределенными:

select(undef, undef, undef, 0.25);  # sleep for 250 milliseconds
9
ответ дан 28 November 2019 в 06:53
поделиться

или вы можете попробовать usleep (микросекунды) , если целая секунда слишком велика. sleep (0) просто уступает место ОС (без учета того, сколько времени ваш процесс оставил в планировщике). Обратите внимание, что для всех этих функций вы запрашиваете минимальное количество времени, в течение которого вы хотите спать. Время может быть немного больше на сильно загруженной системе.

sleep и usleep - это функции C, хотя Perl, python и т. Д. Имеют функции, вызывающие подчиненные функции C. man-страница usleep, версия BSD (другие доступны, попробуйте Google)

1
ответ дан 28 November 2019 в 06:53
поделиться
Другие вопросы по тегам:

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