Repeat command automatically in Linux

前端 未结 13 1628
滥情空心
滥情空心 2020-12-04 04:54

Is it possible in Linux command line to have a command repeat every n seconds?

Say, I have an import running, and I am doing

ls -l


        
相关标签:
13条回答
  • 2020-12-04 05:03

    If you want to do something a specific number of times you can always do this:

    repeat 300 do my first command here && sleep 1.5
    
    0 讨论(0)
  • 2020-12-04 05:04

    Running commands periodically without cron is possible when we go with while.

    As a command:

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

    Example:

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

    Do not forget the last & as it will put your loop in the background. But you need to find the process id with command "ps -ef | grep your_script" then you need to kill it. So kindly add the '&' when you running the script.

    # ./while_check.sh &
    

    Here is the same loop as a script. Create file "while_check.sh" and put this in it:

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

    Then run it by typing bash ./while_check.sh &

    0 讨论(0)
  • If you want to avoid "drifting", meaning you want the command to execute every N seconds regardless of how long the command takes (assuming it takes less than N seconds), here's some bash that will repeat a command every 5 seconds with one-second accuracy (and will print out a warning if it can't keep up):

    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
    

    It may still drift a little since the sleep is only accurate to one second. You could improve this accuracy by creative use of the date command.

    0 讨论(0)
  • 2020-12-04 05:05

    If the command contains some special characters such as pipes and quotes, the command needs to be padded with quotes. For example, to repeat ls -l | grep "txt", the watch command should be:

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

    0 讨论(0)
  • 2020-12-04 05:12

    To minimize drift more easily, use:

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

    there will still be a tiny amount of drift due to bash's time to run the loop structure and the sleep command to actually execute.

    hint: ':' evals to 0 ie true.

    0 讨论(0)
  • 2020-12-04 05:18
    watch -n 5 'ls -l 
    

    Will Runls -l command after every 5s

    Output :-

    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 讨论(0)
提交回复
热议问题