相关疑难解决方法(0)

GNU 并行 vs &(我的意思是背景) vs xargs -P

我对.sh使用脚本在脚本中运行一组任务的区别或优势(如果有的话)感到困惑GNU parallel

例如Ole Tange的回答:

parallel ./pngout -s0 {} R{} ::: *.png
Run Code Online (Sandbox Code Playgroud)

而不是说通过它们循环将它们放在背景中&

例如froschutz的回答:

#copied from the link for illustration
for stuff in things
do
( something
  with
  stuff ) &
done
wait # for all the something with stuff
Run Code Online (Sandbox Code Playgroud)

简而言之,它们只是在语法上或实际上不同吗?如果实际上不同,我应该什么时候使用它们?

xargs shell-script background-process gnu-parallel

47
推荐指数
1
解决办法
2万
查看次数

并行化 for 循环

我想并行化for以下代码的循环。这该怎么做?

#!/bin/bash
N=$1 
n=$2
for (( i=1; i<=$N; i++ )); do
  min=100000000000000  //set min to some garbage value
  for (( j=1; j<=$n; j++ )); do
    val=$(/path/to/a.out)
    val2=`echo $val | bc`  

      if (( $val2 < $min )); then
        min=$val2; 
      fi
  done
  arr=("${arr[@]}" "$min")
done
Run Code Online (Sandbox Code Playgroud)

bash shell-script parallelism

9
推荐指数
2
解决办法
6482
查看次数

一个程序在多个文件上并行执行

我有一个小脚本,它循环遍历文件夹的所有文件并执行(通常是持久的)命令。基本上是

for file in ./folder/*;
do
    ./bin/myProgram $file > ./done/$file
done
Run Code Online (Sandbox Code Playgroud)

(请忽略语法错误,这只是伪代码)。

我现在想同时运行这个脚本两次。显然,如果 ./done/$file 存在,则不需要执行。所以我把脚本改成了

for file in ./folder/*;
do
    [ -f ./done/$file ] || ./bin/myProgram $file >./done/$file
done
Run Code Online (Sandbox Code Playgroud)

所以基本上问题是:两个脚本(或通常不止一个脚本)是否可能实际上处于同一点并检查done失败且命令运行两次的文件是否存在?

这将是完美的,但我非常怀疑。这太容易了 :D 如果他们处理同一个文件可能发生,是否有可能以某种方式“同步”脚本?

scripting shell-script parallelism

8
推荐指数
1
解决办法
9156
查看次数

Debian 如何使用大量 CPU 内核?

我刚刚获得了一个 24 核 VPS 的帐户(根据 UnixBench 有 24 个 CPU)。

  1. 一般而言,如何在 Debian 中充分利用所有这些内核进行通用 shell 计算?
  2. 当我从 shell 发出长时间运行的应用程序以使每个进程在单独的内核上运行时,是否需要键入一些特殊的内容?或者 Debian 只是处理所有这些,对我来说是不可见的?

command-line multiprocessor

3
推荐指数
1
解决办法
2546
查看次数