Linux:让进程按CPU运行


0

我的服务器有4个CPU,我正在使用解析文件grep。仅使用一个过程就非常慢。

是否可以使用这四个CPU来运行四个进程?怎么做 ?

谢谢。


1
grep它本身是一个单线程二进制文件;因此,一次只能使用一个内核。
马特·克拉克

Answers:


0

尝试:

cat bigfile.txt | parallel  --pipe grep 'pattern'

或尝试:

grep -R file >> Strings

这是一个递归grep。因此,它对内存的要求更高。


不幸的是我没有并行包。
brest1007

您使用什么发行版?apt-get install parallel
马特·克拉克

由于grep按顺序处理文件,因此无法使用。如果先分割文件(我认为使用分割4),然后在每个部分上运行grep,则可以一次对4个不同的部分进行grep 。
djsmiley2k 2015年

0

使用LC_ALL = C grep -R“ xyz”文件名

这将使您的搜索速度提高60%

第二个选择是如下使用awk

awk'/ pattern / {print $ 0}'文件名

如果您只想打印出匹配的单词。

awk'{for(i = 1; i <= NF; i ++){if($ i ==“ yyy”){print $ i}}}'文件名


您能解释一下这到底在做什么吗?
djsmiley2k

它将首先将“语言”设置为文件默认语言“文件写入的默认语言”。比将此结果传递给grep,后者在Response中不会尝试以多种语言查找您要查找的模式。,使用R使用grep将迫使它递归这始终是比简单的grep更强大
赛义德

@syed我已经用过了,仍然需要三天时间才能完成解析
brest1007 2015年

哎呀,那太多了。尝试awk它也是很好的工具。awk'/ pattern / {print $ 0}'文件如果您只想打印出匹配的单词。AWK '{对于(I = 1; I <= NF;我++){如果($ I == “YYY”){打印$ I}}}'文件

@syed-代替评论来更新答案。您希望获得有关您获得答案的众多下注的反馈,因此您应该使用当前答案解决问题,以避免其他下注。
Ramhound,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.