П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 181822 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 80945 раз(а).

Учебник HTML.
Просмотров 76579 раз(а).

Руководство по PHP5.
Просмотров 47577 раз(а).

Хостинг через призму DNS.
Просмотров 55166 раз(а).

Подборка текстов стандартных документов.
Просмотров 47155 раз(а).

Учебник PHP - Самоучитель
Просмотров 53566 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 54215 раз(а).

Внешние атаки...
Просмотров 43844 раз(а).

Учебник PHP.
Просмотров 39270 раз(а).

SSI в примерах.
Просмотров 29117 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 13. Команды системного администрирования

Прочие команды

env

Запускает указанную программу или сценарий с модифицированными переменными окружения (не изменяя среду системы в целом, изменения касаются только окружения запускаемой программы/сценария). Посредством [varname=xxx], устанавливает значение переменной окружения varname, которая будет доступна из запускаемой программы/сценария. Без параметров -- просто выводит список переменных окружения с их значениями.

Note

В Bash, и других производных от Bourne shell, имеется возможность установки переменных окружения и запуска программы (или сценария) одной командной строкой.

var1=value1 var2=value2 commandXXX
# $var1 и $var2 -- будут определены только в окружении для 'commandXXX'.


Tip

В первой строке сценария ("sha-bang") можно указать команду env, если путь к командному интерпретатору не известен.

#! /usr/bin/env perl

print "Этот сценарий, на языке программирования Perl, будет запущен,\n";
print "даже если я не знаю где в системе находится Perl.\n";

# Прекрасно подходит для написания кросс-платформенных сценариев,
# когда Perl может находиться совсем не там, где вы ожидаете.
# Спасибо S.C.


ldd

Выводит список разделяемых библиотек, необходимых для исполняемого файла.

bash$ ldd /bin/ls
libc.so.6 => /lib/libc.so.6 (0x4000c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
watch

Периодически запускает указанную программу с заданным интервалом времени.

По-умолчанию интервал между запусками принимается равным 2 секундам, но может быть изменен ключом -n.

watch -n 5 tail /var/log/messages
# Выводит последние 10 строк из системного журнала, /var/log/messages, каждые пять секунд.


strip

Удаляет отладочную информацию из исполняемого файла. Это значительно уменьщает размер исполняемого файла, но при этом делает отладку программы невозможной.

Эту команду часто можно встретить в Makefile-ах, и редко -- в сценариях на языке командной оболочки.

nm

Выводит список символов (используемых в целях отладки), содержащихся в откомпилированном двоичном файле.

rdist

Позволяет на заданных машинах хранить идентичные копии файлов. По умолчанию, rdist просматривает только те файлы, версия которых на удаленных машинах более старая, чем на локальной машине. Это делается сравнением последнего времени модификации и размера файла на локальной машине и на удаленных.

А теперь, используя полученные нами знания, попробуем разобраться с одним из системных сценариев. Один из самых коротких и простых -- это killall, который вызывается для остановки процессов при перезагрузке или выключении компьютера.

Пример 13-9. Сценарий killall, из каталога /etc/rc.d/init.d

#!/bin/sh

# --> Комментарии, начинающиеся с "# -->", добавлены автором документа.

# --> Этот сценарий является частью пакета 'rc'-сценариев
# --> Автор: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

# --> Этот сценарий характерен для дистрибутива Red Hat
# --> (в других дистрибутивах может отсутствовать).

# Остановить все ненужные сервисы которые еще работают (собственно,
# их уже не должно быть, это лишь формальная проверка, на всякий случай)

for i in /var/lock/subsys/*; do
        # --> Стандартный заголовок цикла for/in, но, поскольку "do"
                                # --> находится в той же самой строке, что и for,
        # --> необходимо разделить их символом ";".
        # Проверяется наличие сценария.
        [ ! -f $i ] && continue
        # --> Очень интересное использование "И-списка", эквивалентно:
        # --> if [ ! -f "$i" ]; then continue

        # Получить имя подсистемы.
        subsys=${i#/var/lock/subsys/}
        # --> В данном случае совпадает с именем файла.
        # --> Это точный эквивалент subsys=`basename $i`.

        # -->  Таким образом получается имя файла блокировки (если он присутствует,
        # -->+ то это означает, что процесс запущен).
        # -->  См. описание команды "lockfile" выше.


        # Остановить службу.
        if [ -f /etc/rc.d/init.d/$subsys.init ]; then
            /etc/rc.d/init.d/$subsys.init stop
        else
            /etc/rc.d/init.d/$subsys stop
        # --> Останавливает задачу или демона
        # --> посредством встроенной команды 'stop'.
        fi
done

Вобщем все довольно понятно. Кроме хитрого манипулирования с переменными, при определении имени подсистемы (службы), здесь нет ничего нового.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: