2012-11-27 65 views
227

是否可能在Linux命令行中每n秒重複一次命令。在Linux中自動重複命令

例如,說我有一個導入運行和我做

ls -l 

檢查文件大小增加。我想有一個命令讓這個自動重複。

回答

417

關注每5秒......

watch -n 5 ls -l

如果你希望有變化的視覺確認,追加前ls命令--differences

按照OSX手冊頁,這裏還有

的--cumulative選項使得突出的「粘性」,即呈現曾經更改的所有位置的 運行顯示。 -t 或-no-title選項會關閉顯示時間間隔的標題, 命令以及顯示屏頂部的當前時間,以及空白行後面的 。

的Linux/Unix手冊頁,可以發現here

+2

尼斯 - 皮蒂它不追加結果到命令行 –

+1

添加選項回答,允許變化的突出 – Rawkode

+0

有沒有辦法通過某種通知來刷新? –

90
while true; do 
    sleep 5 
    ls -l 
done 
+7

'手錶'也有清除屏幕的不幸副作用,所以有時循環是有用的。要使用哪個取決於所需的輸出格式。 –

+0

我通常會做循環,但在一行上做。但手錶看起來好多了,但我必須切換到這一點。 –

+0

它必須在命令行 –

3

您可以運行下面的,只有過濾大小。如果您的文件名爲somefilename你可以做以下

while :; do ls -lh | awk '/some*/{print $5}'; sleep 5; done

之一許多想法

`

68

「看」不允許在Busybox的幾分之一秒,而「睡眠「確實。如果你想要做的事的特定次數,你總是可以做到這一點

while true; do ls -l; sleep .5; done 
+0

這對於如果需要將輸出管道輸出到某處(如bar aint遞歸)很有用 –

+1

謝謝。這適用於沒有watch命令的busybox控制檯。我用它來衡量我係統的正常運行時間:雖然是正確的;正常運行時間;睡1;完成 –

+0

在老版本的busybox上的FWIW(v1.11.2)我堅持使用,沒有手錶,睡眠不支持分數。但是,您可以成功使用睡眠1。 – moodboom

3

repeat 300 do my first command here && sleep 1.5 
+7

這適用於'csh'而不是'bash'或'sh'。 {1..300}中bash do'for x的 –

+5

;做'命令'|| break; sleep 1.5;完成' – Jasen

10

運行命令定期不cron是可能的,當我們去如果這對你很重要,試試這個與while

爲命令:

while true ; do command ; sleep 100 ; done & 
[ ex: # while true; do echo `date` ; sleep 2 ; done & ] 

例子:

while true 
do echo "Hello World" 
sleep 100 
done & 

不要忘記在最後&,因爲它會把你的循環的背景。但是你需要用命令「ps -ef | grep your_script」找到進程ID,那麼你需要殺死它。所以請在運行腳本時添加'&'。

# ./while_check.sh & 

以下是與腳本相同的循環。創建文件「while_check。SH」,並把這個在它:

#!/bin/bash 
while true; do 
    echo "Hello World" # Substitute this line for whatever command you want. 
    sleep 100 
done 

然後鍵入bash ./while_check.sh &

+0

不是最後一個&,與沒有&最後寫入命令一樣,而是用&:bash ./while_check.sh&?調用腳本。 – ransh

+0

@ransh:我們可以運行腳本./while_check.sh&我們可以立即獲取進程ID,當我們添加&in腳本並且只運行沒有&的腳本時,我們沒有得到任何進程ID,但它會運行後臺,當我編輯我們需要ps命令來獲取進程ID,如果我們需要停止腳本。 –

+0

如果您願意,可以在每個後臺進程啓動後將腳本修改爲'echo $!' - 這是在後臺啓動的最後一個子進程的PID。 –

4

如果你想避免運行它‘漂流’,意思是要執行每N秒的命令,無論多長的命令需要(假設它只需不到N秒),這裏的一些慶典,將重複執行命令,每5秒一秒鐘的精度(並打印出警告,如果不能跟上):

PERIOD=5 

while [ 1 ] 
do 
    let lastup=`date +%s` 
    # do command 
    let diff=`date +%s`-$lastup 
    if [ "$diff" -lt "$PERIOD" ] 
    then 
     sleep $(($PERIOD-$diff)) 
    elif [ "$diff" -gt "$PERIOD" ] 
    then 
     echo "Command took longer than iteration period of $PERIOD seconds!" 
    fi 
done 

由於睡眠只能精確到一次,它可能仍會有一點漂移第二。您可以通過創造性地使用date命令來提高此準確性。

+0

謝謝..但我有2個問題,1-在哪裏可以保存代碼?換句話說,我應該在哪個路徑中放置包含該腳本的文件?這使它自動運行?! 2如何在(#做命令)中包含php文件而不是在那裏輸入我的所有代碼? – Hossam

11

如果該命令包含一些特殊字符(如管道和引號),則該命令需要用引號填充。例如,重複ls -l | grep "txt",手錶命令應該是:

watch -n 5 'ls -l | grep "txt"'

+0

我在看管道傳送表達時無法正常工作,但在閱讀完本文後,我可以修復它:) –

5

手錶是不錯,但清潔屏幕。

watch -n 1 'ps aux | grep php' 
10

sleep已經返回0。因此,我正在使用

while sleep 3 ; do ls -l ; done 

這比mikhail的解決方案稍微短一點。

-1

爲了更容易地減小漂移,使用方法:

while :; do sleep 1m & some-command; wait; done 

仍然會有漂移很少量的,由於bash的時間來運行循環結構和睡眠指令實際執行。

提示:':'evals to 0 ie ie true。

0
watch -n 5 'ls -l 

將每5秒後運行ls -l命令

輸出: -

Every 5.0s: ls -l                          Fri Nov 17 16:28:25 2017 

total 169548 
-rw-rw-r-- 1 sachin sachin  4292 Oct 18 12:16 About_us_Admission.doc 
-rw-rw-r-- 1 sachin sachin  865 Oct 13 15:26 About_us_At_glance.doc 
-rw-rw-r-- 1 sachin sachin  1816 Oct 13 16:11 About_us_Principle.doc 
-rw-rw-r-- 1 sachin sachin  1775 Oct 13 15:59 About_us_Vission_mission.doc 
-rw-rw-r-- 1 sachin sachin  1970 Oct 13 16:41 Academic_Middle_school.doc 
-rw-rw-r-- 1 sachin sachin  772 Oct 16 16:07 academics_High_School.doc 
-rw-rw-r-- 1 sachin sachin  648 Oct 16 13:34 academics_pre_primary.doc 
-rw-rw-r-- 1 sachin sachin  708 Oct 16 13:39 academics_primary.doc 
-rwxrwxr-x 1 sachin sachin  8816 Nov 1 12:10 a.out 
-rw-rw-r-- 1 sachin sachin 23956 Oct 23 18:14 Ass1.c++ 
-rw-rw-r-- 1 sachin sachin  342 Oct 23 22:13 Ass2.doc 
drwxrwxr-x 2 sachin sachin  4096 Oct 19 10:45 Backtracking 
drwxrwxr-x 3 sachin sachin  4096 Sep 23 20:09 BeautifulSoup 
drwxrwxr-x 2 sachin sachin  4096 Nov 2 00:18 CL_1 
drwxrwxr-x 2 sachin sachin  4096 Oct 23 20:16 Code 
drwxr-xr-x 2 sachin sachin  4096 Nov 15 12:05 Desktop 
-rw-rw-r-- 1 sachin sachin  0 Oct 13 23:12 doc 
drwxr-xr-x 4 sachin sachin  4096 Nov 6 21:18 Documents 
drwxr-xr-x 27 sachin sachin 12288 Nov 17 13:23 Downloads 
-rw-r--r-- 1 sachin sachin  8980 Sep 19 23:58 examples.desktop