如何使用 UNIX shell 脚本并行运行一个进程多次?

Posted

技术标签:

【中文标题】如何使用 UNIX shell 脚本并行运行一个进程多次?【英文标题】:How to run a single process multiple times in parallel using a UNIX shell script? 【发布时间】:2015-12-23 15:33:40 【问题描述】:

我正在研究其中一个 MPP 数据库,并希望在 python 或 UNIX shell 脚本中使用多个会话运行单个 SQL 查询。有人可以分享您对在 python/UNIX 实用程序中生成 SQL 的想法。任何输入将不胜感激。谢谢。

Code :-

for i in 1..$n
do
        (  sh run_sql.sh test.sql touchstone_test & )
done

【问题讨论】:

如果安装了 mysqlmysql -e "query" 将从 shell 运行查询。 我需要为单个输入 sql 文件打开多个会话并单独运行它们。 好的。我对 MPP 不太熟悉,但是您使用的是什么类型的数据库? PostgreSQL、SQL Server、MySQL 等的 Python 连接器是不同的。 它在 Actian Matrix 中。我有一个运行 sql 文件并生成输出的 shell 脚本。我想生成它并使用多个会话运行 sql 文件。 当您说多个会话时,我假设您是指单独的 Unix 进程?如果是这样,你可以看到How to start multiple processes in Bash 【参考方案1】:

对于 python,您可以下载 MySQLdb 模块。 MySQLdb 是一个用于从 Python 连接到 MySQL 数据库服务器的接口。它实现了 Python 数据库 API v2.0,并建立在 MySQL C API 之上。 More info.

【讨论】:

【参考方案2】:

根据规模,您可以选择任一选项。

如果您有小任务要完成,运行 shell 脚本就可以了。请注意,您还可以将查询通过管道传输到 mysql CLI 客户端,例如

mysql_cmd="mysql -h<host> -u<user> -p<pwd> <db>"
echo "SELECT name, id FROM myobjects WHERE ...." | $mysql_cmd

对于更大规模的项目,我会使用 Python 和已经提到的 mysqldb 接口。

【讨论】:

以上是关于如何使用 UNIX shell 脚本并行运行一个进程多次?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中调用类似于 unix shell 脚本的函数

如何在Unix控制台或Mac终端上运行shell脚本?

运行shell脚本报错```$'\r':command not found```

Unix shell script 找出脚本文件所在的目录?

Unix shell 脚本 - 使用 /bin/sh shell 查找以前的日期

Mac上如何运行shell脚本(变为可执行文件)