小编use*_*000的帖子

顶部的“buff/cache”和“avail mem”字段是什么意思?

在 top 的输出中,有两个字段,在内存和交换使用行中标记为“buff/cache”和“avail Mem”:

在此处输入图片说明

这两个字段是什么意思?

我试过在谷歌上搜索它们,但结果只会在顶部显示通用文章,并且没有解释这些字段的含义。

linux memory top

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

递归遍历目录中的文件

递归遍历目录中的文件可以通过以下方式轻松完成:

find . -type f -exec bar {} \;
Run Code Online (Sandbox Code Playgroud)

但是,以上不适用于更复杂的事情,其中​​需要完成很多条件分支、循环等。我曾经将它用于上述目的:

while read line; do [...]; done < <(find . -type f)
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于包含晦涩字符的文件:

$ touch $'a\nb'
$ find . -type f
./a?b
Run Code Online (Sandbox Code Playgroud)

有没有替代方法可以很好地处理这些晦涩的字符?

bash directory recursive

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

wget 手册页提到的阻止“自动检索程序”的“2001 年文章”是什么?

wget手册页指出这一点,下的部分--random-wait参数:

    Some web sites may perform log analysis to identify retrieval
    programs such as Wget by looking for statistically significant
    similarities in the time between requests. [...]

    A 2001 article in a publication devoted to development on a popular
    consumer platform provided code to perform this analysis on the
    fly.  Its author suggested blocking at the class C address level to
    ensure automated retrieval programs were blocked despite changing
    DHCP-supplied addresses.
Run Code Online (Sandbox Code Playgroud)

我想获得这篇文章的副本以供阅读,并在互联网上尝试了许多搜索以确定该文章。但是,通过这些搜索,我只能找到wget托管在不同网站上的手册页;以及其他一些与该主题完全没有关系的研究论文。

有谁知道引用的是哪篇文章以及我可以从哪里获得副本?

man documentation wget

11
推荐指数
1
解决办法
986
查看次数

无法使用 bc 对从 stdin 收到的数字求和

我正在尝试使用以下方法计算文件夹中包含的文件的平均熵:

{ echo '('; find . -type f -exec entropy {} \; | \
  grep -Eo '[0-9.]+$' | \
  sed -r 's/$/+/g'; echo '0)/'; 
  find . -type f | wc -l; }  | \
tr -d '\n' | bc -l
Run Code Online (Sandbox Code Playgroud)

entropy 作为计算文件的香农熵的可执行文件,给出以下形式的输出:

$ entropy foo
foo: 5.13232
Run Code Online (Sandbox Code Playgroud)

上述命令出错:

(standard_in) 1: syntax error
Run Code Online (Sandbox Code Playgroud)

但是,生成的输出似乎没有问题:

$ { echo '('; find . -type f -exec entropy {} \; | \
    grep -Eo '[0-9.]+$' | \
    sed -r 's/$/+/g'; echo '0)/'; \
    find . …
Run Code Online (Sandbox Code Playgroud)

shell bash bc

9
推荐指数
2
解决办法
1万
查看次数

将文件名与包相关联

说,我得到了一个像libasound.so.2. 有没有办法查询包管理器以将文件名与其对应的包相关联?

我有兴趣获得任何包管理器的答案,但我的主要关注点是aptyum

yum apt package-management

8
推荐指数
3
解决办法
1407
查看次数

带有 unionfs-fuse 的 chroot,无法访问 /dev/*

我已经与 unionfs-fuse 结合创建了一个 chroot 监狱,这样我就不需要在里面安装另一个系统。

但是,生成的系统的 /dev 条目不可读。这会导致需要访问/dev/random/dev/null和 的程序出现问题/dev/urandom

我试图通过使包括持久性文件的目录,并使用使上述文件的等价物来解决自己的问题mknod所描述这里,然后创建的unionfs:

# unionfs-fuse -o cow /chroot/files=RW:/chroot/persistent/:/ /chroot/chroot/
Run Code Online (Sandbox Code Playgroud)

进而,

# chroot chroot/
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试:

# head -c 10 /dev/random | hexdump -C
Run Code Online (Sandbox Code Playgroud)

我收到错误:

head: cannot open `/dev/random' for reading: Permission denied
Run Code Online (Sandbox Code Playgroud)

我应该如何解决这个问题?

(我不需要访问/devlike/dev/sd*/dev/mem. 中的其他文件。)

chroot mount devices unionfs

7
推荐指数
1
解决办法
2078
查看次数

挂载目录到根目录

我有一个包含某些文件的文件夹。有没有办法将它挂载到 上/,以便给定目录的内容出现在 中的相应位置/

在我的例子中,目录包含与应用程序相关的文件——它没有像/dev和那样的目录/proc

我尝试通过以下方式创建绑定安装:

mount --bind ~/applications/firefox /
Run Code Online (Sandbox Code Playgroud)

但是,这根本没有任何作用。与评论中推测的不同,它也没有任何不利影响。


这样做的动机是我想在关键任务系统上干净地安装许多自定义应用程序。可以理解的是,我希望将相关管理保持在最低限度。我使用unionfs-fuse + chroot 方法获得了应用程序安装的文件系统布局,但是我仍然需要处理应用程序文件与系统文件混合的问题。/将某些目录挂载到上面将帮助我保持文件系统干净。

虽然这种安装软件的方法可能看起来很变态,但有一个名为“Porteus”的发行版,它以这种方式安装软件(出于同样的原因),但是,众所周知,它们使用补丁内核和 aufs。但是,我无法在系统上使用自定义内核。

mount bind-mount union-mount

7
推荐指数
1
解决办法
8134
查看次数

监控文件系统活动

说,我有一个程序,我想监视它的文件系统活动(创建/修改/删除了哪些文件/目录等)该程序可能能够产生进一步的进程,因此,我想获得这些也产生了进程。

我该怎么做呢?

linux security process monitoring files

6
推荐指数
1
解决办法
4970
查看次数

grep 多个正则表达式,并计算出现次数

说,我有一个文件,必须在其中搜索多个正则表达式,并且必须计算每个正则表达式的匹配数。

因此,我无法组合这些模式:

grep -Po '{regex_1}|{regex_2}|...|{regex_n}' file | wc -l
Run Code Online (Sandbox Code Playgroud)

... 因为需要每个正则表达式的出现次数。

我显然可以:

occurences[i]=$(grep -Po "${regex[i]}" file | wc -l)
Run Code Online (Sandbox Code Playgroud)

...但不幸的是,遇到的文件可能非常大(> 1 GB)并且有许多模式(在数千个范围内)需要检查,这使得该过程非常缓慢,因为对同一文件进行多次读取涉及。

有没有办法快速做到这一点?

grep search regular-expression patterns

6
推荐指数
1
解决办法
1623
查看次数

在不知道安装了哪些终端模拟器的情况下启动终端模拟器

我需要编写一个脚本来启动终端模拟器并在其中运行特定的命令。由于我不知道目标系统上安装了哪些终端仿真器,我如何才能找到安装了哪些终端仿真器?

我看过这个线程。但是,我并不是很倾向于进行硬编码检查,我正在寻找通用解决方案。

我提出了这个非常肮脏的黑客,但我真的不确定这会如何:

termdetect

#!/bin/bash

IFS=:
for i in $PATH; do
  find "$i" -type f -exec isterminal {} \;
done
Run Code Online (Sandbox Code Playgroud)

isterminal

#!/bin/bash

if [[ ! -z "$1" ]]; then
  if [[ "$(head -c 4 "$1")" == $'\x7fELF' ]]; then
    if ! grep editor "$1" > /dev/null; then
      if grep -E '(vte_terminal_|libutempter|rxvt_)' "$1" > /dev/null; then
        echo "$1"
      fi
    fi
  fi
fi
Run Code Online (Sandbox Code Playgroud)

是否有我可能缺少的简单通用解决方案?或者我除了搜索二进制文件以获取提示或使用硬编码列表之外别无他法?

terminal-emulator shell-script portability

5
推荐指数
1
解决办法
3210
查看次数