Как узнать, что происходит в фоновом режиме, когда мы запускаем файл .sh в Linux?
Я знаю один путь, то есть ./filename.sh > log.txt
. Но этот файл журнала содержит содержимое, которое отображается в консоли, если мы запустим файл, используя ./filename.sh
.
Фоновый процесс не отображается в файле журнала. Под «фоновым процессом» я подразумеваю, как компилятор оценивает каждую строку (это слово «debug» подходит, я думаю).
- bash: синтаксическая ошибка около неожиданного токена `('
- Скрипт оболочки Unix, параметры с пробелами
- Распечатайте все приведенные ниже строки после совпадения
- Может кто-нибудь объяснить, что «$ {files }»
- Проверьте веб-каталог, если существует файл, если не выходить
Как получить этот фоновый процесс в файл журнала?
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).