创建的文件然后每秒在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

关于具有4.18.0-16通用版本的Ubuntu 18.10。这几乎是全新的安装:我添加了一些服务器软件(nginx,mysql,php7.2-fpm),但是即使关闭了,问题仍然存在。

创建了哪些文件,为什么?我将如何停止这种行为?SSD上非常不受欢迎的一个

谢谢!

更新

问题是关于什么时候RAM中没有/ tmp(没有tmpfs)。
有罪软件为x2goserver.service,否则必须拥有一个。


2
“在SSD上非常不受欢迎的一个”请解释一下吗?您没有/ tmp作为tmpfs?为什么不?为什么内存中的文件会损坏SSD?
Rinzwind

2
/ tmp不一定是tmpfs,所以这是一个有效的问题
Colin Ian King

2
是的,至少在目录元数据实际上已写回到磁盘上而不仅仅是保持高速缓存的情况下,这在SSD上是不希望的。这就是为什么/tmp通常在tmpfs(使用页面缓存作为后备存储的ramdisk文件系统)上的原因;您用tmpfs标记了问题,因此您对SSD的评论似乎不合时宜。
彼得·科德斯

1
很棒-这是必须有的
adrhc

2
@PeterCordes我不确定语句“ /tmp通常在tmpfs上”对普通的Ubuntu用户是否有效-仅使用默认的Ubuntu安装/tmp在磁盘上,OP就需要创建适当的fstab条目以将其放入tmpfs
Charles Green

Answers:


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
后记:我是这个工具的作者:kernel.ubuntu.com/~cking/fnotifystat
Colin Ian King

1
您也是第一个回答该问题的人(尽管不再可见)。顺便说一句,这是一个很好的工具。
adrhc

+1是非常方便的实用程序。我也可以及时地使用它来监视我的下一个项目,该项目为/tmp/...守护程序和用户空间之间的IPC 创建文件,而不是更复杂的DBUS。
WinEunuuchs2Unix

8

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

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

$ sudo fnotifystat -i /tmp

有时,仅查看用户或组所有者会给您一个很好的提示(即:)ls -lsha


放入/tmpRAM而不是磁盘

如果需要,可以将/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来完成此操作。


6

非常不理想的固态硬盘

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

此外,即使您为/tmp文件系统提供了一个物理后备存储,除非您的系统只有几千个RAM的内存,否则这些短命文件将永远不会到达磁盘,所有操作都将在缓存中进行。

因此,换句话说,因为您使用的是tmpfs,所以没有什么可担心的;如果您没有使用,则无需担心。


我将/ tmp保留在RAM中,因此错误地用我当前的fs类型(tmpfs)进行了标记。我现在删除了它,但我发现您的回答也很有用,所以离我较远1。
adrhc

@adrhc:如果您/tmp位于RAM中,则与SSD没有任何关系,因此它既不理想也不令人讨厌,但实际上完全无关。
约尔格W¯¯米塔格

我同意,但是问题是关于何时在RAM中没有/ tmp。碰巧我在RAM中有/ tmp。仍然,这个问题吸引了我。
adrhc

0

人们过分担心SSD的写入耐久性。假设创建和删除一个空文件每秒写入24 kB,并且使用流行的Samsung 860 EVO 250 GB的150 TBW规格,则耗时193年!

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

对于ext4文件系统,使用“ tune2fs -l”查找Lifetime写入。或者,使用“ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.