Общие вопросы > Вопросы от новичков

как реализовать отмонтирование сфс при выходе из программы?

(1/2) > >>

Zloy_T:
Думаю уже который день над проблемой автомонтирования сфс. Допустим, имеем в дистро десятка три сфс, и хотим, чтобы при запуске прог, входящих в сфс, последний автоматически примонтировался. Эта часть задачи решаема легко.
Теперь вторая часть, более трудная: как реализовать отмонтирование аддона по выходу из приложения?

мысль первая, соорудить некий демон, который будет сканить список запущенных процессов раз в минуту, например, и при выгрузке нежного процесса отмонтировать соответствующий аддон.

мысль вторая, Алекс предлагал, привязать каким-то образом нажатие крестика в окне программы к отмонтированию сфс

С какой стороны подходить к решению этих задач? или, возможно, у кого то появится более простое решение?

Zloy_T:
http://www.cyberforum.ru/cpp-linux/thread21028.html

в винде я примерно процесс представляю, там достаточно вызвать прогу из батника с ключом  /wait

черт, в линуксе надо примерно то же самое

UPD вопрос № 1 возможно, решится с помощью http://manpages.ylsoftware.com/dokuwiki/man/debian/start-stop-daemon_8

Zloy_T:
или так http://linuxforum.ru/index.php?showtopic=92771 но убейте меня если я понимаю как составить скрипт

Zloy_T:
wait

Останавливает работу сценария до тех пор пока не будут завершены все фоновые задания или пока не будет завершено задание/процесс с указанным номером задания/PID процесса. Возвращает код завершения указанного задания/процесса. http://linuxland.itam.nsc.ru//misc/Shell/shell03/index.html#EXITSTATUSREF

Вы можете использовать команду wait для предотвращения преждевременного завершения сценария до того, как завершит работу фоновое задание.

Пример 11-23. Ожидание завершения процесса перед тем как продолжить работу
#!/bin/bash

ROOT_UID=0   # Только пользователь с $UID = 0 имеет привилегии root.
E_NOTROOT=65
E_NOPARAMS=66

if [ "$UID" -ne "$ROOT_UID" ]
then
  echo "Для запуска этого сценария вы должны обладать привилегиями root."
  exit $E_NOTROOT
fi

if [ -z "$1" ]
then
  echo "Порядок использования: `basename $0` имя-файла"
  exit $E_NOPARAMS
fi


echo "Обновляется база данных 'locate'..."
echo "Это может занять продолжительное время."
updatedb /usr &     # Должна запускаться с правами root.

wait
# В этом месте сценарий приостанавливает свою работу до тех пор, пока не отработает 'updatedb'.
# Желательно обновить базу данных перед тем как выполнить поиск файла.

locate $1

# В худшем случае, без команды wait, сценарий завершил бы свою работу до того,
# как завершила бы работу утилита 'updatedb',
# сделав из нее "осиротевший" процесс.

exit 0

Команда wait может принимать необязательный параметр -- номер задания/процесса, например, wait %1 или wait $PPID. См. таблицу идентификации заданий. http://linuxland.itam.nsc.ru//misc/Shell/shell03/index.html#JOBIDTABLE

Zloy_T:
или так как-то $ ps -ax -o "user comm pid" | grep -v root | sort | uniq -d -w 26

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии