Kürzlich bin ich auf das nette checkrestart
Tool gestoßen, das prüft, ob laufende Prozesse eine veraltete Version einer kürzlich aktualisierten Bibliothek verwenden und einen Neustart benötigen, um sie mit der aktualisierten Bibliothek zu laden. Im Moment muss ich checkrestart
jedes Mal von Hand anrufen, wenn ich apt-get upgrade
oder verwendet habe aptitude upgrade
.
Gibt es eine Möglichkeit, einen solchen Befehl nach einigen Paketen automatisch aufzurufen apt-get
oder aptitude
aktualisiert zu haben? Bonuspunkte, wenn die Lösung auch funktioniert unattended-upgrades
.
apt
häufigdpkg
mehrmals aufgerufen wird.DPkg::Post-Invoke-Success
? Im Quellcode kann ich nur findenDPkg::Post-Invoke
,APT::Update::Post-Invoke
undAPT::Update::Post-Invoke-Success
.Es gibt verschiedene Möglichkeiten, dies zu tun.
Verwenden eines Skripts
Eine schnelle und schmutzige Lösung wäre, ein Skript mit dem Namen
apt-get
oder zu schreibenaptitude
und das eigentliche Programm als solches aufzurufen:Machen Sie das Skript ausführbar :
chmod +x apt-get
. Möglicherweise möchten Sie auch das Skript im Besitz von root erstellen :chown root apt-get; chgrp root apt-get
. Achten Sie darauf, das setuid-Bit in Ihrem Skript nicht zu setzen. Wenn ein Angreifer Schreibrechte dafür erhält, kann er es schnell und einfach ändern, um ihm eine Root-Shell zu geben.Diese Methode würde natürlich erfordern, dass Sie die eigentliche Binärdatei an einen anderen Ort verschieben und Ihr Shell-Skript an einen Ort in Ihrem Pfad verschieben. Der richtige Ort, um Benutzerskripte zu platzieren, ist
/usr/local/bin
. In dieser Situation sollten Sie Ihr Skript jedoch an der Stelle ablegen, an der sich die eigentliche Binärdatei befand, bevor Sie es verschoben haben, um die Organisation zu gewährleisten.Das Ersetzen der Binärdatei durch ein Skript auf diese Weise ist ziemlich aufdringlich und betrifft alle Benutzer auf dem Computer. Alternativ können Sie Ihr Skript auch so nennen
apt-get-cr
und daran denken, dieses Skript anstelle von aufzurufenapt-get
. Sie können auch eine Shell-Funktion schreiben.Verwenden einer Shell-Funktion
Mit einer Shell-Funktion können Sie den Befehlsnamen beibehalten,
apt-get
ohne sich in Binärdateien bewegen zu müssen.Setzen Sie diese Funktion irgendwo in der Shell - Konfiguration (
~/.bashrc
,~/.zshrc
usw.)Diese Methode ist im Allgemeinen viel weniger aufdringlich als die Skriptmethode. Außerdem müssen Sie sich nicht in den Binärdateien bewegen, was im Allgemeinen nur der Root-Benutzer tun kann.
Auf der anderen Seite ist die Shell-Funktionsmethode zwischen Shells nicht immer sehr portabel und passt nicht so gut zu grafischen Oberflächen wie Launcher-Balken wie die Skriptmethode (Sie können ein Skript fast immer wie eine ausführbare Binärdatei behandeln. )
quelle
$@
richtig zitieren , Ihre Argumente werden entstellt.