ไฟล์ที่สร้างขึ้นจะถูกลบทุก ๆ วินาทีในไดเรกทอรี tmp


13

โดยไม่ได้ตั้งใจฉันสังเกตเห็นว่าในไดเรกทอรี / tmp ถูกสร้างขึ้นอย่างต่อเนื่องบางไฟล์แล้วลบทันที การใช้การสืบทอดที่ls -l /tmpฉันจัดการเพื่อจับไฟล์ที่สร้างขึ้น:

-rw------- 1 root root       0 Apr  2 19:37  YlOmPA069G
-rw------- 1 root root       0 Apr  2 19:37  l74jZzbcs6

หรือตัวอย่างอื่น:

-rw------- 1 root root       0 Apr  2 19:44  AwVhWakvQ_
-rw------- 1 root root       0 Apr  2 19:44  RpRGl__cIM
-rw------- 1 root root       0 Apr  2 19:44  S0e72nkpBl
-rw------- 1 root root       0 Apr  2 19:44  emxIQQMSy2

มันเกี่ยวกับ Ubuntu 18.10 พร้อม 4.18.0-16-generic นี่เป็นการติดตั้งที่เกือบสดใหม่: ฉันได้เพิ่มซอฟต์แวร์เซิร์ฟเวอร์บางตัว (nginx, mysql, php7.2-fpm) แต่ถึงแม้จะมีปัญหาที่ยังปิดอยู่

ไฟล์ใดบ้างที่ถูกสร้างขึ้นและทำไม? ฉันจะหยุดพฤติกรรมนี้ได้อย่างไร สิ่งที่ไม่พึงปรารถนาอย่างมากในSSD

ขอขอบคุณ!

UPDATE

คำถามเกี่ยวกับเมื่อไม่มี / tmp ใน RAM (ไม่มีtmpfs )
ซอฟต์แวร์ผิดคือx2goserver.serviceมิฉะนั้นจะต้องมีหนึ่งอัน


2
"เป็นสิ่งที่ไม่พึงปรารถนาอย่างมากใน SSD" โปรดอธิบายสิ่งนี้ คุณไม่มี / tmp เป็น tmpfs ใช่ไหม ทำไมจะไม่ล่ะ? เหตุใดไฟล์ในหน่วยความจำจึงเสียหาย ssd
Rinzwind

2
/ tmp อาจไม่จำเป็นต้องเป็น tmpfs ดังนั้นจึงเป็นคำถามที่ถูกต้อง
Colin Ian King

2
ใช่มันจะไม่เป็นที่พึงปรารถนาใน SSD อย่างน้อยถ้าเมตาดาต้าของไดเรกทอรีได้รับการเขียนกลับไปที่ดิสก์แทนการอยู่ในแคชร้อน นี่คือสาเหตุที่/tmpโดยปกติแล้วบน tmpfs (ระบบไฟล์ ramdisk ที่ใช้ pagecache เป็นแหล่งเก็บข้อมูล) คุณแท็กคำถามของคุณด้วยtmpfsดังนั้นความคิดเห็นของคุณเกี่ยวกับ SSD จึงไม่เป็นที่น่าพอใจ
Peter Cordes

1
ยอดเยี่ยม - เป็นสิ่งที่ต้องมี
adrhc

2
@PeterCordes ฉันไม่แน่ใจว่าคำสั่ง " /tmpปกติบน tmpfs" นั้นใช้ได้สำหรับผู้ใช้ Ubuntu ทั่วไป - เพียงแค่ใช้การติดตั้ง Ubuntu เริ่มต้น/tmpอยู่บนดิสก์และ OP จะต้องสร้างรายการ fstab ที่เหมาะสมเพื่อใส่ลงใน tmpfs
Charles Green

คำตอบ:


17

ฉันขอแนะนำให้ติดตั้งและเรียกใช้ fnotifystat เพื่อตรวจจับกระบวนการที่สร้างไฟล์เหล่านี้:

sudo apt-get install fnotifystat
sudo fnotifystat -i /tmp

คุณจะเห็นกระบวนการที่กำลังทำกิจกรรมเปิด / ปิด / อ่าน / เขียนดังนี้:

Total   Open  Close   Read  Write   PID  Process         Pathname
  3.0    1.0    1.0    0.0    1.0   5748 firefox         /tmp/cubeb-shm-5748-input (deleted)
  2.0    0.0    1.0    0.0    1.0  18135 firefox         /tmp/cubeb-shm-5748-output (deleted)
  1.0    1.0    0.0    0.0    0.0   5748 firefox         /tmp/cubeb-shm-5748-output (deleted)

3
Postscript: ฉันเป็นผู้เขียนเครื่องมือนี้: kernel.ubuntu.com/~cking/fnotifystat
Colin Ian King

1
และคุณยังเป็นคนแรกที่ตอบคำถาม (แม้ว่าจะไม่เห็นอีกต่อไป) มันเป็นเครื่องมือที่ดีโดยวิธีการ
adrhc

+1 สำหรับยูทิลิตี้ที่มีประโยชน์มาก ทันเวลาด้วยฉันสามารถใช้มันเพื่อตรวจสอบโครงการต่อไปของฉันในการสร้าง/tmp/...ไฟล์สำหรับ IPC ระหว่าง daemon และพื้นที่ผู้ใช้แทน DBUS ที่ซับซ้อนมากขึ้น
WinEunuuchs2Unix

8

พิจารณาว่าโปรแกรม / กระบวนการใดกำลังแตะไฟล์

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

$ sudo fnotifystat -i /tmp

บางครั้งเพียงแค่มองหาที่เจ้าของผู้ใช้หรือกลุ่มช่วยให้คุณมีคำแนะนำที่ดี (เช่น: ls -lsha)


ใส่/tmpลงใน RAM แทนดิสก์

หากคุณต้องการคุณสามารถใส่ไดเรคทอรี่/tmpใน RAM คุณจะต้องตรวจสอบว่านี่เป็นการย้ายที่ชาญฉลาดตาม RAM ที่มีอยู่หรือไม่รวมถึงขนาดและความถี่ในการอ่าน / เขียน

$ sudo vim /etc/fstab

...
# tmpfs in RAM
tmpfs         /tmp         tmpfs         defaults,noatime,mode=1777      0 0
...
$ sudo mount /tmp
$ mount | grep tmp # Check /tmp is in RAM
tmpfs on /tmp type tmpfs (rw,noatime)

หากคุณมีแรมเพียงพอสิ่งนี้ถือได้ว่าเป็นสิ่งที่ดีมากสำหรับทั้งอายุการใช้งานของ SSD และความเร็วของระบบของคุณ คุณสามารถทำสิ่งนี้ให้สำเร็จด้วย RAM ที่น้อยลงหากคุณปรับแต่งtmpreaper(บางครั้งtmpwatch) ให้ก้าวร้าวมากขึ้น


6

อันที่ไม่พึงประสงค์อย่างมากใน SSD

คุณติดแท็กคำถามของคุณด้วยดังนั้นจึงไม่ชัดเจนสำหรับฉันที่เกี่ยวข้องกับ SSD เลย Tmpfs เป็นระบบไฟล์ในหน่วยความจำ (หรือมากกว่านั้นอย่างแม่นยำในบล็อกแคช) ดังนั้นจึงจะไม่ตีดิสก์ทางกายภาพ

นอกจากนี้แม้ว่าคุณจะมีที่เก็บข้อมูลสำรองสำหรับ/tmpระบบไฟล์ของคุณเว้นแต่ว่าคุณมีระบบที่มี RAM เพียงไม่กี่กิโลไบต์ไฟล์ที่มีอายุสั้นเหล่านี้จะไม่ส่งผลกระทบต่อดิสก์ แต่อย่างใดการดำเนินการทั้งหมดจะเกิดขึ้นในแคช

ดังนั้นในคำอื่น ๆ ไม่มีอะไรต้องกังวลตั้งแต่คุณใช้ tmpfs และถ้าคุณไม่ใช้ก็คงไม่มีอะไรต้องกังวล


ฉันเก็บ / tmp ใน RAM ดังนั้นโดยไม่ได้ตั้งใจฉันติดแท็กด้วยประเภท fs ปัจจุบันของฉัน (tmpfs) ฉันลบออกตอนนี้ แต่ฉันคิดว่าคุณตอบว่ามีประโยชน์เช่นกันดังนั้น 1 ขึ้นจากฉัน
adrhc

@adrhc: ถ้าคุณ/tmpอยู่ใน RAM ก็ไม่มีอะไรเกี่ยวข้องกับ SSD ของคุณดังนั้นมันจึงไม่เป็นที่ต้องการหรือไม่พึงปรารถนา แต่จริงๆแล้วไม่เกี่ยวข้องเลย
Jörg W Mittag

ฉันเห็นด้วย แต่คำถามนั้นเกี่ยวกับเมื่อไม่มี / tmp ใน RAM มันเพิ่งเกิดขึ้นที่ฉันมี / tmp ใน RAM; ยังคงปัญหาที่ฉันสนใจ
adrhc

0

ผู้คนกังวลมากเกินไปเกี่ยวกับความอดทนในการเขียน SSD สมมติว่าการสร้างและลบไฟล์ว่างจะเขียน 24 kB ทุก ๆ วินาทีและใช้ข้อมูลจำเพาะ 150 TBW สำหรับ Samsung 860 EVO 250 GB ยอดนิยมอายุการใช้งาน 193 ปี!

(150 * 10 ^ 12) / ((2 * 3 * 4 * 1024) * 60 * 60 * 24 * 365.25) = 193

สำหรับระบบไฟล์ ext4 ให้ใช้ "tune2fs -l" เพื่อค้นหาอายุการใช้งานการเขียน หรือใช้ "smartctl -a" แล้วมองหา Total_LBAs_Written ฉันมักจะพบว่า SSD มีชีวิตที่เหลืออยู่มากมาย


คำถามคือ "ไฟล์ใดบ้างที่สร้างขึ้นมาและเพราะเหตุใดฉันจะหยุดพฤติกรรมนี้ได้อย่างไร" คำตอบ "ของคุณเหมาะสมกับคำถามอย่างไร
bummi

แม้ว่าจะไม่ตอบคำถามโดยตรงฉันพบว่าข้อมูลนี้มีประโยชน์ แต่ก็ไม่แม่นยำมากเกี่ยวกับวิธีใช้คำสั่งเหล่านั้น เช่นกับ tune2fs tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1ฉันได้รับ
adrhc

0

คุณใช้/dev/nvme0...ชื่อผิด:

$ sudo tune2fs -l /dev/nvme0n1
tune2fs 1.42.13 (17-May-2015)
tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1
Couldn't find valid filesystem superblock.

รูปแบบที่ถูกต้องคือ:

$ sudo tune2fs -l /dev/nvme0n1p6
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   New_Ubuntu_16.04
Last mounted on:          /
Filesystem UUID:          b40b3925-70ef-447f-923e-1b05467c00e7
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2953920
Block count:              11829504
Reserved block count:     534012
Free blocks:              6883701
Free inodes:              2277641
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1021
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8160
Inode blocks per group:   510
Flex block group size:    16
Filesystem created:       Thu Aug  2 20:14:59 2018
Last mount time:          Thu Apr  4 21:05:29 2019
Last write time:          Thu Feb 14 21:36:27 2019
Mount count:              377
Maximum mount count:      -1
Last checked:             Thu Aug  2 20:14:59 2018
Check interval:           0 (<none>)
Lifetime writes:          4920 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       1308352
Default directory hash:   half_md4
Directory Hash Seed:      a179d56c-6c68-468c-8070-ffa5bb7cd973
Journal backup:           inode blocks

เท่าที่อายุการใช้งานของ NVMe SSDไป:

$ sudo nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 38 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 22,351,778
data_units_written                  : 14,667,833
host_read_commands                  : 379,349,109
host_write_commands                 : 127,359,479
controller_busy_time                : 952
power_cycles                        : 1,925
power_on_hours                      : 1,016
unsafe_shutdowns                    : 113
media_errors                        : 0
num_err_log_entries                 : 598
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1                : 38 C
Temperature Sensor 2                : 49 C
Temperature Sensor 3                : 0 C
Temperature Sensor 4                : 0 C
Temperature Sensor 5                : 0 C
Temperature Sensor 6                : 0 C
Temperature Sensor 7                : 0 C
Temperature Sensor 8                : 0 C

บรรทัดสำคัญที่นี่คือ:

percentage_used                     : 0%

หลังจากใช้งานไป 18 เดือนเปอร์เซ็นต์การใช้งาน SSD จะเป็น 0% หากหลังจาก 3 ปีของการใช้งานจะได้รับผลกระทบ 1% ฉันรู้ว่า SSD จะมีอายุ 300 ปี

เห็นได้ชัดว่าคำตอบนี้จะไม่พอดีกับส่วนความคิดเห็นเพื่อตอบความคิดเห็นอื่น ๆ


ส่วนใดของเอาต์พุต tune2fs ที่เกี่ยวข้องกับอายุการใช้งานของ SSD
adrhc

@adrhc ฉันแสดงวิธีการโทรที่ถูกต้องตามtune2fsความคิดเห็นของคุณในคำตอบของFraser Gunn ที่แสดงข้อความแสดงข้อผิดพลาด
WinEunuuchs2Unix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.