các tệp được tạo sau đó bị xóa ở mỗi giây trong thư mục tmp


13

Do nhầm lẫn, tôi nhận thấy rằng trong thư mục / tmp liên tục được tạo một số tệp sau đó bị xóa ngay lập tức. Sử dụng liên tiếp ls -l /tmptôi đã quản lý để bắt các tệp đã tạo:

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

hoặc một ví dụ khác:

-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

Đó là về Ubuntu 18.10 với chung chung 4.18.0-16. Đây là một bản cài đặt gần như mới: Tôi đã thêm một số phần mềm máy chủ (nginx, mysql, php7.2-fpm) nhưng ngay cả với những người đã đóng thì vấn đề vẫn tồn tại.

Các tập tin được tạo ra là gì và tại sao? Làm thế nào tôi có thể ngăn chặn hành vi này? một điều rất không mong muốn trên SSD

Cảm ơn bạn!

CẬP NHẬT

Câu hỏi là về việc không có / tmp trong RAM (không có tmpfs ).
Phần mềm có tội là x2goserver.service nếu không thì phải có .


2
"một điều rất không mong muốn trên SSD" giải thích điều này? Bạn không có / tmp là một tmpfs? tại sao không? Tại sao các tập tin trong bộ nhớ sẽ làm hỏng một ssd?
Rinzwind

2
/ tmp có thể không nhất thiết phải là tmpfs, vì vậy đây là một câu hỏi hợp lệ
Colin Ian King

2
Có, đó là điều không mong muốn trên SSD, ít nhất là nếu siêu dữ liệu thư mục thực sự được ghi lại vào đĩa thay vì chỉ nóng trong bộ nhớ cache. Đây là lý do tại sao /tmpthường là trên tmpfs (một hệ thống tập tin ramdisk sử dụng pagecache làm kho lưu trữ của nó); bạn đã gắn thẻ câu hỏi của mình với các tmpfs , vì vậy nhận xét của bạn về SSD dường như không đúng chỗ.
Peter Cordes

1
tuyệt vời - đó là điều bắt buộc
adrhc

2
@PeterCordes Tôi không chắc rằng tuyên bố " /tmpbình thường trên tmpfs" là hợp lệ đối với người dùng Ubuntu bình thường - Chỉ cần sử dụng cài đặt Ubuntu mặc định, /tmplà trên đĩa và OP sẽ cần tạo các mục nhập fstab thích hợp để đưa nó vào tmpfs
Charles Green

Câu trả lời:


17

Tôi khuyên bạn nên cài đặt và chạy fnotifystat để phát hiện quá trình tạo các tệp này:

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

Bạn sẽ thấy quá trình thực hiện hoạt động mở / đóng / đọc / ghi một cái gì đó như sau:

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
Bản thảo: Tôi là tác giả của công cụ này: kernel.ubfox.com/~cking/fnotifystat
Colin Ian King

1
Và bạn cũng là người đầu tiên trả lời câu hỏi (mặc dù không còn thấy điều đó nữa). Đó là một công cụ tốt.
adrhc

+1 cho một tiện ích rất tiện dụng. Đúng lúc tôi có thể sử dụng nó để theo dõi dự án tiếp theo của mình là tạo /tmp/...các tệp cho IPC giữa daemon và không gian người dùng thay vì DBUS phức tạp hơn.
WinEunuuchs2Unix

8

Xác định chương trình / quy trình nào đang chạm vào tệp

Bạn có thể sử dụng các công cụ như lsofđể xác định quá trình và nhị phân nào đang chạm / mở tệp nào. Điều này có thể trở nên rắc rối nếu các tệp thay đổi thường xuyên, vì vậy thay vào đó bạn có thể thiết lập đồng hồ để thông báo cho bạn:

$ sudo fnotifystat -i /tmp

Đôi khi, chỉ cần nhìn vào người dùng hoặc chủ sở hữu nhóm sẽ cho bạn một gợi ý hay (ví dụ ls -lsha:).


Đặt /tmpvào RAM thay vì đĩa

Nếu bạn muốn, bạn có thể đặt /tmpthư mục của bạn vào RAM. Bạn sẽ phải xác định xem đây có phải là một bước đi thông minh dựa trên RAM có sẵn, cũng như kích thước và tần suất đọc / ghi.

$ 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)

Nếu bạn có đủ RAM, đây có thể được coi là một điều rất tốt để làm cho cả tuổi thọ của SSD, cũng như tốc độ của hệ thống của bạn. Bạn thậm chí có thể thực hiện điều này với số lượng RAM nhỏ hơn nếu bạn tinh chỉnh tmpreaper(đôi khi tmpwatch) để trở nên tích cực hơn.


6

một điều không mong muốn trên SSD

Bạn đã gắn thẻ câu hỏi của bạn với , vì vậy tôi không rõ điều này liên quan đến SSD như thế nào. Tmpfs là một hệ thống tập tin trong bộ nhớ (hay chính xác hơn là trong bộ nhớ cache), vì vậy nó sẽ không bao giờ đánh vào đĩa vật lý.

Hơn nữa, ngay cả khi bạn có một kho lưu trữ sao lưu vật lý cho /tmphệ thống tệp của mình , trừ khi bạn có một hệ thống chỉ có vài kilobyte RAM, các tệp tồn tại ngắn đó sẽ không bao giờ chạm vào đĩa, tất cả các hoạt động sẽ diễn ra trong bộ đệm.

Vì vậy, nói cách khác, không có gì phải lo lắng vì bạn đang sử dụng tmpfs, và nếu bạn không, vẫn không có gì phải lo lắng.


Tôi giữ / tmp trong RAM vì vậy do nhầm lẫn tôi cũng đã gắn thẻ với loại fs hiện tại của mình (tmpfs). Tôi đã gỡ bỏ nó ngay bây giờ nhưng tôi thấy bạn trả lời cũng hữu ích vì vậy 1 từ tôi.
adrhc

@adrhc: Nếu bạn /tmpđang ở trong RAM, thì nó không liên quan gì đến SSD của bạn, vì vậy nó không mong muốn cũng không mong muốn nhưng thực sự hoàn toàn không liên quan.
Jörg W Mittag

Tôi đồng ý nhưng câu hỏi là khi không có / tmp trong RAM. Nó chỉ xảy ra rằng tôi có / tmp trong RAM; Tuy nhiên, vấn đề hấp dẫn tôi.
adrhc

0

Mọi người lo lắng quá nhiều về độ bền ghi SSD. Giả sử rằng việc tạo và xóa một tệp trống ghi 24 kB mỗi giây và sử dụng thông số 150 TBW cho Samsung 860 EVO 250 GB phổ biến, hao mòn mất 193 năm!

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

Đối với hệ thống tập tin ext4, sử dụng "Tune2fs -l" để tìm ghi trọn đời. Hoặc, sử dụng "smartctl -a" và tìm Total_LBAs_Written. Tôi luôn thấy SSD còn rất nhiều tuổi thọ.


Câu hỏi là "Các tệp được tạo là gì và tại sao? Làm thế nào tôi có thể dừng hành vi này?", "Câu trả lời" của bạn phù hợp với câu hỏi như thế nào?
bummi

Mặc dù không trực tiếp trả lời câu hỏi nhưng tôi thấy thông tin này cũng hữu ích mặc dù không liên quan chính xác lắm đến cách sử dụng các lệnh đó. Ví dụ với Tune2fs tôi nhận được tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1.
adrhc

0

Bạn đã sử dụng sai /dev/nvme0...tên:

$ 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.

Định dạng đúng là:

$ 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

Theo như thời gian tồn tại của SSD NVMe :

$ 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

Dòng chính ở đây là:

percentage_used                     : 0%

Sau 18 tháng sử dụng, tỷ lệ phần trăm sử dụng SSD là 0%. Nếu sau 3 năm sử dụng nó đạt 1% thì tôi biết SSD sẽ tồn tại 300 năm.

Rõ ràng câu trả lời này sẽ không phù hợp với phần bình luận để trả lời các bình luận khác.


Phần nào từ đầu ra Tune2fs liên quan đến thời gian sử dụng của SSD?
adrhc

@adrhc Tôi đã chỉ ra cách gọi chính xác để tune2fsphản hồi nhận xét của bạn về câu trả lời của Fraser Gunn hiển thị thông báo lỗi.
WinEunuuchs2Unix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.