我希望Perl脚本每隔几分钟检查一次PID,然后终止进程。我怎么等几分钟? 感谢。
答案 0 :(得分:30)
sleep (n);
其中n是您想要睡觉的秒数。
答案 1 :(得分:11)
如果您希望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 );
您很可能希望分叉您的流程,以便您的主程序可以继续工作,同时一个流程在后台处于休眠状态。
答案 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)
答案 4 :(得分:1)
如果一整秒太长,你可以试试usleep(microseconds)
。
sleep(0)
只是屈服于操作系统,(丢弃您的进程在调度程序上剩下的时间)。请注意,您要求所有这些功能要求最小时间。在负载很重的系统上,时间可能稍长。
sleep和usleep是C函数,虽然Perl,python等具有调用underling C的函数。 usleep man page, BSD version, (others are available, try Google)