我有一个shell脚本

  1. 洗牌一个大的文本文件(600万行6列)
  2. 根据第一列对文件进行排序
  3. 输出1000个文件

所以伪代码看起来像这样

file1.sh 

#!/bin/bash
for i in $(seq 1 1000)
do

  Generating random numbers here , sorting  and outputting to file$i.txt  

done

有没有办法在parallel秒内运行这个shell脚本来充分利用多核CPU?

目前,./file1.sh以1到/file1.sh0次的顺序执行,速度非常慢.

谢谢你的帮助.

推荐答案

判断bash subshells,这些可以用来并行运行脚本的部分.

我还没有测试过,但这可能是一个开始:

#!/bin/bash
for i in $(seq 1 1000)
do
   ( Generating random numbers here , sorting  and outputting to file$i.txt ) &
   if (( $i % 10 == 0 )); then wait; fi # Limit to 10 concurrent subshells.
done
wait

Linux相关问答推荐

无法分析nasm中的单词

awk 打印除最后一列以外的所有内容 + 最后一列

输出特定字符的所有列号

sed:用空格替换

中的换行符

为什么在 find 命令中使用 dirname 会 for each 匹配项提供点?

Stripping linux 共享库

全屏(Fullscreen)小部件

如何在 shell 脚本中只读取一个字符

为什么在 Linux 中使用 select

如何在 Linux 中使用命令行将 PDF 转换为 JPG?

对一行的最后一个字段进行排序

Linux 上的 C++ 开发 - 我从哪里开始?

带有 curl 的 Linux 脚本来判断 Web 服务是否已启动

在 linux 上查看文件大小

命令列出除 . (点)和..(点点)

如何在字符串中查找子字符串(或如何 grep 变量)?

如何关闭被杀死的程序打开的套接字?

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

在 reverse-i-search (Ctrl+R ) , 历史上类似命令之间切换的任何方法

获取本地时区的 Olson TZ 名称?