tmp 目录中每秒创建然后删除的文件

tmp 目录中每秒创建然后删除的文件

我偶然发现 /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),但即使关闭了这些软件,问题仍然存在。

创建了哪些文件以及为什么创建?我该如何阻止这种行为?不受欢迎的一对一固态硬盘

谢谢你!

更新

问题是当 RAM 中没有 /tmp 时(没有临时文件)。
罪魁祸首是x2goserver.服务否则一定有一。

答案1

我建议安装并运行 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)

答案2

确定哪个程序/进程正在接触文件

您可以使用以下工具来lsof确定哪些进程和二进制文件正在接触/打开哪些文件。如果文件频繁更改,这可能会变得麻烦,因此您可以设置一个监视程序来通知您:

$ sudo fnotifystat -i /tmp

有时,只需看一下用户或群组所有者就可以给您一个很好的提示(即ls -lsha:)。


放入/tmp内存而不是磁盘

如果需要,您可以将/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)

如果您有足够的 RAM,那么这对于延长 SSD 的使用寿命以及提高系统速度来说都是一件非常好的事情。如果您tmpreaper(有时tmpwatch)调整得更积极,甚至可以使用较少的 RAM 来实现此目的。

答案3

SSD 上非常不理想的情况

您使用以下标签标记了您的问题,所以我不太清楚这与 SSD 有什么关系。Tmpfs 是一个内存中(或更准确地说,块缓存中)文件系统,因此它永远不会到达物理磁盘。

此外,即使您的文件系统有一个物理备用存储/tmp,除非您的系统只有几千字节的 RAM,否则那些短暂的文件永远不会到达磁盘,所有操作都将在缓存中进行。

所以,换句话说,由于您正在使用 tmpfs,所以没有什么可担心的,如果您没有使用,也没有什么可担心的。

答案4

您使用了错误的/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 年。

显然这个答案不适合在评论部分回复其他评论。

相关内容