Запустите цикл сценария bash в фоновом режиме, который запишет результат команды jar в файл - PullRequest
0 голосов
/ 19 марта 2019

Я новичок в запуске скрипта bash.(Вы можете предложить мне, если название, которое я дал, является неправильным.) Я хочу запустить jar-файл, используя скрипт bash в цикле.Затем он должен записать вывод команды 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 или Closeтерминал это завершает процесс.Только Total iterations are 500 входит в выходной файл.

Дайте мне знать, что мне не хватает.Для создания вышеуказанного сценария оболочки следовали две ссылки: link-1 & link2 .

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

nohup sh datagenerate.sh> datagenerate.log &

nohup должен работать без экранной программы, но в зависимости от вашего дистрибутива ваша оболочка sh может быть связана с dash. Просто сделайте ваш скрипт исполняемым:

chmod +x datagenerate.sh

и выполните вашу команду следующим образом:

nohup ./datagenerate.sh > datagenerate.log &
0 голосов
/ 19 марта 2019

Вы должны проверить это: https://linux.die.net/man/1/screen

С помощью этой программы вы можете закрыть свою оболочку, пока команда или сценарий еще выполняются.Они не будут прерваны, и вы сможете продолжить сеанс позже.

...