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

问题描述 投票:0回答:2

我是运行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

但是,当我跑过命令并点击进入或关闭终端时,它结束了该过程。只有Total iterations are 500登录到输出文件。

让我知道我错过了什么。我按照以下两个链接创建了上面的shell脚本:link-1link2

bash shell executable-jar
2个回答
0
投票

nohup sh datagenerate.sh> datagenerate.log&

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

chmod +x datagenerate.sh

并像这样运行你的命令:

nohup ./datagenerate.sh > datagenerate.log &

0
投票

你应该看看这个:https://linux.die.net/man/1/screen

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

© www.soinside.com 2019 - 2024. All rights reserved.