微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过为每个Linux核心启动一个任务来(通常)并行化Linux shell?

今天的cpu通常包含几个物理内核.这些甚至可能是多线程的,因此 Linux内核可以看到相当多的内核,因此启动了几次Linux调度程序(每个内核一个).在Linux系统上运行多个任务时,调度程序通常可以很好地将总工作负载分配给所有Linux内核(可能是相同的物理内核).

现在,比方说,我有大量文件要使用相同的可执行文件进行处理.我通常使用“find”命令执行此操作:

find <path> <option> <exec>

但是,这在任何时候都只启动一个任务,并等待它完成,然后再开始下一个任务.因此,在任何时候都只使用一个核心.这使得大多数核心处于空闲状态(如果此find-command是系统上运行的唯一任务).同时启动N个任务会好得多.其中N是Linux内核看到的核心数.

是否有命令可以做到这一点?

解决方法

将find与-print0选项一起使用.使用-0选项将其传递给xargs. xargs还接受-P选项以指定许多进程. -P应与-n或-L组合使用.

阅读man xargs以获取更多信息.

示例命令:找 . -print0 | xargs -0 -P4 -n4 grep searchstring

原文地址:https://www.jb51.cc/linux/393099.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐