标签: gnu

穷人的 GNU Parallel 在 ksh 中实现?

我想使用GNU 并行的功能,它可以并行执行命令和列表,并在完成后将其吐出,但是,我不想在我们所有的服务器上安装 GNU 并行。

或者也许是xargs?

是否有 GNU Parallel 的 ksh 实现?在这种情况下,它不必像 GNU Parallel 那样按顺序完成——只要所有输出都可以通过管道传输或存储即可。我还想避免使用临时文件。

ksh gnu parallelism gnu-parallel

8
推荐指数
1
解决办法
1092
查看次数

当我们说我们正在使用 Linux 时,我们究竟是什么意思?

我正在阅读一篇关于 GNU 的文章,内容如下

确实有一个 Linux,这些人正在使用它,但它只是他们使用的系统的一部分。Linux 是内核:系统中的程序,它将机器的资源分配给您运行的其他程序。内核是操作系统的重要组成部分,但它本身毫无用处;它只能在完整的操作系统环境中运行。Linux 通常与 GNU 操作系统结合使用:整个系统基本上是 GNU 加上 Linux,或 GNU/Linux。所有所谓的“Linux”发行版实际上都是 GNU/Linux 的发行版。

我一直认为 Linux 是一个内核和操作系统,但它看起来像 Linux = Linux 内核和 GNU OS。

有人可以指出我们日常生活中使用的“Linux”术语中每个术语的确切功能。此外,根据维基,GNU 的设计类似于 Unix,但与 Unix 的不同之处在于它是自由软件并且不包含 Unix 代码。我认为 Unix 是开源的。不是吗?

linux gnu

8
推荐指数
1
解决办法
2427
查看次数

texinfo:我可以编写非英文信息文件吗?比如中文,怎么样?

大多数 gnu 手册文件使用info,编写一个texinfo然后makeinfo生成信息文件,这很棒。

texinfo 可以包含非英语字符然后生成非英语信息或 pdfs 吗?

如何写中文信息手册?什么是非英文软件手册的最佳解决方案,文档只是一个源文件到 info、man、html 和 pdf。

man gnu locale info

8
推荐指数
1
解决办法
174
查看次数

GNU find 中的“启用的功能”是什么意思?

当我find --version与 GNU find 一起使用时,我得到如下信息:

find (GNU findutils) 4.5.9     
[license text]
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)
Run Code Online (Sandbox Code Playgroud)

这些“特征”是什么意思?在 中有一些关于O_NOFOLLOW作为安全措施的参考man find,并且提到了LEAF_OPTIMISATION一种优化,可以节省lstat对叶节点的一些调用。但我找不到任何关于FTS,D_TYPE或 的信息CBO

find gnu

8
推荐指数
2
解决办法
476
查看次数

BSD sed 与 GNU sed 和 -i

Unix iMac 外壳终端

sed -i 's/original/new/g' maths.tx  
Run Code Online (Sandbox Code Playgroud)

返回消息:sed:-i 不能与标准输入一起使用

bsd sed gnu

8
推荐指数
2
解决办法
6686
查看次数

系统编程:如何收集信息?

根据这个问题,学习系统编程的一个好方法是实现现有的工具。我决定尝试重写lsps.

我的问题是如何获得此类文件?

  • 我在哪里可以找到查询内核、文件系统等所需的系统调用 API...

  • 我想也许我可以看看 GNU 工具的源代码。我在哪里可以找到它?

  • 有没有(希望可以在线免费获得)好的文档,你们会推荐从哪里开始?

c gnu system-calls

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

如何避免在 seq 完成时打印换行符?

要创建列标题,如下所示:

1234567890123456789
Run Code Online (Sandbox Code Playgroud)

我(正在尝试)使用 seq 和 echo:

seq -s '' 1 9 ; echo -n 0; seq -s '' 1 9
Run Code Online (Sandbox Code Playgroud)

但是, seq 在每次运行后都会输出一个换行符。我怎样才能避免这种情况?

gnu seq

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

测量每个目录的特定文件类型的磁盘使用情况(递归地,作为“du --include”的演示)

这是我的工作代码,但我相信它没有优化 - 必须有一种方法可以比这更快地完成工作:

find . -type f -iname '*.py' -printf '%h\0' |
  sort -z -u |
  xargs -r -0 -I{} sh -c '
    find "{}" -maxdepth 1 -type f -iname "*.py" -print0 |
      xargs -r -0 du -sch |
      tail -1 |
      cut -f1 |
      tr "\n" " "
    echo -e "{}"' |
  sort -k1 -hr |
  head -50
Run Code Online (Sandbox Code Playgroud)

目标是递归搜索所有包含目录的目录,*.py然后*.py按每个目录的名称打印所有文件的总大小,按大小按相反顺序对它们进行排序并仅显示前 50 个。

任何想法如何改进此代码(性能方面)但保持相同的输出?

编辑:

我在以下示例中测试了您的建议:47GB total: 5805 files 不幸的是,我无法逐一比较,因为并非所有建议都遵循相同的准则:总大小应该是磁盘使用量,分隔符应该只是一个空格。格式应如下所示:numfmt --to=iec-i --suffix=B

以下 4 个是排序输出,但 …

performance bash find gnu disk-usage

7
推荐指数
2
解决办法
1079
查看次数

仅在最后一次出现令牌后才打印文件内容?

我有可以重新启动其内部状态的长时间运行的程序。我只想查看最新状态的日志文件条目(加载到vim's quickfix)。如何在最后一次出现字符串后显示所有行STARTING SESSION

我目前的解决方案(日志文件有时有千兆字节长,所以我从不查看超过最后 5000 行的内容):

tail -n5000 logfile.log | grep -B5000 -v -e 'STARTING SESSION'> shortened.log
Run Code Online (Sandbox Code Playgroud)

当会话产生大量日志时,这很有效,但如果我有更短的日志并多次重启,则它包含多个会话。

本质上,我想要一个类似于--reverse标志的东西,它可以从文件的末尾而不是开头进行 grep 搜索:

grep --reverse --after-context=5000 --max-count=1 'STARTING SESSION' logfile.log
Run Code Online (Sandbox Code Playgroud)

笔记:

问题类似于在第 n 次出现匹配后打印行,但我想要最后一次出现。

该问题与在 POSIX.2 中从最后一个标记获取文本到 EOF几乎相同,只是我没有 POSIX 要求并且我的文件很大。我更喜欢使用 GNU utils 的高效解决方案(我正在使用mingw64)。

grep gnu text-processing

7
推荐指数
2
解决办法
438
查看次数

grep --quiet 的退出状态有错误吗?

我有一些带有 grep 版本 2.16 的 SLES 12 SP5 机器,并且在一台机器上我大量使用包含以下grep --quiet条件的脚本:

# $pid_list contains the result of pstree and $script_pid equals $$
if echo "$pid_list" | grep -qF "($script_pid)"; then
  continue
fi
if echo "$pid_list" | grep -qF "($script_pid)"; then
  echo "Error: grep has a bug!"
  continue
fi
Run Code Online (Sandbox Code Playgroud)

我将其加倍,因为第一个条件失败的概率约为 0.1%,而第二个相同条件成功?!

按如下方式更改条件后,它可以完美运行(完整代码此处):

if echo "$pid_list" | grep -F "($script_pid)" >/dev/null; then
  continue
fi
Run Code Online (Sandbox Code Playgroud)

关于手册,该quiet选项的行为应该符合我的预期。如果发生错误,它甚至应该返回 true:

如果发现任何匹配,即使检测到错误,也会立即以零状态退出

所以我很困惑为什么有时会失败。机器的 RAM 和文件系统都很好。grep 二进制文件也具有正确的文件哈希值。

搜索了一个提交,但我找到的唯一一个是2001 年的,它应该是 …

grep gnu sles

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

标签 统计

gnu ×10

find ×2

grep ×2

bash ×1

bsd ×1

c ×1

disk-usage ×1

gnu-parallel ×1

info ×1

ksh ×1

linux ×1

locale ×1

man ×1

parallelism ×1

performance ×1

sed ×1

seq ×1

sles ×1

system-calls ×1

text-processing ×1