有時(shí),您需要反復(fù)運(yùn)行命令或程序來(lái)監(jiān)視系統(tǒng)的各個(gè)方面,如正在運(yùn)行的進(jìn)程、磁盤(pán)空間使用情況或用戶登錄情況。
Linux中的watch命令使您能夠自動(dòng)執(zhí)行這些任務(wù),而無(wú)需手動(dòng)一遍又一遍地運(yùn)行它們。
使用此命令,您可以實(shí)時(shí)監(jiān)視系統(tǒng)活動(dòng),如用戶登錄、網(wǎng)絡(luò)狀態(tài)、內(nèi)存和CPU使用情況、磁盤(pán)空間等。
讓我們看看如何在Linux中使用watch命令。
什么是watch命令?
watch命令在Linux中反復(fù)運(yùn)行指定的命令或程序,以固定時(shí)間間隔,并在終端中顯示其輸出。這使您能夠?qū)崟r(shí)觀察輸出的變化。它會(huì)在每個(gè)時(shí)間間隔刷新輸出,覆蓋上一個(gè)輸出。默認(rèn)情況下,該命令每?jī)擅胫貜?fù)一次,直到您使用Ctrl + C手動(dòng)停止它。
watch命令的語(yǔ)法
watch命令的語(yǔ)法如下:
watch 選項(xiàng) <命令>有各種可用于watch命令的命令行選項(xiàng)。如果您運(yùn)行watch命令而沒(méi)有任何選項(xiàng),它將每隔兩秒運(yùn)行一次指定的命令。例如,以下命令將顯示ls命令的輸出:
watch ls -l ~/
輸出將顯示目錄列表中的更改,如果創(chuàng)建了文件、刪除了文件或文件大小發(fā)生變化,它將每?jī)擅胨⑿乱淮屋敵觥?
使用watch命令每隔X秒運(yùn)行一個(gè)命令
您可以更改watch命令的更新間隔。這意味著您可以告訴watch命令在重復(fù)命令之前等待X秒。要更改更新間隔,請(qǐng)使用-n選項(xiàng),后面跟隨以秒為單位的時(shí)間間隔。
watch -n例如,要每隔5秒運(yùn)行一次命令,請(qǐng)運(yùn)行:
watch -n 5
突出顯示更新之間的變化
watch命令會(huì)在每次刷新時(shí)覆蓋其輸出。使用-d選項(xiàng),您還可以突出顯示先前輸出和更新后輸出之間的變化。
watch -d
隱藏watch命令輸出中的標(biāo)題
默認(rèn)情況下,watch命令在每個(gè)輸出的頂部顯示一個(gè)標(biāo)題,其中包含更新間隔、命令名稱以及系統(tǒng)的當(dāng)前日期和時(shí)間。您可以使用-t選項(xiàng)從輸出中刪除標(biāo)題:
watch -t
在錯(cuò)誤時(shí)播放蜂鳴聲
當(dāng)Linux進(jìn)程完成運(yùn)行時(shí),它會(huì)返回一個(gè)退出代碼。按照慣例,成功時(shí)該值為0,非零表示錯(cuò)誤。watch命令的-b選項(xiàng)會(huì)在命令返回非零退出代碼時(shí)播放蜂鳴聲。 假設(shè)您想要監(jiān)視sshd.service,并在服務(wù)停止時(shí)收到通知,您可以使用:
watch -b sudo systemctl status sshd.service該命令將在服務(wù)停止時(shí)發(fā)出蜂鳴聲。當(dāng)服務(wù)恢復(fù)運(yùn)行時(shí),蜂鳴聲將停止。要使用此功能,您必須在系統(tǒng)上安裝了beep軟件包。
在輸出更改時(shí)退出watch命令
您還可以告訴watch命令在命令的輸出更改時(shí)停止運(yùn)行并退出。您可以使用-g選項(xiàng)來(lái)實(shí)現(xiàn)這一點(diǎn)。在等待輸出中的某些變化時(shí),此選項(xiàng)非常有用。
一旦輸出發(fā)生變化,watch命令將停止。您可以將此用法與echo命令結(jié)合使用,以在屏幕上顯示消息。
例如,考慮一個(gè)場(chǎng)景,您正在等待一個(gè)文件出現(xiàn)在您的目錄中。以下命令將監(jiān)視指定文件的目錄。
一旦出現(xiàn),watch命令將停止運(yùn)行,并且終端上將顯示消息"file arrived"。
watch -g "ls -l | grep filename" && echo "file arrived"
另一個(gè)有用的示例是在特定用戶登錄到系統(tǒng)時(shí)進(jìn)行通知:
watch -g "who | grep username" && echo "username logged in"此命令將監(jiān)視who命令的輸出,該命令列出已登錄的用戶。一旦用戶登錄,watch命令將停止并在終端上顯示消息。
類似地,您可以告訴watch命令在文件中進(jìn)行更改時(shí)停止服務(wù)。請(qǐng)注意,在使用一系列命令的管道鏈時(shí),您需要將整個(gè)命令括在引號(hào)內(nèi)。
監(jiān)視Linux系統(tǒng)中的活動(dòng)
如果您發(fā)現(xiàn)自己反復(fù)執(zhí)行相同的流程,請(qǐng)考慮使用watch命令來(lái)自動(dòng)化它。這可以使您免于頻繁鍵入命令以查看發(fā)生了什么變化。
您還可以將watch命令與其他Linux命令一起使用,以監(jiān)視系統(tǒng)資源和活動(dòng),并跟蹤文件或目錄中的更改。
審核編輯:劉清
-
Linux
+關(guān)注
關(guān)注
87文章
11207瀏覽量
208712 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
590瀏覽量
27311
原文標(biāo)題:如何使用 Linux 上的 watch 命令定期運(yùn)行程序
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論