Хочу написать скриптик, ну он весь. Подскажите. Никаких условий не писал никогда.
Хочтся услышать совета в виде примера и может ссылку на статейку где описано как и что про скрипты.В кроне запускается скрипт каждый час. Но есть проблема что он за час может не отработать до конца. Хотел сделать по умному, как делают обычно во всех программах. Т.е. в /var/tmp создать файлик с PID процесса, хотя туда даже PID не обязательно помещать. И при старте программы проверять. Существует ли данный файл, если да то завершить скрипт, если нет то продолжить выполнение а в конце этот файл стереть.
http://gazette.linux.ru.net/rus/articles/abs-guide/index.htmlПосоветовал бы проверять не только наличие, но и дату изменения. Если скрипт "вылетел", файл останется и аналогичный скрипт больше не запуститься.
>http://gazette.linux.ru.net/rus/articles/abs-guide/index.html
>
>Посоветовал бы проверять не только наличие, но и дату изменения. Если скрипт
>"вылетел", файл останется и аналогичный скрипт больше не запуститься.
Спасибо большое.
>http://gazette.linux.ru.net/rus/articles/abs-guide/index.html
>
>Посоветовал бы проверять не только наличие, но и дату изменения. Если скрипт
>"вылетел", файл останется и аналогичный скрипт больше не запуститься.
Что бы файл не оставался при "вылете" - надо trap'ы юзать
[...]
>В кроне запускается скрипт каждый час. Но есть проблема что он за
>час может не отработать до конца. Хотел сделать по умному, как
>делают обычно во всех программах. Т.е. в /var/tmp создать файлик с
>PID процесса, хотя туда даже PID не обязательно помещать.PID-файлы надо создавать в /var/run:
%
/var/run
Run-time variable files, like files holding process identifiers
(PIDs) and logged user information (utmp). Files in this direc-
tory are usually cleared when the system boots.
%
(с) man 7 hierВот пример,как можно создать:
lock_dir=/var/run
lock_file=$lock_dir/program.pidtrap 'rm -f $lock_file' 1 2 3 4 6 8 9 11 13 14 15
printf '%d\n' $$ > $lock_file
...
rm -f $lock_fileОбрати внимание на trap, это позволит удалять lock-файл при поступлении сигналов разных.
> И при
>старте программы проверять. Существует ли данный файл, если да то завершить
>скрипт, если нет то продолжить выполнение а в конце этот файл
>стереть.if [ -f /var/run/program.pid ]; then
echo "Program already started!" ?&2
exit 1
fi
> echo "Program already started!" ?&2
echo "Program already started!" >&2