วิธีการคือ/tmp
ไดเรกทอรีทำความสะอาด? เป็นอัตโนมัติหรือไม่ ถ้าเป็นเช่นนั้นทำความสะอาดบ่อยแค่ไหน?
วิธีการคือ/tmp
ไดเรกทอรีทำความสะอาด? เป็นอัตโนมัติหรือไม่ ถ้าเป็นเช่นนั้นทำความสะอาดบ่อยแค่ไหน?
คำตอบ:
บันทึก! คำตอบนี้ล้าสมัยตั้งแต่อย่างน้อย Ubuntu 14.04 ดูคำตอบอื่น ๆ สำหรับสถานการณ์ปัจจุบันและหากพวกเขาพิสูจน์ว่าถูกต้องแล้วก็ถอนรากถอนโคนอย่างดุเดือด แสดงความคิดเห็นด้วยดังนั้นฉันสามารถใส่ลิงค์ที่นี่เพื่อคำตอบที่ถูกต้องในปัจจุบัน
สำหรับ 14.04 ดูhttps://askubuntu.com/a/759048/1366
สำหรับ 16.10 ดูhttps://askubuntu.com/a/857154/453746
คำตอบเก่าจาก 2011:
การทำความสะอาด/tmp
ทำได้โดยสคริปต์/etc/init/mounted-tmp.conf
ธรรมดา สคริปต์ถูกเรียกใช้โดยการพุ่งพรวดทุกครั้งที่/tmp
ถูกเมา ในทางปฏิบัติหมายความว่าทุกครั้งที่บูต
สคริปต์ทำสิ่งต่อไปนี้อย่างคร่าวๆ: หากไฟล์ใน/tmp
รุ่นเก่ากว่า$TMPTIME
วันจะถูกลบทิ้ง
ค่าเริ่มต้น$TMPTIME
คือ 0 ซึ่งหมายความว่าทุกไฟล์และไดเรกทอรีในการ/tmp
ได้รับการลบ เป็นตัวแปรสภาพแวดล้อมที่กำหนดไว้ใน$TMPTIME
/etc/default/rcS
ไดเรกทอรีจะถูกล้างโดยค่าเริ่มต้นในทุก ๆ การบู๊ตเพราะTMPTIME
เป็น 0 โดยค่าเริ่มต้น
ที่นี่คุณสามารถเปลี่ยนเวลาในไฟล์ต่อไปนี้:
/etc/default/rcS
TMPTIME
บอกว่าความถี่ tmp dir จะถูกลบในไม่กี่วัน
tmpreaper
โอกาส
tmpwatch
ควรเป็นเครื่องมือที่เหมาะสม
ในขณะที่/tmp
โฟลเดอร์ไม่ใช่สถานที่สำหรับเก็บไฟล์ในระยะยาวบางครั้งคุณต้องการเก็บสิ่งต่าง ๆ ไว้นานกว่าในครั้งถัดไปที่คุณรีบูตซึ่งเป็นค่าเริ่มต้นในระบบ Ubuntu ฉันรู้ว่าหนึ่งหรือสองครั้งที่ฉันดาวน์โหลดบางสิ่งบางอย่างไป/tmp
ในระหว่างการทดสอบรีบูตเครื่องหลังจากทำการเปลี่ยนแปลงและจากนั้นสูญเสียข้อมูลต้นฉบับอีกครั้ง สิ่งนี้สามารถเปลี่ยนแปลงได้หากคุณต้องการให้/tmp
ไฟล์ของคุณยาวขึ้นเล็กน้อย
การเปลี่ยน/tmp
ความถี่การล้างข้อมูล
การตั้งค่าเริ่มต้นที่บอกให้ระบบของคุณล้างข้อมูล/tmp
เมื่อรีบูตจะถูกเก็บไว้ใน/etc/default/rcS
ไฟล์ TMPTIME
ค่าที่เราจะดูที่เป็น
มูลค่าปัจจุบันของTMPTIME=0
ไฟล์ says says เมื่อรีบูตแม้อายุของไฟล์ การเปลี่ยนค่านี้เป็นหมายเลขอื่น (บวก) จะเปลี่ยนจำนวนวันที่ไฟล์สามารถอยู่รอด/tmp
ได้
TMPTIME=7
การตั้งค่านี้จะอนุญาตให้ไฟล์อยู่ในนั้น/tmp
จนกว่าพวกเขาจะมีอายุหนึ่งสัปดาห์แล้วจึงลบออกในการรีบูตครั้งถัดไป จำนวนลบ ( TMPTIME=-1
) บอกให้ระบบไม่ลบสิ่งใด/tmp
ๆ นี่อาจไม่ใช่สิ่งที่คุณต้องการ แต่มีให้
/etc/init/mounted-temp.conf
แต่มีเส้นstart on mounted MOUNTPOINT=/tmp
ที่ทำให้ฉันคิดว่ามันใช้ไม่ได้
/var/tmp
/tmp
ฉันกำลังตรวจสอบเรื่องนี้บน Ubuntu 16.10 ฉันสามารถรับรองได้ว่าการแก้ไข / etc / default / rcS จะไม่มีผลกระทบใด ๆ อีกต่อไปและไฟล์ใน tmp จะถูกลบออกโดยการรีบูตไม่ว่าคุณจะใส่อะไรในไฟล์นั้น อย่างที่คนอื่นพูดถึง tmpreaper จะไม่ถูกใช้อีกต่อไป
ฉันคิดว่าคำตอบที่ถูกต้องคือ Ubuntu 16.10 มีการตั้งค่าใหม่ มีโฟลเดอร์ /etc/tmpfiles.d อยู่ใน man page "tmpfiles.d" ในโฟลเดอร์นั้นควรวางไฟล์กำหนดค่าเพื่อควบคุมว่าจะลบไฟล์ / tmp หรือไม่ นี่คือสิ่งที่ฉันกำลังทำเพื่อหยุดการรีบูตจากการลบไฟล์ใน / tmp เว้นแต่พวกเขามีอายุ 20 วัน:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
แทนที่ "20d" โดย "-" หากคุณไม่ต้องการลบไฟล์ นี่คือความพยายามที่ดีที่สุดของฉันหน้าคนนั้นแทบจะไม่ยอมรับรายละเอียดเลย
ข้อดีของการตั้งค่าใหม่คือตัวล้างไฟล์ยังคงสามารถทำงานได้แม้ว่าระบบจะไม่รีบูต (เช่นในกรณีของเซิร์ฟเวอร์บนเครื่องเสมอ) นั่นเป็นข้อดีอย่างมากฉันคิดว่า
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
ใน Ubuntu 14.04 ทำได้โดยการtmpreaper
เรียก cron (จาก/etc/cron.daily
) ทุกวัน โปรแกรมที่สามารถกำหนดค่าผ่านทางและ/etc/default/rcS
/etc/tmpreaper.conf
จะถูกล้างข้อมูลทุกครั้งที่คุณรีบูท
tmpreaper
ไม่เคยได้ยินแม้แต่ของ
ในsystemd
Ubuntu (15.10 และใหม่กว่า) สิ่งนี้กระทำโดย systemd โดยใช้systemd-tmpfiles-clean
บริการและตัวจับเวลา:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# 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.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
และ
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# 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.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
ดังนั้นให้systemd-tmpfiles-clean
ปิดเครื่องและหนึ่งครั้งต่อวันเป็นอย่างอื่น ไฟล์ที่มันทำความสะอาดสามารถขยายการใช้/etc/tmpfiles.d
ที่ระบุไว้ในคำตอบอื่น
คุณสามารถเปลี่ยนพฤติกรรมการจับเวลาได้โดยใช้systemctl edit systemd-tmpfiles-clean.timer
และใช้Timer
ตัวเลือกการกำหนดค่าsystemd ต่างๆ(ดูman 5 systemd.timer
)
/tmp
ยังไม่หมดไป และฉันต้องการมันเพื่อทำความสะอาด แม้การเริ่มด้วยตนเองsudo systemctl start systemd-tmpfiles-clean
จะไม่ทำเคล็ดลับ ความคิดใดทำไม
บนหนึ่งในเซิร์ฟเวอร์ของเราที่ใช้งาน Ubuntu เรามีสคริปต์เพื่อลบไฟล์ใน / tmp และทำงานทุกคืน
สคริปต์คือ:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
เพียงบันทึกเนื้อหาข้างต้นลงในไฟล์ chmod 775 ไฟล์และสร้างรายการ cron เพื่อเรียกใช้ เนื่องจากนี่เป็นเว็บเซิร์ฟเวอร์เราไม่ต้องการรีบูตด้วยเหตุผลที่ชัดเจน
ln -s /usr /tmp/kaboom
หรือแม้แต่ln -s /* /tmp/
...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
ใน / etc / fstab