Automatisches Erstellen, Löschen und Schreiben von Dateien beim Start in Ubuntu
Dieses Tutorial zeigt, wie Sie in Ubuntu und anderen Linux-Versionen mithilfe von systemd beim Start automatisch Dateien/Ordner erstellen, löschen und/oder Parameter in Konfigurationsdateien schreiben.
Dies kann nützlich sein, wenn einige Konfigurationen nicht dauerhaft bestehen bleiben und bei jedem Start auf die Standardeinstellungen zurückgesetzt werden oder Sie entweder bei jedem Start oder nach jedem Zeitraum etwas bereinigen möchten.
Fortgeschrittene Benutzer können manuell ein Skript erstellen und es entweder über die Crontab-Zeitplanaufgabe oder den benutzerdefinierten Systemd-Dienst ausführen. Aber hier zeige ich Ihnen, wie Sie den Trick mit tmpfile.d
machen, einer integrierten Konfiguration zum Erstellen, Löschen und Bereinigen flüchtiger und temporärer Dateien.
In Ubuntu, Debian, Fedora und vielen anderen Linux-Distributionen gibt es einige systemd-Dienste, die darauf ausgelegt sind, automatisch flüchtige Dateien und Verzeichnisse zu erstellen und temporäre Verzeichnisse täglich zu bereinigen. Sie beinhalten:
- systemd-tmpfiles-setup.service
- systemd-tmpfiles-clean.timer
- systemd-tmpfiles-setup-dev.service
- systemd-tmpfiles-setup-dev-early.service
Um zu überprüfen, ob Ihr System über sie verfügt, führen Sie systemctl status systemd-tmpfiles*
in einem Terminalfenster aus:
- /etc/tmpfiles.d/ (empfohlen)
- /run/tmpfiles.d/
- /usr/lib/tmpfiles.d/
- ~/.config/user-tmpfiles.d/ (funktioniert in meinem Fall unter Ubuntu 24.04 nicht)
- ~/.local/share/user-tmpfiles.d/ (funktioniert in meinem Fall unter Ubuntu 24.04 nicht)
Erstellen und entfernen Sie Dateien oder Ordner automatisch beim Start
Um eine benutzerdefinierte tmpfiles.d
-Konfigurationsdatei zu erstellen, öffnen Sie einfach das Terminal (Strg+Alt+T) und führen Sie den folgenden Befehl aus:
sudo nano /etc/tmpfiles.d/test.conf
Ersetzen Sie im Befehl test
durch einen beliebigen Namen. Es erstellt und öffnet die Datei im Befehlszeilen-Nano-Texteditor.
Wenn die Datei geöffnet wird, fügen Sie die folgenden Zeilen für die entsprechenden Vorgänge hinzu. Nach der Bearbeitung können Sie Strg+S drücken, um die Datei zu speichern, und dann Strg+X, um den Vorgang zu beenden.
Ordner erstellen:
Um bei jedem Start automatisch einen Ordner zu erstellen, erstellen Sie beispielsweise „myfolder
“ unter /etc
und fügen Sie die folgenden Zeilen hinzu:
#Type Path Mode User Group Age Argument
d /etc/myfolder - - - - -
Hier beginnt die erste Zeile mit „#“, die Beschreibungszeile funktioniert nicht. In der zweiten Zeile heißt es:
- d – weist an, den Erstellungsvorgang durchzuführen, wenn der Ordner NICHT existiert.
- /etc/myfolder – Geben Sie den Pfad des zu erstellenden Verzeichnisses an.
- „–“ überspringen, um die Standardeinstellungen für Modus, Benutzer, Gruppe, Alter und Argument zu verwenden.
Standardmäßig wird 0775
für die Ordnerberechtigung verwendet ( lesen (4), schreiben (2), ausführen (1) für Besitzer und Gruppe (4+2+1=7), lesen, ausführen ( 4+1=5) für andere), root
für Benutzer und Gruppe.
Zur Auswahl können Sie die Erlaubnis und den Besitz angeben. Und wenn Sie ein „Alter“ festlegen, werden alle Inhalte in diesem Ordner nach jedem bestimmten Zeitraum bereinigt.
#Type Path Mode User Group Age Argument
d /home/ji/Documents/myfolder 0775 ji ji - -
d /home/ji/Documents/myfolder/test 0775 ji ji 10d -
Der Timer-Trigger wird alle 24 Stunden aktiviert (mit Ausnahme der ersten Aktion, die 15 Minuten später nach dem Hochfahren erfolgt). Daher ist es besser, das Alter in Tagen festzulegen.
Wenn der Ordner bereits vorhanden ist und Sie seinen gesamten Inhalt beim Start entfernen möchten (und anschließend in einem bestimmten Zeitraum bereinigen möchten), verwenden Sie stattdessen D mit dem Argument --remove
.
#Type Path Mode User Group Age Argument
D /home/ji/Documents/myfolder/test 0775 ji ji 10d --remove
Erstelle Datei:
Um beim Start automatisch eine Datei zu erstellen, verwenden Sie f oder f+. Zum Beispiel:
#Type Path Mode User Group Age Argument
d /etc/myfolder - - - - -
f /etc/myfolder/xxx.conf - - - - some text here\n
Fügen Sie die obigen Zeilen in eine .conf
-Datei im Verzeichnis /etc/tmpfiles.d
ein. Es wird zunächst das Verzeichnis „/etc/myfolder
“ erstellt, wenn nicht existiert, erstellen Sie dann die Datei „xxx.conf
“ in diesem Verzeichnis und schreiben Sie „hier etwas Text“, wenn die Datei NICHT existiert.
Hier ist \n ein Zeilenumbruch, um eine neue Zeile zu erstellen. Natürlich können Sie das Argument mit „-“ (ohne Anführungszeichen) überspringen, sodass einfach versucht wird, die Datei zu erstellen, falls sie nicht vorhanden ist.
Wenn die Datei bereits existiert, hat „f“ keine Auswirkung. In diesem Fall können Sie f+ verwenden, wodurch der ursprüngliche Dateiinhalt (falls vorhanden) durch den neuen ersetzt wird eine, die Sie per Argument festlegen.
#Type Path Mode User Group Age Argument
d /etc/myfolder - - - - -
f+ /etc/myfolder/xxx.conf - - - - some text here\n
Text in Datei schreiben:
Um automatisch Text in eine Datei zu schreiben, verwenden Sie w. Zum Beispiel:
#Type Path Mode User Group Age Argument
w /home/ji/Documents/333 - - - - auto write line 1
Wenn die Datei NICHT existiert, passiert nichts! Und w entfernt NICHT den ursprünglichen Dateiinhalt (falls vorhanden), sondern versuchen Sie einfach, ihn von Anfang an zu überschreiben.
Das heißt, wenn der ursprüngliche Dateiinhalt länger ist als der neue Inhalt, in den Sie schreiben möchten, wird der Dateiinhalt durcheinander gebracht (siehe Screenshot unten). Verwenden Sie in diesem Fall f+ anstelle von w, wodurch der gesamte vorherige Inhalt überschrieben wird.
Um den ursprünglichen Dateiinhalt beizubehalten und am Ende der Datei zu schreiben, verwenden Sie stattdessen w+.
#Type Path Mode User Group Age Argument
w+ /home/ji/Documents/333 - - - - #This is a new line\n
w+ /home/ji/Documents/3* - - - - #write one more line\n
w+ /home/ji/Documents/33* - - - - enable=1
HINWEIS: w+ beginnt keine neue Zeile, wenn am Ende kein Zeilenumbruch erfolgt. Sie können also \n am Anfang des Arguments hinzufügen, um eine neue Zeile zu beginnen, und es auch am Ende für die nächste hinzufügen.
Darüber hinaus können Sie mehrere Dateien schreiben, indem Sie im Dateinamen ein Sternchen verwenden. Beispielsweise stimmt 3*
mit allen Dateien überein, deren Name mit 3 beginnt. *.txt
stimmt mit allen TXT-Dateien im Verzeichnis überein.
HINWEIS: Wenn Sie zum Schreiben derselben Datei sowohl „w“ als auch „w+“ verwenden, funktioniert nur die erste! Wenn Sie zum Erstellen derselben Datei sowohl „f“ als auch „f+“ verwenden, funktioniert auch nur die erste.
Dateien oder Ordner löschen
Um Dateien beim Start automatisch zu löschen, verwenden Sie r.
Löschen Sie beispielsweise alle .txt
-Dateien, die Datei 123
, leerer Ordner, im Ordner „Dokumente“ des Benutzers:
#Type Path Mode User Group Age Argument
r /home/ji/Documents/*.txt - - - - -
r /home/ji/Documents/123 - - - - -
r /home/ji/an-empty-folder - - - - -
Um einen Ordner und alle darin enthaltenen Dateien und Unterordner zu löschen, verwenden Sie stattdessen R:
#Type Path Mode User Group Age Argument
R /home/ji/Documents/myfolder - - - - -
Darüber hinaus
Die tmpfiles.d
-Konfiguration kann beim Start noch mehr Vorgänge ausführen, z. B. einen Symlink erstellen, Dateien oder Verzeichnisse kopieren und mehr! Weitere Informationen finden Sie auf der Manpage von freedesktop.org!