Меню Рубрики

Linux отложенный запуск команды

Отложенное и регулярное выполнение заданий

Переходим к заданиям потруднее. По традиции будет представлен формат: вопрос — ответ. Разберем работу с процессами, сигналами и приоритетами в Bash. Также затронем тему выполнения отложенных задач, и, разумеется, напишем их сами.

Процессы, сигналы и приоритеты

Узнать имя файла устройства того терминала, на котором вы вошли в сеанс.
tty

Вывести список запущенных в текущем терминале процессов.
ps

Вывести список всех процессов, в виде таблицы с колонками ID процесса, ID родительского процесса, имя процесса.
ps -A

Выведите список процессов, запущенных пользователями, вошедшими в сеанс.
w

Получите список всех процессов, связанных с терминалами.
ps -t

Выведите PID процессов, связанных с каталогом /usr.
ps -C /usr

Выведите список процессов, содержащих «man» в имени.
ps -f | grep man

Получите иерархический список процессов с помощью команды ps (не pstree).
ps axjf

Вывести id текущей оболочки bash.
echo $$

Найдите пустые файлы в каталоге linux_lab2 в фоновом режиме.
find d1/ -empty &

Подтвердите тип содержимого двух из найденных файлов?
file pusto-1

Запустить в фоновом режиме команду sleep 1000 и sleep 2000. Вывести информацию о запущенных задачах.
sleep 1000 &
sleep 2000 &
jobs

Убить одной командой все запущенные задачи sleep.
pkill sleep

Проверить, как задача sleep 1000, запущенная в фоновом режиме, реагируют на сигналы HUP, INT, QUIT, TRAP, KILL, TERM.
hup — Обрыв терминальной линии
int — Прерывание
quit — Выход
trap — Ловушка трассировки/останова
kill — убито
TERM — Завершено

Запрограммировать оболочку bash таким образом, чтобы при получении ей сигнала HUP она выводила список всех запущенных процессов в файл, содержащий в названии id текущей оболочки bash.
trap » ps > file-$(echo $$)» HUP

Запустите команду sleep 10000 в фоновом режиме с приоритетом 10.
nice -n 10 sleep 10000 &

Увеличьте приоритет предыдущей команды на 6 пунктов.
renise 16 3541[id]

Уменьшите приоритет предыдущей команды на 10 пунктов.
Приоритет изменился? Как изменить приоритет?
renise 6 3541[id] (Приоритет не изменился, отказано в доступе. Можно изменить от root.)

От имени суперпользователя запустить команду индексирования базы данных поиска в следующем виде: sudo time nice -n 19 updatedb. Затем выполните такую же команду, в которой значение nice number для updatedb будет 5. Сравнить полученные
результаты.
Ответ: при запуске одинаковых команд с разными приоритетами время выполнение тоже будет разное.

От имени обычного пользователя попытайтесь запустить оболочку bash со значением nice number, равным -1. Какое сообщение выводится?
nice: невозможно установить значение nice: Отказано в доступе.

Для непрерывного просмотра запущенных в системе процессов установите время обновления 10 сек. Какое время установлено по умолчанию?
top -d 10
6 сек по умолчанию

Просмотрите список запущенных вами процессов в непрерывном режиме.
top -u nikiqq

Организуйте завершение команды top после десяти обновлений.
top -n 10

Отложенное и регулярное выполнение задач

Создайте файл, содержащий полный список процессов, полученный через 10 минут от текущего времени.
at now +10 minutes
at> ps > file1
at> «Ctrl + d»

Проверьте, запущены ли какие-нибудь задания в cron или at для пользователя root.
at -l
crontab -l

При помощи команды at сделать так, чтобы ровно через 5 минут от текущего времени произошла запись списка всех процессов в файл с именем, содержащим в своём названии системное время на момент записи.
at now + 5 minutes
at> ps > file-$(date +%T)
at> «Ctrl + d»

При помощи команды at организовать обычное завершение работы браузера firefox или chrome в 16:00.
at 16:00
at> pkill firefox
at> «Ctrl + d»

Сделать при помощи cron так, чтобы команда updatedb запускалась раз в сутки, каждый час, каждые 5 минут.
echo ’58 16 * * * updatedb’ > crontab1
echo ’58 * * * * updatedb’ > crontab1
echo ‘*/5 * * * * updatedb’ > crontab1

При помощи команды at сделать так, чтобы через 5 минут от текущего времени создалось задание для cron, которое создавало бы каждые 9 минут ещё одно задание для cron, заключающееся в том, чтобы каждые 7 минут уничтожать все задания пользователя для cron.
at now + 5 minutes
at> echo ‘9 * * * * echo ‘7 * * * * pkill cron » > crontab1
at> crontab crontab1
at> «Ctrl + d»

Ежедневно в 10:30 требуется получать список пользователей, входивших в сеанс в последнее время.
echo ’30 10 * * * last’ > crontab1
crontab -e (заходим в редактор)
crontab crontab1 ( устанавливаем таблицу)
от root: crontab -e -u nikiqq
в редакторе выбираем цифру 1 и таблица с заданиями отобразилась.

Источник

Linux отложенный запуск команды

Периодически возникают ситуации, когда необходимо запустить скрипт или приложение с задержкой спустя некоторое время после включения / перезагрузки системы. Есть несколько способов, можно использовать crontab или systemd.

Отложенный запуск — CRONTAB

Здесь достаточно открыть на редактирование crontab:

Указать путь к скрипту / приложению использовав параметры @reboot + sleep:

Из листинга ясно, что по таймауту в 10 секунд произойдет запуск скрипта check-service.sh

Отложенный запуск — SYSTEMD

Здесь можно использовать systemd таймер + systemd юнит, для начала создадим тестовый скрипт, который будет складывать в лог дату и время в момент своего запуска:

Тестовый скрипт можно разместить куда угодно, например в /tmp и разрешить его выполнение:

Создать юнит для запуска скрипта:

Теперь наступило время таймера, смотрим какие есть в принципе:

Где тймаут запуска 3 минуты, после чего необходимо обновить конфигурацию systemd:

Далее с целью эксперимента выключаем тестовый сервис:

Проверка

Перезагружаем систему, смотрим состояние таймера:

Видно, что до запуска осталось 2 минуты 27 секунд, проверяем список таймеров:

Далее, по факту отведенного времени проверяем лог:

Источник

2 мин для чтения Использование команды 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.

Источник

Linux отложенный запуск команды

Команды batch и at позволяют вам определять время запуска команды или последовательности команд. При помощи команды batch система определяет время запуска команды, вы это можете определить с помощью команды at . Обе команды ожидают ввод со стандартного ввода (терминала); список команд, вводимых с терминала, должен завершаться нажатием клавиши ^d (одновременное нажатие клавиши Ctrl и клавиши d).

Команда batch очень полезна, если вы запускаете процесс или программу, которые занимают много системного времени. Команда batch представляет системе задание (содержащее последовательность команд для выполнения). Задание ставится в очередь и запускается как только у системы появляется возможность. Это позволяет системе быстро отвечать на запросы других пользователей. Общий формат команды batch : Если запускается только одна команда, то ее можно ввести в одной командной строке:

В следующем примере batch используется для выполнения команды grep в согласованное время. Команда grep осуществляет поиск всех файлов в текущем каталоге и перенаправляет вывод в файл dol.file.

После того как вы зададите задание batch , система выдаст ответ, в котором даны номер задания, дата и время. Номер задания не то же самое, что номер процесса, который система генерирует, когда вы запускаете команду в фоновом режиме.

Команда at позволяет вам указывать точное время выполнения команд. Общий формат команды at : Аргумент time состоит из времени дня и даты, если дата не сегодняшняя.

В следующем примере показано, как использовать команду at для посылки сообщения happy birthday пользователю с регистрационным именем emily:

Обратите внимание, что команда at подобно команде batch выдает ответ с номером задания, датой и временем.

Если вы не хотите, чтобы команды, находящиеся в данный момент в очереди заданий batch или at были выполнены, то можете удалить их из очереди. Для этого воспользуйтесь опцией -r в команде at , указав ее с номером задания. Общий формат такой команды: Если вы забыли номер задания, то команда at -l распечатает вам список текущих заданий в очереди batch или at , как показано на следующем экране:

Таким образом команда at выполняет команды в указанное время. Вы можете использовать от одной до 4-х цифр и буквосочетания «am» и «pm», чтобы указать время. Чтобы указать дату, задайте имя месяца и вслед за ним число. Если задание должно быть выполнено сегодня, то дату вводить не надо.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как восстановить несохраненный документ word mac os
  • Как восстановить загрузку mac os x
  • Как восстановить recovery hd mac os
  • Как восстановить mac os через интернет
  • Как восстановить mac os загрузчик