Как узнать, что происходит в фоновом режиме, когда мы запускаем файл .sh в Linux?

Я знаю один путь, то есть ./filename.sh > log.txt . Но этот файл журнала содержит содержимое, которое отображается в консоли, если мы запустим файл, используя ./filename.sh .

Фоновый процесс не отображается в файле журнала. Под «фоновым процессом» я подразумеваю, как компилятор оценивает каждую строку (это слово «debug» подходит, я думаю).

Как получить этот фоновый процесс в файл журнала?

  • Скрипт для нескольких полей
  • Как обрабатывать подкоманду в сценарии оболочки?
  • Как работает синтаксис «$ {foo ## *.}» Для получения расширений файлов?
  • Как проверить создание двух новых файлов в bash и выполнить действие?
  • Как переформатировать имена каталогов?
  • как передать пароль двух серверов в оболочке
  • Как изменить каталог из сценария без вызова сценария. ./script или выйти из сценария при вызове. ./script.sh
  • Как выбрать опцию из меню выбора из сценария?
  • 2 Solutions collect form web for “Как узнать, что происходит в фоновом режиме, когда мы запускаем файл .sh в Linux?”

    Основываясь на вашем комментарии:

    Я хочу сказать, что я хотел бы знать, «Как bash выполняет каждую строку сценария оболочки» при запуске файла .sh.

    Если вы используете bash, то то, что вы ищете, это:

     bash -x ./filename.sh 

    или

     bash -x ./filename.sh > log.txt 

    В качестве альтернативы вы можете добавить:

     set -x 

    к содержимому filename.sh .

    В верхней части скрипта (после Shebang) добавьте строку:

     exec >/path/to/log.txt 

    перенаправить STDOUT скрипта на /path/to/log.txt .

    Если вы хотите перенаправить оба STDOUT и STDERR:

     exec >/path/to/log.txt 2>&1 

    Или просто STDERR:

     exec 2>/path/to/log.txt 

    Теперь, независимо от того, что сценарий находится на переднем плане или в фоновом режиме, файл журнала будет иметь STDOUT (и / или STDERR).

    Linux и Unix - лучшая ОС в мире.