AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-145784

Alex's questions

Martin Hope
Alex
Asked: 2023-11-10 22:31:30 +0800 CST

放慢“分裂”速度

  • 5

我有一个非常大的档案,由非常小的文件组成,连接成一个文本文件,并带有“”分隔符。对于较小的档案,我将split 使用“”作为模式进行档案,然后处理生成的文件。然而,在这个存档中,此类文件的数量级约为一亿个——显然,对于将它们全部放入一个目录来说太多了。我创建了文件夹aa、ab等,以便尝试将它们移动到创建的目录中。但是,我遇到了问题。我尝试过的事情:

  1. 没有用于split对结果文件执行任何命令的命令。所以我必须用手做。

  2. **使用将文件移动到目录中find . -name "xaa*" -exec mv {} aa \+不起作用,因为{}不在行尾。

  3. -t用于反转源和目标的标志在我的 Unix 版本中不可用。

  4. 我必须将findinto的输出通过管道传输xargs,才能正常工作。

然而,这太慢了——文件的创建速度比它们的移动速度快得多。

  1. 我怀疑xargs一次处理的文件比使用\+after 少find -exec。我尝试添加一个“-R 6000”标志,以便一次运行 6000 个条目;但是,我认为这没有什么区别。

  2. 我将 的优先级降低split到尽可能低。它消耗的 CPU 量没有变化,所以可能也没有影响。

  3. 我打开最多七个命令提示符来运行mv命令(每个命令提示符最后四个字母)——但是,这仍然不够。我会打开更多,但是一旦系统达到七个,响应就太慢了,我不得不停止分裂。ls -l | tail例如,在等待命令返回某些内容时,源存档会被复制到 USB 。

split所以我一直在做的是,在此时停止,等待mv 命令赶上,然后重新启动分割。那时我会用来 find -exec rm {} \+删除我已经拥有的文件;这有点快,所以当它到达我没有的文件时,周围的文件就会减少。

因此,第一次此类迭代持续了约 300 万个文件,下一个约 200 万个文件,下一个约 1.5 个文件。不过,我确信应该有更好的方法。还有什么想法可以尝试吗?

find
  • 1 个回答
  • 31 Views
Martin Hope
Alex
Asked: 2023-10-25 11:28:18 +0800 CST

处理大约 8000 个文件时“find: fts_read: Invalid argument”

  • 6

GNU bash,版本3.2.48有这个bug;3.2.57 版本已经没有了。

创建一个包含 8000 行相同行的文件(假设每行都写着1)。split -a3 -p "1"在其上运行(-p是一个 BSDsplit选项,它使其按照给定的模式进行分割。对于每行只有一个的文件,您可以通过运行1对标准执行相同的操作)。并执行splitsplit -a3 -b 1

find . -name xaaa -exec echo {} +

在预期输出之后,您将find: fts_read: Invalid argument输出到cerr. xaaa当被任何一组文件以及echo我尝试过的任何其他命令替换时,都会发生相同的错误。文件名的长度并不重要。文件的目录也并不重要。

在其他地方创建一些文件后,错误消失了。但是,当xaaa替换为xaa*(或任何其他包含多个文件的通配符,其中至少一个文件位于目录列表的开头附近)时,错误会再次发生。此时,没有任何单个文件会导致出现错误。

替换+为;确实避免了错误,但对于我的脚本来说是不可接受的。这个问题在我的脚本中的其他情况下间歇性地发生,但通过减少它,我能够想出一种简单的方法来复制它。

我希望脚本在发生错误时停止,但这只会使其经常停止。知道如何解决这个问题吗?(例如,检索错误代码并忽略此特定错误)。

Mac 操作系统版本 10.8.5。Darwin 内核版本 12.5.0。

bash
  • 1 个回答
  • 75 Views
Martin Hope
Alex
Asked: 2020-01-23 00:52:35 +0800 CST

错误:`watch &` 在脚本中不起作用

  • 0

当有人向我发送邮件时,我有以下脚本来提醒我:

cd /var/mail
watch -g ls && cat end
./alert

end将是一个空白文件;当我回家时,我会end从另一个 shell 修改文件,脚本将由于-g切换而结束。

然后我意识到,与其打开另一个 shell,我可以简单地告诉脚本我回家的时间,那时它会end自行修改文件。当我这样做并发watch送到后台时,脚本会按预期终止。但是,脚本退出后,shell 会启动各种奇怪的行为。最简单的错误示例:

( watch -g cat end ) &
sleep 2
echo y >> end

我想我会使用不同的应用程序来避免这个错误。但是,我的系统(Debian)bash上konsole似乎都有这个问题。

我应该补充一点,直接从命令行运行上述代码似乎确实可以按预期工作。只有在脚本中运行时才会产生这种奇怪的行为。

bash bugs
  • 1 个回答
  • 65 Views
Martin Hope
Alex
Asked: 2019-12-18 02:25:11 +0800 CST

使用`scp`时“无法打开显示”

  • 6

当我输入scp file1 [email protected]:file2命令提示符时,我收到消息

Can't open display
Can't open display
Can't open display
Can't open display
Can't open display
file1                          100%  589KB 589.0KB/s  00:00

然后我等待大约 10 秒,然后scp返回命令行。不会发生这种情况ssh,只会发生scp. 我正在使用 Fedora 18。

scp
  • 1 个回答
  • 912 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve