Система рубит скрипт после минуты исполнения

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

sptica
Сообщения: 126
ОС: Ubuntu

Система рубит скрипт после минуты исполнения

Сообщение sptica »

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

Есть скрипт, который при подключении определённых устройств по usb делает бэкап на эти устройства. Часть инфы для бэкапа берётся с локального компьютера, к которому подключается устройство, часть из сети. Система ubuntu 12.04. Вот часть скрипта:

Код: Выделить всё

# tc1.iso БЕРЁМ СКОПИРОВАННЫЙ НОЧЬЮ
cp /home/jf/tc*.iso $path

#примонтируем диреткорию с сервера
/usr/bin/sshfs reader@server:/home/backups $source

#скопируем нужную информацию
/bin/cp -t $path `find $source -type f -name "base*" | /usr/bin/sort --numeric-sort -r | /usr/bin/head -n 4`

# отмонтируем временную папку
/bin/umount $source

/bin/rmdir $source


Проблема заключается в том, что скрипт не доделывается до конца. Реально по факту копируется только tc*.iso (~15 Гб). Остальная часть не выполняется, т.е. монтирование по sshfs не происходит. Вот что /va/log/syslog говорит о скрипте:

Aug 8 15:18:23 Alex ntfs-3g[10419]: Mounted /dev/sde1 (Read-Write, label "", NTFS 3.1)
Aug 8 15:18:23 Alex ntfs-3g[10419]: Cmdline options: rw
Aug 8 15:18:23 Alex ntfs-3g[10419]: Mount options: rw,allow_other,nonempty,relatime,fsname=/dev/sde1,blkdev,blksize=4096
Aug 8 15:18:23 Alex ntfs-3g[10419]: Ownership and permissions disabled, configuration type 7
Aug 8 15:19:23 Alex udevd[10376]: timeout: killing '/home/jf/scripts/localmachine/day-copy-to-mobile-hd.sh plug' [10414]
Aug 8 15:19:23 Alex udevd[10376]: '/home/jf/scripts/localmachine/day-copy-to-mobile-hd.sh plug' [10414] terminated by signal 9 (Killed)


Получается что система рубанула скрипт после минуты исполнения. И вторая сточка, которая монтирует директорию с сервера по sshfs уже не исполняется. Можно ли сказать системе как-то чтобы она не рубила скрипт после минуты исполнения?
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Система рубит скрипт после минуты исполнения

Сообщение vr13 »

а скрипт запускается udev, я правильно понимаю?

если да, то - идеологически неверно: у udev имеется параметр udev_settle_timeout с умолчанием как раз 60 сек, менять этот параметр не рекомендуется. скорее всего вам нужно смотреть в сторону какого-нить file alteration monitor, например inotify-tools, incron итд, т.е - ловить событие монтирования и/или демонтирования
Спасибо сказали:
Аватара пользователя
Encore
Сообщения: 656
Статус: loading..............
ОС: Debian

Re: Система рубит скрипт после минуты исполнения

Сообщение Encore »

А nohup и & не помогут?
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Система рубит скрипт после минуты исполнения

Сообщение vr13 »

чем помогут? догадываясь об условиях такой автоматизации, мне кажется, что идея состоит в том, что при подключении removable media, ее нужно смонтировать, выполнить копирование и демонтировать
Спасибо сказали:
sptica
Сообщения: 126
ОС: Ubuntu

Re: Система рубит скрипт после минуты исполнения

Сообщение sptica »

vr13 писал(а):
08.08.2012 20:27
а скрипт запускается udev, я правильно понимаю?

если да, то - идеологически неверно: у udev имеется параметр udev_settle_timeout с умолчанием как раз 60 сек, менять этот параметр не рекомендуется. скорее всего вам нужно смотреть в сторону какого-нить file alteration monitor, например inotify-tools, incron итд, т.е - ловить событие монтирования и/или демонтирования


Спасибо :).

Да, udev использую. Можете подсказать почему идеологически не верно увеличивать таймаут с 60 сек? Мне это не логичным сейчас кажется.

Encore писал(а):
09.08.2012 10:52
А nohup и & не помогут?

Эээ, а при чём здесь оно? Я подключаю устройства по usb и udev автоматом запускает нужный мне скрипт. Смысл в том, чтобы не руками что то копировать на внешний жёсткий диск, а чтобы автоматом всё что нужно сливалось :).


vr13 писал(а):
09.08.2012 11:25
чем помогут? догадываясь об условиях такой автоматизации, мне кажется, что идея состоит в том, что при подключении removable media, ее нужно смонтировать, выполнить копирование и демонтировать


Да. именно так.
Спасибо сказали:
Kopilov
Сообщения: 958
ОС: [K]Ubuntu, Debian

Re: Система рубит скрипт после минуты исполнения

Сообщение Kopilov »

vr13 писал(а):
09.08.2012 11:25
чем помогут?

Наверно, тем, что будет обрублен только стартовый скрипт, а процесс копирования продолжится. Только для этого, вроде, disown надо добавить.
Спасибо сказали:
sptica
Сообщения: 126
ОС: Ubuntu

Re: Система рубит скрипт после минуты исполнения

Сообщение sptica »

Kopilov писал(а):
09.08.2012 17:15
vr13 писал(а):
09.08.2012 11:25
чем помогут?

Наверно, тем, что будет обрублен только стартовый скрипт, а процесс копирования продолжится. Только для этого, вроде, disown надо добавить.


Так процесс копирования и так заканчивается. Там проблема в том, что следующая строчка скрипта не исполняется, и следующая тоже, и следующая за следующей тоже :).
Спасибо сказали:
Аватара пользователя
Encore
Сообщения: 656
Статус: loading..............
ОС: Debian

Re: Система рубит скрипт после минуты исполнения

Сообщение Encore »

Судя по логам, udev обрубает ваш долго_исполняющийся_скрипт по таймауту, о котором говорил vr13
(как я понимаю, скрипт не успевает отработать в течение минуты, вернуть код возврата и убивается)
Идея была в том, чтобы создать новый скрипт типа:

Код: Выделить всё

#!/bin/bash
/usr/bin/nohup ваш_скрипт_.sh &

и его запускать с помощью udev (размонтирование вынести в скрипт)
Спасибо сказали:
sptica
Сообщения: 126
ОС: Ubuntu

Re: Система рубит скрипт после минуты исполнения

Сообщение sptica »

Encore писал(а):
09.08.2012 17:55
Судя по логам, udev обрубает ваш долго_исполняющийся_скрипт по таймауту, о котором говорил vr13
(как я понимаю, скрипт не успевает отработать в течение минуты, вернуть код возврата и убивается)
Идея была в том, чтобы создать новый скрипт типа:

Код: Выделить всё

#!/bin/bash
/usr/bin/nohup ваш_скрипт_.sh &

и его запускать с помощью udev (размонтирование вынести в скрипт)


Ага, спасибо. Идею понял, завтра потестю.
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Система рубит скрипт после минуты исполнения

Сообщение vr13 »

sptica писал(а):
09.08.2012 15:42
vr13 писал(а):
08.08.2012 20:27
а скрипт запускается udev, я правильно понимаю?

если да, то - идеологически неверно: у udev имеется параметр udev_settle_timeout с умолчанием как раз 60 сек, менять этот параметр не рекомендуется. скорее всего вам нужно смотреть в сторону какого-нить file alteration monitor, например inotify-tools, incron итд, т.е - ловить событие монтирования и/или демонтирования


Да, udev использую. Можете подсказать почему идеологически не верно увеличивать таймаут с 60 сек? Мне это не логичным сейчас кажется.

потому, что run+ в правилах udev предполагает короткие операции, связанные только с поддержкой устройства (просмотрите стандартные правила udev из /lib/udev/rules.d). на самом деле, даже монтирование в правилах udev не стоит использовать - мало ли, неконсистентная файловая система, сбойный диск итп. короче говоря, udev - это системный сервис, работа которого не должна быть видна. udev вообще изначально был сделан для динамической поддержки содержимого /dev, а udev_settle_timeout нужен для предотвращения зависаний, связанных с некорректной работой устройств

изначально советовалось такое: udev срабатывает на появление устройства и монтирует ваш диск, на этом его деятельность заканчивается. в системе запущен incron, который отслеживает состояние файловых систем. когда монтируется файловая система, incron получает об этом уведомление и запускает ваш скрипт. скрипт, в зависимости от того, тот-ли это диск появился в системе (содержимое, метка диска, какой-то еще признак), запускает копирование и по завершении оного - демонтирует/удаляет из конфигурации диск

сейчас думается, что и incron не совсем то: правильнее будет использовать службу udisks: она делает тоже самое, но на еще более прикладном уровне и главное - безопасно, т.к udisks передает команду на выполнение скрипта посредством dbus, который делает все в соответствии с прописанными правилами

все это говорится, не в потому что другими, обсуждаемыми тут способами автоматизацию бэкапа диска сделать нельзя, но так (udisks) лучше, т.к соответствует правилам, которые придумали разработчики соответствующих компонентов операционной системы
Спасибо сказали:
sptica
Сообщения: 126
ОС: Ubuntu

Re: Система рубит скрипт после минуты исполнения

Сообщение sptica »

vr13, спсаибо!
Спасибо сказали: