Vraag Hoe te wachten op een bepaalde periode in Perl op Linux


Ik wil dat een Perl-script om de paar minuten een bepaalde PID controleert en vervolgens het proces doodt. Hoe wacht ik die paar minuten? Bedankt.


22
2017-07-06 13:15


oorsprong


antwoorden:


sleep (n); waarbij n het aantal seconden is dat je wilt slapen.


25
2017-07-06 13:17



crontab


Als u wilt dat een Perl-programma op een bepaald tijdstip of tijdsinterval wordt uitgevoerd, dan wilt u misschien overwegen crontab of een andere planner.

Perl


Als u binnen het Perl-script een wachttijd wilt uitvoeren, heeft u enkele eenvoudig inzetbare opties.

Systeemoproepen

  1. sleep($n) systeemoproep waarbij $ n een numerieke waarde is voor seconden
  2. usleep($n) systeemaanroep waarbij $ n een numerieke waarde is voor microseconden

Perl-modules

Time :: HiRes biedt een aantal functies, waarvan sommige de systeemaanroepen overschrijven. Enkele van de functies omvatten: sleep(), usleep(), nanosleep(),alarm(), ualarm() 

In tegenstelling tot de systeemoproep naar usleep(), de verpakking die is meegeleverd Time :: HiRes zorgt voor meer dan een seconde slapen.

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

Suggestie

Je zult waarschijnlijk je proces willen afvuren zodat je hoofdprogramma kan blijven werken terwijl dat ene proces op de achtergrond slaapt.


11
2017-07-06 13:54



Gebruik sleep():

sleep(120);  # sleep for 120 seconds 

Voor vertragingen van fijnere granulariteit dan een seconde, je zou kunnen gebruiken usleep van de Time::HiRes module. U kunt ook de vier-argumentversie van Perl van gebruiken select() de eerste drie argumenten ongedefinieerd laten:

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

8
2017-07-06 13:25



Je zoekt sleep($numSeconds);

Dus om 2 minuten te wachten, zou je uitvoeren sleep(120);

perldoc -f slaap


4
2017-07-06 13:17



of je zou het kunnen proberen usleep(microseconds) als een hele seconde te lang is. sleep(0) levert eenvoudigweg op voor het besturingssysteem (het verwijderen van de tijd die uw proces nog in de planner heeft). Merk op dat al deze functies die u vraagt ​​voor de minimum hoe lang je wilt slapen. De tijd kan iets langer zijn op een zwaar beladen systeem.

slapen en slapen zijn C-functies, hoewel Perl, python enz. functies hebben die de ondergeschikte C-typen noemen. usleep man page, BSD version, (anderen zijn beschikbaar, probeer Google)


1
2017-07-06 13:25