The OpenNET Project / Index page

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

Как в Ubuntu выполнить действие или остановить программу перед переходом в спящий режим
Иногда следует перед выполнение перехода в спящий или ждущий режим выполнить
какие-то действия, например, дождаться завершения какого-то процесса или
принудительно завершить его.

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


В качестве решения проблемы можно создать простой скрипт, который на начальной
стадии перехода в спящий режим дождется завершения выполнения программы.
Создаем /etc/pm/sleep.d/01_backintime:


   #!/bin/bash
   # Arve Seljebu, may 2010

   # check if script parameter is hibernate or suspend
   case "${1}" in
     hibernate|suspend)
       # run loop as long as program /usr/bin/backintime is running
       while pgrep -f "/usr/bin/backintime "; do
         sleep 5
       done
     ;;
   esac

   # always exit cleanly
   exit 0


Другой проблемой может стать необходимость отмонтирования вручную подключенных
шифрованных или сетевых ФС, например, для отмонтирования encfs-разделов можно
использовать скрипт /etc/pm/sleep.d/20_unmount_storage:

   #!/bin/bash
   #
   # Script which unmounts network storage before suspend and  hibernate.
   #
   # Arve Seljebu. May 2011
 
   PATH=/sbin:/usr/sbin:/bin:/usr/bin
 
   # Which mountpoints we want to umount
   MOUNTPOINT[0]=/media/storage/encfs
   MOUNTPOINT[1]=/media/storage
   #MOUNTPOINT[2]=/media/storage2
   # User to run from (user who mounted them)
   USER=username
 
   if [ ! -x /bin/mountpoint ]; then
     echo "Did not find executable /bin/mounpoint"
     exit 0
   fi
 
   case "${1}" in
     hibernate|suspend)
       for i in "${MOUNTPOINT[@]}"
       do
       # check if the mountpoint is mounted
       echo "Checking if mountpoint $i is mounted..."
       sudo -u $USER mountpoint $i > /dev/null
       if [ "$?" == "0" ]; then
         # try to umount with fusermount, if not succsessful, try    with umount
         echo "Mountpoint $i mounted, umounting..."
         fusermount -u $i
         if [ "$?" != "0" ];
         then umount $i
         fi
       fi
     done
     echo "Done..."
     exit 0
     ;;
     resume|thaw)
     # nothing
     ;;
   esac


По аналогии можно создать скрипты и для обработки других ситуаций.
 
10.06.2011 , Источник: http://ubuntuforums.org/showthread....
Ключи: suspend, ubuntu, boot, script / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Загрузка, однопользовательский режим

Обсуждение [ RSS ]
 
  • 1.1, Анонимус_б6, 10:09, 10/06/2011 [ответить] [смотреть все]
  • +/
    где в баш-скриптах хоть что-то убунту специфичное?
     
  • 1.2, zomg, 11:45, 10/06/2011 [ответить] [смотреть все]
  • +/
    Пакеты pm-utils, coreutils и bash отныне работают только в убунту.
    s,Ubuntu,GNU/Linux, же!
     
  • 1.3, Вася, 15:03, 10/06/2011 [ответить] [смотреть все]
  • +/
    pidgin как заофлайнить через dbus?
     
     
  • 2.6, nub0, 12:48, 11/06/2011 [^] [ответить] [смотреть все]
  • +/
    purple-remote setstatus?status=offline
     
  • 1.4, Аноним, 15:16, 10/06/2011 [ответить] [смотреть все]
  • +/
    Извиняюсь, а апстарт случайно не эмитит никаких эвентов при таких событиях Он б... весь текст скрыт [показать]
     
  • 1.5, nub0, 12:46, 11/06/2011 [ответить] [смотреть все]  
  • +/
    Забыли сделать для созданного скрипта sudo chmod +x
    Не сработает же!
     
  • 1.7, Аноним, 00:08, 16/06/2011 [ответить] [смотреть все]  
  • +/
    Ужос, так и появляются Шиндошс Пользователь же сказал - спать Значит спать ... весь текст скрыт [показать]
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor