Millisecond sleep in linux

Как использовать команду Linux Sleep для приостановки сценария Bash

How to Use the Linux Sleep Command to Pause a Bash Script

В этом руководстве мы покажем вам, как использовать команду Linux sleep .

sleep утилита командной строки, которая позволяет приостановить вызывающий процесс на указанное время Другими словами, sleep команда приостанавливает выполнение следующей команды на заданное количество секунд.

Команда sleep полезна, когда используется в сценарии оболочки bash, например, при повторной попытке сбойной операции или внутри цикла.

Как использовать sleep команду

Синтаксис sleep команды следующий:

SUFFIX Может быть одним из следующих:

  • s — секунды (по умолчанию)
  • m — минуты
  • h — часов
  • d — дни

Если суффикс не указан, по умолчанию используется значение секунд.

Когда задано два или более аргументов, общее количество времени эквивалентно сумме их значений.

Вот несколько простых примеров, демонстрирующих, как использовать sleep команду:

Спать в течение 0,5 секунд:

Сон в течение 2 минут и 30 секунд:

Примеры скриптов на Bash

В этом разделе мы рассмотрим несколько основных сценариев оболочки, чтобы увидеть, как используется sleep команда.

Когда вы запустите скрипт, он напечатает текущее время в HH:MM:SS формате. Затем sleep команда приостанавливает выполнение сценария на 5 секунд. По истечении указанного периода времени последняя строка скрипта печатает текущее время.

Вывод будет выглядеть примерно так:

Давайте посмотрим на более сложный пример:

Скрипт проверяет, находится ли хост в сети или нет, каждые 5 секунд. Когда хост выходит в сеть, скрипт уведомит вас и остановит.

Как работает скрипт:

  • В первой строке мы создаем бесконечный while цикл .
  • Затем мы используем ping команду, чтобы определить, ip_address доступен ли хост с IP-адресом или нет.
  • Если хост доступен, сценарий отобразит «Хост подключен» и завершит цикл.
  • Если хост недоступен, sleep команда приостанавливает выполнение сценария на 5 секунд, а затем цикл начинается с начала.

Вывод

Команда sleep является одной из самых простых команд Linux. Он используется для приостановки выполнения следующей команды на определенный промежуток времени.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Как спать за миллисекунду в bash или ksh

sleep — очень популярная команда, и мы можем начать сон с 1 секунды:

но какая альтернатива, если мне нужно подождать всего 0,1 секунды или от 0,1 до 1 секунды?

  • примечание: на linux sleep 0.XXX работает отлично, но на солярии sleep 0.1 или sleep 0.01 — незаконный синтаксис

6 ответов

У Bash есть «загружаемый» сон, который поддерживает дробные секунды и устраняет накладные расходы внешней команды:

Недостатком является то, что загружаемые файлы могут быть не снабжены двоичным кодом bash , поэтому вам нужно будет их самостоятельно скомпилировать, как показано (хотя на Solaris это не обязательно будет так просто, как описано выше).

По состоянию на bash-4.4 (сентябрь 2016 г.) все загружаемые ресурсы теперь построены и установлены по умолчанию на поддерживающих его платформах, хотя они построены как отдельные общие, объектных файлов и без суффикса .so . Если ваш дистрибутив /ОС не сделал что-то творческое, вы должны иметь возможность сделать это:

(В man-странице подразумевается BASH_LOADABLES_PATH устанавливается автоматически, я считаю, что это не относится к официальному дистрибутиву по версии 4.4.12. Если и когда он установлен правильно, вам нужно всего лишь enable -f filename commandname по мере необходимости.)

Если это не подходит, следующая простая задача — сборка или получение sleep из GNU coreutils, что поддерживает требуемую функцию. Команда POSIX sleep минимальна, старше Реализованы только версии Solaris. Solaris 11 sleep выполняет поддержку дробных секунд.

В качестве последнего средства вы можете использовать perl (или любые другие скрипты, которые должны иметь) с предостережением, что инициализация интерпретатора может быть сопоставима с предполагаемым временем ожидания:

Документация для sleep команды от coreutils говорит:

Исторические реализации сна требуют, чтобы это число было целое число и принимает только один аргумент без суффикса. Однако сон GNU принимает произвольные числа с плавающей запятой. Видеть плавающая точка .

Следовательно, вы можете использовать sleep 0.1 , sleep 1.0e-1 и аналогичные аргументы.

Сон принимает десятичные числа, поэтому вы можете разбить его так:

Источник

Using Linux Sleep Command in Bash Scripts

Linux sleep command is one of the simplest commands out there. As you can guess from the name, its only function is to sleep. In other words, it introduces a delay for a specified time.

So, if you use the sleep command with x and the next command can only be run after x seconds.

Sleep command has a simple syntax:

In here, the suffix could be:

  • s for seconds. This is the default.
  • m for minutes.
  • h for hours.
  • d for days.

Let’s see some examples of the sleep command.

Bash sleep command Examples

Though you can use it in a shell directly, the sleep command is commonly used to introduce a delay in the execution of a bash script. I am going to show the usage of sleep command through sample bash scripts.

Sleep command without suffix counts in seconds

Suppose you want pause your bash script for 5 seconds, you can use sleep like this:

In a sample bash script, it could look like this:

If you run it with the time command, you’ll see that the bash script actually ran for (a slightly) more than 5 seconds.

Sleep command with minute or hour or day suffix

You can specify the sleep time in minutes in the following way:

This will pause the script/shell for one minute. If you want to delay the script in hours, you can do that with the h option:

Even if you want to pause the bash script for days, you can do that with the d suffix:

This could help if you want to run on alternate days or week days.

Sleep command with a combination of second, minute, hour and day

You are not obliged to use only one suffix at a time. You can use more than one suffix and the duration of the sleep is the sum of all the suffix.

For example, if you use the follow command:

This will keep the script waiting for 1 hour, 10 minutes and 5 seconds. Note that the s suffix is still optional here.

Bonus Tip: Sleep less than a second

You might have noticed that the smallest unit of time in the sleep command is second. But what if your bash script to sleep for milliseconds?

The good thing is that you can use floating point (decimal points) with sleep command.

So if you want to introduce a 5 milliseconds pause, use it like this:

You can also use decimal points with other suffixes.

It will introduce a delay of 1 hour, 37 minutes and 30 seconds.

I hope you didn’t sleep while reading these examples of sleep command 😉

If you are interested in shell scripting, perhaps you would like reading about string comparison in bash as well. If you have questions or suggestions, please feel free to ask.

Источник

Использование команды Sleep в скриптах Bash в Linux

Главное меню » Операционная система Linux » Использование команды Sleep в скриптах Bash в Linux

Команда sleep в Linux – одна из самых простых команд. Как видно из названия, его единственная функция – спать. Другими словами, он вводит задержку на указанное время.

Таким образом, если вы используете команду sleep с x, то следующая команда может быть запущена только через x секунд.

Команда Sleep имеет простой синтаксис:

Здесь суффикс может быть:

Давайте посмотрим несколько примеров команды sleep.

Примеры команды Sleep в Bash

Хотя вы можете использовать его непосредственно в оболочке, команда sleep обычно используется для введения задержки в выполнение сценария bash. Мы собираемся показать использование команды sleep через примеры сценариев bash.

Команда sleep без суффикса считается в секундах

Предположим, вы хотите приостановить ваш bash-скрипт на 5 секунд, вы можете использовать режим sleep следующим образом:

В примере скрипта bash это может выглядеть так:

Если вы запустите его с помощью команды time, вы увидите, что скрипт bash на самом деле работал (немного) более 5 секунд.

Команда Sleep с суффиксом m, h или d

Вы можете указать время sleep в минутах следующим образом:

Это приостановит скрипт/оболочку на одну минуту. Если вы хотите отложить сценарий на несколько часов, вы можете сделать это с помощью опции h:

Даже если вы хотите приостановить скрипт на несколько дней, вы можете сделать это с помощью суффикса d:

Это может помочь, если вы хотите работать в разные дни или дни недели.

Команда sleep с комбинацией секунд, минут, часов и дня

Вы не обязаны использовать только один суффикс за раз. Вы можете использовать более одного суффикса, и продолжительность sleep является суммой всех суффиксов.

Например, если вы используете следующую команду:

Это заставит скрипт ждать 1 час 10 минут и 5 секунд. Обратите внимание, что суффикс s здесь по-прежнему необязателен.

Бонусный совет: спать меньше секунды

Вы могли заметить, что наименьшая единица времени в команде sleep – секунда. Но что если ваш bash-скрипт будет спать в течение миллисекунд?

Хорошо, что вы можете использовать с плавающей точкой (десятичные точки) с командой sleep.

Поэтому, если вы хотите ввести паузу в 5 миллисекунд, используйте ее следующим образом:

Вы также можете использовать десятичные точки с другими суффиксами.

Будет введена задержка в 1 час 37 минут и 30 секунд.

Мы надеемся, что вы не спали, читая эти примеры команды sleep -).

Если у вас есть вопросы или предложения, пожалуйста, не стесняйтесь спрашивать.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Sleeping for milliseconds on Windows, Linux, Solaris, HP-UX, IBM AIX, Vxworks, Wind River Linux?

I have to write a C program which has to sleep for milliseconds, which has to run on various platforms like Windows, Linux, Solaris, HP-UX, IBM AIX, Vxworks, and Windriver Linux

  • On Windows, the Sleep system call will work on milliseconds only.
  • On Linux, sleep will work on seconds; usleep will perform on microseconds and it’s available on Solaris also.
  • In Vxworks, I hope I can implement using taskDelay and sysClkRateSet .

How can I achieve this millisecond sleep on HP-UX, IBM AIX and Wind River Linux?

3 Answers 3

Propably a wrapper using platform specific #define s will do:

Update

Referring to Jonathan’s comment below, please find a more modern, more portable (and as well corrected :>) version here:

Consider select with empty FD sets and the timeout you want. From man select :

Some code calls select() with all three sets empty, nfds zero, and a non-NULL timeout as a fairly portable way to sleep with subsecond precision.

Actually it might be the best solution for any non-Windows system.

I note that usleep is obsolescent but its a lot simpler than nanosleep. So I used it when I needed an enhanced sleep that would allow easy adjustment from seconds while debugging my scripts to milliseconds or zero for production.

This snooze function combines the advantages of sleep & usleep so that you can enter an int or float for your desired delay and 0.1 will sleep a 10th of a second while 3 will sleep for 3 seconds. 3.5 seconds is treated as 3 seconds.

Tested on Linux Mint 18.3 (Ubuntu 16.04.9) as C and C++ with gcc 5.4.0.

For completeness, this is a nanosleep version. It’s potentially more accurate than the usleep version and isn’t threatened by obsolescence.

As suggested by @alk, the following versions return the called sleep function’s error should one occur or 0 if successful. Defining the structure rem(aining) also permits resumption after a signal interrupt.

Источник

Читайте также:  No windows installations found
Оцените статью