Como ver o que está acontecendo em segundo plano quando executamos um arquivo .sh no Linux? [fechadas]

1

Eu sei de uma maneira, por exemplo, ./filename.sh > log.txt . Mas esse arquivo de log contém o conteúdo que aparece no console se executarmos o arquivo usando ./filename.sh .

O processo em segundo plano não está aparecendo no arquivo de log. Por "processo em segundo plano", quero dizer como o compilador está avaliando cada linha (a palavra "debug" é adequada, eu acho).

Como obter esse processo em segundo plano em um arquivo de log?

    
por Praveen 05.04.2016 / 07:01

2 respostas

2

Com base no seu comentário:

I mean I would like to know 'How bash is executing each and every line of shell script' when running a .sh file..

Se você está usando o bash, então o que você está procurando é:

bash -x ./filename.sh

ou

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

Como alternativa, você pode adicionar:

set -x

ao conteúdo de filename.sh .

    
por 06.04.2016 / 07:29
0

Na parte superior do script (após o Shebang), adicione a linha:

exec >/path/to/log.txt

para redirecionar o STDOUT do script para /path/to/log.txt .

Se você quiser redirecionar STDOUT e STDERR:

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

Ou apenas STDERR:

exec 2>/path/to/log.txt

Agora, independentemente do script estar em primeiro ou segundo plano, o arquivo de log terá o STDOUT (e / ou STDERR).

    
por 05.04.2016 / 07:03