Puncte:0

Cum să faceți ca Plymouth să arate mesajul în timpul opririi, să comutați modul și să faceți ca pkcon să funcționeze

drapel in

Încerc să scriu un script care face a) actualizarea sistemului înainte de oprire (nu la repornire) și arată progresul utilizatorului de pe plymouth.

Până acum, ei bine, am reușit să-l fac să pornească scriptul (uneori?) la închidere, dar începe și la reporniri (de remediat).

[Unitate]
Descriere=Actualizare la închidere
Înainte=poweroff.target stop.target shutdown.target
După=network-online.target multi-user.target

[Serviciu]
Type=onehot
ExecStart=/bin/true
RemainAfterExit=true
ExecStop=/usr/share/services/shutdown_update
TimeoutSec=infinit

[Instalare]
WantedBy=poweroff.target stop.target shutdown.target

Scriptul real este acesta:

#!/bin/sh

fun_update() {

    Plymouth display-message --text „Aktualisierungen werden installliert...”
    plymouth change-mode --actualizări
    pkcon update -p -y > /tmp/update_status.txt
    actualizare=0
    plymouth change-mode --boot-up
    Plymouth display-message --text „Aufräumen...”
    apt-get autoclean
    apt-get autoremove
    plymouth change-mode --oprire
}

fun_plymouth() {
    în timp ce [ "$actualizare" = 1 ]
    do
        plymouth system-update --progress $(cat /tmp/update_status.txt | grep -oP "(?<=Procent: ).*" | coada -1)
        mesaj de afișare plymouth --text "$(cat /tmp/update_status.txt | grep -oP "(?<=Procent: ).*" | coada -1)%"
        somn 1
    Terminat
}
if echo systemctl list-jobs | egrep -q 'reboot.target.*start';
atunci
iesirea 0
fi
plymouth change-mode --boot-up
actualizare=0
Plymouth display-message --text „Aktualisierung wird vorbereitet...”
Plymouth display-message --text „Es wird nach Aktualisierungen gesucht...”
pkcon reîmprospătare
update_list=$(pkcon get-updates)
echo $update_list
dacă ! echo „$update_list” | grep -q „Nu există actualizări disponibile în acest moment.”; atunci
actualizare=1
fun_update și fun_plymouth și așteptați
altfel
mesaj de afișare plymouth --text „Keine Aktualisierungen gefunden!”
somn 3
fi
Plymouth display-message --text „”

Ceea ce fac aceste funcții (sau ceea ce vreau să facă) este să a) să informeze utilizatorul că sistemul lui va fi actualizat, b) să pornească actualizarea folosind pkcon și c) să arate splash-ul de actualizare offline plymouth (splasul care este afișat când sunt instalate actualizări offline) și obțineți progresul pkcon pentru a-l arăta utilizatorului (de aceea grep și tail -1, pentru a obține doar ultima potrivire).

Dar dintr-un motiv oarecare, reușesc să pornesc scriptul, dar nu sunt afișate mesaje plymouth și pkcon nu pornește sau când se întâmplă, eșuează. Probabil că există o mulțime de probleme în acest script, nu am reușit să depanez, deoarece plymouth și systemd nu sunt cu adevărat de ajutor.

Orice sfat este binevenit! Mulțumesc foarte mult!

EDIT: am instalat plymouth-x11 pentru a-mi testa scriptul; interesant, comenzile trimise de script sunt ignorate și aici atunci când sunt rulate (chiar și într-un shell rădăcină), dar aceste comenzi exacte introduse manual în shell rădăcină funcționează. Am adăugat și această linie pentru a verifica dacă plymouth rulează:

plymouth --ping && echo plymouth rulează || echo plymouth NU rulează

și se întoarce că rulează. Asta nu are niciun sens

EDIT2: Cu plymouth-x11 am aflat că eliminând (ștergând liniile) funcția update() și plymouth(), plymouth arată mesajul.Adăugarea din nou a funcțiilor o întrerupe din nou. De asemenea, plasând comanda plymouth deasupra declarațiilor de funcție, le face să funcționeze din nou.

EDIT3: Am eliminat funcțiile și am plasat codul într-un fișier suplimentar. Acum funcționează conform așteptărilor (cel puțin în mediul meu de testare). Deci întrebarea este: de ce se întrerupe scriptul când adaug funcțiile?

EDIT4: Nu vă denumiți funcțiile ca pe o comandă pe care doriți să o apelați -_-

EDIT5: Deci, scriptul nu ar trebui să mai facă nimic când repornesc, dar totuși: plymouth nu afișează niciun mesaj și scriptul pare să nu fie apelat la închidere. Acestea sunt problemele pe care le cunosc acum, testarea unui script care nu se numește este destul de dificilă. Scriptul funcționează când pornesc manual plymouthd cu plymouth-x11.

Rulez Ubuntu 21.04

Tobi Peter avatar
drapel in
@guiverc da, ai dreptate, imi pare rau. Folosesc Ubuntu 21.04. Mi-am editat întrebarea când am aflat că adăugarea de funcții la script întrerupe comanda plymouth dintr-un motiv oarecare

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.