小编Gre*_*hal的帖子

递归grep vs find / -type f -exec grep {} \; 哪个更有效/更快?

哪个更有效地查找整个文件系统中的哪些文件包含字符串:递归 grep 或在 exec 语句中使用 grep 查找?我认为 find 会更有效,因为如果您知道文件扩展名或与文件名匹配的正则表达式,您至少可以进行一些过滤,但是当您只知道-type f哪个更好时?GNU grep 2.6.3;查找(GNU findutils)4.4.2

例子:

grep -r -i 'the brown dog' /

find / -type f -exec grep -i 'the brown dog' {} \;

grep find

82
推荐指数
3
解决办法
29万
查看次数

如何确定 NFS 挂载是作为 v3 还是 v4 挂载的?

Red Hat 5/6 当我挂载时它说类型 nfs,我想知道如果它没有在挂载选项或 fstab 中列出,我想知道如何确定版本。请不要说用版本选项重新挂载它,我想知道如何确定当前挂载的NFS版本。我猜它会根据 NFS 服务器/客户端设置默认,但我如何确定它当前是什么?我很确定它是 NFS v3,因为似乎不支持 nfs4_setfacl。

linux acl nfs mount

44
推荐指数
4
解决办法
17万
查看次数

GNU 或 BSD Sed 中的正则表达式交替/或运算符 (foo|bar)

我似乎无法让它发挥作用。GNU sed 文档说要转义管道,但这不起作用,也不能使用没有转义的直管。添加括号没有区别。

$ echo 'cat
dog
pear
banana
cat
dog' | sed 's/cat|dog/Bear/g'
cat
dog
pear
banana
cat
dog

$ echo 'cat
dog
pear
banana
cat
dog' | sed 's/cat\|dog/Bear/g'
cat
dog
pear
banana
cat
dog
Run Code Online (Sandbox Code Playgroud)

shell sed regular-expression

44
推荐指数
3
解决办法
7万
查看次数

2.6 内核 Linux 上的 Fork 与 Clone

我对 fork 和 clone 有一些困惑。我已经看到:

  • fork 用于进程,clone 用于线程

  • fork 只是调用clone,clone 用于所有进程和线程

这两个都准确吗?这两个系统调用与 2.6 Linux 内核有什么区别?

linux fork

40
推荐指数
3
解决办法
3万
查看次数

'exec {fd}</dev/watchdog' 在 Bash 中有什么作用

那是字面意思,{fd}不是占位符。我有一个执行此操作的脚本,并且不引用任何内容,也不引用其他任何地方的 {fd}。这是有效的 bash 吗?

exec {fd}</dev/watchdog

bash io-redirection exec

30
推荐指数
3
解决办法
4319
查看次数

mv 一个文件到 /dev/null 中断 dev/null

如果我这样做:touch file; mv file /dev/null作为根,/dev/null消失。 ls -lad /dev/null结果没有这样的文件或目录。这会破坏依赖于/dev/nullSSH 的应用程序,并且可以通过执行mknod /dev/null c 1 3; chmod 666 /dev/null. 为什么将常规文件移动到这个特殊文件会导致/dev/null?

澄清一下,这是出于测试目的,我了解该mv命令的工作原理。我很好奇的是为什么ls -la /dev/null在用常规文件替换它之前显示预期的输出,但之后它显示/dev/null不存在,即使据称是通过原始mv命令创建的文件并且文件命令显示 ASCII 文本。我认为这必须是ls命令行为与devfs非特殊文件替换字符/特殊文件时的组合。这是在 Mac OS X 上,行为在其他操作系统上可能会有所不同。

osx devices null

24
推荐指数
3
解决办法
7548
查看次数

EXT3:如果块大小为 4K,为什么 ls -l 显示的文件大小低于该大小?

如果在包含一个字母的文件上运行 ls -l,它的大小将显示为 2B。如果您的文件系统是 4k 块,我认为它会将文件四舍五入到块大小?是不是因为 ls -l 实际上是从 inode 读取字节数?在 Linux 2.6 Kernel GNU utils 中,您在什么情况下会被四舍五入以阻止答案与实际字节数答案?

linux ls filesystems ext3

16
推荐指数
3
解决办法
9772
查看次数

Linux less pager(或vim)中的负面回顾/超前断言

我想在使用 .php 的日志中找到所有没有跟在 .php 后面的“索引”实例less/index(?!\.php)不起作用。这可能吗?less 和 vim 的正则表达式是什么(它们有区别吗?)。这些应用程序各自的正则表达式库无法做到这一点吗?

less vim regular-expression

16
推荐指数
2
解决办法
5290
查看次数

打开手册页并在单个命令中搜索字符串

我想知道是否有办法将手册页打开到特定的搜索字符串,而不是执行man chmod然后/a+x跳转到提到的 chmod 手册页中的第一部分a+x,类似于您vi +string filename.txt在 vi(m )。

linux man search

15
推荐指数
1
解决办法
1306
查看次数

当 100% 分页到页面缓存中的文件被另一个进程修改时会发生什么

我知道当页面缓存页面被修改时,它被标记为脏并需要写回,但在以下情况下会发生什么:

场景: 文件/apps/EXE是一个可执行文件,被完全分页到页面缓存中(它的所有页面都在缓存/内存中)并被进程P执行

持续发布然后用全新的可执行文件替换 /apps/EXE。

假设 1: 我假设进程 P(以及具有引用旧可执行文件的文件描述符的任何其他人)将继续使用旧的内存 /apps/EXE 没有问题,并且任何尝试执行该路径的新进程都将获得新的可执行文件。

假设 2: 我假设如果不是文件的所有页面都映射到内存中,那么事情会很好,直到出现页面错误需要已替换​​文件中的页面,并且可能会发生段错误?

问题 1: 如果您使用 vmtouch 之类的东西 mlock 文件的所有页面,这是否会改变场景?

问题 2: 如果 /apps/EXE 位于远程 NFS 上,那会有什么不同吗?(我认为不是)

请更正或验证我的 2 个假设并回答我的 2 个问题。

让我们假设这是一个带有某种 3.10.0-957.el7 内核的 CentOS 7.6 机器

更新:进一步思考,我想知道这个场景是否与任何其他脏页场景没有什么不同..

我想写入新二进制文件的进程将读取并获取所有缓存页面,因为它都被分页了,然后所有这些页面都将被标记为脏。如果它们被锁定,在引用计数变为零后,它们将只是占据核心内存的无用页面。

我怀疑当当前正在执行的程序结束时,其他任何东西都会使用新的二进制文件。假设这一切都是正确的,我想只有当只有部分文件被分页时才有趣。

linux cache buffer virtual-memory

14
推荐指数
2
解决办法
1453
查看次数

标签 统计

linux ×5

regular-expression ×2

acl ×1

bash ×1

buffer ×1

cache ×1

devices ×1

exec ×1

ext3 ×1

filesystems ×1

find ×1

fork ×1

grep ×1

io-redirection ×1

less ×1

ls ×1

man ×1

mount ×1

nfs ×1

null ×1

osx ×1

search ×1

sed ×1

shell ×1

vim ×1

virtual-memory ×1