Подтвердить что ты не робот

Как подождать определенный период времени в Perl на Linux

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

4b9b3361

Ответ 1

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

Ответ 2

Crontab


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

Perl


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

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

  • sleep($n) системный вызов, где $n - числовое значение в секундах
  • 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 );

Предложение

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

Ответ 3

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

sleep(120);  # sleep for 120 seconds 

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

select(undef, undef, undef, 0.25);  # sleep for 250 milliseconds

Ответ 4

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

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

perldoc -f sleep

Ответ 5

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

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

Ответ 6

Я попробовал команду сна В моем коде для фальшивого хака, чтобы разыграть моего друга в школе, это не сработало в Iterm2. Я также установил oh-my-zsh. Но я не могу заставить его работать. Вот код:

print "Thank you for downloading the Membean hack...\n"
sleep 3
print "Loading administrator username...\n"
sleep 2
print "Logging in...\n"
sleep 2z
print "Testing combinations\n"
sleep 2
print "Combination found!\n"
sleep 2
print "Entering username: M4MB34N\n"
sleep 2
print "Entering password: *********\n"
sleep 2
print "15 Minutes hack starting\n"
sleep 2
print "20% done\n"
sleep 1
print "50% done\n"
sleep 5
print "Membean hacked!\n"