- Как запустить команду на определенное время в Linux
- Выполнить команду в течение определенного времени в Linux
- Метод 1 – Использование команды « timeout »
- Linux выполнять команду каждые 2 секунды
- 1. Планирование задач в течение определённого времени
- 2. Расписание задач для более частого выполнения (например, дважды в день)
- 3. Расписание работы в течение определённого интервала времени (например, только в будние дни)
- 4. Как просмотреть записи Crontab?
- 5. Как редактировать записи crontab?
- 6. Выполнение Cron каждую минуту
- 7. Запуск фоновых задач Cron каждые 10 минут
- 8. Расписание работы для первой минуты каждого года с использованием @yearly
- 9. Запуск задач каждый месяц с использованием ключевого слова @monthly
- 10. Запуск задач каждый день с использованием @daily
- 11. Как выполнить команду Linux после каждой перезагрузки, используя @reboot?
- 13. 12. Как отключить/перенаправить исходящую почту Crontab, используя ключевое слово MAIL?
- 13. Как выполнять задачи Linux Cron кажду секунду, используя Crontab
- 14. Указание переменной PATH в Crontab
- 15. Установка Crontab из Cron-файла
- Самые полезные приёмы работы в командной строке Linux
- Вывод результатов работы команд в виде таблицы
- Многократный повтор команды до её успешного завершения
- Сортировка процессов по используемой памяти
- Сортировка процессов по использованию ресурсов CPU
- Одновременный просмотр нескольких лог-файлов
- Возврат к предыдущей директории
- Мониторинг с регулярными интервалами
- Продолжение выполнения программы после окончания сессии
- Автоматический ответ yes или no
- Создание файла заданного размера
- Выполнение последней команды с root-привилегиями
- Создание протокола терминальной сессии
- Замена пробелов на знаки табуляции
- Замена строчных букв на прописные
- Автоматическое формирование списка аргументов для команд: xargs
- Итоги
Как запустить команду на определенное время в Linux
На днях я переносил большой файл с помощью rsync в другую систему в моей локальной сети.
Поскольку это очень большой файл, для его завершения потребовалось около 20 минут.
Я не хочу ждать так долго, а также я не хочу вручную завершать процесс нажатием CTRL + C.
Мне просто интересно, могут ли быть какие-нибудь простые способы запустить команду в течение определенного времени и автоматически убить ее, как только истечет время в Unix-подобных операционных системах – отсюда и этот пост.
Выполнить команду в течение определенного времени в Linux
Метод 1 – Использование команды « timeout »
Команда timeout является частью пакета GNU coreutils, поэтому она предустановлена во всех системах GNU / Linux.
Допустим, вы хотите запустить команду только в течение определенного времени, а затем автоматически убить ее по истечении этого времени. Для этого мы используем:
Например, следующая команда прекратит работу через 10 секунд.
Другие доступные суффиксы:
“m” в течение нескольких минут,
“h” Часы
“ d” в течение нескольких дней.
Если вы запустите эту команду tail -f /var/log/pacman.log, она будет работать до тех пор, пока вы не завершите ее вручную, нажав CTRL + C.
Однако, если вы запустите его вместе с командой timeout, он будет автоматически убит через заданный интервал времени.
На всякий случай, если команда все еще выполняется даже после истечения времени ожидания, вы можете отправить сигнал уничтожения, как показано ниже.
В этом случае, если команда tail все еще выполняется через 10 секунд, команда timeout отправит ему сигнал уничтожения через 20 секунд и завершит его.
Команда Tmeout может быть особенно полезна при устранении неполадок оборудования.
Например, выполните следующую команду, чтобы отобразить все сообщения из кольцевого буфера ядра, но только в течение 10 секунд.
Для более подробной информации, обратитесь к справочным страницам.
Источник
Linux выполнять команду каждые 2 секунды
MIN HOUR DOM MON DOW CMD
Таблица: Поля и допустимые диапазоны Crontab (синтаксис Linux Crontab)
Поле | Описание | Допустимое значение |
---|---|---|
MIN | Минуты | От 0 до 59 |
HOUR | Часы | От 0 до 23 |
DOM | День месяца | 1-31 |
MON | Месяц | 1-12 |
DOW | День недели | 0-6 |
CMD | Команда | Любая команда, которую требуется выполнить |
1. Планирование задач в течение определённого времени
Основа использования cron – выполнение задач в определённое время, как показано ниже. Это будет выполнять скрипт полного резервного копирования (full-backup) 10 июня в 8.30.
Пожалуйста, обратите внимание, что поле времени использует 24-часовой формат, Так что 8 АМ – 8, 8 РМ – 20 часов.
- 30 – 30-ая минута
- 08 – 08 АМ
- 10 – 10-й день
- * – каждый день недели
2. Расписание задач для более частого выполнения (например, дважды в день)
Следующий скрипт использует дополнительное резервное копирование дважды в день каждый день. В этом примере выполняется дополнительное резервное копирование (incremental-backup) в 11:00 и в 16:00 каждый день. Значения через запятую в поле указывают, что команда должна быть выполнена в каждое указанное время.
00 – 0-ая минута (начало часа) 11, 16 – 11 и 16 часов * — каждый день * — каждый месяц * — каждый день недели
3. Расписание работы в течение определённого интервала времени (например, только в будние дни)
Если вы хотите, чтобы подпрограммы выполнялись в течение каждого часа с определённым интервалом времени, используйте следующее.
Подпрограмма Cron для каждого дня в течение рабочих часов
Этот пример каждый день проверяет состояние базы данных (включая выходные) в течение рабочих часов с 9 утра до 6 вечера.
00 — 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * — каждый день * — каждый месяц * — каждый день недели
Подпрограмма Cron для каждого рабочего дня в течение рабочих часов
Этот пример проверяет состояние базы данных каждый рабочий день (кроме субботы и воскресенья) с 9 утра до 6 вечера.
00 — 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * — каждый день * — каждый месяц 1-5 — Понедельник, Вторник, Среда, Четверг и Пятница (каждую неделю)
4. Как просмотреть записи Crontab?
Просмотр текущих Crontab-файлов пользователя.
Чтобы просмотреть ваши файлы crontab-l из вышей учётной записи unix, проделайте следующее.
Просмотр root записей crontab
Залогиньтесь в качестве root пользователя ( su — root ) и выполните crontab-l как показано ниже.
Практические рекомендации crontab: просмотрите другие записи crontab пользователя linux.
Чтобы посмотреть файлы других пользователей, залогиньтесь в качестве root пользователя и и используйте -u < имя пользователя >-l как показано ниже.
5. Как редактировать записи crontab?
Редактирование текущих пользовательских cron-записей.
Чтобы редактировать записи, используйте cronab -e как показано ниже. По умолчанию, будут редактироваться текущие записи crontab пользователя.
Когда вы сохраните файл, он сохранит crontab и покажет следующее сообщение, где будет сказано, что crontab успешно изменён.
Редактирование root записей crontab
Залогиньтесь как root пользователь ( su — root ) и сделайте crontab -e , как показано ниже.
Редактирование записей crontab-файла другого пользователя
Чтобы отредактировать запись crontab другого пользователя Linux, залогиньтесь в под root и используйте -u < имя пользователя >–е , как показано ниже.
6. Выполнение Cron каждую минуту
В идеале, вам может и не потребоваться назначения выполнения cron каждую минуту. Но понимание этого примера поможет вам понять другие примеры, описанные в этой статье.
* — означает возможную единицу – то есть, каждую минуту каждого часа в течение года. Кроме того, использование * напрямую, окажется более полезной функцией в следующих примерах.
Указание */5 в поле минут означает каждые 5 минут. Указание 0-10/2 в поле минут означает каждые 2 минуты в первых 10 минутах. Таким образом, данная условность может быть использована во всех 4 полях.
7. Запуск фоновых задач Cron каждые 10 минут
Используйте следующее, если хотите проверять место на диске каждые 10 минут.
Эта задача выполняет указанную команду проверки диска каждые 10 минут на протяжении года. Но вам может потребоваться выполнение проверки только в рабочие часы или наоборот. Приведённые выше примеры показывают, как это сделать.
Вместо указания значений в 5 полях мы можем указать их, используя ключевое слово, как показано ниже.
Существуют особые условия, когда вместо 5 полей вы можете использовать @ и далее ключевое слово – такие как перезагрузка, полночь, ежегодно, ежечасно.
Специальные ключевые слова Cron и их значение
Ключевое слово | Эквивалент |
---|---|
@yearly | 0 0 1 1 * |
@daily | 0 0 *** |
@hourly | 0 **** |
@reboot | Запуск системы |
8. Расписание работы для первой минуты каждого года с использованием @yearly
Если вы хотите, чтобы cron задача выполнялись в первые минуты каждого года, то можете использовать ключевое слово @yearly , как это показано ниже. В стаком случае система будет выполнять ежегодное техническое обслуживание, используя скрипт ежегодного тех.обслуживания в 00:00 1 января каждого года.
9. Запуск задач каждый месяц с использованием ключевого слова @monthly
Оно схоже со словом @yearly , приведённым выше. Но команда выполняется ежемесячно. Команда будет выполнять резервное копирование в 00:00 первого числа каждого месяца.
10. Запуск задач каждый день с использованием @daily
Используя ключевое слово @daily , будет ежедневно создаваться лог-файл очистки журнала в 00:00 каждый день.
11. Как выполнить команду Linux после каждой перезагрузки, используя @reboot?
Используя ключевое слово @reboot , будет выполняться указанная команда каждый раз после загрузки системы.
13. 12. Как отключить/перенаправить исходящую почту Crontab, используя ключевое слово MAIL?
По умолчанию crontab отправляет выходные (output) задачи пользователю, который установил эту задачу. Если вы хотите перенаправить их другому пользователю, добавьте или обновите переменную MAIL в crontab, как показано ниже.
Если вы хотите, чтобы почта вообще не отправлялась, т.е прекратить отправку выходных файлов crontab, добавьте или обновите переменную MAIL в crontab, как показано ниже.
13. Как выполнять задачи Linux Cron кажду секунду, используя Crontab
Вы не можете настроить выполнение cron на каждую секунду. Потому что минимальная единица выполнения cron – минута. В обычном сценарии нет необходимости запускать выполнение cron каждую секунду.
14. Указание переменной PATH в Crontab
Во всех вышеприведённых примерах мы указывали абсолютный путь команды Linux или скрипта оболочки, которые должны быть выполнены.
Например, вместо указания /home/developer/tape-backup , если вы хотите указать только tape-backup , добавьте путь /home/developer к переменной PATH в crontab , как показано ниже.
15. Установка Crontab из Cron-файла
Вместо прямого редактирования файла crontab вы можете добавить, все записи в cron-файл. Если в файле есть эти записи, вы можете выгрузить или установить их в cron, как показано ниже.
Источник
Самые полезные приёмы работы в командной строке Linux
Каждый, кто пользуется командной строкой Linux, встречался со списками полезных советов. Каждый знает, что повседневные дела вполне можно выполнять эффективнее, да только вот одно лишь это знание, не подкреплённое практикой, никому не приносит пользы.
Как выглядят типичные трудовые будни системного администратора, который сидит на Linux? Если абстрагироваться от всего, кроме набираемых на клавиатуре команд, то окажется, что команды эти постоянно повторяются. Всё выходит на уровень автоматизма. И, если даже в работе есть что улучшать, привычка противится новому. Как результат, немало времени уходит на то, чтобы делать так, как привычнее, а не так, как быстрее, и, после небольшого периода привыкания – удобнее. Помнить об этом, сознательно вводить в собственную практику новые полезные мелочи – значит профессионально расти и развиваться, значит – экономить время, которое можно много на что потратить.
Вывод результатов работы команд в виде таблицы
Иногда вывод результатов работы команд выглядит как мешанина из беспорядочных строк. Найти то, что надо, в таких данных можно, но работать с ними неудобно. Например – что-то подобное можно получить в ответ на команду mount . Хорошо бы то же самое вывести в виде таблицы. И это не только возможно, но ещё и очень просто:
Результаты работы команды mount, оформленные в виде таблицы
По умолчанию команда формирует табличное представление, ориентируясь на пробелы между словами. А что, если в качестве разделителей используются другие символы, вроде двоеточий? Например – в выводе cat /etc/passwd ?
Упорядочить можно и такие данные – достаточно указать символ-разделитель с параметром –s . Например, ниже приведена команда для символа «:».
Отформатированный вывод /etc/passwd
Многократный повтор команды до её успешного завершения
Если вы погуглите на эту тему, то обнаружите, что многие задают вопрос о том, как повторять команду до тех пор, пока она не будет успешно выполнена. Например, такое может быть полезным при пинге сервера до тех пор, пока он не откликнется, при проверке выгрузки файлов, или при опросе некоего URL до тех пор, пока он не окажется доступен.
Решить подобную задачу поможет цикл while true . Выглядит всё это так:
Команда будет повторяться до её успешного завершения
В этом примере конструкция >/dev/null 2>&1 перенаправляет вывод программы в /dev/null , включая и Standard Error, и Standard Out.
Вероятнее всего, это – один из самых полезных приёмов работы с командной строкой Linux.
Сортировка процессов по используемой памяти
Отсортированный список процессов
Сортировка процессов по использованию ресурсов CPU
Сортировка процессов по использованию CPU делается так:
Отсортированный список процессов
Для того, чтобы вывести сведения об архитектуре, используйте команду getconf LONG_BIT .
Одновременный просмотр нескольких лог-файлов
Для просмотра лог-файлов вполне подходит команда tail , но иногда может понадобиться одновременная работа с несколькими подобными файлами. Для решения этой задачи подойдёт консольный инструмент multitail , который поддерживает выделение текста, фильтрацию и многие другие полезные возможности.
Работа с multitail
Установить эту утилиту, если вы её у себя не найдёте, можно командой apt-get install multitail .
Возврат к предыдущей директории
Для того, чтобы вернуться к предыдущей директории, просто наберите cd –.
Мониторинг с регулярными интервалами
Использование утилиты watch (например, watch df –h ) поможет организовать наблюдение за выводом любой команды. Например, можно наблюдать за объёмом свободного пространства, и за тем, как он меняется.
Пожалуй, вы сами сможете найти подходящие сценарии для использования этой команды.
Продолжение выполнения программы после окончания сессии
Когда вы запускаете любую программу в фоне и закрываете консоль, программа тоже завершит работу. А что, если надо, чтобы программа работала и после закрытия оболочки?
Для того, чтобы этого добиться, можно воспользоваться командой nohup , название которой расшифровывается как «no hang-up». Выглядит это так:
Пожалуй, эта команда – одна из тех, о которой забывают чаще всего, открывая по несколько окон терминала только ради исполняющихся в них команд.
Команда nohup
В примере, показанном на рисунке выше, в текущей директории будет создан файл nohup.out , содержащий вывод команды:
Файл nohup.out
Полезная штука, согласны?
Автоматический ответ yes или no
Предположим, вы хотите автоматизировать процесс, который требует от пользователя постоянно отвечать yes . Сделать это можно, используя команду yes :
Возможно, вместо этого вы решите автоматизировать отрицательные ответы. Тут поможет такая конструкция:
Автоматизация ответа YES
Создание файла заданного размера
Создавать файлы заданного размера можно, используя команду dd :
Вышеприведённая команда создаст файл размером 10 Мб, заполненный нулями.
Создание файла заданного размера
Выполнение последней команды с root-привилегиями
Иногда можно забыть ввести sudo перед командой, которой нужны root-привилегии. Вводить всё заново нет нужды – достаточно воспользоваться такой командой:
Выполнение последней команды с root-привилегиями
Создание протокола терминальной сессии
Для того, чтобы записать в файл всё, что было выведено в окне терминала, можно воспользоваться командой script .
После выхода из сессии протокол будет записан в файл typescript .
Замена пробелов на знаки табуляции
Вот команда, которая позволяет заменить пробелы на знаки табуляции:
На самом деле, она универсальна и умеет работать с любыми символами.
Замена строчных букв на прописные
А вот – пример вышеописанной команды для замены строчных букв в файле с текстом на прописные:
Замена строчных букв в файле на прописные
Автоматическое формирование списка аргументов для команд: xargs
Утилита xargs , пожалуй, достойна звания одной из самых полезных возможностей командной строки Linux. Её можно использовать для передачи вывода некоей команды в качестве аргумента для другой. Например, вот как можно выполнить поиск .png-файлов и сжать их, или сделать с ними что-нибудь ещё:
Или, возможно, у вас имеется файл со списком URL, и вы хотите загрузить ресурсы по этим адресам, или ещё как-то их обработать:
Тут надо учитывать, что вывод первой команды передаётся в качестве аргумента в конце команды xargs . Если при конструировании второй команды надо явно указать место, куда должны попасть выходные данные первой, достаточно воспользоваться парой фигурных скобок, <> и параметром –i для замены аргумента в нужном месте:
Команда xargs
Итоги
Полезности для командной строки Linux – тема невероятно обширная. Поэтому любой список, подобный нашему, можно пополнять очень и очень долго. Например, много неожиданного скрыто в командах awk и sed . Пожалуй, главное – чтобы такие вот списки шли в дело.
А какими интересными приёмами работы в командной строке пользуетесь вы?
Источник