小编ach*_*san的帖子

为什么硬链接不能引用其他文件系统上的文件?

我知道这篇文章存在: 为什么硬链接仅在同一文件系统中有效? 但不幸的是它并没有引起我的注意。

https://www.kernel.org/doc/html/latest/filesystems/ext4/directory.html 我正在阅读 Galvin 的操作系统概念,并发现了一些非常有用的资源,例如 Linux 内核文档。

文件系统中可能有许多目录条目引用相同的索引节点号——这些目录条目称为硬链接,这就是硬链接无法引用其他文件系统上的文件的原因。

作者一开始就这么说。但我不明白其背后的原因。

inode 包含的信息:

  • 模式/权限(保护)
  • 所有者 ID
  • 组号
  • 文件大小
  • 文件的硬链接数量
  • 上次访问时间
  • 最后修改时间
  • 最后修改索引节点的时间

https://www.grymoire.com/Unix/Inodes.html

既然 inode 包含这些信息,那么让硬链接引用其他文件系统上的文件有什么问题呢?

如果硬链接引用其他文件系统会出现什么问题?

关于硬链接:

“硬链接”一词具有误导性,更好的术语是“目录项”。

目录是一种文件类型,包含(至少)一对文件名和索引节点。目录中的每个条目都是一个“硬链接”,包括符号链接。当您创建新的“硬链接”时,您只是向某个目录添加一个新条目,该目录引用与现有目录条目相同的 inode。

在此输入图像描述

这就是我如何可视化目录概念在操作系统中的样子。根据上面引用的文本,每个条目都是一个硬链接。我看到的唯一问题是多个文件系统可以具有相同范围的索引节点(但我不这么认为,因为索引节点在操作系统中受到限制)。

另外,为什么在 inode 本身中添加有关文件系统的新信息不是很好呢?那不是真的很方便吗?

linux filesystems inode

9
推荐指数
3
解决办法
3945
查看次数

选择日志文件中两个时间戳之间的所有内容

awk '/10:..:/, /13:..:/' server.log > /tmp/awktmp
Run Code Online (Sandbox Code Playgroud)

我按照有人给我的命令尝试了这个命令。它对我来说可以找到上午 10:00 到下午 13:00 之间的日志,但我不完全理解它。

如果您有一个优雅的解决方案,请告诉我。请记住,远程服务器很小,并且没有高级实用程序。

我在这里不明白的是'/10:..:/, /13:..:/'

  • 我理解10:..意思10是 和:完全匹配 2 位数字。
  • 但另一个是什么:意思呢?

我想正斜杠是用来放置正则表达式的,就像我们在 JavaScript 正则表达式中所做的那样。我对此不是100%确定。

更新1:

时间位于第二列,格式为HH:MM:SS

更新2:

sed -n -e '/8:..:../,/9:..:../p' application.log > /tmp/sedtmp
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但这也显示了来自 的日志07:57:47

更新3

日志并不总是在每一行中包含时间戳。有些行根本不包含任何时间戳。你是如何克服这个问题的?我愚蠢地使用了 awk,并且错过了所有没有时间价值的行。有办法避免这个问题吗?

这就是我的意思。

2023-08-07 09:20:35 0123456789 INFO  CustomerLogoutResource:95 - Entering logout api.
2023-08-07 09:20:35 0123456789 ERROR AppExceptionMapper:87 - Exception has been thrown by container
2023-08-07 09:20:35 0123456789 ERROR AppExceptionMapper:555 - Unchecked Exception
java.lang.NullPointerException …
Run Code Online (Sandbox Code Playgroud)

regular-expression

5
推荐指数
2
解决办法
1255
查看次数

如何进行选择性备份?

假设有一个名为domainsin的文件夹glassfish。它有domain1domain2...。domainN

我想从目录中取出所有内容domain1并将logs它们保存到/home/user/backup目录中。

我可以手动执行此操作,

cp -R /home/user/glassfish/domains/domain1 /home/user/backup
rm -rf /home/user/backup/domain1/logs
Run Code Online (Sandbox Code Playgroud)

但我怎样才能更轻松地做到这一点呢?

backup cp

4
推荐指数
2
解决办法
1318
查看次数

在 Linux 中如何从文件中删除除最后 n 个字节之外的所有内容?

我有一个 Tomcat 服务器,其中日志存储为catalina.out. 这是一个相当大的文件,并且多次引起麻烦。

\n

由于它占用太多空间,其他服务器不得不不由自主地停止。我至少希望用胶带修复此问题,这样我就不必为仅删除catalina.out并重新启动服务器的票证而烦恼。

\n

我不确定,但它的 1 天日志超过 5\xc2\xa0GB。因此,假设我想做一个cron 作业,删除超过一天的文件或该文件中最后 5\xc2\xa0GB 的文件。什么命令在这里起作用?

\n

是否建议这样解决这个问题?或者有更好的方法吗?

\n

linux rm files tomcat delete

3
推荐指数
1
解决办法
773
查看次数

标签 统计

linux ×2

backup ×1

cp ×1

delete ×1

files ×1

filesystems ×1

inode ×1

regular-expression ×1

rm ×1

tomcat ×1