有時候,您可能需要反復執行命令或程序來監視系統的各個方面,比如正在運行的進程、磁盤空間使用情況或用戶登錄情況。linux中的watch命令可以讓您自動執行這些任務,而無需手動一遍又一遍地運行它們。
使用watch命令,您可以實時監視系統活動,比如用戶登錄、網絡狀態、內存和CPU使用情況、磁盤空間等。下面讓我們看看如何在Linux中使用watch命令。
什么是watch命令?watch命令在Linux中以固定時間間隔反復運行指定的命令或程序,并在終端中顯示其輸出。這使您能夠實時觀察輸出的變化。它會在每個時間間隔刷新輸出,覆蓋上一個輸出。默認情況下,該命令每兩秒重復一次,直到您使用Ctrl + C手動停止它。
watch命令的語法
watch命令的語法如下:
watch?選項?
有各種可用于watch命令的命令行選項。如果您運行watch命令而沒有任何選項,它將每隔兩秒運行一次指定的命令。例如,以下命令將顯示ls命令的輸出:
watch?ls?-l?~/
“
輸出將顯示目錄列表中的更改,如果創建了文件、刪除了文件或文件大小發生變化,它將每兩秒刷新一次輸出。
使用watch命令每隔X秒運行一個命令
您可以更改watch命令的更新間隔。這意味著您可以告訴watch命令在重復命令之前等待X秒。要更改更新間隔,請使用-n選項,后面跟隨以秒為單位的時間間隔。
watch?-n
“
例如,要每隔5秒運行一次命令,請運行:
watch?-n?5?command>
“
突出顯示更新之間的變化
watch命令會在每次刷新時覆蓋其輸出。使用-d選項,您還可以突出顯示先前輸出和更新后輸出之間的變化。
watch?-d
“
隱藏watch命令輸出中的標題
默認情況下,watch命令在每個輸出的頂部顯示一個標題,其中包含更新間隔、命令名稱以及系統的當前日期和時間。您可以使用-t選項從輸出中刪除標題:
watch?-t?command>
“
在錯誤時播放蜂鳴聲
當Linux進程完成運行時,它會返回一個退出代碼。按照慣例,成功時該值為0,非零表示錯誤。watch命令的-b選項會在命令返回非零退出代碼時播放蜂鳴聲。
假設您想要監視sshd.service,并在服務停止時收到通知,您可以使用:
watch?-b?sudo?systemctl?status?sshd.service
“
該命令將在服務停止時發出蜂鳴聲。當服務恢復運行時,蜂鳴聲將停止。要使用此功能,您必須在系統上安裝了beep軟件包。
在輸出更改時退出watch命令
您還可以告訴watch命令在命令的輸出更改時停止運行并退出。您可以使用-g選項來實現這一點。在等待輸出中的某些變化時,此選項非常有用。
一旦輸出發生變化,watch命令將停止。您可以將此用法與echo命令結合使用,以在屏幕上顯示消息。
例如,考慮一個場景,您正在等待一個文件出現在您的目錄中。以下命令將監視指定文件的目錄。一旦出現,watch命令將停止運行,并且終端上將顯示消息”file arrived“。
watch?-g?"ls?-l?|?grep?filename"?&&?echo?"file?arrived"
“
另一個有用的示例是在特定用戶登錄到系統時進行通知:
watch?-g?"who?|?grep?username"?&&?echo?"username?logged?in"
“
此命令將監視who命令的輸出,該命令列出已登錄的用戶。一旦用戶登錄,watch命令將停止并在終端上顯示消息。
類似地,您可以告訴watch命令在文件中進行更改時停止服務。請注意,在使用一系列命令的管道鏈時,您需要將整個命令括在引號內。
監視Linux系統中的活動
如果您發現自己反復執行相同的流程,請考慮使用watch命令來自動化它。這可以使您免于頻繁鍵入命令以查看發生了什么變化。
您還可以將watch命令與其他Linux命令一起使用,以監視系統資源和活動,并跟蹤文件或目錄中的更改。