Рейтинг:0

Как заставить plymouth показывать сообщение во время выключения, переключать режим и заставить работать pkcon

флаг in

Я пытаюсь написать скрипт, который делает а) обновление системы перед выключением (не при перезагрузке) и показывает прогресс пользователю на Плимуте.

Пока что мне удалось заставить его запускать скрипт (иногда?) при выключении, но он также запускается при перезагрузке (будет исправлено).

[Ед. изм]
Description=Обновление при выключении
До = poweroff.target halt.target shutdown.target
After=network-online.target multi-user.target

[Оказание услуг]
Тип = ваншот
ExecStart=/bin/true
RemainAfterExit=true
ExecStop=/usr/доля/услуги/shutdown_update
TimeoutSec=бесконечность

[Установить]
WantedBy=poweroff.target halt.target shutdown.target

Собственно скрипт такой:

#!/бин/ш

fun_update () {

    plymouth display-message --text "Aktualisierungen werden installiert..."
    режим изменения Плимута --updates
    pkcon update -p -y > /tmp/update_status.txt
    обновление=0
    Plymouth изменить режим --boot-up
    plymouth display-message --text "Aufräumen..."
    apt-получить автоочистку
    apt-получить автоматическое удаление
    Plymouth изменить режим --shutdown
}

fun_plymouth () {
    в то время как [ "$ обновление" = 1 ]
    делать
        plymouth system-update --progress $(cat /tmp/update_status.txt | grep -oP "(?<=Процент: ).*" | хвост -1)
        plymouth display-message --text "$(cat /tmp/update_status.txt | grep -oP "(?<=Percentage: ).*" | tail -1)%"
        спать 1
    сделано
}
если эхо systemctl list-jobs | egrep -q 'reboot.target.*start';
тогда
выход 0
фи
Plymouth изменить режим --boot-up
обновление=0
plymouth display-message --text 'Aktualisierung wird vorbereitet...'
plymouth display-message --text "Es wird nach Aktualisierungen gesucht..."
обновление pkcon
update_list=$(pkcon получает обновления)
эхо $update_list
если ! эхо "$update_list" | grep -q "В настоящее время нет доступных обновлений."; тогда
обновление=1
fun_update & fun_plymouth & ждать
еще
plymouth display-message --text "Keine Aktualisierungen gefunden!"
спать 3
фи
plymouth display-message --text ""

Что делают эти функции (или то, что я хочу, чтобы они делали): а) информируют пользователя о том, что его система будет обновлена, б) запускают обновление с помощью pkcon и в) показывают всплеск автономного обновления plymouth (всплеск, который отображается при установке автономных обновлений) и получить ход выполнения pkcon, чтобы показать его пользователю (поэтому grep и tail -1, чтобы получить только последнее совпадение).

Но по какой-то причине мне удается запустить скрипт, но сообщения plymouth не отображаются, а pkcon не запускается, а когда запускается, происходит сбой. Вероятно, в этом скрипте много проблем, я не успел отладить, так как plymouth и systemd не очень помогают.

Каждый совет приветствуется! Большое спасибо!

РЕДАКТИРОВАТЬ: я установил plymouth-x11, чтобы проверить свой скрипт; интересно, что команды, отправленные скриптом, здесь также игнорируются при запуске (даже в корневой оболочке), но именно эти команды, введенные вручную в корневой оболочке, работают. Я также добавил эту строку, чтобы проверить, работает ли plymouth:

plymouth --ping && echo plymouth работает || Эхо Плимут НЕ работает

и он возвращает, что он работает. Это не имеет смысла

EDIT2: с plymouth-x11 я обнаружил, что удаление (удаление строк) функций update() и plymouth(), plymouth показывает сообщение.Повторное добавление функций снова ломает его. Кроме того, размещение команды plymouth над объявлениями функций заставляет их снова работать.

EDIT3: я удалил функции и поместил код в дополнительный файл. Теперь он работает так, как ожидалось (по крайней мере, в моей тестовой среде). Итак, вопрос: почему мой скрипт ломается, когда я добавляю функции?

EDIT4: не называйте свои функции как команду, которую вы хотите вызвать -_-

РЕДАКТИРОВАТЬ 5: Таким образом, при перезагрузке скрипт больше ничего не должен, но все же: plymouth не показывает никаких сообщений, и скрипт, похоже, не вызывается при завершении работы. Это проблемы, о которых я знаю прямо сейчас, тестирование скрипта, который не вызывается, довольно сложно. Скрипт работает, когда я запускаю plymouth вручную с помощью plymouth-x11.

Я использую Ubuntu 21.04

Tobi Peter avatar
флаг in
@guiverc да, ты прав, извини. Я использую Убунту 21.04. Я отредактировал свой вопрос, так как обнаружил, что добавление функций в скрипт по какой-то причине нарушает работу команды plymouth.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.