web-dev-qa-db-ja.com

Linuxでコマンドを自動的に繰り返す

Linuxのコマンドラインでn秒ごとにコマンドを繰り返すことは可能ですか。

たとえば、インポートを実行していて、実行しているとします。

ls -l

ファイルサイズを確認するために増加しています。これを自動的に繰り返すようにコマンドを入力したいのですが。

282
Marty Wallace

5秒ごとに見てください...

watch -n 5 ls -l

変更を視覚的に確認したい場合は、lsコマンドの前に--differencesを追加してください。

OSXのmanページによると、

--cumulativeオプションを使用すると、「スティッキー」が強調表示され、これまでに変更されたすべてのポジションが連続して表示されます。 -tまたは--no-titleオプションを指定すると、間隔、コマンド、および現在の時刻を画面上部に表示するヘッダーと、それに続く空白行がオフになります。

Linux/Unixのmanページは こちら にあります。

509
Rawkode
while true; do
    sleep 5
    ls -l
done
109

"watch"はBusyboxの秒の端数を許可しませんが、 "sleep"は許可します。それがあなたにとって重要なら、これを試してみてください。

while true; do ls -l; sleep .5; done
86
mikhail

sleepはすでに0を返します。そのため、私は使っています:

while sleep 3 ; do ls -l ; done

これはmikhailのソリューションよりも少し短いです。小さな欠点は、ターゲットコマンドを初めて実行する前にスリープすることです。

27

コマンドにパイプや引用符などの特殊文字が含まれている場合は、コマンドを引用符で埋め込む必要があります。たとえば、ls -l | grep "txt"を繰り返すには、watchコマンドは次のようになります。

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

18
jonathanzh

whileを使用すると、cronなしで定期的にコマンドを実行することが可能です。

コマンドとして:

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 &とタイプして実行してください。

13
Ranjithkumar T

時計はいいですが、画面をきれいにします。

watch -n 1 'ps aux | grep php'
7
Eduardo

「ドリフト」を避けたい場合、コマンドの所要時間に関係なくコマンドをN秒ごとに実行する必要があります(N秒未満と仮定)。これは、5秒ごとにコマンドを1回繰り返すというbashです。 2番目の精度(そしてそれが追いつかない場合は警告を表示します):

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

睡眠は1秒まで正確であるため、それはまだ少しドリフトするかもしれません。 dateコマンドをクリエイティブに使用することで、この精度を向上させることができます。

6
mcote

以下を実行してサイズのみをフィルタリングできます。あなたのファイルがsomefilenameと命名されたならば、あなたは以下をすることができます

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

たくさんのアイデアのひとつ。

4

特定の回数だけ何かをしたい場合は、いつでもこれを実行できます。

repeat 300 do my first command here && sleep 1.5
4
brightball

ドリフトをより簡単に最小化するには、次のようにします。

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

ループ構造を実行するためのbashの時間と実際に実行するためのsleepコマンドが原因で、まだわずかなドリフトがあるでしょう。

ヒント: ':'は0になります。つまりtrueです。

1
math

簡潔なソリューション。これは、コマンドが失敗するまで繰り返し実行したい場合に特に役立ち、すべての出力を表示できます。

while ls -l; do
    sleep 5
done
0
arsdragonfly
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
0
HeadAndTail