URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6408
[ Назад ]

Исходное сообщение
"Небольшой скриптик. Проверка файлов."

Отправлено HighVoltage , 24-Апр-07 09:55 
Хочу написать скриптик, ну он весь. Подскажите. Никаких условий не писал никогда.
Хочтся услышать совета в виде примера и может ссылку на статейку где описано как и что про скрипты.

В кроне запускается скрипт каждый час. Но есть проблема что он за час может не отработать до конца. Хотел сделать по умному, как делают обычно во всех программах. Т.е. в /var/tmp создать файлик с PID процесса, хотя туда даже PID не обязательно помещать. И при старте программы проверять. Существует ли данный файл, если да то завершить скрипт, если нет то продолжить выполнение а в конце этот файл стереть.



Содержание

Сообщения в этом обсуждении
"Небольшой скриптик. Проверка файлов."
Отправлено dronord , 24-Апр-07 10:07 
http://gazette.linux.ru.net/rus/articles/abs-guide/index.html

Посоветовал бы проверять не только наличие, но и дату изменения. Если скрипт "вылетел", файл останется и аналогичный скрипт больше не запуститься.


"Небольшой скриптик. Проверка файлов."
Отправлено HighVoltage , 24-Апр-07 10:27 
>http://gazette.linux.ru.net/rus/articles/abs-guide/index.html
>
>Посоветовал бы проверять не только наличие, но и дату изменения. Если скрипт
>"вылетел", файл останется и аналогичный скрипт больше не запуститься.


Спасибо большое.


"Небольшой скриптик. Проверка файлов."
Отправлено madskull , 24-Апр-07 13:10 
>http://gazette.linux.ru.net/rus/articles/abs-guide/index.html
>
>Посоветовал бы проверять не только наличие, но и дату изменения. Если скрипт
>"вылетел", файл останется и аналогичный скрипт больше не запуститься.
Что бы файл не оставался при "вылете" - надо trap'ы юзать


"Небольшой скриптик. Проверка файлов."
Отправлено phpcoder , 24-Апр-07 12:02 
[...]
>В кроне запускается скрипт каждый час. Но есть проблема что он за
>час может не отработать до конца. Хотел сделать по умному, как
>делают обычно во всех программах. Т.е. в /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.pid

trap '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


"Небольшой скриптик. Проверка файлов."
Отправлено phpcoder , 24-Апр-07 12:04 
>   echo "Program already started!" ?&2
echo "Program already started!" >&2