我的 /tmp 文件夹不是分区而是固定大小。为什么?

pep*_*nas 4 memory linux partitioning

我一次编译了 2 个内核,但编译过程停止了。原因:/tmp 目录已满。我检查了 df 并且... /tmp 的固定大小为 2GB!(我的电脑有 4GB 的内存)为什么?我什至没有 /tmp 分区...我该如何更改?

    File system    1K-blocks    Usati Disponib. Uso% Montato su
/dev/sda5       35431432 13651652  19973276  41% /
dev              1989592        0   1989592   0% /dev
run              1992432      976   1991456   1% /run
tmpfs            1992432      280   1992152   1% /dev/shm
tmpfs            1992432        0   1992432   0% /sys/fs/cgroup
tmpfs            1992432  1436412    556020  73% /tmp
Run Code Online (Sandbox Code Playgroud)

Mac*_*tka 7

/tmp如果按原样安装,tmpfs则限制大小以防止 DOS 攻击。如果一项服务遭到破坏或一名用户恶意,他们可以简单地写入,/tmp直到所有交换和内存都被占用。

由于 OOM 条件不适用于文件,因此进程将被杀死,直到恶意用户 shell 被杀死(并且由于内存不足他将无法登录)或受感染的服务将被杀死。在这个阶段,系统会太慢,管理员无法实际执行任何操作,然后重新启动,这将清除证据,从而使其成为有效的 DOS 技术。

如果没有/tmp单独的安装,则会发生略有不同的问题。使/分区已满可能会使系统无法启动,并且在非常糟糕的情况下(例如 glibc 更新),它可能需要更多的修复。

虽然这些问题对于多系统来说可能很重要,但对于桌面用户来说,也有理由阻止它。例如,我曾经使用过一个程序,当 512 MiB 是大量 RAM 时,该程序试图写入几 GB 的文件,如果没有限制,这将使系统无法使用tmpfs。以这种方式,它只会给程序本身和其他试图写入/tmp.

tmpfs 的 50% 的 RAM 允许将 50% 的 RAM 用于其他事情,例如运行程序,从而防止大交换。由于通常假设保留的信息量最少(我的系统上为 41M),但需要快速访问它是首先使用 tmpfs 的原因(无需在重新启动时保留它即可启用它)。因此,50% 是“合理的”,既可以在高峰/tmp使用发生的情况下同时防止系统变慢。

正如abdelsaid所提到的,您可以更改以下设置/etc/fstab

none /tmp tmpfs size=2G 0 0 # Change the size= parameter to whatever you want
Run Code Online (Sandbox Code Playgroud)

附注。你想在哪里编译内核(在/tmp)?通常你用用户权限编译它们并保存结果,以防你需要 3rd 方模块等。gcc 应该保持最少的文件数量,/tmp从而避免整个问题。

一旦您/tmp在 4GB 系统上使用 4GB,您的系统可能会显着变慢(尤其是当您使用重量级桌面环境时)。


vim*_*ude 5

默认情况下,RHEL 和大多数 Linux 发行版将 tmpfs(基于 RAM 的临时文件系统)挂载到 /dev/shm 目录,这个临时文件系统大小始终设置为已安装内存的一半

来源:http : //www.walkernews.net/2010/05/04/how-to-resize-devshm-filesystem-in-linux/

您可以通过在 /etc/fstab 中指定 size=... 来更改它:

例如 2GB:

tmpfs      /dev/shm      tmpfs   defaults,size=2g   0   0
Run Code Online (Sandbox Code Playgroud)

例如 4GB:

tmpfs      /dev/shm      tmpfs   defaults,size=4g   0   0
Run Code Online (Sandbox Code Playgroud)

  • /tmp 正在使用 tmpfs 这正是 /dev/shm (2认同)