Управление процессом оболочки BASH - любые другие примеры контроля / планирования работы - PullRequest
1 голос
/ 23 февраля 2011

Я унаследовал проект среднего размера, в котором основная (пакетная) программа работает через большой набор сценариев оболочки, которые выполняют большой контроль над процессом (ожидая завершения процесса, находясь в спящем режиме, проверяя условия и т. Д.). ) [и переработано с помощью сценариев Perl]

Существуют ли другие примеры управления процессом с помощью сценариев оболочки? Я хотел бы увидеть, что другие люди сделали для сравнения. (поскольку я не очень люблю сценарий оболочки из 6 668 строк)

Это может привести к тому, что текущая программа работает и ее не нужно портить или по причинам обслуживания - это слишком громоздко, и делать это другим способом будет проще в обслуживании, но мне нужны другие примеры.

Чтобы уменьшить «общность» вопроса, вот пример того, что я ищу: procsup

Ответы [ 3 ]

0 голосов
/ 24 февраля 2011

Проект Inquisitor широко использует управление процессами из сценариев оболочки.Возможно, вы захотите увидеть каталог с главной функцией set или каталог с тестами (т.е. подчиненными процессами), которые он запускает .

0 голосов
/ 25 февраля 2011

Это ужасный скрипт оболочки.Рассматривали ли вы рефакторинг?

Судя по всему, может быть много случаев, когда вы можете заменить несколько строк кода вызовом функции оболочки.Если вы сможете упростить код таким способом, тогда будет легче увидеть, где есть ошибки в логике.

Я успешно использовал эту тактику с огромным сценарием PERL, и оказалось, что у него есть некоторыесерьезные логические ошибки и риск для безопасности, потому что он имеет встроенные пароли, которые были запутаны легко обратимым способом.Открытые пароли могли быть использованы неизвестными лицами (ну, например, недовольным сотрудником) для закрытия всей глобальной сети.

Некоторые менеджеры склонялись к созданию исключения безопасности, потому что этот сценарий был очень важен, ноКогда была объяснена логическая ошибка, и стало ясно, что этот сценарий предоставляет неверные данные, было решено, что нет данных лучше грязных данных.Парень, который написал этот сценарий, научился программировать с помощью книги на PERL и написания сценария.

0 голосов
/ 23 февраля 2011

Это довольно общий вопрос, и поэтому дать конкретные ответы может быть немного сложно. (И вы не будете довольны примером длиной в 5000 строк.) Скорее всего, архитектура вашего приложения неисправна и требует довольно полной доработки.

Как вы, наверное, уже знаете, управление процессом с помощью bash довольно простое:

./test_script.sh &
test_script_pid=$!
wait $test_script_pid # waits until it's done
./test_script2.sh
echo $? # Prints return code of previous command

Вы можете делать то же самое, например, с подпроцессом Python (или, разумеется, с Perl). Если у вас сложная архитектура с большим количеством разных программ, то процесс явно не тривиален.

...