如何在Linux上的Perl中等待一段时间

Cha*_*ter 26 linux perl

我希望Perl脚本每隔几分钟检查一次PID,然后终止进程.我怎么等几分钟?谢谢.

MJB*_*MJB 31

sleep (n); 其中n是您想要睡觉的秒数.


vol*_*ron 11

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 );
Run Code Online (Sandbox Code Playgroud)

建议

您很可能希望分叉您的进程,以便您的主程序可以继续工作,同时一个进程在后台休眠.


Eug*_*ash 9

用途sleep():

sleep(120);  # sleep for 120 seconds 
Run Code Online (Sandbox Code Playgroud)

对于比一秒更精细的延迟,您可以usleepTime::HiRes模块中使用.您也可以使用Perl的四参数版本,select()保留前三个参数undefined:

select(undef, undef, undef, 0.25);  # sleep for 250 milliseconds
Run Code Online (Sandbox Code Playgroud)

  • usleep更适合精细控制.选择将(并且确实)工作,但它真的应该用于网络. (3认同)
  • Time :: HiRes重新定义了一个接受小数秒的"睡眠". (2认同)

RC.*_*RC. 4

您正在寻找sleep($numSeconds);

因此,要等待 2 分钟,您将执行sleep(120);

perldoc -f 睡眠