Блог Синявского
  • Разделы
  • Метки
  • Все статьи

Bash lockfile

1

Bash lockfile

Запускаем задачу по cron в единственном экземпляре на чистом bash. Если задача уже запущена, то для того, чтобы она не запустилась второй раз создаём файл. При запуске проверяем если файла нет запускаем, если файл есть пишем предупреждение.

$ nano main.sh
#!/bin/bash
LockFile=/tmp/main.lock

if [ -f ${LockFile} ]; then
echo -e "File ${LockFile} still exist, now exiting... \nEnter to unlock: rm -rf ${LockFile}"
exit 0
else
touch ${LockFile}
echo "LockFile ${LockFile} now creating..."

... commands ...

wait
rm -rf ${LockFile}
fi

Проходимся по списку команд, которые находятся в папке с командами и называются child_1.sh, child_2.sh

$ nano main.sh
#!/bin/bash

LockFile=/tmp/main.lock
ChildList=`ls /scripts/commands/child_[[:digit:]].sh`

if [ -f ${LockFile} ]; then
    echo -e "File ${LockFile} still exist, now exiting... \nEnter to unlock: rm -rf ${LockFile}"
    exit 0
 else
    touch ${LockFile}
    echo "LockFile ${LockFile} now creating..."
    for Scripts in ${ChildList}
     do
     {
      echo "now run: ${Scripts}"; sh ${Scripts}
      exit 0
     } &
     done
    wait
    rm -rf ${LockFile}
fi


  • ← сюда
  • туда →

comments powered by Disqus

Опубликовано

10.02.2017

Обновление

24.08.2017

Категории

ubuntu

Тэги

  • ssh 3
  • ubuntu 36

Всегда на связи

  • Блог Синявского - Ничего не переносить на завтра, это тоже проблема с прокастинацией?
  • © Алексей Синявский, по лицензии CC BY-SA если не указано иное.
  • С использованием Pelican. Тема: Elegant от Talha Mansoor