我最近正在研究使用tail -f来监视一些文本文件,例如:tail -f /var/sometext.
但是,当我进行一些测试时,它似乎不起作用。我所做的是我创建了一个新文件并运行:tail -f /home/name/text然后,我在 vim 中打开了日志并进行了一些编辑,保存了它,似乎 tail 没有“看到”更改。
奇怪的是,跑步echo "hello" >> /home/name/text似乎工作正常(尾巴看到了变化)。我在某处读到这与保存文件时创建的文件描述符和新 inode 有关。
有人可以为我解释一下吗?我不太明白这实际上是如何工作的,但我知道文件描述符是什么。
如何使用 UNIX/Linux 标准工具获取实际目录大小?
替代问题:如何让du向我显示实际目录大小(而不是磁盘使用情况)?
由于人们似乎对术语“大小”有不同的定义:我对“目录大小”的定义是该目录中所有常规文件的总和。
我不关心目录 inode 的大小或文件在相应文件系统上占用的任何大小(块 * 块大小)。一个包含 3 个文件的目录,每个文件 1 个字节,目录大小为 3 个字节(根据我的定义)。
使用 du 计算目录大小似乎不可靠。
例如,mkdir foo && du -b foo报告“4096 foo”,4096 字节而不是 0 字节。对于非常大的目录,报告的目录大小du -hs可能会减少 100 GB (!) 甚至更多(压缩文件系统)。
那么必须使用什么(工具/选项)来获取实际目录大小?
如果您在 UNIX/Linux 上使用特殊字符(例如 )创建文件touch \"la*,则无法使用rm "la*. 您必须使用 inode 编号(\我知道,如果您在名称前添加 ,则可以,但您必须以用户身份猜测它在文件创建中使用过)。
我检查了 rm 的联机帮助页,但没有提到 inode 编号。做rm inodenumber也不行。
这是什么命令?
在 linux 中,给定原始磁盘设备的偏移量,是否可以映射回分区 + inode?
例如,假设我知道字符串“xyz”包含在 /dev/sda 上的字节偏移量 1000000 处:(例如 xxd -l 100 -s 1000000 /dev/sda 显示以“xyz”开头的转储)
1)如何确定偏移量 1000000 位于哪个分区(如果有)?(我想这很容易,但为了完整起见,我将其包括在内)
2) 假设偏移量位于分区中,我该如何查找它属于哪个 inode(或确定它是空闲空间的一部分)?大概这是特定于文件系统的,在这种情况下,有人知道如何为 ext4 和 ext3 执行此操作吗?
我有一个 VPS。它由臭名昭著的 plesk 管理。
今天我开始看到消息(起初是通过 wordpress,但也来自命令行 shell),说:“超出磁盘配额”。
user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded
Run Code Online (Sandbox Code Playgroud)
但是机器上有很多空间,只有1个分区。
user@machine:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vzfs 100G 24G 77G 24% /
Run Code Online (Sandbox Code Playgroud)
我从 /tmp/* 中删除了所有文件,但仍然如此。
我对“vzfs”一无所知,也许这就是罪魁祸首?
出了什么问题?以及如何修复它?
解决方案!
(如果您不使用 Parallels Plesk,请参阅 @Adalee 的回答)
请参阅@deltik 的解决方案,与 Parallel 的系统相关,就像我的情况一样。
df -i 立即给出了一个可笑数量的 inode:18,446,744,069,620,218,961,这对于 wordpress 网站来说是疯狂的。
我进一步探索并发现 qmail 的队列中充满了 inode(它充满了一些黑客的尝试使用我的机器发送垃圾邮件,以及失败回复)
修复 qmail 在这里不相关,但我的解决方法是相关的:
这样脚本直接从网络运行(这不是一个安全的做法,但我自己把脚本放在那里),带有命令行选项。
感谢@deltik 在现场了解并及时识别这种特殊设置,并提供进一步诊断的方法!!!
在解压 tarball 时,我遇到了一个ls报告为“??????????????? ???????”的目录。想必,名字不是unicode?无论如何,我无法找到访问该文件夹的方法。我试过了cd $(find -inum inode_number),但这给了我
"bash: cd: ./??????????: No such file or directory".
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法可以通过其 inode 号直接访问文件夹?
我知道扇区是分割轨道的单位,但我有这个疑问,因为我正在寻找有关 inode 可以支持的最大指针数的信息。我发现这个数字取决于块大小。这个尺寸是可变的吗?计算机关闭时是否保持此大小?谢谢你的帮助,我花了一些时间寻找这个,但我不确定。
我在Ubuntu 14.04.1 LTS上的LVM上有一个XFS 分区的服务器设置。将文件复制到主分区时,显示“设备上没有剩余空间”。
df -h显示足够的空间:
/dev/mapper/prod--vg-home 35G 21G 15G 60% /home
Run Code Online (Sandbox Code Playgroud)
我还使用 fallocate 在同一个家庭帐户中几乎完全填充磁盘,以确保配额和其他磁盘空间问题都不相关:
/dev/mapper/prod--vg-home 35G 34G 1.5G 96% /home
Run Code Online (Sandbox Code Playgroud)
df -i还显示足够的 inode:
/dev/mapper/prod--vg-home 36700160 379390 36320770 2% /home
Run Code Online (Sandbox Code Playgroud)
我还在同一个家庭帐户中使用了大量的小随机文件,复制了这个问题:
mkdir 1
cd 1
dd if=/dev/zero of=masterfile bs=10000000 count=1
split -b 10 -a 10 masterfile
cd ..
cp -R 1 2
Run Code Online (Sandbox Code Playgroud)
这再次导致“设备上没有剩余空间”,几乎不需要额外的空间(大约 30MB)并且df -i提到:
/dev/mapper/prod--vg-home 36700160 1310464 35389696 4% /home
Run Code Online (Sandbox Code Playgroud)
我确实在同一台机器上进行了 …
我有一个旧的 reiser 文件系统,我要将其转换为 Ext3。我遇到的问题是确定此分区的正确块和 inode 大小。
该分区有 44 GB 大,必须容纳 3,000,000 多个大小在 1 kb 到 10kb 之间的文件,我如何确定 inode 和块大小的最佳比率?
下面是我尝试过的东西,看起来不错,但使复制文件非常慢。
mkfs.ext3 \
-t ext3 \
-c \
-c \
-b 1024 \
-i 4096 \
-I 128 \
-v \
-j \
-O sparse_super,filetype,has_journal\
/dev/sdb1
Run Code Online (Sandbox Code Playgroud)
谢谢。
我想ls -laR /media/myfs尽可能快地在 Linux 上运行。我将在文件系统上有 100 万个文件,总文件大小为 2TB,一些目录包含多达 10000 个文件。我应该使用哪个文件系统以及我应该如何配置它?
据我了解,之所以ls -laR慢是因为stat(2)每个inode(即100万stat(2)秒),而且由于inode随机分布在磁盘上,每个都stat(2)需要一次磁盘寻道。
以下是我想到的一些解决方案,但我都不满意:
在 SSD 上创建文件系统,因为 SSD 上的查找操作很快。这是行不通的,因为 2TB SSD 不存在,或者它太贵了。
创建一个跨越两个块设备的文件系统:一个 SSD 和一个磁盘;磁盘包含文件数据,SSD 包含所有元数据(包括目录条目、inode 和 POSIX 扩展属性)。是否有支持此功能的文件系统?它会在系统崩溃(停电)中幸免于难吗?
使用find /media/myfs在ext2,ext3和ext4的,而不是ls -laR /media/myfs,因为前者可以在优势d_type领域(见getdents(2)手册页),因此它不具有统计。不幸的是,这不符合我的要求,因为我还需要所有文件大小,find /media/myfs但不能打印。
使用文件系统,例如 VFAT,它将 inode 存储在目录条目中。我很喜欢这个,但是 VFAT 对我来说不够可靠和灵活,而且我不知道有任何其他文件系统可以做到这一点。你?当然,在目录条目中存储 inode 不适用于链接数超过 1 的文件,但这不是问题,因为我的用例中只有几十个这样的文件。
在/procor 中调整一些设置,sysctl以便 inode 永远锁定到系统内存。这不会加快第一个ls -laR /media/myfs,但它会使所有后续调用非常快。我怎样才能做到这一点?我不喜欢这个想法,因为它不会加速第一次调用,目前需要 30 分钟。此外,我还想在内存中锁定 POSIX 扩展属性。我该怎么做?
使用具有在线碎片整理工具的文件系统,可以指示将 …