亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP實現linux命令tail -f

2024-05-04 23:43:12
字體:
來源:轉載
供稿:網友
tail 命令從指定點開始將文件寫到標準輸出.使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,并且不但刷新,使你看到最新的文件內容.接下來通過本文給大家介紹PHP實現linux命令tail -f,需要的朋友參考下
 

tail 命令從指定點開始將文件寫到標準輸出.使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,并且不但刷新,使你看到最新的文件內容.

1.命令格式;

tail[必要參數][選擇參數][文件]

2.命令功能:

用于顯示指定文件末尾內容,不指定文件時,作為輸入信息進行處理。常用查看日志文件。

3.命令參數:

-f 循環讀取

-q 不顯示處理信息

-v 顯示詳細的處理信息

-c<數目> 顯示的字節數

-n<行數> 顯示行數

--pid=PID 與-f合用,表示在進程ID,PID死掉之后結束.

-q, --quiet, --silent 從不輸出給出文件名的首部

-s, --sleep-interval=S 與-f合用,表示在每次反復的間隔休眠S秒

今天突然想到之前有人問過我的一個問題,如何通過PHP實現linux中的命令tail -f,這里就來分析實現下。

這個想一想也挺簡單,通過一個循環檢測文件,看文件的大小是否有變化,如果有變化,輸出文件變化的部分,當然了這里面會有好多的細節,這里具體分析下。

如果初始文件太大或者改變內容太多

這個時候一下輸出好多內容可能看不清,因此我這里設置了一個閾值8192,當內容長度超過這個閾值的時候,只輸出最后面的8192個字節,這樣就不會出現大面積的刷新導致看不清的問題。

如何檢測文件大小的變化

這個問題是這個程序的核心,能不能成功,性能的好壞就靠這部分了。

我在這里的實現是下面這樣:

•打開文件句柄$fp,這里要注意,這里的文件句柄全程需中只打開一次關閉一次,因此要將他放在循環的外面。
•初始化當前文件大小file_size和file_size_new都為0。 •循環里面更新file_size_new文件大小,這里要注意,php中獲取文件大小之前一定要運行函數clearstatcache(),清除文件狀態緩存,否則獲取文件大小可能會有偏差。

•計算add_size = file_size_new - file_size,看文件大小是否有變化,如果有變化,將文件指針移動到指定位置,然后輸出新加的內容,更新file_size值為new_file_size。
•usleep(50000),睡眠1/20秒。

代碼實現

#!/usr/bin/env php <?phpif(2 != count($argv)){fwrite(STDERR,"調用格式錯誤!使用格式 ./tail filename".PHP_EOL); return 1;}$file_name = $argv[1];define("MAX_SHOW", 8192);$file_size = 0;$file_size_new = 0;$add_size = 0;$ignore_size = 0;$fp = fopen($file_name, "r");while(1){clearstatcache();$file_size_new = filesize($file_name);$add_size = $file_size_new - $file_size;if($add_size > 0){ if($add_size > MAX_SHOW){$ignore_size = $add_size - MAX_SHOW;$add_size = MAX_SHOW;fseek($fp, $file_size + $ignore_size);} fwrite(STDOUT,fread($fp, $add_size)); $file_size = $file_size_new;}usleep(50000);}fclose($fp);

代碼實現這里第一行的#!/usr/bin/env php 是告訴可執行文件,可執行文件php在系統PATH中查找,這樣的好處就是移植性好。

下面是結果

PHP實現linux命令tail -f

下文給大家介紹如何實現Linux下高亮關鍵字的tail -f功能

公司內部一哥們發布到郵件列表中的一個小tip,挺有意思,屬于程序員的“奇淫技巧”類吧,值得記錄一下。
如果你在linux下工作,那用tail -f跟蹤一個日志文件的輸出內容應該是家常便飯了。
但是,有時你更關心的是一些敏感字詞,希望能夠在動態跟蹤的同時,把這些字詞高亮出來,比如日志中的ERROR關鍵字。
那么,一種思路就是把你tail輸出的東西再做一次包裝處理,這個很符合linux管道處理的思想。以高亮Log中的ERROR為例,你可以這樣:

Shell代碼

tail -f xxx.log | perl -pe 's/(ERROR)//e[1;31m$1/e[0m/g' 

其中,xxx.log是你要跟蹤的文件。這里假設了你的Linux的PATH中有perl。perl在這里干的事情,就是通過命令行的方式進行動態的替換ERROR字符串的操作,替換過程中,主要使用了Linux的console_codes的語法結構。(具體關于console_codes的細節,可以通過man console_codes進行了解)這里,/e主要進行轉移說明。
如果你手頭有server log之類的日志,試試上面的命令,是不是把ERROR全部標紅了。
利用這個原理,你完全可以按照你所需要的顏色高亮你感興趣的輸出,具體的顏色說明,可以在man console_codes中查到。
另外,less本身也支持類似于tail -f的操作,就是在你用less打開一個文件之后,按住SHIFT+F鍵,這樣就直接進入follow的模式了。看上去跟tail -f效果是一致的。利用這點,你想達到高亮的tail -f的效果,就攏共分為以下3步了:

less xxx.log中/${key_work}的方式搜索你要高亮的關鍵字。(即使目前文件中沒有也沒關系)SHIFT+F,進入follow模式


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品免费久久久久影院| 亚洲欧洲在线视频| 77777少妇光屁股久久一区| 上原亚衣av一区二区三区| 亚洲aaaaaa| 68精品国产免费久久久久久婷婷| 超碰91人人草人人干| 欧美日韩成人在线观看| 亚洲欧美日本精品| 欧美日韩激情美女| 国产亚洲a∨片在线观看| 国产精品扒开腿做爽爽爽视频| 亚洲精品视频免费在线观看| 国产精品黄视频| 69国产精品成人在线播放| 国产精品嫩草视频| 精品视频在线播放| 国产精品久久久久久久久免费看| 亚洲日本欧美日韩高观看| 性欧美在线看片a免费观看| 国产精品网址在线| 日韩中文字幕在线看| 亚洲电影天堂av| 欧美一级淫片aaaaaaa视频| 91精品国产九九九久久久亚洲| 国产激情综合五月久久| 美女久久久久久久| 亚洲免费成人av电影| 热门国产精品亚洲第一区在线| 亚洲影视九九影院在线观看| 国产精品视频免费在线| 国产午夜精品免费一区二区三区| 欧美一区亚洲一区| 午夜精品久久久久久99热| 国产一区二区美女视频| 久久99热这里只有精品国产| 国产精品日本精品| 亚洲综合视频1区| 91欧美激情另类亚洲| 中文字幕少妇一区二区三区| 国产美女精品免费电影| 91久久久久久久| 亚洲的天堂在线中文字幕| 97超碰色婷婷| 亚洲人高潮女人毛茸茸| 成人h视频在线观看播放| 在线成人激情黄色| 国产v综合v亚洲欧美久久| 国产亚洲精品久久| 91亚洲精品在线观看| 中文字幕亚洲综合久久筱田步美| 国产精品96久久久久久又黄又硬| 亚洲欧美日韩第一区| 欧美乱大交做爰xxxⅹ性3| 懂色av影视一区二区三区| 热久久这里只有精品| 亚洲精品美女在线观看播放| 久久影视免费观看| 精品久久久久人成| 欧美激情a∨在线视频播放| 7777kkkk成人观看| 欧美日韩成人网| 成人a在线观看| 日产精品久久久一区二区福利| 欧美精品18videosex性欧美| 亚洲成人精品久久| 日本亚洲欧洲色α| 国产成人精品免高潮费视频| 久久久精品久久久| 亚洲精品久久久久久久久久久久久| 日韩国产欧美区| 免费99精品国产自在在线| 夜夜嗨av色一区二区不卡| 久久精品欧美视频| 亚洲精品视频网上网址在线观看| 亚洲综合在线中文字幕| 亚洲视频在线免费看| 亚洲精品www久久久| 国产视频亚洲精品| 欧美天天综合色影久久精品| 川上优av一区二区线观看| 欧美大片va欧美在线播放| 日韩成人在线观看| 8x海外华人永久免费日韩内陆视频| 国产精品欧美激情| 日韩高清电影好看的电视剧电影| 在线亚洲男人天堂| 91精品国产自产在线老师啪| 亚洲男子天堂网| 色哟哟亚洲精品一区二区| 欧美日本精品在线| 国产日韩在线视频| 亚洲3p在线观看| 日韩精品在线第一页| 久久久久久91香蕉国产| 亚洲国产精品成人一区二区| 国产一区二区三区在线播放免费观看| 国产一区二区激情| 亚洲视频在线观看视频| 亚洲视频在线视频| 日本精品在线视频| 色99之美女主播在线视频| 精品免费在线视频| 亚洲国产精品网站| 精品亚洲一区二区三区四区五区| 国产亚洲精品高潮| 91在线观看免费高清| 日韩成人性视频| 亚洲精选在线观看| 国产成人综合亚洲| 久久精品视频在线| 国产精品精品一区二区三区午夜版| 性欧美视频videos6一9| 欧美日韩亚洲精品一区二区三区| 国产最新精品视频| 亚洲日韩欧美视频| 亚洲欧美日韩一区在线| 欧美大成色www永久网站婷| 日韩精品在线观看网站| 九九热精品视频| 18一19gay欧美视频网站| 97激碰免费视频| 久久韩国免费视频| 久久中文久久字幕| 精品综合久久久久久97| 免费成人高清视频| 色老头一区二区三区| 国产日韩亚洲欧美| 欧美国产日韩二区| 91久久久久久久一区二区| 日本三级久久久| 国产欧美精品在线| 亚洲电影天堂av| 国产成+人+综合+亚洲欧美丁香花| 久久精视频免费在线久久完整在线看| 日韩中文字幕av| 日本精品视频在线| 欧美激情一区二区三级高清视频| 亚洲一区二区三区四区视频| 久久91亚洲精品中文字幕奶水| 欧美激情精品久久久久久蜜臀| 亚洲美女又黄又爽在线观看| 国内精品久久久久久中文字幕| 日韩一二三在线视频播| 91啪国产在线| 亚洲一区制服诱惑| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲一区二区三区在线免费观看| 日韩av日韩在线观看| 91av视频在线播放| 欧美成人精品h版在线观看| 国产精品久久不能| 欧美激情精品久久久久久久变态| 亚洲人成电影网站色www| 亚洲最新av在线网站| 欧美日韩国产页| 最近2019中文字幕第三页视频| 欧美一级淫片丝袜脚交| 亚洲欧美第一页| 国产亚洲激情在线| 成人欧美一区二区三区在线湿哒哒| 91wwwcom在线观看| 欧美与欧洲交xxxx免费观看| 精品国产91乱高清在线观看|