/ tmp ไม่ถูกลบเมื่อใด


143

ฉันกำลังจะใส่ไฟล์ต่าง ๆ/tmpและฉันสงสัยเกี่ยวกับกฎในการลบไฟล์เหล่านั้นหรือไม่

ฉันจินตนาการว่ามันแตกต่างกันไปสำหรับดิสทริบิวชันต่าง ๆ และฉันสนใจรุ่นเดสก์ท็อป Ubuntu และ Fedora เป็นพิเศษ

แต่วิธีการทั่วไปที่ดีในการค้นพบจะเป็นสิ่งที่ดี

ยิ่งไปกว่านั้นจะเป็นวิธีทั่วไปในการควบคุมมัน! (บางสิ่งบางอย่างเช่น 'ทุกวันเวลา 3 โมงเช้าลบ/tmpไฟล์ใด ๆ ที่เก่ากว่า 60 วัน แต่ไม่ต้องล้างไดเรกทอรีเมื่อรีบูต')


คำตอบ:


155

ขึ้นอยู่กับการกระจายของคุณ ในบางระบบจะถูกลบเฉพาะเมื่อบู๊ตเครื่องอื่น ๆ มี cronjobs ที่ทำงานลบรายการที่เก่ากว่าnชั่วโมง

  • บนระบบที่คล้ายกับ Debian: เมื่อเริ่มระบบ (มีการกำหนดกฎไว้/etc/default/rcS)
  • สำหรับระบบที่เหมือน RedHat: ตามอายุ (RHEL6 มันคือ/etc/cron.daily/tmpwatch; RHEL7 และ RedHat เหมือนกันกับ systemd มันถูกกำหนดค่าใน/usr/lib/tmpfiles.d/tmp.confเรียกว่าโดยsystemd-tmpfiles-clean.service)
  • บน /etc/conf.d/bootmiscGentoo

19
และไม่ว่าจะเกิดเหตุการณ์เช่นไรช่วงเวลาที่ปลอดภัยเพียงอย่างเดียวคือการบูตหลังจากติดตั้งเนื่องจากกระบวนการทำงานอาจมีไฟล์ถูกล็อกอยู่และสิ่งเหล่านี้ไม่ควรถูกลบ
adaptr

นอกจากนี้ยังมีแพ็คเกจที่สามารถลบออกได้เป็นระยะ
Samuel Edwin Ward

2
บนระบบที่เหมือน RedHat ที่มี systemd (centos7 / rhel7) มันถูกกำหนดค่าใน /usr/lib/tmpfiles.d/tmp.conf systemd-tmpfiles-clean.serviceมันเรียกว่าโดยเป้าหมายของ systemd
Franklin Piat

1
สำหรับเดเบียนรุ่นเก่าคุณสามารถพิจารณาtmpreaperแพ็คเกจtmpwatchได้
Věroš K.

Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris

24

บน CentOS (และผมถือว่า Fedora) tmpwatchมีงานในเรียกว่า การทำงานนี้/usr/sbin/tmpwatchซึ่งจะลบไฟล์ที่ไม่ได้เข้าถึงในจำนวนชั่วโมงที่ระบุนั่นคือพฤติกรรมเริ่มต้นคือการตรวจสอบatimeไฟล์เพื่อประเมินว่าไฟล์นั้นถูกใช้งานเมื่อเร็ว ๆ นี้หรือไม่

http://linux.die.net/man/8/tmpwatch

distros อื่น ๆ (และการติดตั้ง) อาจมี / tmp ถูกเมาท์เป็น tmpfs ซึ่งเป็นระบบไฟล์ในหน่วยความจำ สิ่งนี้จะถูกล้างเมื่อเริ่มระบบ


ฉันไม่มีสิ่งนี้ใน CentOS 7.4
Kevin Lemaire

@KevinLemaire ฟังก์ชันการทำงานถูกย้ายไปยังบริการ systemd lists.centos.org/pipermail/centos/2014-October/147155.html
cjc

หากคุณไม่พบไฟล์ tmpwatch คุณสามารถดาวน์โหลด tmpwatch ได้โดยใช้yum install tmpwatch
Ng Sek Long

ฉันจะหา tmpwatch บน distros อื่นได้หรือไม่? ฟังดูน่าทึ่ง ฉันอยู่ที่เดเบียน distro
Jonathan

sudo find /tmp -type f -atime +10 -deleteจะลบไฟล์ tmp ที่ไม่ได้เข้าถึงใน 10 วันใช้ด้วยความระมัดระวัง
Jonathan

13

บน Ubuntu 11.10 ที่ฉันใช้มีการพุ่งพรวด/etc/init/mounted-tmp.confสคริปต์ใน จุดเริ่มต้นของมันบอกว่า:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

คุณสามารถอ่านรายละเอียดเพิ่มเติมได้อย่างไรก็ตามโดยทั่วไป/tmpจะได้รับการทำความสะอาดเมื่อติดตั้งหรือ/usrติดตั้ง สิ่งนี้เกิดขึ้นเป็นประจำในการบู๊ตดังนั้นการ/tmpทำความสะอาดจะทำงานทุกครั้งที่บู๊ต

ใน/etc/default/rcSคุณได้TMPTIMEตั้งค่าไว้ซึ่งใช้ในสคริปต์เริ่มต้นด้านบนเพื่อป้อนfindคำสั่งสองคำต่อท้าย - โดยทั่วไปจะควบคุมการลบไฟล์ตามเวลา (แก้ไขเปลี่ยนแปลงเข้าถึง)


5

บน RHEL 6.2 ไฟล์ใน / tmp จะถูกลบโดย tmpwatch หากยังไม่ได้เข้าถึงใน 10 วัน

ไฟล์ /etc/cron.daily/tmpwatch จะกำหนดวิธีที่เรียกว่า tmpwatch

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

อาร์กิวเมนต์ -x เป็นไฟล์ที่ต้องแยกออก อาร์กิวเมนต์ที่สองถึงครั้งสุดท้ายคือเวลาที่รอหลังจากเวลาที่เข้าถึงล่าสุด อาร์กิวเมนต์สุดท้ายคือไดเรกทอรีที่จะตรวจสอบ


5

ตั้งแต่ Fedora 18 เป็นต้นไป/tmpจะติดตั้งอยู่บนtmpfs(เช่น RAM) โดยค่าเริ่มต้นแล้วจึงลบออกเมื่อปิดเครื่อง

พฤติกรรมนี้สามารถปิดการใช้งานโดยการออกsystemctl mask tmp.mountและรีบูต (และเปิดใช้งานอีกครั้งโดยการออกsystemctl unmask tmp.mountและรีบูต) แล้ว/tmpจะถูกติดตั้งบน/ระบบไฟล์และสามารถควบคุมได้โดย/usr/lib/tmpfiles.d/tmp.confการตั้งค่า

ดูhttp://fedoraproject.org/wiki/Features/tmp-on-tmpfsและman tmpfiles.dสำหรับรายละเอียดเพิ่มเติมในแต่ละกรณี


3

บน openSUSE 13.2 พฤติกรรมการล้างสามารถควบคุมได้ด้วยตัวแปรต่อไปนี้ใน sysconfig

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

คุณสามารถแก้ไขตัวแปรเหล่านี้ได้โดย (พบการใช้งานของตัวแปรแต่ละตัวด้วย)

  1. แก้ไข/etc/sysconfig/cronไฟล์ด้วยตนเองในบรรทัดคำสั่ง
  2. เปิด Yast และไปที่ System -> / etc / sysconfig Editor -> System -> Cron

2

ยิ่งไปกว่านั้นจะเป็นวิธีทั่วไปในการควบคุมมัน! (บางสิ่งบางอย่างเช่น 'ทุกวันที่ 3 ในตอนเช้าลบไฟล์ใด ๆ / tmp ที่เก่ากว่า 60 วัน แต่ไม่ต้องล้างไดเรกทอรีเมื่อรีบูต')

ไฟล์ Sorta-tempy ที่คุณไม่ต้องการให้เคลียร์เมื่อบูตไปที่ / var / tmp

นั่นคือสิ่งที่มีไว้สำหรับ :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.