Страница 1 из 1

Выключение компьютера по закрытию приложения

Добавлено: 27 окт 2017, 22:52
WarMan
Всем привет!
Каким образом можно организовать выключение компьютера при закрытии приложения (x2go клиент).
Подскажите, кто-нибудь, пожалуйста! Весь интернет облазил, кажется. Ничего подобного не нашел.
Очень надо!

Выключение компьютера по закрытию приложения

Добавлено: 28 окт 2017, 14:00
igorpskov
Как вариант - написать простой скрипт из 2-х строчек.

Код: Выделить всё

x2goclient
shutdown -h now
Сделать выполняемым.
Заменить в файле .desktop для запуска клиента значение параметра Exec с x2goclient на полный путь к скрипту.

Выключение компьютера по закрытию приложения

Добавлено: 29 окт 2017, 08:33
WarMan
igorpskov, ух-ты, спасибо! попробую.

Выключение компьютера по закрытию приложения

Добавлено: 29 окт 2017, 09:12
WarMan
igorpskov, Благодарю, Уважаемый! Ваш вариант работает! Очень простой рабочий вариант!
На форуме ubuntu.ru вот что посоветовали:
AnrDaemon писал(а): google:kiosk+mode

Выключение компьютера по закрытию приложения

Добавлено: 29 окт 2017, 09:21
WarMan
igorpskov, всё работает. только логику скрипта не понимаю. я вообще совсем начинающий в никсах.
x2goclient - запускает приложение. это понятно.
shutdown -h now - это команда выключения компьютера. Вроде тоже понятно.
Но как именно работает механизм, как система понимает что именно после закрытия приложения нужно выключать пк?
Или так: сперва одна команда, после завершения -> следующая...? Очередь из команд.
Поможете понять?
И еще shutdown -h now и poweroff - есть разница?

Выключение компьютера по закрытию приложения

Добавлено: 30 окт 2017, 02:50
igorpskov
сперва одна команда, после завершения -> следующая...? Очередь из команд.
Да. Так работают все линейные алгоритмы.
В никсах, не в никсах - без разницы.
как система понимает что именно после закрытия приложения нужно выключать пк?
Поможете понять?
Конечно, нет ничего плохого в изучении недр системы, но лезть внутрь в данном конкретном случае вроде как и не надо.
Для простого администрирования может не понадобиться.
Вот честно, до вашего вопроса мало задумывался, скрипты работают и это всё что от них требуется.
Нужно будет - углублюсь внутрь.
shutdown -h now и poweroff - есть разница?

Код: Выделить всё

halt, poweroff, reboot
These are legacy commands available for compatibility only.
Т.е. по-русски poweroff "Устар."
Плюс злые языки пишут, что halt/poweroff тупо вырубает питание компьютера и соответственно может повредить систему.
Пока не проверял, пользуюсь shutdown.

Выключение компьютера по закрытию приложения

Добавлено: 23 май 2018, 14:57
borisbritva
А у меня не работает, что не так делаю?
Из консоли если запускаю скрипт работает, по ярлыку нет

Выключение компьютера по закрытию приложения

Добавлено: 23 май 2018, 16:23
adventurer
Какой текст ярлыка?

Выключение компьютера по закрытию приложения

Добавлено: 03 июн 2018, 16:20
ВикторА
WarMan писал(а):
29 окт 2017, 09:21
igorpskov, всё работает. только логику скрипта не понимаю. я вообще совсем начинающий в никсах.
x2goclient - запускает приложение. это понятно.
shutdown -h now - это команда выключения компьютера. Вроде тоже понятно.
Но как именно работает механизм, как система понимает что именно после закрытия приложения нужно выключать пк?
Или так: сперва одна команда, после завершения -> следующая...? Очередь из команд.
Поможете понять?
Пусть меня гуру поправят, но это тот случай, когда скрипт работает, хотя и написан с ошибками. Но он может и не срабатывать...У меня не установлено такое приложение, но из описанного здесь я понимаю, что в файле .desktop клиента имеется строка Exec..., отвечающая за выключение клиента. В нее дописан скрипт, который выключает и компьютер.

Этот скрипт составлен с ошибкой: по логике, первая строка-название клиента- должна запускать этот клиент, а не останавливать. А вторая строка выключает компьютер. В данном случае получается, что Exec... завершает работу компьютера, затем (если путь к скрипту дописан, а не заменяет содержание строки) запускается скрипт, который снова запускает клиент и завершает работу компьютера.

По синтаксису, также, между командами должно присутствовать либо ";"-после завершения правильного или нет команды начинается выполнение второй команды, или же "&&"- вторая команда начинает выполнение только после успешного завершения предыдущей, чего нет в скрипте...

Попробуйте:
из скрипта убрать название клиента и проверить все при наличии в нем только shutdown -h now
или строку с Exec заменить на Exec=shutdown -h now и тоже поэксперементировать (хотя этот вариант странно выглядит..))).

О работе механизма команд в скриптах лучше погуглите в интернете по вопросу "объединение команд, выполнение нескольких команд...bash shell ", ибо тема обширная, хотя простая для понимания...А вот составление самих команд-это сложнее. Смотрите программирование в консоли линукса.