Как решить задачу-не запускать лишний процеcс.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
Как решить задачу-не запускать лишний процеcс.
Есть скрипт на базе rsync, который запускается по cron каждые 10 минут. Если размер файла большой и он не успевает скачаться за 10 мин, то запускается 2-я копия rsync (были случаи когда их висело порядка 30 штук.). Вопрос-как должна выглядеть строка (скрипт), которая проверяет наличие в процессах уже запущенного rsync и не давать запускаться новой копии rsync?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Как решить задачу-не запускать лишний процеcс.
Код: Выделить всё
ps ax | grep rsync | wc -l
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Как решить задачу-не запускать лишний процеcс.
Код: Выделить всё
pgrep rsync > /dev/null && exit
- f_andrey
- майор
- Сообщения: 2651
- Зарегистрирован: 2007-12-26 1:22:58
- Откуда: СПб
- Контактная информация:
Re: Как решить задачу-не запускать лишний процеcс.
по моему лучше создавать pid файл, ну и соответственно если он уже существует то не запускать последующие процессы.
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308
-
- проходил мимо
Re: Как решить задачу-не запускать лишний процеcс.
Создавать PID - не сложновато будет для cronа, сначало создать, затем очистить?
В принципе pgrep rsync > /dev/null && exit будет достаточно.
В принципе pgrep rsync > /dev/null && exit будет достаточно.
-
- проходил мимо
Re: Как решить задачу-не запускать лишний процеcс.
lockf(1)
Код: Выделить всё
lockf -t0 /tmp/.mylock rsync foo dest::
lockf(1) писал(а):-t seconds
...
A timeout of 0 may be given, in which case lockf will fail unless it can acquire the lock immediately. When a lock times out, command is not executed.
-
- проходил мимо
Re: Как решить задачу-не запускать лишний процеcс.
Debian
lockf: command not found
apt-cache search lockf
checksecurity - basic system security checks
chiark-utils-bin - chiark system administration utilities
cron - management of regular background processing
liblockfile-dev - Development library for liblockfile.
liblockfile-simple-perl - Simple advisory file locking
liblockfile1 - NFS-safe locking library, includes dotlockfile program
libpam-foreground - create lockfiles describing which users own which console
libposixlock-ruby - posix locking for ruby
libposixlock-ruby1.8 - posix locking for ruby
lockfile-progs - Programs for locking and unlocking files and mailboxes
nwall - version of wall that uses GNU readline
python-myghtyutils - Set of utility classes used by Myghty templating
sendmail - powerful, efficient, and scalable Mail Transport Agent
sendmail-bin - powerful, efficient, and scalable Mail Transport Agent
В каком пакете он идет?
lockf: command not found
apt-cache search lockf
checksecurity - basic system security checks
chiark-utils-bin - chiark system administration utilities
cron - management of regular background processing
liblockfile-dev - Development library for liblockfile.
liblockfile-simple-perl - Simple advisory file locking
liblockfile1 - NFS-safe locking library, includes dotlockfile program
libpam-foreground - create lockfiles describing which users own which console
libposixlock-ruby - posix locking for ruby
libposixlock-ruby1.8 - posix locking for ruby
lockfile-progs - Programs for locking and unlocking files and mailboxes
nwall - version of wall that uses GNU readline
python-myghtyutils - Set of utility classes used by Myghty templating
sendmail - powerful, efficient, and scalable Mail Transport Agent
sendmail-bin - powerful, efficient, and scalable Mail Transport Agent
В каком пакете он идет?
- f_andrey
- майор
- Сообщения: 2651
- Зарегистрирован: 2007-12-26 1:22:58
- Откуда: СПб
- Контактная информация:
Re: Как решить задачу-не запускать лишний процеcс.
Здесь на форуме по дефолту обсуждают FreeBSD, в иных случаях имейте совесть хоть вставлять uname.Гость писал(а):В каком пакете он идет?
А по тому где идет у меня например идет с системой /usr/bin/lockf (FreeBSD-CURRENT), или вы не можете найти к какому пакету пренадлежит файл в вашей системе

Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308
-
- проходил мимо
Re: Как решить задачу-не запускать лишний процеcс.
Ну так в самом начале специально написал - Debian, если надо uname: Linux 2.6.26-1-686, Lenny.
Самостоятельного файла в системе нет, он идет в компекте с каким-то пакетом, список которых привел выше. Не ставить же их все сразу.
Самостоятельного файла в системе нет, он идет в компекте с каким-то пакетом, список которых привел выше. Не ставить же их все сразу.
-
- проходил мимо
Re: Как решить задачу-не запускать лишний процеcс.
ставь по очереди пока не найдешь нужный по функционалу как lockf(1)Гость писал(а):Самостоятельного файла в системе нет, он идет в компекте с каким-то пакетом, список которых привел выше. Не ставить же их все сразу.
а так можно использовать .pid-файлы как замену файловым lock'ам
Код: Выделить всё
#! /bin/sh
# crontab(5) example:
# */10 * * * * root block routine rsync foo dest::
name=${1:?usage: ${0##*/} name command}
pidfile=/tmp/$name.pid
shift
read 2>/dev/null <$pidfile pid
# launch command if another instance isn't alive anymore
if ! ps -p $pid >&- 2>&-; then
eval "$@" &
echo >$pidfile $!
fi
Код: Выделить всё
$ block
usage: block name command
$ block yesflood yes \>/dev/null
$ ps -lp$(pgrep yes)
UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND
1001 29651 29650 0 118 0 4748 796 - R 6 0:59.63 yes
$ block yesflood yes \>/dev/null
UID PID PPID CPU PRI NI VSZ RSS MWCHAN STAT TT TIME COMMAND
1001 29651 29650 0 118 0 4748 796 - R 6 1:18.68 yes
$ cat /tmp/yesflood.pid
29650
-
- проходил мимо
Re: Как решить задачу-не запускать лишний процеcс.
Посмотрел как реализован запуск системных скриптов, решил остановиться на start-stop-daemon. Единственный вопрос: как прописать параметры (пути и ключи, после --exec $DAEMON) rsync в этом скрипте или сослаться на файл конфигурации, где они будут прописанны?
Код: Выделить всё
DAEMON=/usr/bin/rsync
start-stop-daemon --start --oknodo --quiet --pidfile $PIDFILE --make-pidfile --background --exec $DAEMON > /dev/null