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), который делает примерно то же самое, но без рейс кондишна, без проблем с удалением файла и с сохранением кода завершения. По желанию с ожиданием освобождения лока.

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

*

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

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


Комментарии
  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?