pliki tworzone, a następnie usuwane co sekundę w katalogu tmp

13

Przez pomyłkę zauważyłem, że w katalogu / tmp są ciągle tworzone niektóre pliki, a następnie natychmiast usuwane. Za pomocą kolejnych ls -l /tmpudało mi się złapać utworzone pliki:

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

lub inny przykład:

-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

Chodzi o Ubuntu 18.10 z wersją 4.18.0-16-generic. To prawie nowa instalacja: dodałem trochę oprogramowania serwera (nginx, mysql, php7.2-fpm), ale nawet po zamknięciu problem nadal występuje.

Jakie pliki są tworzone i dlaczego? Jak mam powstrzymać to zachowanie? bardzo niepożądany na dysku SSD

Dziękuję Ci!

AKTUALIZACJA

Pytanie dotyczy tego, kiedy nie ma / tmp w pamięci RAM (bez tmpfs ). Winnym
oprogramowaniem jest x2goserver.service, w przeciwnym razie trzeba go mieć .

adrhc
źródło
2
„bardzo niepożądany na dysku SSD” proszę wyjaśnić? Nie masz / tmp jako tmpfs? Dlaczego nie? dlaczego pliki w pamięci uszkadzają ssd?
Rinzwind
2
/ tmp niekoniecznie musi być tmpfs, więc jest to ważne pytanie
Colin Ian King
2
Tak, byłoby niepożądane na dysku SSD, przynajmniej jeśli metadane katalogu rzeczywiście zostałyby zapisane z powrotem na dysk zamiast po prostu pozostać gorące w pamięci podręcznej. Dlatego /tmpzwykle znajduje się na tmpfs (system plików ramdysku, który używa pagecache jako magazynu kopii zapasowych); otagowałeś swoje pytanie tmpfs , więc twoje komentarze na temat dysków SSD wydają się nie na miejscu.
Peter Cordes
1
świetnie - to musi mieć
adrhc
2
@PeterCordes Nie jestem pewien, czy stwierdzenie „ /tmpjest normalnie na tmpfs” jest prawidłowe dla zwykłego użytkownika Ubuntu - po prostu używając domyślnej instalacji Ubuntu, /tmpznajduje się na dysku i OP musiałby utworzyć odpowiednie wpisy fstab, aby umieścić je w tmpfs
Charles Green

Odpowiedzi:

17

Sugeruję zainstalowanie i uruchomienie fnotifystat w celu wykrycia procesu, który tworzy te pliki:

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

Zobaczysz proces wykonujący czynność otwierania / zamykania / odczytu / zapisu podobny do następującego:

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)
Colin Ian King
źródło
3
Postscript: Jestem autorem tego narzędzia: kernel.ubuntu.com/~cking/fnotifystat
Colin Ian King
1
Jesteś także pierwszym, który odpowiedział na pytanie (choć już tego nie widać). Nawiasem mówiąc, jest to dobre narzędzie.
adrhc
+1 za bardzo przydatne narzędzie. Również na czas, ponieważ mogę go używać do monitorowania mojego następnego projektu tworzenia /tmp/...plików dla IPC między demonem a przestrzenią użytkownika zamiast bardziej skomplikowanego DBUS.
WinEunuuchs2Unix
8

Określ, który program / proces dotyka plików

Możesz użyć takich narzędzi, lsofaby określić, które procesy i pliki binarne dotykają / otwierają które pliki. Może to być kłopotliwe, jeśli pliki często się zmieniają, więc zamiast tego możesz skonfigurować zegarek, aby powiadomić Cię:

$ sudo fnotifystat -i /tmp

Czasami samo spojrzenie na użytkownika lub właściciela grupy daje dobrą wskazówkę (np ls -lsha. :) .


Umieść /tmpw pamięci RAM zamiast na dysku

Jeśli chcesz, możesz umieścić swój /tmpkatalog w pamięci RAM. Będziesz musiał ustalić, czy jest to inteligentny ruch na podstawie dostępnej pamięci RAM, a także rozmiaru i częstotliwości odczytu / zapisu.

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

Jeśli masz wystarczającą ilość pamięci RAM, można to uznać za bardzo dobrą rzecz zarówno dla długowieczności dysku SSD, jak i szybkości systemu. Możesz to zrobić nawet przy mniejszej ilości pamięci RAM, jeśli dostosujesz tmpreaper(czasami tmpwatch), aby być bardziej agresywnym.

EarthmeLon
źródło
6

bardzo niepożądany na dysku SSD

Twoje pytanie otagowano , więc nie jest dla mnie całkiem jasne, w jaki sposób odnosi się to do dysku SSD. Tmpfs to system plików w pamięci (a ściślej w pamięci podręcznej), więc nigdy nie trafi na dysk fizyczny.

Co więcej, nawet jeśli masz fizyczny magazyn kopii zapasowych dla swojego /tmpsystemu plików, chyba że masz system z zaledwie kilkoma kilobajtami pamięci RAM, te krótkotrwałe pliki nigdy nie trafią na dysk, wszystkie operacje zostaną wykonane w pamięci podręcznej.

Innymi słowy, nie ma się czym martwić, ponieważ używasz tmpfs, a jeśli nie, nadal nie byłoby się czym martwić.

Jörg W Mittag
źródło
Trzymam / tmp w pamięci RAM, więc przez pomyłkę oznaczyłem również moim bieżącym typem fs (tmpfs). Usunąłem go teraz, ale uważam, że twoja odpowiedź też jest przydatna, więc 1 ode mnie.
adrhc
@adrhc: Jeśli masz /tmppamięć RAM, nie ma ona nic wspólnego z dyskiem SSD, więc nie jest ani pożądana, ani niepożądana, ale w rzeczywistości całkowicie niezwiązana.
Jörg W Mittag
Zgadzam się, ale pytanie dotyczy tego, kiedy nie ma / tmp w pamięci RAM. Tak się złożyło, że miałem / tmp w pamięci RAM; problem mnie jednak zaintrygował.
adrhc
0

Ludzie zbytnio martwią się wytrzymałością zapisu SSD. Zakładając, że utworzenie i usunięcie pustego pliku powoduje zapis 24 kB na sekundę i użycie specyfikacji 150 TBW dla popularnego Samsung 860 EVO 250 GB, zużycie trwa 193 lata!

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

W systemach plików ext4 użyj „tune2fs -l”, aby znaleźć zapisy Lifetime. Lub użyj „smartctl -a” i poszukaj Total_LBAs_Written. Zawsze uważam, że na dysku SSD zostało dużo życia.

Fraser Gunn
źródło
Pytanie brzmi: „Jakie pliki są tworzone i dlaczego? Jak miałbym to zatrzymać?”, W jaki sposób „odpowiedź” pasuje do pytania?
bummi
Chociaż nie udzielając bezpośredniej odpowiedzi na pytanie, uważam te informacje za przydatne, choć niezbyt precyzyjne związane z używaniem tych poleceń. Np. Z tune2fs dostaję tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1.
adrhc
0

Używałeś złej /dev/nvme0...nazwy:

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

Właściwy format to:

$ 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

Jeśli chodzi o żywotność dysku 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

Kluczowa linia tutaj to:

percentage_used                     : 0%

Po 18 miesiącach użytkowania procent wykorzystania dysku SSD wynosi 0%. Jeśli po 3 latach użytkowania osiągnie 1%, to wiem, że dysk SSD będzie trwał 300 lat.

Oczywiście ta odpowiedź nie zmieściłaby się w sekcji komentarzy, aby odpowiedzieć na inne komentarze.

WinEunuuchs2Unix
źródło
Która część z wyjścia tune2fs dotyczy czasu życia dysku SSD?
adrhc 10.04.19
@adrhc tune2fsW odpowiedzi na Twój komentarz do odpowiedzi Frasera Gunna pokazywałem prawidłowy sposób dzwonienia z komunikatem o błędzie.
WinEunuuchs2Unix