当我做一个
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行还是其他什么来检查的。
我试着搜索我发现的最接近的
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等过程。
谢谢
发布于 2015-08-27 06:43:02
将其锚定在线的末尾:
exec("ps auxwww | grep '[c]ron3.php 1$'", $output);使用[c]ron3是避免使用第二个grep -v grep的一个技巧,因为这与cron3匹配,但它本身并不匹配。
发布于 2015-08-27 06:43:22
在grep模式的末尾放置一个$:
grep "cron3.php 1$"在正则表达式$中,意思是“文本的结尾”。
https://stackoverflow.com/questions/32242324
复制相似问题