созданные файлы затем удаляются каждую секунду в каталоге 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

Спасибо!

ОБНОВИТЬ

Вопрос в том, когда нет / tmp в ОЗУ (нет tmpfs ).
Виновным программным обеспечением является x2goserver.service, в противном случае оно должно быть .

adrhc
источник
2
"очень нежелательный на SSD" объясните пожалуйста? У вас нет / tmp как tmpfs? Почему нет? почему файлы в памяти повреждают ssd?
Rinzwind
2
/ tmp не обязательно может быть tmpfs, так что это правильный вопрос
Колин Ян Кинг,
2
Да, это было бы нежелательно на SSD, по крайней мере, если метаданные каталога действительно записывались обратно на диск, а не просто оставались горячими в кеше. Вот почему /tmpобычно используется tmpfs (файловая система ramdisk, которая использует страничный кэш в качестве своего резервного хранилища); Вы пометили свой вопрос с помощью tmpfs , поэтому ваши комментарии о SSD кажутся неуместными.
Питер Кордес
1
здорово - это должно быть
adrhc
2
@PeterCordes Я не уверен, что утверждение « /tmpобычно на tmpfs» допустимо для обычного пользователя Ubuntu - просто с помощью установки Ubuntu по умолчанию, она /tmpнаходится на диске, и оператору OP необходимо создать соответствующие записи fstab, чтобы поместить его в tmpfs
Чарльз Грин

Ответы:

17

Я предлагаю установить и запустить fnotifystat, чтобы обнаружить процесс, который создает эти файлы:

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

Вы увидите процесс, который выполняет действия open / close / read / write примерно так:

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
Постскриптум: я являюсь автором этого инструмента: kernel.ubuntu.com/~cking/fnotifystat
Колин Ян Кинг,
1
И вы также первый, кто ответил на вопрос (хотя это уже не видно). Кстати, это хороший инструмент.
19
+1 за очень полезную утилиту. Своевременно, так как я могу использовать его для мониторинга моего следующего проекта создания /tmp/...файлов для IPC между демоном и пользовательским пространством вместо более сложной DBUS.
WinEunuuchs2Unix
8

Определите, какая программа / процесс касается файлов

Вы можете использовать такие инструменты, как lsofопределение того, какие процессы и двоичные файлы касаются / открывают какие файлы. Это может стать проблематичным, если файлы часто меняются, поэтому вместо этого вы можете настроить часы для уведомления:

$ sudo fnotifystat -i /tmp

Иногда простой взгляд на пользователя или владельца группы дает вам хороший совет (например:) ls -lsha.


Положить /tmpв оперативную память вместо диска

При желании вы можете поместить свой /tmpкаталог в оперативную память. Вы должны будете определить, является ли это разумным шагом, основываясь на доступной оперативной памяти, а также на размере и частоте чтения / записи.

$ 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, так и для скорости вашей системы. Вы даже можете сделать это с меньшим количеством оперативной памяти, если вы настроите tmpreaper(иногда tmpwatch), чтобы быть более агрессивным.

earthmeLon
источник
6

очень нежелательный на SSD

Вы помечены свой вопрос с , так что не совсем понятно, как это относится к SSD на всех. Tmpfs - это файловая система в памяти (или, точнее, в блок-кеше), поэтому она никогда не попадет на физический диск.

Более того, даже если у вас есть физическое резервное хранилище для вашей /tmpфайловой системы, если у вас нет системы с парой килобайт ОЗУ, эти недолговечные файлы никогда не попадут на диск, все операции будут происходить в кеше.

Другими словами, беспокоиться не о чем, так как вы используете tmpfs, и если бы вы этого не делали, беспокоиться было бы не о чем.

Йорг Миттаг
источник
Я храню / tmp в оперативной памяти, поэтому по ошибке я пометил также свой текущий тип fs (tmpfs). Я удалил его сейчас, но я нахожу, что ваш ответ тоже полезен, так что 1 от меня.
19
@adrhc: Если вы находитесь /tmpв оперативной памяти, то это не имеет никакого отношения к вашему SSD, поэтому это не является ни желательным, ни нежелательным, но на самом деле совершенно не связано.
Йорг Миттаг
Я согласен, но вопрос о том, когда нет / TMP в оперативной памяти. Просто так получилось, что у меня была / tmp в ОЗУ; Тем не менее, проблема заинтриговала меня.
19
0

Люди слишком беспокоятся о выносливости записи SSD. Если предположить, что создание и удаление пустого файла записывает 24 КБ каждую секунду, а использование спецификации 150 ТБайт для популярного Samsung 860 EVO 250 ГБ, износ занимает 193 года!

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

Для файловых систем ext4 используйте "tune2fs -l", чтобы найти записи продолжительности жизни. Или используйте «smartctl -a» и найдите Total_LBAs_Written. Я всегда нахожу, что у SSD осталось много жизни.

Фрейзер Ганн
источник
Вопрос «Какие файлы созданы и почему? Как мне остановить это поведение?», Как ваш «ответ» подходит к вопросу?
Бумми
Хотя я и не отвечаю на вопрос напрямую, я нахожу и эту информацию полезной, хотя и не очень точной в отношении того, как использовать эти команды. Например, с 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 лет.

Очевидно, что этот ответ не поместится в разделе комментариев, чтобы ответить на другие комментарии.

WinEunuuchs2Unix
источник
Какая часть из вывода tune2fs относится ко времени жизни SSD?
19
@adrhc Я показываю правильный способ звонка tune2fsв ответ на ваш комментарий к ответу Фрейзера Ганна с сообщением об ошибке.
WinEunuuchs2Unix