[РЕШЕНО]Как перезагружаться и выключать систему, что бы нормально завершались процессы?

Velesich
Я думаю что виноват в этом systemd, точнее, где-то в его базе данных что-то заклинило.
ты ваще пробывал как я сказал делать?
Aivar
safocl, я тут на досуге полистал man wmctrl: он может интерпретировать id окна как его имя, т.е. можно упростить:
взять id окна:
wmctrl -l | cut -d \  -f 1
закрыть:
wmctrl -ic $i
На счет трея...
Запущенный skype имеет две "ипостаси": клиент в трее и окно, которое видно если кликнуть по иконке. Второе wmctrl -c закрывает (вернее, сворачивает в трей), первое вообще закрыть не может. Убить можно, но это же не наш метод. Дальше разбираться пока лень.
да енто понятно, так то мне изначально надо было завершать корректно только хромиум))) сча енто все реализуется нормально, попутно закрываются все окна (которых у меня много ибо у меня i3wm и открытые приложения во многих вкладках)
vasek
Интересно ....... и чем же killall лучше/отличается от shutdown ....???
тем чо можно послать сигнал "-2" или он же SIGINT и прога завершится обычным путем
safocl
тем чо можно послать сигнал "-2" или он же SIGINT и прога завершится обычным путем
Причем тут SIGINT ??? ........ это не ответ ...
Ошибки не исчезают с опытом - они просто умнеют
vasek
Причем тут SIGINT ??? ........ это не ответ ...
хмм... ну наверна чо оно не равно shutdown...
safocl
хмм... ну наверна чо оно не равно shutdown...
К выключеню компьютера SIGINT не имеет никакого отношения ...
Ошибки не исчезают с опытом - они просто умнеют
Повторюсь еще раз — во многих тайлинговых WM завершить процесс/приложение принято специальной комбинацией клавиш (например, MOD+SHIFT+C) или нажатием на крестик в GUI приложении (если предусмотрено) … при этом команда wmctrl не работает
И, как правило, все документы принято сохранить, а проблемные приложения завершить указанной выше комбинацией …. и время это вообщем то много не отнимает.
Дальнейшее выключение компьютера все вешают на разные команды выключения, но все они являются симлинками systemctl.
А если кто то и забыл завершить какое то приложение, то ничего страшного не произойдет ….. система выключения это целый комплекс операций, направленный на безопасное и надежное завершение работы системы …
UPD …. вот что пишет теория
Команда shutdown linux или любая другая не самостоятельно завершает работу системы и выключает компьютер. Она всего лишь передает запрос на выключение системе инициализации, а затем ядру. А уже они выполняют ряд сложных операций по подготовке и выключению компьютера. Если кратко, то вот они:
Завершение процессов пользователя
Сигнал SIGTERM всем процессам
Сигнал SIGKILL всем процессам
Монтирование файловых систем в режиме только для чтения
Подготовка внешних устройств к отключению
Блокировка пространства пользователя, чтобы гарантировать, что ни один код пользователя больше не будет запущен
Завершение работы и отключение питания большинства периферических устройств
Отключение питания компьютера
PS … лично я практически никогда не завершаю приложения, стартующие при запуске, а их у меня в основном 2 — терминал и файлменеджер … Те что открываю сам, стараюсь после использования завершить сразу же ......... но если и забываю, то все выключается без проблем ... ошибок никогда не наблюдал.
Ошибки не исчезают с опытом - они просто умнеют
vasek
killall лучше/отличается от shutdown ....???
Возможно, просто временем, остающимся до SIGKILL.
Эх, раз уж пошла такая пьянка, подрихтовал свой скрипт. Получилось вот что:
/usr/local/bin/.stop
#!/bin/bash
echo "Завершение всех приложений"

echo "Завершаем виртуальные машины с сохранением"
for VM in `VBoxManage list runningvms | cut -d " " -f 2`
do
  echo $VM
  VBoxManage controlvm $VM savestate
done

echo "Пытаемся закрыть все окна, кроме своего"
LIST=`wmctrl -l | cut -d " "  -f 1-1`
for i in $LIST; do
  id=$(("$i"))
  if [ $id != $WINDOWID ] ; then
    wmctrl -ic "$i"
  fi
done
sleep 1

echo "Оставшиеся окна вызываем на этот десктоп"
LIST=`wmctrl -l | cut -d " "  -f 1-1`
for i in $LIST; do
  id=$(("$i"))
  if [ $id != $WINDOWID ] ; then
    wmctrl -iR "$i"
  fi
done

echo "Ждём, пока окна не кончатся"
c='1'
while [ -n "$c" ]
do
  c=''
  LIST=`wmctrl -l | cut -d " "  -f 1-1`
  for i in $LIST; do
    id=$(("$i"))
    if [ $id != $WINDOWID ] ; then
      echo "ждём $i"
      c='1'
      sleep 1
    fi
  done
done

echo "Завершаем приложения из трея"
killall -TERM oosplash
killall -TERM seamonkey
killall -TERM qbittorrent
killall -TERM skype
killall -TERM pidgin
sleep 1
Употребление, в частности, такое:
/usr/local/bin/.shutdown
#!/bin/bash
.stop
sudo shutdown -hP now
Вызов из меню openbox:
<item icon="/usr/share/icons/gnome/16x16/actions/system-shutdown.png" label="Shutdown">
  <action name="Execute">
    <execute>urxvt -e .shutdown</execute>
  </action>
</item>
Если по ходу дела передумал выключаться - просто прибиваю окно urxvt, где всё это крутится.
akorop
Эх, раз уж пошла такая пьянка,
Не-не-не... )) И не зовите. Меня Aivar уже выгнал из этого топика. ))
Velesich
Были прописаны, не исполняются.
polkit установлен (а заодно и его кдешные приблуды)?
 
Зарегистрироваться или войдите чтобы оставить сообщение.