Löschen von user Tmp Verzeichnissen

Hallo,

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?

Dazu hat der user im Verzeichnis /.local/share/user-tmpfiles.d eine Datei tmp.conf

Also ich hätte das in /etc/tmpfiles.d erledigt…

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.

Also ich hab das aus systemd-tmpfiles

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:

prompt> cat ~/.local/share/user-tmpfiles.d/tmp.conf
....
....
prompt >

Dan sehen wir was wie aussieht und das brauchst du dann nicht zu erklären.

Ich bin leider nicht gerade der Experte hier. Du hast:

d /home/username/tmp 711 username users 50d

Bist du sicher das das beim Boot wirkt, auch ohne !

d! /home/username/tmp 711 username users 50d

Übrigens auch das

systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer

häten wir gerne komplett: Prompt/Kommandzeile, alles was herauskommt, neuer Prompt. Und natürlich zwischen CODE tags (Knopf miet # hieroben).

Ok, ich versuche mal das meinige:

Das Verezichnis:


eric@kleinermuck:~/.local/share/user-tmpfiles.d> pwd
/home/eric/.local/share/user-tmpfiles.d

Die Datei:


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.

Das Verschieben hat nichts gebracht.
Ich such noch mal ein wenig rum, sonst nehme ich das Verzeichnis einfach in /etc/tmpfille.d/tmp.conf mit auf.

Btw. es scheint, dass der Service nicht in die user Verzeichnis nach schaut.


eric@kleinermuck:~> env SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --clean | more
Looking for configuration files in (higher priority first):
        /etc/tmpfiles.d
        /run/tmpfiles.d
        /usr/local/lib/tmpfiles.d
        /usr/lib/tmpfiles.d
        /lib/tmpfiles.d
...

sondern nur in den Standard Verzeichnissen.
Da liegt vermutlich der Hase im Pfeffer…

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.

Ich denk ich hab’s :slight_smile:

ich hab mal. eingegeben.


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.

Gratuliere!

Bin gespannt ob es wirkt

Viel beigetragen habe ich nicht. Möglich nur dumm zugehört und blöde Bemerkungen gemacht. Aber oft hilft das.

Ja hat geholfen :slight_smile:
Hilfe zur Selbsthilfe!

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.

Schau bitte auf „systemctl --user list-unit-files”.

  • So weit Ich dass sehe, irgendwas bezüglich „tmp” ist nicht dabei …