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