Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Yuri Kurenkov

25.01.2017 15:49, Alexey Krylov пишет:

Здравствуйте.

Есть задача в cron'e rsync'ом делать зеркало раз в минуту
Как правильно обезопаситься от повторного запуска скрипта?

нашел https://habrahabr.ru/post/114622/
но в портах нет lockrun

flock кошерно использовать?



Есть вариантиспользовать lock(1) для защиты от параллельных запусков, а можно 
иначе. В crontab(5) для запуска скрипта используешь @reboot, а в самом скрипте 
с помощью at(1) запускаешь самого себя с нужным тебе интервалом.


--
Yuri V. Kurenkov
Mobile: +7-928-1725845
Skype: yuri.kurenkov
ICQ UIN: 21666578
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Eugene Grosbein
On Wed, Jan 25, 2017 at 11:01:47PM +0200, George L. Yermulnik wrote:

> > rm $LOCK
> > exit 0
>   ^^Зачем эта строка?

Ну, можно было написать rm $LOCK || true, но это менее читабельно.
Чтобы гарантировать нулевой код возврата в итоге, если мы дошли
до этого места при выполнении - иногда это важно.
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Vladislav V. Prodan
25 января 2017 г., 23:01 пользователь George L. Yermulnik 
написал:

> Hello!
>
> On Wed, 25 Jan 2017 at 20:56:24 (+0200), Andrey Marshalenko wrote:
>
> > Пример бакапа домашних папок пользователей по времени (типа ??Машина
> времени??):
>
> > # cat rbackup.sh
>


>  rm $LOCK
>
> > exit 0
>   ^^Зачем эта строка?
>
>
Тссс.
Пусть учится писать скрипты.
Там еще минимум 3 вопроса к скрипту :)

-- 
 Vladislav V. Prodan
 System & Network Administrator
 support.od.ua
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность George L. Yermulnik
Hello!

On Wed, 25 Jan 2017 at 20:56:24 (+0200), Andrey Marshalenko wrote:

> Можно реализовать через файл блокировки (в примере ниже переменная LOCK). Т. 
> е. при запуске скрипта создается файл, который не удаляется если задание не 
> завершено (например первый бакап длится больше заданного интервала вркмкни).

> Пример бакапа домашних папок пользователей по времени (типа ??Машина 
> времени??):

> # cat rbackup.sh 
> =
> #!/bin/sh
> date=`date "+%Y-%m-%d-%H%M%S"`
> rsync=/usr/local/bin/rsync
> LOCK=/var/spool/lock/rbackup.lock
> LOG=/var/log/rbackup.log

> SRC=/home/
> TARGET=/var/data/backups/homes/$date
> P_TARGET=/var/data/backups/homes/Latest

> if [ -f $LOCK ]; then
> exit 0
> fi

А тут, ой, SIGKILL - и скрипт навсегда `exit 0' =)

> touch $LOCK
> date >> $LOG
> mkdir -p $TARGET

> $rsync -auvAHX --link-dest=$P_TARGET $SRC $TARGET >>$LOG 2>&1

> rm -f $P_TARGET
> ln -s $TARGET $P_TARGET
> rm $LOCK

> exit 0
  ^^Зачем эта строка?

-- 
George L. Yermulnik
[YZ-RIPE]
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность George L. Yermulnik
Hello!

On Wed, 25 Jan 2017 at 21:25:42 (+0200), Valentin Nechayev wrote:

> Для работы с FS, где flock() невозможен (старые NFS и т.п.) - есть
> готовая тулза shlock (изначально - из комплекта cnews). Она не может
> обеспечить идеальность, но пытается проверять все реально
> отрабатываемые случаи.

А ещё есть lockfile из пакета procmail. Если уже о сторонних утилитах =)

-- 
George L. Yermulnik
[YZ-RIPE]
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] spamassasin

2017-01-25 Пенетрантность Anton Yuzhaninov

On 01/24/17 08:14, Taras Heychenko wrote:

Машина у меня конечно слабенькая, но на предыдущем винче с этим же процессором 
и памятью spamd
стартовал и вполне себе работал.


Рекомендую посмотреть в сторону rspamd. Немного сложнее в настройке, но 
ресурсов кушает на порядок меньше чем SA.

___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Valentin Nechayev
 Wed, Jan 25, 2017 at 20:56:24, marshall wrote about "Re: [freebsd] Повторный 
запуск скрипта в cron": 

> Можно реализовать через файл блокировки (в примере ниже переменная LOCK). Т. 
> е. при запуске скрипта создается файл, который не удаляется если задание не 
> завершено (например первый бакап длится больше заданного интервала вркмкни).

lockf тем и хороша, что залипания у неё нет. Если процесс умер,
ядерный flock снимается сам. Ну и для крона крайне вкусен таймаут
(если запускаешь раз в минуту - как раз ставь таймаут в минуту).

Для работы с FS, где flock() невозможен (старые NFS и т.п.) - есть
готовая тулза shlock (изначально - из комплекта cnews). Она не может
обеспечить идеальность, но пытается проверять все реально
отрабатываемые случаи.


-netch-
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Anton Sayetsky
25 января 2017 г., 20:56 пользователь Andrey Marshalenko
 написал:
> Hi.
>
> Можно реализовать через файл блокировки (в примере ниже переменная LOCK). Т.
> е. при запуске скрипта создается файл, который не удаляется если задание не
> завершено (например первый бакап длится больше заданного интервала вркмкни).
>
> Пример бакапа домашних папок пользователей по времени (типа «Машина
> времени»):
>
> # cat rbackup.sh
> =
> #!/bin/sh
> date=`date "+%Y-%m-%d-%H%M%S"`
> rsync=/usr/local/bin/rsync
> LOCK=/var/spool/lock/rbackup.lock
> LOG=/var/log/rbackup.log
>
> SRC=/home/
> TARGET=/var/data/backups/homes/$date
> P_TARGET=/var/data/backups/homes/Latest
>
> if [ -f $LOCK ]; then
> exit 0
> fi
>
> touch $LOCK
> date >> $LOG
> mkdir -p $TARGET
>
> $rsync -auvAHX --link-dest=$P_TARGET $SRC $TARGET >>$LOG 2>&1
>
> rm -f $P_TARGET
> ln -s $TARGET $P_TARGET
> rm $LOCK
>
> exit 0
> =
Не учитывается ситуация залипания. Уж лучше как-то так, ежели костылить:
if [ -f "${script_pidfile}" ] && [ -s "${script_pidfile}" ]; then
slog_i "pid found, checking for another running instance"
pgrep -F "${script_pidfile}" >/dev/null 2>&1
if [ "$?" -eq 0 ]; then
running_pid=`cat "${script_pidfile}"`
slog_w "already running at pid ${running_pid}"
exit 2
fi
fi
___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


Re: [freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Andrey Marshalenko
Hi.

Можно реализовать через файл блокировки (в примере ниже переменная LOCK). Т. е. 
при запуске скрипта создается файл, который не удаляется если задание не 
завершено (например первый бакап длится больше заданного интервала вркмкни).

Пример бакапа домашних папок пользователей по времени (типа «Машина времени»):

# cat rbackup.sh 
=
#!/bin/sh
date=`date "+%Y-%m-%d-%H%M%S"`
rsync=/usr/local/bin/rsync
LOCK=/var/spool/lock/rbackup.lock
LOG=/var/log/rbackup.log

SRC=/home/
TARGET=/var/data/backups/homes/$date
P_TARGET=/var/data/backups/homes/Latest

if [ -f $LOCK ]; then
exit 0
fi

touch $LOCK
date >> $LOG
mkdir -p $TARGET

$rsync -auvAHX --link-dest=$P_TARGET $SRC $TARGET >>$LOG 2>&1

rm -f $P_TARGET
ln -s $TARGET $P_TARGET
rm $LOCK

exit 0
=


__
With best regards,
Andrey Marshalenko.
System & Network Administrator
AM1000-UANIC
mailto: marsh...@marshall.kiev.ua
tel (mob) +380676574197
Skype: marshalenko
JabberID: marsh...@marshall.kiev.ua

> 25 янв. 2017 г., в 14:52, Valentin Nechayev  написал(а):
> 
> hi,
> 
> Wed, Jan 25, 2017 at 14:49:46, krylov wrote about "[freebsd] Повторный запуск 
> скрипта в cron": 
> 
>> Есть задача в cron'e rsync'ом делать зеркало раз в минуту
>> Как правильно обезопаситься от повторного запуска скрипта?
>> 
>> нашел https://habrahabr.ru/post/114622/
>> но в портах нет lockrun
>> 
>> flock кошерно использовать?
> 
> Фрёвая тулза зовётся lockf, и таки да, кошерно и прельстиво.
> 
> 
> -netch-
> ___
> freebsd mailing list
> freebsd@uafug.org.ua
> http://mailman.uafug.org.ua/mailman/listinfo/freebsd

___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd


[freebsd] Повторный запуск скрипта в cron

2017-01-25 Пенетрантность Alexey Krylov
Здравствуйте.

Есть задача в cron'e rsync'ом делать зеркало раз в минуту
Как правильно обезопаситься от повторного запуска скрипта?

нашел https://habrahabr.ru/post/114622/
но в портах нет lockrun

flock кошерно использовать?

-
С уважением,
Крылов Алексей
skype: krylov_alexey

___
freebsd mailing list
freebsd@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd