Читаем Bash-скрипты, руководство в 11 частях полностью

Список заданий, ожидающих выполнения

<p><emphasis><strong>Удаление заданий, ожидающих выполнения</strong></emphasis></p>

Удалить задание, ожидающее выполнения, позволяет команда atrm. При её вызове указывают номер задания:

$ atrm 18

Удаление задания

<p><emphasis><strong>Запуск скриптов по расписанию</strong></emphasis></p>

Планирование однократного запуска скриптов с использованием команды at способно облегчить жизнь во многих ситуациях. Но как быть, если нужно, чтобы скрипт выполнялся в одно и то же время ежедневно, или раз в неделю, или раз в месяц?

В Linux имеется утилита crontab, позволяющая планировать запуск скриптов, которые нужно выполнять регулярно.

Crontab выполняется в фоне и, основываясь на данных в так называемых cron-таблицах, запускает задания по расписанию.

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

$ crontab –l

При планировании запуска скрипта по расписанию crontab принимает данные о том, когда нужно выполнить задание, в таком формате:

минута, час, день месяца, месяц, день недели.

Например, если надо, чтобы некий скрипт с именем command выполнялся ежедневно в 10:30, этому будет соответствовать такая запись в таблице заданий:

30 10 * * * command

Здесь универсальный символ «*», использованный для полей, задающих день месяца, месяц и день недели, указывает на то, что cron должен выполнять команду каждый день каждого месяца в 10:30.

Если, например, надо, чтобы скрипт запускался в 4:30PM каждый понедельник, понадобится создать в таблице заданий такую запись:

30 16 * * 1 command

Нумерация дней недели начинается с 0, 0 означает воскресенье, 6 — субботу.

Вот ещё один пример. Здесь команда будет выполняться в 12 часов дня в первый день каждого месяца.

00 12 1 * * command

Нумерация месяцев начинается с 1.

Для того чтобы добавить запись в таблицу, нужно вызвать crontab с ключом -e:

crontab –e

Затем можно вводить команды формирования расписания:

30 10 * * * /home/likegeeks/Desktop/myscript

Благодаря этой команде скрипт будет вызываться ежедневно в 10:30.

Если вы столкнётесь с ошибкой «Resource temporarily unavailable», выполните нижеприведённую команду с правами root-пользователя:

$ rm -f /var/run/crond.pid

Организовать периодический запуск скриптов с использованием cron можно ещё проще, воспользовавшись несколькими специальными директориями:

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/etc/cron.monthly

Если поместить файл скрипта в одну из них, это приведёт, соответственно, к его ежечасному, ежедневному, еженедельному или ежемесячному запуску.

<p><emphasis><strong>Запуск скриптов при входе в систему и при запуске оболочки</strong></emphasis></p>

Автоматизировать запуск скриптов можно, опираясь на различные события, такие, как вход пользователя в систему или запуск оболочки. Тут можно почитать о файлах, которые обрабатываются в подобных ситуациях. Например, это следующие файлы:

$HOME/.bash_profile

$HOME/.bash_login

$HOME/.profile

Для того, чтобы запускать скрипт при входе в систему, поместите его вызов в файл .bash_profile.

А как насчёт запуска скриптов при открытии терминала? Организовать это поможет файл .bashrc.

<p><emphasis><strong>Итоги</strong></emphasis></p>

Сегодня мы разобрали вопросы, касающиеся управления жизненным циклом сценариев, поговорили о том, как запускать скрипты в фоне, как планировать их выполнение по расписанию. В следующий раз читайте о функциях в bash-скриптах и о разработке библиотек.

<p><strong>Bash-скрипты, часть 6: функции и разработка библиотек</strong></p>

Занимаясь разработкой bash-скриптов, вы рано или поздно столкнётесь с тем, что вам периодически приходится использовать одни и те же фрагменты кода. Постоянно набирать их вручную скучно, а копирование и вставка — не наш метод. Как быть? Хорошо бы найти средство, которое позволяет один раз написать блок кода и, когда он понадобится снова, просто сослаться на него в скрипте.

Оболочка bash предоставляет такую возможность, позволяя создавать функции. Функции bash — это именованные блоки кода, которые можно повторно использовать в скриптах.

<p><emphasis><strong>Объявление функций</strong></emphasis></p>

Функцию можно объявить так:

functionName {

}

Или так:

functionName() {

}

Функцию можно вызвать без аргументов и с аргументами.

<p><emphasis><strong>Использование функций</strong></emphasis></p>

Напишем скрипт, содержащий объявление функции и использующий её:

#!/bin/bash

function myfunc {

echo "This is an example of using a function"

}

count=1

while [ $count -le 3 ]

do

myfunc

count=$(( $count + 1 ))

done

echo "This is the end of the loop"

myfunc

echo "End of the script"

Здесь создана функция с именем myfunc. Для вызова функции достаточно указать её имя.

Результаты вызова функции

Функцию можно вызывать столько раз, сколько нужно.

Обратите внимание на то, что попытавшись использовать функцию до её объявления, вы столкнётесь с ошибкой. Напишем демонстрирующий это скрипт:

#!/bin/bash

count=1

while [ $count -le 3 ]

do

myfunc

count=$(( $count + 1 ))

done

echo "This is the end of the loop"

function myfunc {

echo "This is an example of using a function"

}

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных