如何通过为每个Linux核心启动一个任务来(通常)并行化Linux shell?
发布时间:2020-12-15 15:10:14 所属栏目:Linux 来源:互联网
导读:今天的CPU通常包含几个物理内核.这些甚至可能是多线程的,因此 Linux内核可以看到相当多的内核,因此启动了几次Linux调度程序(每个内核一个).在Linux系统上运行多个任务时,调度程序通常可以很好地将总工作负载分配给所有Linux内核(可能是相同的物理内核). 现在,
今天的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 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – bash fork错误(资源暂时不可用)不会停止,并且每次
- linux – 如何将输出从dd命令重定向到/ dev / null?
- 如何将Linux密钥从/ dev / input / event *转换为ASCII
- linux – SCSI读取(10)和写入(10)与SCSI通用接口
- LINUX教程:Ubuntu 16.04下交叉编译ImageMagick
- regex – sed – 删除大型csv文件中引号内的引号
- 终端 – 如何从所有tmux窗口清除铃状态
- 是否有可能运行使用linux中的react-native开发的ios应用程序
- linux – 如何在bash上使用filetype将文件排序到文件夹中(使
- linux – 有没有一个工具来检查两个callgrind / valgrind配