繁体   English   中英

使用php检查正在运行的cron进程

[英]Check running cron processes with php

当我做一个

ps ax

13790 pts/0    S      0:00 /usr/bin/php cron3.php 0
13804 pts/0    S      0:00 /usr/bin/php cron3.php 1
13819 pts/0    S      0:00 /usr/bin/php cron3.php 2
13834 pts/0    S      0:00 /usr/bin/php cron3.php 3
13851 pts/0    S      0:00 /usr/bin/php cron3.php 4
13863 pts/0    S      0:00 /usr/bin/php cron3.php 5
13879 pts/0    S      0:00 /usr/bin/php cron3.php 6
13897 pts/0    S      0:00 /usr/bin/php cron3.php 7
13913 pts/0    S      0:00 /usr/bin/php cron3.php 8
13927 pts/0    S      0:00 /usr/bin/php cron3.php 9
13941 pts/0    S      0:00 /usr/bin/php cron3.php 10
13958 pts/0    S      0:00 /usr/bin/php cron3.php 11
13969 pts/0    S      0:00 /usr/bin/php cron3.php 12
13983 pts/0    S      0:00 /usr/bin/php cron3.php 13
13996 pts/0    S      0:00 /usr/bin/php cron3.php 14
14012 pts/0    S      0:00 /usr/bin/php cron3.php 15
14026 pts/0    S      0:00 /usr/bin/php cron3.php 16
14039 pts/0    S      0:00 /usr/bin/php cron3.php 17
14052 pts/0    S      0:00 /usr/bin/php cron3.php 18
14067 pts/0    S      0:00 /usr/bin/php cron3.php 19
14083 pts/0    S      0:00 /usr/bin/php cron3.php 20
14095 pts/0    S      0:00 /usr/bin/php cron3.php 0
14113 pts/0    S      0:00 /usr/bin/php cron3.php 1

我只想确保在1次只能运行1个cron3.php [argv]。

意思是

cron3.php 1 

正在运行的过程中,我需要能够知道它是通过php行运行还是需要检查的东西。

我尝试了Google搜索,发现的最接近的是

exec("ps auxwww|grep cron3.php|grep -v grep", $output);

但是如果我将其更改为

exec("ps auxwww|grep "cron3.php 1"|grep -v grep", $output);

它列出了包含1的所有对象,包括10、11、12等进程。

谢谢

将其锚定到该行的末尾:

exec("ps auxwww | grep '[c]ron3.php 1$'", $output);

使用[c]ron3是避免使用第二个grep -v grep的技巧,因为它可以匹配cron3 ,但不能匹配自身。

在grep模式的末尾放置一个$

 grep "cron3.php 1$"

在正则表达式中, $表示“文本结尾”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM