ich möchte für user, die ein lokale tmp Verzeichnis haben, die Dauer, wie lange die Dateien dort sind beschränken.
Das heisst, ich will sie einfach nach 50 Tagen löschen.
Dazu hat der user im Verzeichnis /.local/share/user-tmpfiles.d eine Datei tmp.conf
Sieht so aus:
d /home/username/tmp 711 username users 50d
Dann wurde mit “systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer”
der tmp file Service enablet.
Erwartet hätte ich, dass jetzt, nach einem reboot das Verzeichnis /home/username/tmp keine Dateien älter als 50 Tage mehr hat.
Aber nix ist.
Was mache ich denn falsch?
Ich eigenlich auch. Worauf ist eigenlich die Idee um innerhalb ~/.local zu arbeiten basiert?
Wenn ich
man 5 tmpfiles.d
lese, sehe ich nur /etc/tmpfiles.d, /run/tmpfiles.d und /usr/lib/tmpfiles.d erwähnt (wobei die Erste vom Sytemmanager zu benützen ist). Du hast anscheinend mehr Dokumentation gefunden. Es wäre schön uns zu sagen wo, da können wir mitlesen und mitdenken.
Wenn ich die Datei unter /etc/tempfiles.d lege, muss das der Admin machen.
Unter ~/,local kann es halt jeder für sich machen.
Ich dachte, es ist einfach sauberer, weil es nur um einen user geht.
Ich verstehe das. Es war aber unklar wer “ich” ist in deine Frage. Das ist ein generelles Problem. Leute sagen meistens "ich tue …, und nicht “root tut …” bez. “User tut …” . Ein Linux System kennt keine Leute, es kennt nur UIDs.
Ich werde das angegebene Dokoument mal anschauen ob das Gleiche davon lehre wie du oder vielleicht eine Lösung.
Sowas ist schwierig für uns om zu werten. Bitte möglichts mit copy/paste vom Terminal die unveränderten Daten. Wie hier gezeigt kann es auch nicht richtig sein (/.local is absolutes Pfad direct im Root Directory). In diesem Fall warscheinlich etwa:
eric@kleinermuck:~/.local/share/user-tmpfiles.d> cat tmp.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override
# SUSE policy: we don't clean those directories
d /home/eric/tmp 711 eric users 50d
eric@kleinermuck:~/.local/share/user-tmpfiles.d>
Die Ausgabe:
systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer
Created symlink /home/eric/.config/systemd/user/basic.target.wants/systemd-tmpfiles-setup.service → /usr/lib/systemd/user/systemd-tmpfiles-setup.service.
Created symlink /home/eric/.config/systemd/user/timers.target.wants/systemd-tmpfiles-clean.timer → /usr/lib/systemd/user/systemd-tmpfiles-clean.timer.
eric@kleinermuck:~/.local/share/user-tmpfiles.d>
Meine Vermutung, Laut dem Man Legt man das user tmp.conf unter .local oder .config
Jetzt, wo ich sehe, dass das systemctl --user enable … seine Daten in .config schreibt, schiebe ich meine user Konfiguration da auch mal hin.
Hm ja, da warscheinlich hier nur sehr Wenige das was du willst schon probiert haben, ist einiges herumversuchen warscheinlich das beste. Obwohl das von dir benútzete laut Dolkumentation ist.
Danke für das zeigen wie gewünscht. In das zweite CODE Teil hast du übrigens die gefragte Prompts hearusgelassen. Es sind die Kleinigkeiten die das Leben eines Helfers leichter machen.
Wie schon gesagt, ich habe da wenig Erfahrung. Ich propagiere zwar die Benüzung von /etc/tmpfiles.d/tmp.conf wenn man danacj fragt, selbst have ich /tmp/als tmpfs.
Versuchen in /etc/tmpfiles.d/tmp.conf wird hoffentlich zeigen ob die restliche Konfigurierung stimmt.
eric@kleinermuck:~> env SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --user --clean
Looking for configuration files in (higher priority first):
/etc/xdg/user-tmpfiles.d
/home/eric/.config/user-tmpfiles.d
/run/user/1000/user-tmpfiles.d
/home/eric/.local/share/user-tmpfiles.d
/home/eric/.local/share/flatpak/exports/share/user-tmpfiles.d
/var/lib/flatpak/exports/share/user-tmpfiles.d
/usr/local/share/user-tmpfiles.d
/usr/share/user-tmpfiles.d
Skipping overridden file '/home/eric/.local/share/user-tmpfiles.d/tmp.conf'.
Reading config file "/home/eric/.config/user-tmpfiles.d/tmp.conf"…
Running clean action for entry d /home/eric/tmp
Cleanup threshold for directory "/home/eric/tmp" is Sun 2020-01-19 16:30:19.872788 CET
Directory "/home/eric/tmp/backupCyrus": access time Mon 2020-03-09 08:38:26.080000 CET is too new.
....
Also da macht der Service was er machen soll. Da ich allerdings meine locale tmp Dateien durchgegangen bin, wurde nix gelöscht. Ich lass es einfach mal so laufen und schau mal was draus wird.
Danke für die Hilfe.
Aber ich hab was gelernt. systemd startet zweimal.
Einmal als system und macht dort seine Aufgaben aus /etc/tempfiles.d und dann, nach dem Einloggen als user systemd Service. Dort schaut er dann in user spezifische Ordner nach, also in ~/.config und ~/.local
Das ist nicht unlogisch. User sysemd kann nur starten nachdem ein User eingelogt hat. Und das natürlich für jede User der einlogt. Entweder nacheinander oder zu gleicher Zeit.
Würde mich wundern wenn User systemd beim booten anfangt zu arbeiten für -zig Usern die vielleicht erst mal nächste Woche wieder einloggen.