Основные команды
grep
grep выводит строки из файла или потока , которые соответствуют шаблону.
Например , если нужно распечатать строку из файла /etc/passwd , в которую входит root, используйте команду:
grep root /etc/passwd
Команда очень удобна при оперировании с множеством файлов.
Например, если нужно найти файлы в каталоге /etc , в которые входит подстрока root, наберите :
grep root /etc/*
2 важнейших опции grep : -i (регистр) и -v (выдает обратный результат - т.е. печатает строки ,
которые не соответствуют шаблону). Существует 2-й вариант команды - egrep.
grep понимает шаблоны , называемые регулярными выражениями .
Регулярные выражения - более мощное средство, чем обычные шаблоны. Необходимо помнить о 2-х вещах
.* - соответствует любому количеству символов
. - соответсвует 1-му произвольному символу
grep(1) manual page включает детализированное описание регулярных выражений.
more и less Иногда вывод команды grep может быть слишком велик .
Для текстовой навигации используются команды more и less.
Для просмотра больших файлов используйте команду more .
При ее выполнении вы увидите содержание большого файла, разбитого на экраны .
Для навигации используйте клавиши пробел и q .
Команда less аналогична more, но имеет большее количество опций .
Вывод команды grep можно послать на ввод другой команды , например:
grep ie /usr/dict/words | less
pwd
Команда pwd выводит текущую рабочую директорию.
diff
diff показывает разницу между 2 файлами:
diff file1 file2
Из опций может пригодиться -c.
file
Команда file выводит формат файлов:
file file
find
Находит файл :
find dir -name file -print
При использовании в этой команде wildcard-символов их надо квотировать.
В shell возможны 2 типа переменных :
1. shell variables
2. environment variables
Отличие в том , что при выполнении в shell каких-то внешних программ этим внешним программам могут быть переданы environment variables.
Пользователь может создавать переменные как первого типа , так и второго .
Отличие в том , что во втором случае это делается в 2 приема , например
my_env_var=blablabla
export my_env_var
Следующая таблица выводит набор специальных символов . Особенность их в том , что они могут использоваться
различными языками , например Perl .
Спец-символы
Символ
|
Наименование
|
Где используется
|
*
|
star
|
Регулярные выражения
|
.
|
dot
|
Текущая директория
|
!
|
bang
|
Логическое не ; история команд
|
|
|
pipe
|
pipes
|
/
|
(forward) slash
|
Разделитель каталогов , поисковая команда
|
\
|
backslash
|
Литерал , макрос (не путать с директорией)
|
$
|
dollar
|
Обозначение переменной , конец строки
|
'
|
tick, (single) quote
|
Литер-строка
|
`
|
backtick, backquote
|
Замена
|
"
|
double quote
|
Semi-literal строка
|
^
|
caret
|
Отрицание, начало строки
|
~
|
tilde, squiggle
|
Отрицание , ярлык каталога
|
#
|
hash, sharp, pound
|
Комментарий , препроцессор
|
[]
|
(square) brackets
|
Диапазон
|
{}
|
(curly) braces
|
Логический блок
|
_
|
underscore
|
Замена пробела
|
Если вы хотите вывести результат команды не на экран , а в файл , наберите :
команда > file
Если файл уже существует , он будет перезаписан . Если вы хотите не перезаписывать файл , а добавить вывод
в конец существующего , наберите
команда >> file
Для того , чтобы послать вывод на ввод другой команды , нужно использовать пайпы :
head /proc/cpuinfo
head /proc/cpuinfo | tr a-z A-Z
Число пайпов может быть неограниченным.
Если выполнить некорректную операцию , например просмотр несуществующей директории :
ls /fffffffff >f
то увидите сообщение об ошибке :
ls: /fffffffff: No such file or directory
Для того , чтобы послать в файл и ошибку тоже , наберите :
ls /fffffffff >f 2>&1
Устройства и процессы в линуксе представлены в форме файлов .
Рассмотрим команду :
echo blah blah > /dev/null
Поскольку вывод посылается на /dev/null , то ядро просто его проигнорирует .
Для вывода списка устройств наберите команду
ls -l
Утилита dd используется для конвертации и копирования . Она копирует данные поблочно фиксированного размера :
dd if=/dev/zero of=new_file bs=1024 count=1
Здесь копируются данные из устройства /dev/zero в файл .
Обозначения для дисков : /dev/hd*
Терминалы: /dev/tty*, /dev/pts/*, /dev/tty
/dev/tty1 - первая виртуальная консоль.
/dev/pts/0 - первый псевдо-терминал
Порты: /dev/ttyS*
Параллельные порты: /dev/lp0, /dev/lp1
Аудио: /dev/dsp, /dev/audio, /dev/mixer, /dev/snd/*
Для создания устройства нужно использовать команду mknod :
mknod /dev/hda2 b 3 2
Здесь b - блочное устройство , 3 и 2 - номера.
Для создания группы устройств нужно использовать команду MAKEDEV.
Init
Для определения уровня привилегий - runlevels - нужно открыть файл /etc/inittab и найти строку типа :
id:5:initdefault:
Здесь же можо найти другую строку
1:2345:respawn:/sbin/mingetty tty1
которая инициализирует login prompts.
Перед тем как пользователь залогинивается , программа init запускает системные сервисы
l5:5:wait:/etc/rc.d/rc 5
В зависимости от уровня привилегий , в каталоге rc.d существуют подкаталоги типа
/etc/rc.d/rc5.d
В этих каталогах лежат программы , которые запускаются командами типа
S10sysklogd start
S12kerneld start
Символ S в начале команды говорит о том , что она запускается в start mode . Символ K обозначает "kill".
Цифра после этого указывает на порядковый номер команды .
Как правило , эти программы - симлинки и представляют из себя скрипты , которые запускают другие уже бинарные программы .
Сами скрипты лежат в /etc или /etc/rc.d .
Вместо удаления таких симлинков их надо переименовывать , добавляя спереди символ _ .
Программа init имеет ID=1 . Если нужно переключить runlevel , осторожно используйте команду
telinit 3
Для того , чтобы заставить init по новой прочитать файл inittab , можно запустить команду :
telinit q
Программа также контролирует shuts down и перезагрузку , например :
shutdown -h now
или
reboot -r
Выполнить перезагрузку через 10 минут :
shutdown -r +10
System logging
Большинство системных команд ведет системный лог . В основном он находится в каталогге /var/log .
Сообщения отличаются друг от друга приоритетом :
debug,info,notice,warning,err,crit,alert,emerg
Настраивается сислог в syslog.conf.
Специальный демон klogd перехватывает сообщения от ядра и записывает их в лог .
Можно настроить вывод сообщений ядра в отдельный файл - для этого в syslog.conf можно прописать :
kern.* /var/log/kern.log
Если вы хотите что-то записать в лог ручками , выполните типа :
logger -p daemon.info что-то такое произошло
Cron
Крон выполняет программы с регулярной частотой . Например , он выполняет ротацию логов .
Такие программы называются джоб-ами . Обычно правила прописываются в файле crontab .
Например , для выполнения ежедневной процедуры в 9:15 :
15 09 * * * /home/juser/bin/spmake
Первые 5 обязательных полей идут в следующем формате :
минуты
часы
дни
месяцы
дни недели
Если вы хотите , чтобы эта команда выполнялась только 2 раза в месяц - 5 и 14-го числа :
15 09 5,14 * * /home/juser/bin/spmake
Если команда вызовет ошибку , крон ее отправит вам письмом . Ошибку можно перенаправить в /dev/null .
Для сохранения конфигурационных изменений можно запустить :
crontab file
Процессы
Команда ps выводит список процессов .
Команда top показывает наиболее активные процессы на данный момент . Она имеет опции :
М - сортировка по памяти
Т - сортировка по использованию ЦПУ
u - показывать только твои процессы
Если нужно узнать , как та или иная команда использует процессор , можно набрать :
time ls
Последует примерно следующий вывод :
0.05user 0.09system 0:00.44elapsed 31%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (125major+51minor)pagefaults 0swaps
Команда lsof выдает список открытых файлов и процессов , которые их используют .
lsof может просматривать сокеты , динамические библиотеки , пайпы .
Обычно вывод команды lsof передается другой команде типа less , которая производит поиск .
Следующая команда выведет лишь те файлы , которые лежат в /usr :
lsof /usr
Вывести файлы только для данного процесса
lsof -p pid
Команды strace и ltrace выводят информацию о том , что делают программы при своем запуске , например :
strace cat /dev/null
Производительность
В системе есть 2 важнейших характеристики - load average и своппинг .
load average - это возможное число процессов , готовых к выполнению в данный момент .
Если запустить команду uptime , можно получить :
... up 91 days, ... load average: 0.08, 0.03, 0.01
Цифры указывают на занятость процессора .
Чем меньше цифры , тем лучше . Цифра может быть 1 , 2 и выше , в зависимости от занятости .
Высокая цифра может быть результатом thrashing - своп-пирования процессов на диск при недостатке памяти .
Команда free при этом может показать недостаток памяти .
Когда системе начинает не хватать памяти , возникает page fault .
Команда vmstat может дать дополнительную информацию о свопе , цпу и других параметрах , ее можно запустить
с числовым параметром , означающим частоту повторного запуска с интервалом в секундах .
sudo
В линуксе утилита sudo позволяет обычным пользователям выполнять команды с рутовыми правами .
Для того , чтобы пользователю дать права рута , нужно отредактировать /etc/sudoers .
Например , чтобы пользователям user1 , user2 дать полные админские права , можно записать :
User_Alias ADMINS = user1 , user2
ADMINS ALL = NOPASSWD: ALL
root ALL=(ALL) ALL
При этом программа , выполняемая под sudo , будет иметь более одного user id :
essective id
real id
saved id
|
|