2014-01-07 3 views
0

Я запускаю скрипт bash, который занимает несколько часов. Мне было интересно, есть ли способ контролировать, что он делает? например, какая часть скрипта работает в данный момент, сколько времени потребовалось для запуска всего скрипта, если он сбой в какой строке сценария перестает работать и т. д. Я просто хочу получить обратную связь от скрипта. Благодаря!!!Как я могу контролировать сценарий bash?

+1

Вы можете добавить '-x' в первой строке, например:' #/бен/Баш -ex'. '-e' должен немедленно выйти, когда команда выходит с ошибкой. – janos

+1

также -v можно использовать вместо -x для получения менее загроможденного вывода – damienfrancois

+0

Имеется ли в вашем скрипте 'echo' или' printf' заявления? Если нет, вышеуказанные комментарии вам помогут. Если это так, и вы не видите их, потому что сценарий работает в фоновом режиме, тогда решение отличается. Пожалуйста, дайте понять, в каком случае он находится в вашем вопросе. – damienfrancois

ответ

1

от человека страницы для Баша,

set -x 
After expanding each simple command, for command, case command, select command, or arithmetic for command, display the expanded value of PS4, followed by the command and its expanded arguments or associated word list. 

добавить их в начале вашего скрипта,

export PS4='+{${BASH_SOURCE}:$LINENO} ' 
set -x 

Пример,

#!/bin/bash   

export PS4='+{${BASH_SOURCE}:$LINENO} ' 
set -x 

echo Hello World 

Результат,

+{helloworld.sh:6} echo Hello World 
Hello World 
1

Сделать статус или файл журнала. Например добавить это в вашем скрипте:

echo $(date) - Ok >> script.log 

Или для реального мониторинга вы можете использовать strace на Linux для системного вызова см, например:

$ while true ; do sleep 5 ; done & 
[1] 27190 
$ strace -p 27190 
Смежные вопросы