需要帮助才能使我的程序自动化

时间:2015-09-24 18:12:00

标签: linux unix

我只想知道如何处理这个问题。我试图自动化以使用这些脚本将报告返回到数据库(即,java -jar snet_client.jar -mode report -id 13528 -props /int2/contact/client0.properties& amp;)。假设我在脚本中有数百个具有唯一数字的命令(13528)。我需要把它放在一个循环中,这样我就不需要反复写入/复制和粘贴那一百个脚本来执行。任何建议都会有所帮助。它必须是unix。

1 个答案:

答案 0 :(得分:0)

这个第一个bash脚本将遍历文件textfile中的每一行,假设每个id值都在一行上,启动java进程并等待它完成后再开始下一个。

# Queueing
# This one will only start the next process when the previous one completes.
OLD_IFS=$IFS
while IFS=$'\n' read -r line_data; do
    java -jar snet_client.jar -mode report -id ${line_data} -props /int2/contact/client0.properties &
    wait;
done < /path/to/textfile
IFS=$OLD_IFS

或者,此脚本的作用相同,只要从文本文件中获取id值,但在下一次启动之前不会等待第一个完成。这可能会导致问题snet_client.jar程序非常耗费资源:

# Non-queueing
# This starts and runs all the processes
OLD_IFS=$IFS
while IFS=$'\n' read -r line_data; do
    java -jar snet_client.jar -mode report -id ${line_data} -props /int2/contact/client0.properties &
done < /path/to/textfile
IFS=$OLD_IFS

在两者上,我们在开始之前存储当前的IFS值,因此我们可以在进程运行后重置它,以防万一我们需要在脚本文件中稍后设置它。

我没有对这些进行测试(因为我没有可用的依赖项),因此您可能需要对自己的环境进行调整。