Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 设计一个10线程的进程_Multithreading_Shell_Background_Parallel Processing_Subshell - Fatal编程技术网

Multithreading 设计一个10线程的进程

Multithreading 设计一个10线程的进程,multithreading,shell,background,parallel-processing,subshell,Multithreading,Shell,Background,Parallel Processing,Subshell,我在一个目录中有大约500多个数据文件。我正在使用命令处理这些文件。问题是,它会像任何实用程序一样,连续地拾取每一个 目前,我的进程所做的是产生大约500个进程,将它们错开,以10个为一批,每个进程之间有一个等待。就这样。每个设计1个文件==1个进程 command1 <parameters> > log 2&>1& command2 <parameters> > log 2&>1& command3 <par

我在一个目录中有大约500多个数据文件。我正在使用命令处理这些文件。问题是,它会像任何实用程序一样,连续地拾取每一个 目前,我的进程所做的是产生大约500个进程,将它们错开,以10个为一批,每个进程之间有一个等待。就这样。每个设计1个文件==1个进程

command1 <parameters> > log 2&>1&
command2 <parameters> > log 2&>1&
command3 <parameters> > log 2&>1&
command4 <parameters> > log 2&>1&  /# ....till 10
wait 
command11 <parameters> > log 2&>1&
command1 <parameters> > log 2&>1&
command1 <parameters> > log 2&>1& /# ...till 20 
wait
command1 <parameters> > log 2&>1& 
command1>日志2&>1&
命令2>日志2&>1&
命令3>日志2&>1&
命令4>记录2&>1&/#…直到10
等待
命令11>日志2&>1&
命令1>日志2&>1&
命令1>记录2&>1&/#…直到20
等待
命令1>日志2&>1&
因此,我不会同时破坏系统。该命令实际上是另一系列shell和c代码,用于解析数据文件并执行一些检查,包括连接到Oracle。 我想重新设计它,这样每次运行命令时,我就不会打开新的数据库连接。假设有100个文件。我只想打开10个DB连接,而不是100个单独的连接。 我想做的是先数一数我有多少个文件。把它们除以10。每个部门是一个由10个文件组成的“批处理”,因此该过程应该自动创建15个目录,而不是100个文件,而是150个文件。每个目录应在其中移动10个文件,然后 我能跑

 command1 <parameters> Directorypath  > log 2&>1& 
/# command can pick up all files in a directory or a single file
/# ct till command 10 ...
....
 command10 <parameters> Directorypath  > log 2&>1& 
command1 Directorypath>log2&>1&
/#命令可以拾取目录或单个文件中的所有文件
/#直到命令10。。。
....
command10目录路径>日志2&>1&
10个文件==1个此设计的进程

command1 <parameters> > log 2&>1&
command2 <parameters> > log 2&>1&
command3 <parameters> > log 2&>1&
command4 <parameters> > log 2&>1&  /# ....till 10
wait 
command11 <parameters> > log 2&>1&
command1 <parameters> > log 2&>1&
command1 <parameters> > log 2&>1& /# ...till 20 
wait
command1 <parameters> > log 2&>1& 
任何关于如何做到这一点的建议都可以使用visa命令。
ty

使用GNU parallel,您可以对目录中的所有文件并行运行命令,每次运行10个:

parallel --gnu -j 10 yourcommand --yourflags {} ::: *
它会运行

yourcommand --yourflags file1
yourcommand --yourflags file2

一次一个,十个

您对
命令中发生的事情有任何影响吗?我的意思是,您可以更改
命令的代码吗?这些
命令
是不同的程序,对吗?如果没有,请解释。