INT 21h

Домашняя страница самого страшного прерывания

Запуск cron задания с проверкой на копии

№ 2089 В разделе "Администрирование" от April 23rd, 2010,

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

#!/bin/sh

NAME=$1
CMD=$2
LOGDIR="/var/cronlogs"

if [ -f /tmp/$NAME.lock ]; then
echo $NAME " still works!"
else
touch /tmp/$NAME.lock
echo "Started "$NAME" at" `date` >> $LOGDIR/$NAME.txt
$CMD
echo "Finished "$NAME" at" `date` >> $LOGDIR/$NAME.txt
rm /tmp/$NAME.lock
fi

Как им пользоваться: run_cron.sh my_super_task /usr/bin/my_super_program

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

6 комментариев »

6 комментариев »

Comment by ud | April 27, 2010 @ 22:48:51

Очень кривое решение. Если таск умрет или питание вырубится, этот лок файл останется и не даст запуститься новым заданиям. Гораздо лучше использовать мюьтекс. Для sh есть вот например: http://sh-mutex.sourceforge.net/

Comment by 21h | April 27, 2010 @ 23:14:41

могу поспорить на ящик пива, что не останется. не знаю как у вас в фрибсдях, а у нас в линуксах /tmp не записывается на винт.

Comment by ud | April 27, 2010 @ 23:29:50

Ну это как подмонтируешь :) По дефолту у меня:
/dev/ad0s1e /home ufs rw 2 2
/dev/ad0s1f /tmp ufs rw 2 2
так что наверно записывается. Начет линукса не знал, если так, то круто.

Comment by 21h | April 27, 2010 @ 23:48:11

tmpfs используется. наверняка такое и в бсдях есть.

Comment by bioex | May 13, 2010 @ 13:27:26

tmpfs для /tmp по дефолту нигде в линуксах не используется (речь о популярных дистрах). Просто в Debian, например, /tmp зачищается при загрузке (см. /etc/rcS.d/S12mountall-bootclean.sh)

Comment by ls | May 31, 2010 @ 17:58:50

Во FreeBSD есть lockf(1), который делает примерно то же самое, но без рейс кондишна, без проблем с удалением файла и с сохранением кода завершения. По желанию с ожиданием освобождения лока.

Форма отправки комментария

CAPTCHA
*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • Игорь: Все настроил, еще раз просмотрел видео и методом научного тыка все настроил и сохранил, все работает и обе...
  • 21h: Здравствуйте, Игорь! Я не знаю :) Думаю аналогично согласно инструкции к вашей радиостанции.
  • Игорь: Добрый день, просмотрел Ваше видео все доступно и ясно для 8 ми канальных радеек, но мне нада настроить 69...
  • Гоги: Есть инструкция к Моторолкам – она подходит к серии Motorola TLKR T4… Т8. В конце сетка частот и...
  • 21h: торчок давно уже не обновлял, как только закрыл сайт где он работал. да, это морда для opentracker. без...
  • Buter: Какова дальнейшая жизнь торчка? Он кстати веб-интерфейсом для OpenTracker выступает? Без OpenTracker работать...
  • 21h: понятия не имею. гуглите инструкцию к вашей радейке и сверяйтесь с ней.
  • Денис: хочу их подружить с uv5r
  • Денис: t-388 walkie talkie на эти шпаргалочек нет,или как приминить ваши к их настройке?
  • John: Стекла для электроник – техночас.ру