LINUX.ORG.RU

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

 , , ,


0

1

имеется арч, i3wm.

нужно: что бы при выключении или перезагрузке корректно завершались программы, запущенные в юзерспейсе.

я так понимаю,

poweroff -h now
и
poweroff -r now
данного действия не имеют

★★

Ответ на: комментарий от legolegs

Так и есть. Потому что их наркоманы конченые пишут, которые о языке С вообще не слыхали никогда. И о грамотном распределении ресурсов...

Каждого этого урода надо приговорить к написанию браузера под STM32F407. Как напишет, пусть выдумывает уже для amd64!

anonymous
()
Ответ на: комментарий от legolegs

ок, а можно поправить интервал времени между их вызывом???

safocl ★★
() автор топика
Ответ на: комментарий от legolegs

и кстати, я как понимаю, killall -2 енто SIGINT??? енто чо получается при завершении работы он ваще не вызывается к запущенным приложениям???

safocl ★★
() автор топика
Ответ на: комментарий от bodqhrohro_official

Если пришёл SIGTERM — это признак какого-то аврала.

Неправильно. В книге Linux Programming Interface написано следующее про SIGTERM:

SIGTERM This is the standard signal used for terminating a process and is the default signal sent by the kill and killall commands. [...] A well-designed application will have a handler for SIGTERM that causes the application to exit gracefully, cleaning up temporary files and releasing other resources beforehand.

Так что Chromium писали криворукие, не знающие, как обрабатывать SIGTERM.

rupert ★★★★★
()

при выключении или перезагрузке корректно завершались программы

я скрипт завершения накатал (Openbox):

if [ -x "/usr/bin/deadbeef" ]; then
ddb=$(pgrep -f "deadbeef")
 if [ -n "$ddb" ]; then
	ddb_np=$(deadbeef --nowplaying %e)
	sleep 1
	if [ "$ddb_np" != "$(deadbeef --nowplaying %e)" ]; then	
	 deadbeef --pause && deadbeef --quit
	else
	 deadbeef --quit
	fi
 fi
fi

X="qbittorrent smplayer gajim urxvt gvim "; for x in $X ; do wmctrl -c $x ; done

if [ -n "$(pgrep -f "clementine")" ]; then clementine -s && sleep 2s && wmctrl -c Clementine; fi

if [ -n "$(pgrep -f "hrom")" ]; then 
 for hrom in `wmctrl -l | grep Chromium | awk {'print $1'}` ; do sleep 1s && wmctrl -c Chromium ; done
fi

[ "`wmctrl -l | grep "Mozilla F"`" ] && wmctrl -c firefox

sleep 3 && dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit \
 /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

как-то так

NK ★★★★★
()
Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от bodqhrohro_official

Аргумент проигнорировали Вы, а слился я?

Ты так и не привел аргументов. Если ты посмотришь в сырцы любого более-менее живого демона, ты увидишь обработку SIGTERM именно в том ключе, в каком тебе все рассказывают.

kirk_johnson ★☆
()
Ответ на: комментарий от rupert

Проводим аналогию с катком. Можно стабильно ехать по катку, можно упасть, а можно доехать до скамейки и снять коньки. SIGINT — это съехать с катка, полностью завершив все делишки, спросив пользователя, надо ли что-то сохранить, или вообще послать: «маам, ну мааам, я ещё не накатался», и т. п. SIGTERM — это падение на лёд, желательно уметь так шмякнуться, чтоб ничего не переломать — почистить ресурсы, посбрасывать кэши, которые успеются, чего гарантированно не будет при SIGKILL (падение от потери сознания). Вот только зачем приравнивать падение на лёд к уходу с катка? Это совсем разные вещи.

bodqhrohro_official
()
Ответ на: комментарий от kirk_johnson

Так аргумент о том и был, что наличие обработки нештатных ситуаций в коде не делает их не нештатными. Наоборот, код, который не обрабатывает нештатные ситуации — говнокод. Что Вы пытаетесь этим доказать? Покажите хотя бы юзкейс, при котором демоны в норме надо гасить, а не при отключениях питания, обновлениях, объедании памятью или ещё какой нештатной чухне.

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

Так аргумент о том и был, что наличие обработки нештатных ситуаций в коде не делает их не нештатными. Наоборот, код, который не обрабатывает нештатные ситуации — говнокод. Что Вы пытаетесь этим доказать? Покажите хотя бы юзкейс, при котором демоны в норме надо гасить, а не при отключениях питания, обновлениях, объедании памятью или ещё какой нештатной чухне.

Эмм... С каких пор остановка сервиса стала нештатной ситуацией? :D Не говоря уже о том, что изрядная доля софта не умеет перечитывать свой конфиг, и требуется полный рестарт.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от bodqhrohro_official

Вы так говорите, будто правка конфига — это штатная ситуация.

Ну давай определим термины. Что в твоем понимании штатная ситуация?

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Выполняющаяся в рамках возложенных на машину задач. Администрирование к таковым не относится, это средство обеспечения выполнения задач. Правят конфиги ради правки конфигов только красноглазые админы локалхоста.

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

А можно шваброй шнур из розетки выдернуть. Мою, где хочу, законом не запрещено!

Давай не будем впадать в истерику. Допустим, у меня есть сервис dhcpcd (на ляптопе). Запускается он тогда, когда мне нужен доступ в сеть. И останавливается, когда не нужен. А теперь рассказывай, где тут нештатная ситуация.

kirk_johnson ★☆
()
Ответ на: комментарий от bodqhrohro_official

Выполняющаяся в рамках возложенных на машину задач. Администрирование к таковым не относится, это средство обеспечения выполнения задач. Правят конфиги ради правки конфигов только красноглазые админы локалхоста.

Пусконаладка и отладка — часть администрирования. Ты не знал?

kirk_johnson ★☆
()
Ответ на: комментарий от bodqhrohro_official

Это экономия ресурсов а-ля Spoofing.

Причем здесь экономия ресурсов, прости господи? Он запускается, когда запускается openvpn (который тоже не всегда запущен). Потому что без запущенного openvpn он бесполезен, потому что нет интерфейса :)

kirk_johnson ★☆
()
Ответ на: комментарий от bodqhrohro_official

И кому он мешает?

Он никому не мешает, он просто работать не может без интерфейса. Не хочешь dhcpcd обсуждать? Ну давай openvpn пообсуждаем. Какие к нему претензии 8)

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 2)
Ответ на: комментарий от kirk_johnson

И как из этого следует, что его нужно убить из других побуждений, кроме как экономии ресурсов? Будет себе спокойно ждать, пока интерфейс опять не появится.

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

И как из этого следует, что его нужно убить из других побуждений, кроме как экономии ресурсов? Будет себе спокойно ждать, пока интерфейс опять не появится.

А если он *ещё* не появился? 8)

Давай, рассказывай, чем тебе OpenVPN в качестве сервиса не нравится.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

Какие к нему претензии

Претензии к прокладке между стулом и монитором, которая постановила его грохать, когда не нужен, причём варварским способом.

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

Претензии к прокладке между стулом и монитором, которая постановила его грохать, когда не нужен, причём варварским способом.

Ну а как я тебе запущу openvpn, когда у меня интернета нет?

kirk_johnson ★☆
()
Ответ на: комментарий от bodqhrohro_official

аа так я думал просто чо енто в каком то дистре стандартная фича из коробки

safocl ★★
() автор топика
Ответ на: комментарий от kirk_johnson

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

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

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

Если мне не изменяет память, то он после такого просто падает.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Чтобы запустить, надо сначала остановить. А зачем останавливать? Если дело происходит при старте, то обнаруживается нештатная для сервиса ситуация «а-а-а, интернета нет» и он корректно не запустится.

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

Чтобы запустить, надо сначала остановить. А зачем останавливать? Если дело происходит при старте, то обнаруживается нештатная для сервиса ситуация «а-а-а, интернета нет» и он корректно не запустится.

Она штатная. Нет интернета. На ляптопе это вполне обычное дело 8)

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

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

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

Это для пользователя она может быть штатной, потому что он нищеспуфинг.

Ты никогда не сидел в самолете с ляптопом? 8)

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

Тебя волки воспитывали? Система под нужды пользователя, а не пользователь под нужды системы, лол.

kirk_johnson ★☆
()
Ответ на: комментарий от safocl

запускается с пустой вкладкой

это не проблемы системы, шлющей ему корректный сигнал, это проблемы хромиума.

Скорее всего у него есть настройка, которая говорит показывать ли пустую вкладку или молча восстанавливать то, что было до SIGTERM.

sergej ★★★★★
()
Ответ на: комментарий от sergej

Не совсем. Он различает Ctrl+Q и SIGTERM. Последний он считает падением, почему-то 8)

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от bodqhrohro_official

ну у него есть листинг открытых окон, может ли он его сам парсить, допустим что бы в цикл for запихнуть закрывание всех ентих окон?

safocl ★★
() автор топика
Ответ на: комментарий от kirk_johnson

Ты никогда не сидел в самолете с ляптопом?

В нормальных самолётах уже инет есть.

Система под нужды пользователя, а не пользователь под нужды системы, лол

Именно. Почему пользователь должен пердолиться с удавом и прописывать автогашение сервисов? Это, по сути, то же самое, что васянские сборочки винды с отключёнными сервисами, чтоб она быстрее работала на нищежелезе. Белые люди просто покупают мощное железо и ни о чём не парятся.

bodqhrohro_official
()
Ответ на: комментарий от bodqhrohro_official

В нормальных самолётах уже инет есть.

Во-первых, плохой, а во-вторых я могу тебе озвучить цены, если хочешь.

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

Не знаю. Зачем?

Это, по сути, то же самое, что васянские сборочки винды с отключёнными сервисами, чтоб она быстрее работала на нищежелезе. Белые люди просто покупают мощное железо и ни о чём не парятся.

Ты опять все сваливаешь в экономию ресурсов, хотя речь совершенно о другом 8)

kirk_johnson ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.