The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! mr_tee, 01-Окт-12, 16:55  [смотреть все]
Помогите пожалуйста разобраться, думаю что-то подобное должно использоваться при демонизации.

Собственно задача формулируется просто, есть bash скрипт, который как-то запускается.
Когда он запущен, то ФС где он находится отмонтировать нельзя.
Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС отмонтировать в самом скрипте?

Спасибо.

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! Doka, 18:34 , 01-Окт-12 (1)
    > Помогите пожалуйста разобраться, думаю что-то подобное должно использоваться при демонизации.
    > Собственно задача формулируется просто, есть bash скрипт, который как-то запускается.
    > Когда он запущен, то ФС где он находится отмонтировать нельзя.
    > Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
    > отмонтировать в самом скрипте?
    > Спасибо.

    а положить скрипт в корневую ФС?

    • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! mr_tee, 08:02 , 02-Окт-12 (2)
      >> Помогите пожалуйста разобраться, думаю что-то подобное должно использоваться при демонизации.
      >> Собственно задача формулируется просто, есть bash скрипт, который как-то запускается.
      >> Когда он запущен, то ФС где он находится отмонтировать нельзя.
      >> Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
      >> отмонтировать в самом скрипте?
      >> Спасибо.
      > а положить скрипт в корневую ФС?

      тогда и задачи не будет))

      на самом деле скрипт лежит на nfs, и изменяется централизованно в одном месте, nfs подключена на 100500 серверов) хочется, чтобы он запустился, отмонтировал nfs, пошушукал о своем личном, а потом примонтировал nfs

      • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! Doka, 08:36 , 02-Окт-12 (3)
        >>> Помогите пожалуйста разобраться, думаю что-то подобное должно использоваться при демонизации.
        >>> Собственно задача формулируется просто, есть bash скрипт, который как-то запускается.
        >>> Когда он запущен, то ФС где он находится отмонтировать нельзя.
        >>> Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
        >>> отмонтировать в самом скрипте?
        >>> Спасибо.
        >> а положить скрипт в корневую ФС?
        > тогда и задачи не будет))

        железная логика.
        а что мешает перед запуском скопировать его?


  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! XAnder, 09:01 , 02-Окт-12 (4)
    > Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
    > отмонтировать в самом скрипте?

    Можно попробовать сделать fork, после чего родительский процесс завершить и продолжать работу в дочернем. На Перле у меня в своё время прокатил такой способ (долгоиграющая программа запускалась с флешки, которую после запуска нужно было извлекать), может быть и на Шелле получится.

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! КуКу, 09:36 , 02-Окт-12 (5)
    Можно попробывать в скрипте при запуске монтировать tmpfs, туда копировать скрипт и крутить его в оперативке, ну а дальше подгонять под задачу и фантазию:)
  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! Andrey Mitrofanov, 15:31 , 02-Окт-12 (6)
    > Когда он запущен, то ФС где он находится отмонтировать нельзя.
    > Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
    > отмонтировать в самом скрипте?

    1. Закрыть все файлы, которые он держин на этой FS.
    1.1. Включая: сменить _текущую _директорию. `cd /`

    Л. См. lsof -p $PID

    > Спасибо.

    На здоровье.

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! pavlinux, 12:36 , 25-Окт-12 (8)
    > Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
    > отмонтировать в самом скрипте?

    Чтоб отпилить сук на котором сидишь, можно:

    Установить пилу с таймером и спрыгнуть. (at; kill -9 $$)
    Схватится за другой сук. (cp script.sh /tmp/; cd /tmp; sh /tmp/script.sh)
    Взять парашют (umount -f /nfs )

      

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! Аноним, 17:25 , 25-Окт-12 (9)
    > Помогите пожалуйста разобраться, думаю что-то подобное должно использоваться при демонизации.
    > Собственно задача формулируется просто, есть bash скрипт, который как-то запускается.
    > Когда он запущен, то ФС где он находится отмонтировать нельзя.
    > Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
    > отмонтировать в самом скрипте?
    > Спасибо.

    p   daemon                                            - turns other processes into daemons                          


    * sys-apps/daemonize
         Available versions:  1.6
         Homepage:            http://bmc.github.com/daemonize/
         Description:         Runs a command as an Unix daemon

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! Xaionaro, 08:27 , 26-Окт-12 (10)
    > Помогите пожалуйста разобраться, думаю что-то подобное должно использоваться при демонизации.
    > Собственно задача формулируется просто, есть bash скрипт, который как-то запускается.
    > Когда он запущен, то ФС где он находится отмонтировать нельзя.
    > Как внутри скрипта отстегнуться от ФС, где он находится, чтобы эту ФС
    > отмонтировать в самом скрипте?
    > Спасибо.

    Чем не устраивает "umount -l"?

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! a, 01:05 , 27-Окт-12 (11) +1
    Доброго времени!
    Наиболее очевидный способ использовать конвейер (именованный канал).
    Вам вероятно, вместо /bin/sh нужно будет использовать /bin/bash и исправить «как-то запускается» должным образом.

    # mkdir -v /mnt/tmpfs/
    mkdir: created directory `/mnt/tmpfs'
    # mount -t tmpfs -o size=1M tmpfs /mnt/tmpfs
    $ mount | grep /mnt/tmpfs
    tmpfs on /mnt/tmpfs type tmpfs (rw,size=1M)
    $ cat >/mnt/tmpfs/script.sh<<EOF
    #!/bin/sh
    while [ "$VAR" != "0" ]; do
        sleep 5;
        echo working...;
        date;
    done
    EOF
    $ chmod +x /mnt/tmpfs/script.sh
    $ /mnt/tmpfs/script.sh
    working...
    Sat Oct 27 00:00:00 YEKT 2012
    working...
    $ ps -C script.sh
      PID TTY          TIME CMD
    3561 pts/3    00:00:00 script.sh
    # umount /mnt/tmpfs
    umount: /mnt/tmpfs: device is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    $ kill 3561
    $ cat /mnt/tmpfs/script.sh | /bin/sh
    working...
    Sat Oct 27 00:00:00 YEKT 2012
    working...
    $ ps -C script.sh
      PID TTY          TIME CMD
    # umount /mnt/tmpfs
    $ mount | grep /mnt/tmpfs

    Всего наилучшего!

    http://ru.wikipedia.org/wiki/Конвейер_(UNIX)
    http://ru.wikipedia.org/wiki/Именованный_канал

  • Интересная задача, можно ли в скрипте отстегнуться от ФС, !*! mr_tee, 11:41 , 02-Ноя-12 (12)
    Всем большое спасибо.

    Способ запуска скрипта я не контролирую, так как этот скрипт автоматически запускается при выключении/перезапуске системы.

    Сделал через временный файл, вся фишка в последнем амперсанде:

    #!/bin/bash

    cat >/tmp/${0##*/}<<EOF
    #!/bin/bash

    counter=5
    while [ \$counter -gt 0 ]
    do
    if umount /config_sync; then
            
            echo Что-то полезное

            mount /config_sync
            break
    fi
            sleep 1
            counter=\$(( \$counter - 1 ))
    done
    EOF

    cd /
    /bin/bash /tmp/${0##*/} &




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру