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

时间:2010-07-06 13:15:37

标签: linux perl

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

5 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:11)

crontab的


如果您希望Perl程序在设定的时间或时间间隔执行,那么您可能需要考虑crontab或其他调度程序。

的Perl


如果要在Perl脚本中执行等待,则可以使用一些易于部署的选项。

系统调用

  1. sleep($n)系统调用,其中$ n是秒的数值
  2. usleep($n)系统调用,其中$ n是微秒的数值
  3. Perl Modules

    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 );
    

    建议

    您很可能希望分叉您的流程,以便您的主程序可以继续工作,同时一个流程在后台处于休眠状态。

答案 2 :(得分:9)

使用sleep()

sleep(120);  # sleep for 120 seconds 

对于更精细粒度的延迟,您可以使用Time::HiRes模块中的usleep。您也可以使用Perl的四参数版select(),前三个参数未定义:

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

答案 3 :(得分:4)

您正在寻找sleep($numSeconds);

所以等待2分钟,你会执行sleep(120);

perldoc -f sleep

答案 4 :(得分:1)

如果一整秒太长,你可以试试usleep(microseconds)sleep(0)只是屈服于操作系统,(丢弃您的进程在调度程序上剩下的时间)。请注意,您要求所有这些功能要求最小时间。在负载很重的系统上,时间可能稍长。

sleep和usleep是C函数,虽然Perl,python等具有调用underling C的函数。 usleep man page, BSD version, (others are available, try Google)