Сценарий запуска, не выполняющийся после перезагрузки на Солярисе

Принятие Вас имеет корневой доступ к s машине Linux где-нибудь на пути (или конечная точка или даже промежуточный маршрутизатор), можно записать, что iptables постановляет, что соответствует трафику приложения и направляет его к конкретной цепочке, которая действительно только принимает все пакеты. Ядро поддерживает байт и счетчик пакетов на каждой цепочке. Принятие пакетов, которые Вы хотите считать, идет от порта IP 10.1.2.3 TCP 42123 к порту IP 10.7.8.9 TCP 42789:

iptables -I FORWARD -p tcp -s 10.1.2.3 --sport 42123 -d 10.7.8.9 --dport 42789 -j ACCEPT

Замена FORWARD OUTPUT на исходном хосте, INPUT на узле назначения. Можно прочитать счетчики с iptables -nvxL FORWARD 42 где 42 количество правил (первое правило является номером 1).

Сделайте это для каждого направления, если Вы хотите считать оба направления. Прочитайте счетчики в известных временных интервалах для измерения использования пропускной способности.

Можно получить немного гибкости при создании промежуточной цепочки.

iptables -N myapp_counter
iptables -A myapp_counter -j ACCEPT
iptables -I FORWARD -p tcp -s 10.1.2.3 --sport 42123 -d 10.7.8.9 --dport 42789 -j myapp_counter
iptables -I FORWARD -p tcp -s 10.7.8.9 --sport 42789 -d 10.1.2.3 --dport 42123 -j myapp_counter

С этой установкой, счетчиком для myapp_counter будет включать торговлю обоими направлениями. Другое преимущество прохождения через цепочки - то, что можно атомарно прочитать счетчик на цепочке и установить его на 0 с iptables -nvxZL myapp_counter. И Вы не должны выяснять число правила, таким образом, легче автоматизировать установку.

3
05.07.2012, 20:23
3 ответа

Солярис init сценарии является болью. Капитал-A не имеет значения, существует сценарий в /etc/rc.d это находит каждый файл в /etc/rc3.d это запускается с 'S' и выполняет их в числовом порядке.

Это оставляет Вас с Запуском С Основ:

  1. /etc/rc3.d/S75Apache2 исполняемый файл набора?

  2. Делает тот сценарий, имеют '#!' строка? Строка корректна (никакие непечатаемые байты, и т.д.)?

  3. Если это - удар, или ksh сценарий выполняет его как ksh -n /etc/rc3.d/S75Apache2 start. Это скажет Вам, если это будет иметь синтаксические ошибки.

  4. Если можно запустить тот скрипт как корень, попробуйте его: /etc/rc3.d/S75Apache2 start и /etc/rc3.d/S75Apache2 stop Проверьте тщательно, чтобы видеть, запускается ли этоhttpd и остановки httpd. По крайней мере запустите скрипт с 'запуском' и аргументами 'остановки' сами. Использовать set -x видеть то, что сценарий делает во время выполнения. Проверьте, чтобы видеть, делает ли, что это делает соответствия, чему Вы верите, это.

  5. Читать /etc/rc3.d/S75Apache2 тщательно. PATH является малонаселенным при начальной загрузке, и Ваш сценарий не может знать, где некоторые исполняемые файлы во время начальной загрузки, но могли бы при выполнении после начальной загрузки. Попытайтесь не принять слишком много - файлы не могли бы существовать, что Вы думаете, существуют, подобные вещи.

  6. Гарантируйте этому a KnnApache2 сценарий не существует в /etc/rc3.d. Я противоречу этому Солярис init будет работать (например), K76Apache2 stop когда это переходит от уровня выполнения 3 до уровня выполнения 5.

  7. Удостоверьтесь, что сценарий изменяет идентификатор пользователя соответственно. Это, вероятно, не важно для Apache, учитывая, что Ваш сценарий, вероятно, просто звонит apachectl start с некоторыми командами пролога, но если Вы работаете http непосредственно, удостоверьтесь что получающееся httpd процесс имеет корректный идентификатор пользователя. Использовать sudo или что-то в сценарии для разбираний в нем.

3
27.01.2020, 21:11
  • 1
    Запись является ссылкой на/etc/init.d/apache2, который установлен исполняемый файл (1). Первая строка является '#!/sbin/sh' и кажется корректной (2). После перезагрузки мы запускаем Apache вручную как корень с помощью той же ссылки (т.е./etc/rc3.d/S75Apache2 запускаются) (4). Все необходимые пути определяются в самом сценарии (5). Можно ли думать о чем-либо еще для проверки? –  BellevueBob 05.07.2012, 21:13
  • 2
    Запись является ссылкой на/etc/init.d/apache2, который установлен исполняемый файл (1). Первая строка является '#!/sbin/sh' и кажется корректной (2). После перезагрузки мы запускаем Apache вручную как корень с помощью той же ссылки (т.е./etc/rc3.d/S75Apache2 запускаются) (4). Все необходимые пути определяются в самом сценарии (5). Можно ли думать о чем-либо еще для проверки? –  BellevueBob 05.07.2012, 21:13
  • 3
    Действительно ли уровень выполнения 3 является соответствующим? Я не могу вспомнить то, что означает уровень выполнения 3 Соляриса. Ядро запустило уровень пользователя, объединяющийся в сеть в той точке? Возможно, выполненный-leve 5 лучше? У меня нет машины Соляриса для проверения этого материала. А-ч –  Bruce Ediger 05.07.2012, 21:53
  • 4
    @BruceEdiger - На Солярисе уровень выполнения 3 является многопользовательским, уровень выполнения 5 является выключением питания, таким образом, 3 определенно намного лучше, чем 5. Сети уровня пользователя запускаются во время уровня выполнения 2, так готово к тому времени, когда 3 вводится. –  alanc 03.09.2012, 19:54

Это поворачивается, там БЫЛА ошибка в сценарии запуска: переменная LD_LIBRARY_PATH не была установлена правильно. Определение этого в сценарии решит проблему.

Для дальнейшего использования существует файл журнала, который содержит сообщения запуска, которые содержали ошибку, которая привела к решению нашей проблемы. Файл:

/var/svc/log/milestone-multi-user-server:default.log

Я нашел ссылку на это в/etc/rc3.d/README файле. Другой день, другой самородок знания!

3
27.01.2020, 21:11

Вы прокрутили свой собственный Apache (т.е. скомпилировали его от исходного кода), или Вы просто используете Apache, который прибывает предварительно установленный с Солярисом 10?

Хорошо действительно не имеет значения, если Вы находитесь на Солярисе 10 (или позже), поскольку Вы говорите, что Вы - Вы, не должен использовать Солярис init сценарии вообще, необходимо использовать SMF. (да, технически init сценарии все еще поддерживаются, но поскольку Вы указываете, что они - боль, и SMF намного лучше),

Для запуска (теперь, и также автоматически после перезагрузки), веб-сервер Apache 2.2, который прибывает pre-inststalled с Солярисом 10 затем просто, делает это:

svcadm  enable /network/http:apache2

При прокрутке собственного Apache затем, необходимо создать декларацию SMF, импортировать декларацию, и от Вас идут. Просто Google для "SMF Солярис" и Вы найдете много рецептов.

2
27.01.2020, 21:11

Теги

Похожие вопросы