Команди Bash з перенаправленим висновком не закінчуються


0

У мене дуже простий скрипт bash з кількома командами, виконаними послідовно. Виведення кожної команди переспрямовується на власний файл журналу. Щось на зразок цього

(command --param a > sys.a.log 2>&1)
(command --param b > sys.b.log 2>&1)
(command --param c > sys.c.log 2>&1)

Тепер, коли я запускаю цей сценарій, він запускається ідеально, але коли перша команда закінчується (файл журналу показує, що останній рядок програми виконаний) процес не закінчується. Я повинен вбити його вручну, перш ніж скрипт перейде до наступного рядка (і створить sys.b.log).

Так ви очікуєте, що цей сценарій поводиться (я не знаю багато про баш), чи це несподівана поведінка, і чи варто шукати деінде десь проблему. Якщо це має значення, фактична команда - "java", з купою параметрів.


Синтаксис оболонки прекрасний. Парени (підпакети) можуть не знадобитися, але вони, звичайно, не повинні спричиняти зависання. Проблема, ймовірно, з вашою javaкомандою.
John1024

@ John1024 Без дужок кожен файл журналу фіксує вихід всіх команд перед ним, тому я додав їх. Коли я намагаюся команду java в терміналі сама по собі, вона завжди припиняється.
Пітер

1
@ John1024 Ні, неважливо. Я просто спробував ще раз, і це програма java. (Здається, це якась багатопотокова помилка.) Дякую за допомогу.
Пітер

@Peter Без дужок кожен файл журналу буде захоплювати лише одну команду; якщо це захоплює більше того, відбувається щось інше, що немає у вашому уривку сценарію.
Гордон Девіссон

@Gordon, це добре знати. Можливо, що щось пішло не так із самою командою, і я неправильно сприйняв це як проблему зі сценарієм.
Петро

Відповіді:


0

Хороша ідея використовувати пастки виходу у ваших скриптах bash

Деякі фрагменти: http://redsymbol.net/articles/bash-exit-traps/

Також перегляньте цю публікацію щодо написання надійних скриптів оболонки та речей, на які слід звернути увагу: http://www.davidpashley.com/articles/writing-robust-shell-scripts/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.