Linux выполнить команду несколько раз

Repeat command automatically in Linux

to check if the file size is increasing. I would like to have a command to have this repeat automatically.

14 Answers 14

If you wish to have visual confirmation of changes, append —differences prior to the ls command.

According to the OSX man page, there’s also

The —cumulative option makes highlighting «sticky», presenting a running display of all positions that have ever changed. The -t or —no-title option turns off the header showing the interval, command, and current time at the top of the display, as well as the following blank line.

Linux/Unix man page can be found here

Note that you need to escape special characters that are part of the command that you are watching, for example: watch mysql dbname -e \»show processlist\;\»

watch can also be used with multiple commands, quoted and semicolon-separated, like this: watch -n 5 «ls -l; echo; ps -aux» . For discussion see askubuntu.com/q/595927/846840

while true; do sleep 5 ls -l done 

watch also has the unfortunate side effect of clearing the screen, so sometimes the loop is useful. Which to use depends on the desired format of the output.

I’ll usually do the loop, but do it on one line. Watch looks much better, though, I’ll have to switch to that.

It’s worth noting you can use —differences to have them highlighted (If you’re concerned about the repainting of the terminal)

This is better than watch . Watch does not work for example when you want to generated random number in each invocation, e.g. watch -n 1 echo $ . The random will only get called once.

«watch» does not allow fractions of a second in Busybox, while «sleep» does. If that matters to you, try this:

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

Thanks. This works for busybox consoles that do not have the watch command. I used it to measure the uptime of my system: while true; do uptime; sleep 1; done

FWIW on the old version of busybox (v1.11.2) I’m stuck with, there is no watch, and sleep doesn’t support fractions. But you can use sleep 1 successfully.

sleep already returns 0 . As such, I’m using:

while sleep 3 ; do ls -l ; done 

This is a tiny bit shorter than mikhail’s solution. A minor drawback is that it sleeps before running the target command for the first time.

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:

I was having trouble getting watch to work properly on a piped expression, but after reading this I could fix it 🙂

Running commands periodically without cron is possible when we go with 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 & 

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.

Читайте также:  Arch linux tap to click

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 &

Isn’t the last & , same as writing the command without & in the end , but calling the script with & : bash ./while_check.sh & ?

@ransh : We can run the script ./while_check.sh & so we can get the process id immediately, when we add the & in script and just run the script without & , we didn’t get any process id but it will run background, as i edited we need ps command to get the process id if we need to stop the script.

If you wish, you can modify the script to echo $! after each background process is launched — that’s the PID of the last child process launched in the background.

echo `date` is just a poor and slightly buggy way to write just date . (The bug has to do with the lack of quoting of the argument to echo .) See also useless use of echo .

watch is good but will clean the screen.

watch -n 1 'ps aux | grep php' 

If you want to do something a specific number of times in zsh :

repeat 300 (command1; command2) && sleep 1.5 

Note that repeat is not a bash command.

Your answer is a lot downvoted. Reason seem to be: This is not bash!! Please explain under which environment did this work!

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.

Thanks.. but I have 2 questions, 1- where to save that code? in other word, In which path should I put the file containing that script? that makes it run automatically?! 2- how to include php file in ( # do command ) instead of typing all my code there?

I suggest you research a bit on bash scripts so you can understand the basics of how to run them and so forth.

You can run the following and filter the size only. If your file was called somefilename you can do the following

while :; do ls -lh | awk ‘/some*/’; sleep 5; done

A concise solution, which is particularly useful if you want to run the command repeatedly until it fails, and lets you see all output.

while ls -l; do sleep 5 done 

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.

Читайте также:  Google chrome все версии linux

Will Run ls -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 

Источник

Как выполнить одну и ту же команду несколько раз в Linux

При программировании вы можете столкнуться с ситуацией, когда вам нужно выполнить одну и ту же задачу несколько раз. Простое решение — повторить процесс вручную столько раз, сколько потребуется; однако это непродуктивно. Вот почему в программирование было введено понятие циклов. Основная цель цикла — повторить задачу несколько раз, в зависимости от значения, предоставленного для итератора, и условия завершения цикла. Циклы позволяют программистам избежать хлопот, связанных с повторением процессов вручную.

Предположим, есть команда, которую вы хотите запустить несколько раз. Есть несколько важных причин, по которым вам может потребоваться запускать команду несколько раз, поэтому вы хотите быть уверены, что определенная команда выдает правильный результат каждый раз, когда она выполняется. Чем чаще вы запускаете команду вручную, тем больше уверенности вы получаете каждый раз, когда запускаете команду.

Но как это сделать программно? Что ж, есть несколько методов, которые можно использовать для многократного выполнения одной и той же команды, а также для проверки вывода повторяющейся команды. В этой статье показано, как создать повторяемую команду, используя Linux Mint 20 в качестве операционной системы хоста.

Способы повторения команд в Linux Mint 20

В следующих разделах показаны два метода, которые можно использовать для выполнения одной и той же команды несколько раз с помощью сценария Bash в Linux Mint 20.

Метод 1: повторение команды с помощью цикла for в Bash

Первый метод многократного выполнения одной и той же команды с использованием сценария Bash в Linux Mint 20 реализован с использованием цикла «for». Пример сценария показан на следующем изображении. Вы можете скопировать этот скрипт в любой файл Bash по вашему выбору.

В этом скрипте мы создали простой цикл «for», который выполняет итерацию по списку, содержащему элементы от 1 до 5, что означает, что цикл «for» будет иметь в общей сложности пять итераций. В этих пяти итерациях желаемая команда будет выполняться на каждой итерации или пять раз.

Читайте также:  Мини пк для линукс сервера

Здесь мы указали, что команда «date» должна выполняться «5» раз. Эта команда отображает текущую системную дату и время в терминале. Вы можете использовать любую другую команду по вашему выбору вместо команды «дата».

Мы также хотели, чтобы наш вывод отображался через каждую «1» секунду. Для этой цели мы использовали команду «sleep» с интервалом сна «1», хотя вы можете увеличить интервал сна в соответствии с вашими предпочтениями. Вы даже можете увеличить или уменьшить количество итераций цикла for, в зависимости от того, сколько раз вы хотите выполнить команду.

Выполните этот сценарий Bash с помощью следующей команды:

Результат вышеупомянутого сценария Bash показан на следующем изображении. Выходные данные содержат текущую системную дату и время с разными интервалами «5», что означает, что наша команда «date» была успешно выполнена за указанное количество итераций.

Метод 2: повторение команды с помощью цикла while в Bash

Второй метод многократного повторения команды с использованием сценария Bash в Linux Mint 20 реализован с использованием цикла «while». Пример сценария показан на следующем изображении. Вы можете скопировать этот скрипт в любой файл Bash по вашему выбору.

В этом скрипте переменная «i» инициализируется значением «0».»Эта переменная будет действовать как итератор для цикла« while ». Тогда условием итерации цикла «while» является то, что значение переменной «i» меньше «5.В этом цикле у нас есть команда «date», которая будет служить той же цели, что и команда, использованная в методе 1.

За этой командой следует команда «сна». Эта команда печатает вывод через определенный интервал, который в данном случае составляет «1 секунду». Наконец, мы увеличим значение итератора «i», используя приращающую нотацию «+1».

Результат нашего сценария Bash показан на следующем изображении. Этот вывод содержит текущую системную дату и время с пятью разными интервалами, что означает, что команда «date» была успешно выполнена за указанное количество итераций. На этот раз мы достигли этой цели, реализовав цикл while вместо цикла for.

Заключение

Сегодня вы узнали, что вместо того, чтобы вручную запускать команду несколько раз, вы можете написать сценарий Bash, чтобы упростить эту задачу. Используя циклы «for» или «while» в сценарии Bash, вы можете легко добиться функциональности многократного выполнения команды. В этой статье показано, как повторять команды, используя оба метода, при многократном выполнении команды «date». Мы также использовали команду «сна» в обоих наших примерах сценария, чтобы было легче визуализировать эффект повторяющейся команды «дата», поскольку значение «секунд» будет меняться каждый раз при выполнении этой команды.

Таким же образом вы можете запускать любую команду по вашему выбору несколько раз, используя любой из сценариев Bash, которыми мы поделились с вами сегодня, при работе в Linux Mint 20. Я надеюсь, что это руководство поможет вам выполнить одну и ту же команду несколько раз в Linux.

5 лучших аркад для Linux

Игры

В настоящее время компьютеры — это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте .

Битва за Веснот 1.13.6 Выпущена разработка

Игры

Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско.

Как установить League Of Legends на Ubuntu 14.04

Игры

Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi.

Свежие статьи об операционных системах. Множество интересных гайдов и полезных советов. Почувствуйте себя своим в мире современных технологий

Источник

Оцените статью
Adblock
detector