Làm thế nào là /tmpthư mục được làm sạch? Có tự động không? Nếu vậy, bao lâu thì nó được làm sạch?
Làm thế nào là /tmpthư mục được làm sạch? Có tự động không? Nếu vậy, bao lâu thì nó được làm sạch?
Câu trả lời:
Ghi chú! Câu trả lời này đã lỗi thời kể từ ít nhất là Ubuntu 14.04. Xem các câu trả lời khác cho tình huống hiện tại và nếu chúng chứng minh đúng thì hãy nâng cấp chúng một cách giận dữ. Cũng gửi bình luận để tôi có thể đặt liên kết ở đây để trả lời đúng hiện tại.
Đối với 14.04, hãy xem https://askubfox.com/a/759048/1366
Để biết 16.10, hãy xem https://askubfox.com/a/857154/453746
Câu trả lời cũ từ năm 2011:
Việc làm sạch /tmpđược thực hiện bởi các kịch bản mới nổi /etc/init/mounted-tmp.conf. Kịch bản được chạy bởi khởi động mọi lúc /tmpđược gắn kết. Thực tế điều đó có nghĩa là tại mỗi lần khởi động.
Kịch bản thực hiện đại khái như sau: nếu một tệp trong /tmpcũ hơn $TMPTIMEngày thì nó sẽ bị xóa.
Giá trị mặc định $TMPTIMElà 0, có nghĩa là mọi tệp và thư mục /tmpbị xóa. $TMPTIMElà một biến môi trường được định nghĩa trong /etc/default/rcS.
Thư mục được xóa theo mặc định tại mỗi lần khởi động, bởi vì TMPTIME0 theo mặc định.
Tại đây bạn có thể thay đổi thời gian trong tệp sau:
/etc/default/rcS
TMPTIME cho biết mức độ thường xuyên của tmp dir sẽ bị xóa trong vài ngày
tmpreapermột cơ hội.
tmpwatchnên là một công cụ thích hợp.
Mặc dù /tmpthư mục không phải là nơi lưu trữ các tệp lâu dài, đôi khi bạn muốn giữ mọi thứ lâu hơn một chút so với lần khởi động lại tiếp theo , đây là mặc định trên các hệ thống Ubuntu. Tôi biết một hoặc hai lần tôi đã tải xuống một cái gì đó /tmptrong quá trình thử nghiệm, khởi động lại sau khi thực hiện thay đổi và sau đó mất dữ liệu gốc. Điều này có thể được thay đổi nếu bạn muốn giữ các /tmptệp của mình lâu hơn một chút.
Thay đổi /tmptần số dọn dẹp
Cài đặt mặc định cho hệ thống của bạn xóa /tmpkhi khởi động lại được giữ trong /etc/default/rcStệp. Giá trị chúng ta sẽ xem xét là TMPTIME.
Giá trị hiện tại của việc TMPTIME=0xóa các tệp khi khởi động lại mặc dù tuổi của tệp. Thay đổi giá trị này thành một số (dương) khác sẽ thay đổi số ngày một tệp có thể tồn tại /tmp.
TMPTIME=7
Cài đặt này sẽ cho phép các tệp ở lại /tmpcho đến khi chúng được một tuần tuổi, và sau đó xóa chúng trong lần khởi động lại tiếp theo. Một số âm ( TMPTIME=-1) cho hệ thống không bao giờ xóa bất cứ thứ gì trong /tmp. Đây có lẽ không phải là thứ bạn muốn, nhưng có sẵn.
/etc/init/mounted-temp.conf, nhưng nó có dòng start on mounted MOUNTPOINT=/tmpkhiến tôi nghĩ rằng nó không thể áp dụng được.
/var/tmpthay vì /tmp.
Tôi đang kiểm tra điều này trên Ubuntu 16.10. Tôi có thể xác nhận rằng chỉnh sửa / etc / default / rcS không còn hiệu lực nữa và các tệp trong tmp bị xóa sạch bằng cách khởi động lại bất kể bạn đặt gì vào tệp đó. Như những người khác đề cập, tmpreaper không còn được sử dụng.
Tôi nghĩ rằng câu trả lời đúng là Ubuntu 16.10 có thiết lập mới. Có một thư mục /etc/tmpfiles.d, được ghi lại trong trang man "tmpfiles.d". Trong thư mục đó, người ta nên đặt một tệp cấu hình để kiểm soát xem / tmp có bị xóa hay không. Đây là những gì tôi đang làm để ngăn chặn việc khởi động lại xóa các tệp trong / tmp trừ khi chúng được 20 ngày tuổi:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Thay thế "20d" bằng "-" nếu bạn không bao giờ muốn xóa tệp. Đây là nỗ lực tốt nhất của tôi, trang người đàn ông đó gần như không thể xuyên thủng với chi tiết.
Ưu điểm của thiết lập mới là trình dọn dẹp tệp vẫn có thể chạy ngay cả khi hệ thống không được khởi động lại (như trong trường hợp luôn có trên máy chủ). Đó là một điểm cộng lớn, tôi nghĩ vậy.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
Trong Ubuntu 14.04, điều này được thực hiện bởi tmpreaper, được gọi là hàng ngày bởi cron (từ /etc/cron.daily). Chương trình có thể được cấu hình thông qua /etc/default/rcSvà /etc/tmpreaper.conf.
Nó được dọn sạch mỗi khi bạn khởi động lại.
tmpreaper.
Trong systemdUbuntu (15.10 trở lên), điều này được thực hiện bởi systemd, sử dụng systemd-tmpfiles-cleandịch vụ và bộ đếm thời gian:
$ 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
Và
$ 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
Vì vậy, systemd-tmpfiles-cleanchạy trên tắt máy, và một lần mỗi ngày khác. Các tập tin nó làm sạch có thể được mở rộng bằng cách sử dụng /etc/tmpfiles.dđược đề cập trong câu trả lời khác .
Bạn có thể tự thay đổi hành vi hẹn giờ bằng cách sử dụng systemctl edit systemd-tmpfiles-clean.timervà sử dụng các Timertùy chọn cấu hình systemd khác nhau (xem man 5 systemd.timer).
/tmpvẫn chưa được làm sạch. và tôi cần nó để được làm sạch ngay cả bắt đầu bằng tay sudo systemctl start systemd-tmpfiles-cleancũng không làm được. Bất cứ ý tưởng tại sao?
Trên một trong những máy chủ của chúng tôi chạy Ubuntu, chúng tôi có một tập lệnh để xóa các tệp trong / tmp và nó chạy hàng đêm.
Kịch bản là:
#!/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 {} \;
Chỉ cần lưu các nội dung trên vào một tệp chmod 775 tệp và tạo một mục cron để chạy nó. Vì đây là một máy chủ web, chúng tôi không muốn khởi động lại nó vì những lý do rõ ràng.
ln -s /usr /tmp/kaboomhoặc thậm chí ln -s /* /tmp/...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab.