我是运行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
登录到输出文件。
nohup sh datagenerate.sh> datagenerate.log&
nohup应该在不使用屏幕程序的情况下以这种方式工作,但根据您的发行版,您的sh shell可能会链接到破折号。只需使您的脚本可执行:
chmod +x datagenerate.sh
并像这样运行你的命令:
nohup ./datagenerate.sh > datagenerate.log &
你应该看看这个:https://linux.die.net/man/1/screen
使用此程序,您可以在命令或脚本仍在运行时关闭shell。它们不会被中止,您可以稍后再次选择会话。