Я хочу, чтобы сценарий Perl проверял определенный PID каждые несколько минут и затем уничтожал процесс. Как я ожидаю те несколько минут?Спасибо.
sleep (n);
где n - количество секунд, в течение которых вы хотите спать.
Если вы хотите, чтобы программа Perl выполнялась в заданное время или интервал времени, вы можете рассмотреть crontab
или другой планировщик.
Если вы хотите выполнить ожидание из сценария Perl, у вас есть несколько легко развертываемых опций.
системный вызов sleep ($ n)
, где $ n - числовое значение для секунд usleep ($ n)
системный вызов, где $ n - числовое значение для микросекунд 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 );
Скорее всего, вы захотите разветвить свой процесс, чтобы ваша основная программа могла продолжать работать, пока этот процесс спит в фоновом режиме.
Используйте sleep()
:
sleep(120); # sleep for 120 seconds
Для задержек более мелкой детализации, чем одна секунда, вы можете использовать usleep
из Time::HiRes
module. Вы также можете использовать четырехаргументную версию Perl select()
, оставив первые три аргумента неопределенными:
select(undef, undef, undef, 0.25); # sleep for 250 milliseconds
или вы можете попробовать usleep (микросекунды)
, если целая секунда слишком велика.
sleep (0)
просто уступает место ОС (без учета того, сколько времени ваш процесс оставил в планировщике). Обратите внимание, что для всех этих функций вы запрашиваете минимальное количество времени, в течение которого вы хотите спать. Время может быть немного больше на сильно загруженной системе.
sleep и usleep - это функции C, хотя Perl, python и т. Д. Имеют функции, вызывающие подчиненные функции C. man-страница usleep, версия BSD (другие доступны, попробуйте Google)