十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
tee用于把命令結(jié)果打印在屏幕上并同時保存到文件。
為鳳翔等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及鳳翔網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、網(wǎng)站制作、鳳翔網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
tee用法
描述:從標(biāo)準(zhǔn)輸入中讀取并同時寫入到標(biāo)準(zhǔn)輸出和指定的文件上
選項:
-a,--append:不覆蓋,而是追加輸出到指定的文件中
-i,--ignore-interrupts:忽略中斷信息
若指定的輸出文件為'-',則再次輸出到標(biāo)準(zhǔn)輸出上
實例:
tee Example.txt #將標(biāo)準(zhǔn)輸入中輸入的內(nèi)容同時輸出到Example.txt和標(biāo)準(zhǔn)輸出上
實踐:
例如 ifconfig | tee ifconfig.log
查看iconfig.log
注:
標(biāo)準(zhǔn)輸入一般有鍵盤和其它文件,標(biāo)準(zhǔn)輸出有屏幕等。tee只能進(jìn)行標(biāo)準(zhǔn)輸入的輸出,對于錯誤輸入是不能輸出的。
在調(diào)試腳本時,想要每個命令的執(zhí)行過程都輸出到屏幕或者文件中,以便后續(xù)查看,如何操作呢?首先腳本第一行要寫為“#!/bin/bash -x”,這樣會把每個命令的執(zhí)行記錄都輸出到屏幕,若還要輸出到指定文件,要用到tee,但tee只能進(jìn)行標(biāo)準(zhǔn)輸入,對于標(biāo)準(zhǔn)輸入和錯誤輸入要用到下式:
./filename.sh 21 | tee output.log? ?或者直接 bash -x ./filename.sh?21 | tee output.log
今天調(diào)試一個bash,要把屏幕的輸出結(jié)果存到log文件中,開始輸入$bash -x ./test.sh log 結(jié)果發(fā)現(xiàn)log里只存放了程序的執(zhí)行結(jié)果,后來在cu的一篇帖子里?tid=264380highlight=bash得到了啟發(fā),bash -x的調(diào)試信息是輸出到2號流中的,所以解決方案為bash -x ./test.sh 21 | tee log 想起以前要存放執(zhí)行make的結(jié)果時也遇到類似問題,總結(jié)如下:
1、管道符的“I”的作用只是把前一個程序的標(biāo)準(zhǔn)輸出流(stdout)的數(shù)據(jù)作為后一個程序的標(biāo)準(zhǔn)輸入流stdin的數(shù)據(jù),如不進(jìn)行重定向,則其他輸出流的信息是無法傳給后面的程序的
2、屏幕得到的信息不一定是從程序的標(biāo)準(zhǔn)輸出來的,也包括標(biāo)準(zhǔn)錯誤輸出流stderr中的信息
3、有些程序(特別是象bash、make這樣執(zhí)行了其他程序的程序)的設(shè)計者為了省事,把一些正常情況的信息也放在stderr中輸出(即使程序本身并無錯誤),而stdout用來輸出被調(diào)用程序的執(zhí)行時信息,造成了用戶的誤解簡單編寫了一下腳本,通過ssh登陸在命令行下運行正常,可是將腳本添加到crontab中就不正常。想記錄一下輸出信息,分析一下錯誤原因。將腳本通過使用info.log 重定向輸出,結(jié)果發(fā)現(xiàn)一些在命令行下可以看到的文本信息沒有記錄到info.log文件中,研究了一下,那些輸出估計是輸出到了標(biāo)準(zhǔn)錯誤上。
研究了一下通常添加命令后面幾個輸出含義
■ /dev/null 輸出到空設(shè)備,表示丟掉輸出信息。
■ 21將輸出到標(biāo)準(zhǔn)錯誤的信息輸出到標(biāo)準(zhǔn)輸出設(shè)備(通常是屏幕)有3個默認(rèn)的i/o,
■ 0是標(biāo)準(zhǔn)輸入,一般是鍵盤
■ 1是標(biāo)準(zhǔn)輸出,一般是屏幕
■ 2是標(biāo)準(zhǔn)錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了
linuxptp中輸出的打印主要由 clock_stats_display 完成。
該函數(shù)的執(zhí)行頻率為每2^(-logSyncItv)次同步執(zhí)行一次,相當(dāng)于1秒1次。
Linuxptp中計算freq adjust默認(rèn)使用的函數(shù)是 pi_sample 。
它接收這幾個參數(shù):
其輸出值的單位為ppb(parts per billion,即10^-9)。
比如,log中freq的值為 -50000,意思就是將slave的freq調(diào)整了-0.005%。
freq adjust主要的計算思路是(offset2 - offset1) / (local_ts2 - local_ts1)。
其他涉及到PID控制的部分就不多解釋了,保持文章的簡單易讀。
你試試shell里加入下面這段命令代碼
log=/tmp/log.txt
echo $log
啟動之后,會在jar所在目錄生成一個nuhup.log日志文件,記錄控制臺的日志輸出。
備注:主要看符號兩邊: "" 對應(yīng)輸出什么和輸出到哪里;
輸出分為標(biāo)準(zhǔn)輸出和錯誤輸出,標(biāo)準(zhǔn)輸出就是全輸出,輸出控制臺信息;錯誤輸出只是輸出錯誤日志信息;
因此上面我們執(zhí)行的 ***.jar nohup.log 21命令,可以拆解成 nohup.log 和 2 1兩個輸出,只看符號“”左邊輸出部分,分別代表默認(rèn)標(biāo)準(zhǔn)輸出到一個地方,然后錯誤日志輸出到另一個地方,咱們后面再講輸出到什么地方。
輸出到哪,分為輸出到指定路徑日志文件和重定向位置。
1.指定路徑:如下: /data/work/log.log 這樣便是指定輸出到路徑/data/work/log.log文件。
Linux上有一個特例路徑/dev/null ,這路徑就好像永久刪除的回收站,當(dāng)我們不需要輸出任何信息時,就可以將輸出指向/dev/null,那就不會有任何輸出文件。
2.至于重定向,就是將文件重定向到一個地址,如下:
1 重定向到標(biāo)準(zhǔn)輸出的地址,啥意思,就是輸出到已指定的標(biāo)準(zhǔn)輸出的地址。
2 重定向到錯誤輸出的地址,就是輸出到已指定的錯誤輸出的地址。
比如nohup.log 21 ,意思是前面默認(rèn)標(biāo)準(zhǔn)輸出到了nohup.log日志下,后面錯誤輸出也指向標(biāo)準(zhǔn)輸出的地址,也即nohup.log日志下。
命令后面加的 ,可讓命令在后臺執(zhí)行,否則關(guān)閉會話會停止程序。
(1)nohup java -jar ***.jar /data/log.log 2/data/err.log
解釋:標(biāo)準(zhǔn)日志輸出到/data/log.log文件,錯誤日志輸出到/data/err.log文件。
(2)nohup java -jar ***.jar /data/log.log 21
解釋:標(biāo)準(zhǔn)日志輸出到/data/log.log文件,錯誤日志重定向也輸出到/data/log.log文件。
(3)nohup java -jar ***.jar /dev/null 2/data/err.log
解釋:標(biāo)準(zhǔn)日志輸出到/dev/null,也就是不輸出標(biāo)準(zhǔn)日志,錯誤日志輸出到/data/err.log文件。
一般采用上面(3)只輸出錯誤日志就可以了,有需要的按照(1)進(jìn)行輸出。