Как выполнить команду после завершения сценария оболочки и сохранить выходные данные, одновременно показывая результаты на экране одновременно - PullRequest
0 голосов
/ 28 мая 2018

Как я могу выполнить сценарий оболочки и сохранить выходные данные в файл, одновременно показывая результаты на экране одновременно (как STDOUT и STDERR), а также выполнив другую команду после завершения сценария?Должен ли я использовать nohup?

1 Ответ

0 голосов
/ 29 мая 2018

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

#!/bin/bash
find / -name "*.sh" ; echo END_OF_COMMAND

.... они используют & для запуска скрипта в фоновом режиме с помощью tail -f nohup.out для отображения вывода на экране во время работы скрипта:

$ nohup ./test.sh  & tail -f nohup.out

Таким образом, высценарий будет выполнять последовательность в фоновом режиме, в то время как выходные данные все еще будут отображаться на экране.

Однако, как указано, использование tee будет лучшим подходом, чтобы показать и перенаправить в файл как STDOUT, так и STDERRв то же время вы можете использовать tee со следующими аргументами:

$ ./test.sh ; echo END_OF_COMMAND 2>&1 | tee output.log
...