Multithreading 设计一个10线程的进程
我在一个目录中有大约500多个数据文件。我正在使用命令处理这些文件。问题是,它会像任何实用程序一样,连续地拾取每一个 目前,我的进程所做的是产生大约500个进程,将它们错开,以10个为一批,每个进程之间有一个等待。就这样。每个设计1个文件==1个进程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
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
一次一个,十个 您对
命令中发生的事情有任何影响吗?我的意思是,您可以更改命令的代码吗?这些命令
是不同的程序,对吗?如果没有,请解释。