Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
squid.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1.45 Mб
Скачать

3.6 Как мне запускать Squid автоматически во время загрузки системы?

Squid версии 2.X

Squid-2 встроенную поддержку рестарта. Это существенно упрощает запуск Squid и значит, что вам нет необходимости использовать RunCache или inittab. Как минимум вы должны указать полный путь к исполняемую файлу Squid. К примеру:

/usr/local/squid/bin/squid

Squid автоматически помещает себя в фоновый режим и порождает дочерний процесс. В файле, куда пишет ваш syslog, вы должны увидеть нечто подобное:

Sep 23 23:55:58 kitty squid[14616]: Squid Parent: child process 14617 started

Это значит, что процесс ID 14563 - родительский процесс, который управляет дочерним процессом (pid 14617). Именно дочерний процесс проделывает всю работу. А родительский процесс просто ждет завершения дочернего процесса. Если дочерний процесс внезапно завершается, то родительский процесс автоматически запускает новый дочерний процесс. В этом случае syslogвыведет:

Sep 23 23:56:02 kitty squid[14616]: Squid Parent: child process 14617 exited with status 1

Sep 23 23:56:05 kitty squid[14616]: Squid Parent: child process 14619 started

Если есть проблемы и Squid не может запуститься, то родительский процесс закончит работу через некоторое время. Ваш syslog выведет следующее:

Sep 23 23:56:12 kitty squid[14616]: Exiting due to repeated, frequent failures

Если это произошло, вы должны проверить сообщения от syslog и файл cache.log на наличие ошибок.

Когда вы посмотрите на результат отработки команды ps, вы ложны увидеть два процесса squid:

24353 ?? Ss 0:00.00 /usr/local/squid/bin/squid

24354 ?? R 0:03.39 (squid) (squid)

Первый - это родительский процесс, а дочерний процесс называется ``(squid)''. Заметьте, что если вы случайно убьете родительский процесс, то дочерний на это никак не среагирует.

Если вы хотите запустить Squid с терминала, чтобы он не уходил в фоновый режим и не порождал дочерний процесс, используйте ключ -N командной строки.

/usr/local/squid/bin/squid -N

Squid версии 1.1.X

Из inittab

На системах, поддерживающих файл /etc/inittab (Digital Unix, Solaris, IRIX, HP-UX, Linux), вы можете добавить в него такую строку:

sq:3:respawn:/usr/local/squid/bin/squid.sh < /dev/null >> /tmp/squid.log 2>&1

Мы рекомендует использовать скрипт squid.sh, а не вызывать Squid напрямую. Пример скрипта squid.sh приведен ниже:

#!/bin/sh

C=/usr/local/squid

PATH=/usr/bin:$C/bin

TZ=PST8PDT

export PATH TZ

notify="root"

cd $C

umask 022

sleep 10

while [ -f /tmp/nosquid ]; do

sleep 1

done

/usr/bin/tail -20 $C/logs/cache.log \

| Mail -s "Squid restart on `hostname` at `date`" $notify

exec bin/squid -CYs

Из rc.local

На BSD-системах, вам необходимо запускать Squid из ``rc'' фалов, обычно это файл /etc/rc.local. К примеру:

if [ -f /usr/local/squid/bin/RunCache ]; then

echo -n ' Squid'

(/usr/local/squid/bin/RunCache &)

fi

Из init.d

Некоторые желают использовать систему автозапуска ``init.d''. Если вы запускаете Squid (или RunCache) из скрипта ``init.d'', то вам возможно понадобится использовать nohup:

nohup squid -sY $conf >> $logdir/squid.out 2>&1

Также вы можете добавить строку для перехвата определенных сигналов воизбежании их передачи процессу Squid. Добавьте в начало вашего скрипта такую строку:

trap '' 1 2 3 18

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]