Перевод в режим ожидания

Существует очень удобный механизм, позволяющий приостанавливать работу программы Crack. Он контролируется сценарием pauser, который находится в подкаталоге scripts. Этот сценарий вызывается утилитой cracker примерно каждую минуту. По умолчанию сценарий pauser представляет собой бесконечный цикл, в котором проверяется наличие файла GOTO-SLEEP в каталоге $CRACK_HOME. Если этот файл существует, сценарий делает паузу в 60 секунд, после чего снова осуществляет проверку. Если файл по-прежнему присутствует, сценарий возвращается в режим ожидания. В случае отсутствия файла сценарий завершается, возвращая управление утилите cracker. Таким образом, все, что от нас требуется, — это создать файл GOTO-SLEEP в каталоге /usr/src/c50a.

Но возможности сценария pauser не ограничиваются только этим. Не стоит забывать, что это обычный сценарий интерпретатора sh, который можно расширять и модифицировать. Предположим, что нужно приостанавливать работу программы Crack в зависимости от числа выполняемых процессов. Один из способов решения поставленной задачи приведен в листинге 12.9. Строки, выделенные полужирным шрифтом, добавлены к существующему сценарию pauser. Эти строки переводят программу Crack в режим ожидания при наличии в системе не менее 20 выполняемых процессов (один из них — сама программа Crack). Число 20 выбрано произвольно, оно не отражает реальный предел числа процессов. Не стоит приостанавливать работу программы в зависимости от объема свободной памяти, доступных ресурсов процессора и т.п., поскольку программа старается задействовать все имеющиеся в наличии ресурсы данного типа.

Листинг 12.9. Пример сценария, контролирующего выполнение программы Crack 'начало сценария не показано'

С помощью этого сценария можно контролировать работу

программы Crack. Разрешается, к примеру, менять

периодичность опроса файла, exec '/dev/null'/dev/null 2>&1 POLL=60

L0CKFILE="GOTO-SLEEP" 'часть сценария не noказана'

while :

do

Пауза длится до тех пор, пока существует файл блокировки

в каталоге $CRACK_HOME.

if t -f $L0CKFILE ] then

sleep $P0LL continue

fi

'часть сценария не показана'

Команда wc -1 подсчитывает число символов новой строки,

которых всегда на единицу больше. Нужно еще учесть саму команду ps,

поэтому проверяется число 22, хотя реализуемый предел — 20.

numprocs-'ps axr|wc -1' if [ Snumprocs -ge 22 ] then

sleep $POLL

numprocs-0

continue

fi

'часть сценария не показана' break

done

exit 0

Можно сделать так, чтобы программа Crack запускалась только по ночам и в выходные дни. Соответствующий код уже реализован в сценарии pauser. Достаточно убрать символы комментария со строк 6-12 включительно, как показано в листинге 12.10 (номера строк добавлены для наглядности). Естественно, эти строки можно модифицировать дальше.

Листинг 12.10. Запуск программы Crack по ночам и в выходные дни

1. 21 'начало сценария не показано'

3.

4. Переход в режим ожидания с 8:00 до 17:59, кроме выходных.

5.

6. set 'date '+%Н %W ' $1=час(00, .23) $2=день(0.. 6)

7.

8. if [ "$1" -ge 8 -а "$1" -le 17 - -a "$2" -ge 1 -a "$2" -le 5 ]

9. then

10. sleep $POLL

11. continue

12. fi

13.

14. break

15. done

16.

17. exit 0


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок