Re: [freebsd] Повторный запуск скрипта в cron
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
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
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
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
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
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
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
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
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
Здравствуйте. Есть задача в 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