Як змінити дію відключення кнопки живлення


2

Я використовую Mageia ver 4 Linux як сервер, без запущеного X та без входу користувачів під час звичайної роботи. Цей ПК має спеціальну карту для вимірювання та контролю інших пристроїв. Ця карта має свій власний SH4 Linux на борту, і її потрібно попередньо вимкнути, перш ніж вимкнути ПК.

Існує набір команд, які постачає постачальник карт, і вони працюють належним чином. Щоб вимкнути карту, необхідно виконати її /usr/sbin/io_card stop, дочекавшись належного відключення картки, а потім виконати "звичайне" відключення ПК.

Я написав спеціальний сценарій відключення, і він працює належним чином. Але проблема полягає в тому, що коли я натискаю кнопку "Power" на ПК, вона виконує "звичайне" відключення ПК замість мого сценарію.

Я намагаюся змінити / etc / acpi / події / power та системні сценарії, щоб включити власний сценарій відключення, але це не працює. На даний момент / etc / acpi / події / файл живлення містить лише запис:

action=/home/serwer/Pobrane/shut

де "shut" - це мій сценарій вимкнення, добре працює під час роботи вручну. Тож як я можу змінити дію відключення за замовчуванням, пов’язану з натисканням кнопки "живлення"?


Будь ласка, поясніть, як саме ви намагалися змінити `/ etc / acpi / events / power`.
terdon

Файл / etc / acpi / події / живлення містить лише запис дій = / home / serwer / Pobrane / shut, де "shut" - це мій сценарій завершення роботи, добре працює під час роботи вручну.
mackowiakp

Ви спробували мою відповідь? Крім того, відредагуйте своє питання, щоб додати нову інформацію, це легко пропустити і важко прочитати в коментарях.
тердон

Відповіді:


1

Я не можу гарантувати, що це буде працювати над Mageia, але саме так я отримав аналогічну роботу над моїм Debian.

Існує сценарій (на моїй машині, це /etc/acpi/powerbtn-acpi-support.sh), який працює за замовчуванням при натисканні кнопки живлення. Відредагуйте цей скрипт і знайдіть цей розділ:

if [ -x /etc/acpi/powerbtn.sh ] ; then
    # Compatibility with old config script from acpid package
    /etc/acpi/powerbtn.sh
elif [ -x /etc/acpi/powerbtn.sh.dpkg-bak ] ; then
        # Compatibility with old config script from acpid package
    # which is still around because it was changed by the admin
        /etc/acpi/powerbtn.sh.dpkg-bak
else
    # Normal handling.
    /sbin/shutdown -h -P now "Power button pressed"

fi

Змініть, /sbin/shutdown -h -P now "Power button pressed"щоб замість цього вказати на ваш скрипт, збережіть файл, і тепер його слід запускати щоразу, коли ви натискаєте кнопку живлення.


Піддір. Травня / тощо / acpi містить два dir: "дія" та "події". Тож твій дещо відрізняється від твого
mackowiakp

Гаразд, я відредагував своє повідомлення. У цей момент я фактично використовую те саме рішення, що ви описали у своєму дописі. Єдина відмінність полягає в тому, що у Вашій установці сценарій відключення розташований у /etc/acpi/powerbtn-acpi-support.sh, у моєму дистрибутиві Linux за замовчуванням є / etc / acpi / події / файл живлення. І цей мене редагував так, як описано.
mackowiakp

0

Якщо у вас версія polkit> = 0.106, ви можете встановити файл правила polkit, пов’язаний із дією відключення, який викликає ваш сценарій, коли користувач натискає кнопку відключення.

Правило polkit буде подібне до цього:

polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.consolekit.system.stop" ||
    action.id == "org.freedesktop.login1.power-off" ||
    action.id == "org.freedesktop.login1.power-off-multiple-sessions" || 
    action.id == "org.xfce.session.xfsm-shutdown-helper")  
{
        polkit.spawn(["/home/serwer/Pobrane/shut", subject.user]);        
        return polkit.Result.YES;
}
});

Щоб додати це правило, потрібно лише скопіювати це у файл із розширенням .rules та скопіювати файл у /usr/share/polkit-1/rules.d/

Але я не знаю, чи працює це без графічного інтерфейсу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.