الفلاتر
طريقة البحث
  • الكلمات العادية تجد الأسماء والنصوص والأمثلة.
  • "كلمتان" تجد العبارة بالضبط.
  • --name أو -x تجد خيارًا.
  • #كلمة تبحث داخل الأوامر فقط.
  • @grep تجد الدروس والمعامل التي تستخدم grep.
  • الفلاتر: cat:network · in:labs · level:rhcsa · ch:8 · root:yes. ضع ! قبل كلمة لاستبعادها. OR بين الكلمات تعني إحداها.
  • ↑ ↓ للتنقل · Enter للفتح · Esc للإغلاق · / للبحث

systemd-tmpfiles

Create, clean and remove temporary and volatile files and folders, following the rules in tmpfiles.d files.

المستوى
امتحان RHCSA
المجموعة
الجدولة
يحتاج root
نعم
الحزمة
systemd

هذا الجزء لم يُترجم بعد. أنت ترى النص الإنجليزي.

ماذا يفعل

systemd-tmpfiles reads rule files from /usr/lib/tmpfiles.d/ (packages), /run/tmpfiles.d/ and /etc/tmpfiles.d/ (yours; a file with the same name here replaces the package file). Each line is one rule: type, path, mode, user, group, age, argument.

At boot, systemd-tmpfiles-setup.service runs --create (make folders and files, for example in /run). Every day, systemd-tmpfiles-clean.timer runs --clean: files older than the age of their rule are deleted. RHEL's own rules clean /tmp after 10 days and /var/tmp after 30 days.

طريقة الكتابة

systemd-tmpfiles [OPTION]... [CONFIG-FILE]...

الأجزاء الرئيسية

Line types (tmpfiles.d)

d PATH MODE USER GROUP AGE
Create a folder; with AGE, clean old files in it.
D PATH …
Like d, but empty the folder at every boot (--remove).
e PATH …
Clean an existing folder by age; do not create it.
v / q / Q PATH …
Create a folder or btrfs subvolume (with quota).
f PATH MODE USER GROUP - TEXT
Create a file if missing (with TEXT as content).
F PATH …
Create or empty a file.
w PATH - - - - TEXT
Write TEXT into an existing file (for example in /sys or /proc).
L PATH - - - - TARGET
Create a symbolic link.
C PATH - - - - SOURCE
Copy a file or folder if the target is missing.
x PATH
Do not clean this path (exception).
X PATH
Do not clean this path, but clean what is inside.
r / R PATH
Remove the path (R = with content) at --remove.
z / Z PATH MODE USER GROUP
Fix rights, owner and SELinux label (Z = recursive).
t / T PATH - - - - ATTR
Set extended attributes.
h / H PATH - - - - ATTR
Set file attributes (like chattr).
a / A PATH - - - - ACL
Set POSIX ACLs.

Age

10d, 12h, 30m, 1w
Age units: days, hours, minutes, weeks.
-
No cleaning.

الخيارات 17

الأكثر استخدامًا

Actions

--create
Create the files and folders of the rules; write, set rights.
--clean
Delete files older than the age of their rule.
--remove
Remove the paths of r/R/D rules.
--purge
Remove everything the rules created.
--cat-config
Show all rule files, as they are used.
--tldr
Show the rules without comments and empty lines.

Scope

--user
Use the user rules (~/.config/user-tmpfiles.d/).
--boot
Also run rules marked with ! (only safe at boot).
--prefix=PATH
Only rules for paths under PATH.
--exclude-prefix=PATH
Skip rules for paths under PATH.
-E
Short for excluding /dev, /proc, /run, /sys.
--root=DIR / --image=FILE / --image-policy=POLICY
Work on another root folder or disk image.
--replace=PATH
Treat the given file as a replacement for PATH.
--graceful
Ignore rules with unknown users or groups.

Other

--no-pager
Do not use a pager.
-h, --help
Show help.
--version
Show the version.

أمثلة 11

$ مستخدم عادي# بصلاحية root (أو مع sudo)

  1. 1See all rules in use

    systemd-tmpfiles --cat-config | less
    systemd-tmpfiles --tldr | grep -E '^[dDqQ] /(var/)?tmp'
    q /tmp 1777 root root 10d
    q /var/tmp 1777 root root 30d
  2. 2A folder for an app that must exist after every boot

    echo 'd /run/myapp 0755 myapp myapp -' > /etc/tmpfiles.d/myapp.conf
    systemd-tmpfiles --create /etc/tmpfiles.d/myapp.conf
    ls -ld /run/myapp
    drwxr-xr-x. 2 myapp myapp 40 Oct 27 13:10 /run/myapp

    /run is empty after every reboot; the rule makes the folder again at boot.

  3. 3Delete old files automatically

    echo 'd /var/tmp/cache 0750 root root 7d' > /etc/tmpfiles.d/cache.conf
    systemd-tmpfiles --clean /etc/tmpfiles.d/cache.conf

    Files in /var/tmp/cache older than 7 days are removed now and every day by the timer.

  4. 4Keep /tmp files longer than 10 days

    cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d/tmp.conf
    sed -i 's|^q /tmp 1777 root root 10d|q /tmp 1777 root root 30d|' /etc/tmpfiles.d/tmp.conf

    The file in /etc with the same name replaces the package file.

  5. 5Protect one folder from cleaning

    echo 'x /tmp/build-keep' > /etc/tmpfiles.d/keep.conf
  6. 6Empty a folder at every boot

    echo 'D /var/lib/myapp/sessions 0700 myapp myapp -' > /etc/tmpfiles.d/sessions.conf
  7. 7Make a link at boot

    echo 'L /run/myapp.sock - - - - /var/lib/myapp/app.sock' >> /etc/tmpfiles.d/myapp.conf
  8. 8Fix rights and SELinux labels at boot (DevSecOps)

    echo 'Z /srv/app 0750 app app -' > /etc/tmpfiles.d/app-perms.conf
    systemd-tmpfiles --create /etc/tmpfiles.d/app-perms.conf
  9. 9Check the daily cleaning timer

    systemctl list-timers systemd-tmpfiles-clean.timer
    systemctl status systemd-tmpfiles-clean.service
  10. 10Write a kernel setting at boot

    echo 'w /sys/kernel/mm/transparent_hugepage/enabled - - - - never' > /etc/tmpfiles.d/thp.conf
  11. 11User rules without root

    mkdir -p ~/.config/user-tmpfiles.d
    echo 'd %h/.cache/build 0700 - - 3d' > ~/.config/user-tmpfiles.d/build.conf
    systemd-tmpfiles --user --clean

انتبه

  • The age counts from the newest of access, change and modify time — a file that is read often is not cleaned.
  • --remove deletes for real. Test new rules with --clean on a test folder first.
  • Rule paths must be absolute. %h (home) and %U (user ID) work only in user rules.

الملفات

/etc/tmpfiles.d/*.conf
Your rules (win over package rules with the same name).
/usr/lib/tmpfiles.d/*.conf
Package rules.
/run/tmpfiles.d/*.conf
Runtime rules.
~/.config/user-tmpfiles.d/
User rules.

نصائح للحفظ

  • One line d PATH MODE USER GROUP AGE covers most tasks: "the folder must exist" and "old files must go".
  • systemd-tmpfiles --cat-config | grep PATH shows which rule touches a path.

رموز الخروج

0Success.
65A rule has a syntax error (with --create etc. the rest still runs).
73A file or folder could not be created.
OtherAnother error.

الدليل الكامل

هذه الصفحة تشرح الأمر بكلمات بسيطة. الدليل الأصلي فيه كل التفاصيل.

في الطرفية: man 8 systemd-tmpfiles