我有一些在后台运行的YCSB数据加载脚本
data_load.sh:
nohup ycsb load couchbase2 -s -P workloada -p couchbase.bucket=poc -threads 30 .. > load1_output.txt &
nohup ycsb load couchbase2 -s -P workloada -p couchbase.bucket=poc -threads 30 .. > load2_output.txt &
nohup ycsb load couchbase2 -s -P workloada -p couchbase.bucket=poc -threads 30 .. > load3_output.txt &
还有一些YCSB Run Scripts,如下所示:
Read_test.sh:
nohup ycsb run couchbase2 -s -P workloadc -p couchbase.bucket=poc -threads 30 .. > read1_output.txt &
nohup ycsb run couchbase2 -s -P workloadc -p couchbase.bucket=poc -threads 30 .. > read2_output.txt &
nohup ycsb run couchbase2 -s -P workloadc -p couchbase.bucket=poc -threads 30 .. > read3_output.txt &
如果我单独运行它们,它们将在后台和并行运行。
但是如何自动执行此操作或编写一个脚本,该脚本将一个接一个地调用这两个脚本,并在转到下一个脚本之前等待第一个脚本完成?
先谢谢。
答案 0 :(得分:1)
您可以修改第一个脚本以在最后设置let dictionary = JSON(result)
// print("albums **************\(dictionary)")
if let data = dictionary["data"].array {
print("data of profilePicture ******* \(data)")
if let dict = data.filter{ $0["name"] == "Profile Pictures" }.first as? [String: String] {
let id = dict["id"]
}
}
,或您可以拥有父脚本wait
第一个脚本和source
wait
通过source ./data_load.sh
wait
./Read_test.sh
- 子脚本,它创建的作业实际上将成为主脚本的作业,使您能够source
。
没有参数的wait
内置将等待所有后台作业完成,之后执行将继续执行下一个命令
答案 1 :(得分:0)
您可以在并行模式下使用xargs
。
$ echo {1..4} | xargs -n1 -P 4 echo "potato"
potato 1
potato 4
potato 3
potato 2
这个管道命令说"采取有输入的输入,一次剥掉一个东西,分成4个线程,并用字符串'土豆'回声。"
还有GNU Parallel,有些人发誓 - 尽管学习曲线和事实表明它对于我的用例并不比xargs好(事实上它并没有#&# 39;预装在我的发行版上)让我无法学到太多东西。
答案 2 :(得分:0)
我将详细说明一个p的答案:
load_and_read.sh:
#!/bin/bash
load_commands='ycsb load couchbase2 -s -P workloada -p couchbase.bucket=poc -threads 30 .. > load1_output.txt
ycsb load couchbase2 -s -P workloada -p couchbase.bucket=poc -threads 30 .. > load2_output.txt
ycsb load couchbase2 -s -P workloada -p couchbase.bucket=poc -threads 30 .. > load3_output.txt'
echo "$load_commands" | xargs -P3
read_commands='ycsb run couchbase2 -s -P workloadc -p couchbase.bucket=poc -threads 30 .. > read1_output.txt
ycsb run couchbase2 -s -P workloadc -p couchbase.bucket=poc -threads 30 .. > read2_output.txt
ycsb run couchbase2 -s -P workloadc -p couchbase.bucket=poc -threads 30 .. > read3_output.txt'
echo "$read_commands" | xargs -P3
使用nohup ./load_and_read.sh &
在后台运行整个脚本。第一个echo "$cmds" | xargs -P3
并行运行三个加载命令,然后,在这三个加载命令完成后,第二个并行运行三个读取命令。