在后台运行bash脚本循环,它将jar命令的结果写入文件

时间:2019-03-19 06:21:10

标签: bash shell executable-jar

我是运行bash脚本的新手。 (如果我给的标题不正确,您可以建议我。) 我想循环使用bash脚本运行jar文件。然后它将jar命令的输出写入某个文件。 Bash文件 datagenerate.sh

#!/bin/bash
echo Total iterations are 500
for i in {1..500}
do
   the_output="$(java -jar data-generator.jar 10 1 mockData.csv data_200GB.csv)"
   echo $the_output
   echo Iteration  $i processed
done
no_of_lines="$(wc -l data_200GB.csv)"
echo "${no_of_lines}"

我正在使用命令nohup sh datagenerate.sh > datagenerate.log &运行脚本。因为我想在后台运行此脚本,所以即使我从ssh注销,它也应继续运行,并且输出应进入datagenerate.log

但是,当我运行上述命令并按下Enter键或关闭终端时,该过程结束。只有Total iterations are 500已登录到输出文件。

让我知道我所缺少的。我遵循以下两个链接来创建上述Shell脚本:link-1link2

2 个答案:

答案 0 :(得分:0)

您应该查看以下内容: https://linux.die.net/man/1/screen

使用此程序,您可以在命令或脚本仍在运行时关闭外壳。它们不会被中止,您可以稍后再次进行会话。

答案 1 :(得分:0)

  

nohup sh datagenerate.sh> datagenerate.log&

nohup应该在不使用屏幕程序的情况下以这种方式工作,但是根据您的发行版,您的sh shell可能链接到破折号。 只需将脚本可执行即可:

chmod +x datagenerate.sh

并像这样运行您的命令:

nohup ./datagenerate.sh > datagenerate.log &