Рубрики
Конспект

Конспект: Linux 2017

Начало:

Все есть файл

Железо:

echo 10000000 > /proc/sys/fs/file-max - увеличить количество открываемых фалов для пользователя (будет работать до перезагрузки)

/sys - система/железо/шины/устройства 
/proc - процессы в запущенной системе
/dev - устройства
cat /proc/interrupts - прерывания
cat /proc/cpuinfo - процессор

ls -  /sys/block - информация о блочных устройствах
ls /dev/ - покажет все устройства


lsmod - драйверы используемые железом
lspci - все что на шине pci
lspcmcia - все о pcmcia (ноутбучное железо)
lsusb - все о usb
lshal (больше не работает)
lshw - все о железе

blkid - показать ID дисков 

Модули ядра:

lsmod - инфо о модулях (т.е. драйверы)
modinfo - информация о конкретном модуле 
rmmod - удалить модуль
lnsmod - установка модуля
modprobe - деликатное удаление или добавление модулей

Загрузка системы:

BIOS/UEFI -> MBR/GPT -> LILO/GRUB -> Linux Kernel -> init
запуск системы -> первая стадия загрузки -> вторая стадия загрузки -> запуск ядра ОС -> Пользовательская среда
grub - ESC
grub2 - SHIFT
dmesg - выводит параметры загрузки ядра и текущие события 
cat /var/log/dmesg - лог загрузки 

Загрузка системы init:


init - в стиле  SysV - старый  
файл инициализации /etc/inittab (строка id:level:initdefault) 
/etc/rc.d - скрипты загрузки 
/etc/init.d/ - демоны
service start/stop/reload/restart- демоны
init - управление инициализацией
telinit - управление инициализации (работает везде)
wall - послать сообщение пользователям 
halt - отключение (потом потребуется вырубить пк вручную)
reboot - перезагрузка 
shutdown  - выключение пк (питание вырубится)
runlevel - уровень загрузки 
                         
                         
                         
init - в стиле systemd - современный (продвинутое логирование и параллельная загрузка демонов)
.unit - модули которыми оперирует systemd 
.servie - службы
.mount - точки монтирования 
.device - устройства
.socket - сокеты
/usr/lib/systemd - директория с юнитами по умолчанию
/etc/systemd - директория с управлением юнитами
systemctl list-units - показать все сервисы
systemctl list-unit-files - выведет список всех сервисов + состояние 
systemctl status crond - посмотреть состояние  демона crond
systemctl status apache2 - посмотреть состояние  сервиса apache2 
runlevel - покажет уровень загрузки
systemctl list-units --type=target - вывести список состояний runlevel
systemctl isolate reboot.targert - выполнить reboot.targert (перезагрузка)
systemctl set-default -f multi-user.targert - выставить runlevel multi-user.targert
systemctl unit|reboot|poweroff|service name_unit - выполнить что-то с unit 
journalctl - программа с работай логами systemctl
journalctl  UID=0 - вывести лог пользователя UID=0 (root)




init - в стиле upstart - современный  используется в ubuntu
Service - демоны ( перезапускаются)
Tasks - задачи ( не перезапускаются)
/etc/init  - конфиги
/etc/init/rc - конфиги
initctl - ультелита управления загрузками
runlevel - уровень загрузки 
status ufw - статус сервиса ufw
stop ufw - остановить сервис ufw
start ufw - запуск сервиса ufw 
initctl chow-config  - показать конфиг загрузки 
initctl check-config  - проверка конфига 


pstree - узнать какой init и дерево процессов

Ядра и runlevel


ls /boot -ядра 
ls /boot/grub - загрузчик 

runlevel - уровни выполнения
0 - выключение 
1 - однопользовательский
2 - debian/ubuntu + GUI
3 - redhat/suse
4 - wildcard (все что хоти)
5 - redhat/suse GUI
6 - перезагрузка 

init 0 - выключить систему


Жесткие диски и файловые системы:


fdisk - таблица разделов
mkfs - создание FS
mkswap - создание свопа
swapon -s  - посмотреть включение свопы
swapon - включить своп
swapoff - отключить своп
/etc/fstab - конфиг  точек монтирования 
1 по 4 - основные разделы ( 3 основные и может быть 1 расширенный)
c 5 и далее - логические ( разделы в расширенном разделе)
fdisk - l - показать диски и разделы
blkid - id дисков

LVM
fdisk t e8 - LVM
pvdisplay  -  физические тома 
lvdisplay - логические тома 
vgdisplay - показал volume groupe 
pvcreate /dev/sdb1 - создаем физ тома
pvcreate /dev/sdb1 - создаем физ тома
vgcreate vg_NAME /dev/sdb1 /dev/sdb2 - создаем виртуальную группу vg_NAME для партиций sdb1  и sdb2
mkfs.ext4 /dev/vg_NAME/lvm2
mkfs.ext4 /dev/vg_NAME/lvm1
lvresize -L 4G /dev/vg_NAME/lvm2

Загрузчики


dd if=/dev/sda of /root/backboot.back bs=512 count=1 - сохраняем загрузочный сектор backboot.back

lilo
apt=get install lilo
liloconfig - создать конфигурационный файл и настроить загрузку
nano /etc/lilo.conf - открыть на редактирование конфиг файл лило
lilo - после запуска добавится загрузка

grub
/boot/grub/ - файлы конфигурации
/boot/grub/menu.lst - конфиг файл 

grub2
grub-install /dev/sda - установить загрузчик
grub-install --version - версия grub
cat /etc/grub/grub.cfg - конфиг редактировать не льзя
nano /etc/default/grub - настройки grub2
/etc/grub.d - скрипты загрузки  

Библиотеки

статические - всегда загружаются в оперативную память для каждой программы
динамические - запускаются когда нужны и могут делится между программами (т.е. 2 программы могут использовать одну библиотеку)

/lib - каталог библиотек
/usr/lib - каталог библиотек
/etc/ld.so.conf - конфиг отвечает за расположение библиотек
/etc/ld.so.conf.d/ - конфиги  библиотек
/etc/ld.so.cache - кеш файл используемых библиотек
ldconfig - обновить кеш используемых библиотек
ldd /bin/ls - покажет какие использует библиотеки программа /bin/ls 
export LD_LIBRARY_PATH=/opt/soft/lib после ldconfig - для подгруздки сторонних библиотек 

Работа с пакетами debian DEB

dpkg 
dpkg --help - помощь
dpkg -l - показать все пакеты 
dpkg -s firefox  - статус firefox 
dpkg -p firefox  - подробная информации
dpkg -S firefox - в каких пакета встречается firefox 
dpkg -S /bin/ls - в каких пакетах встречается ls
dpkg -I /home/name.deb - информация о пакете name.deb
dpkg -i /home/name.deb - установить пакет name.deb
dpkg -r name_packet - удалить пакет
dpkg -s name_packet - посмотреть статус пакета name_packet
dpkg-reconfigure name_packet - пере конфигурация пакетов name_packet 
dpkg-reconfigure tzdatda -  переконфигурировать пакет tzdata (временная зона)
/etc/dpkg/dpkg.cfg - конфиг
/var/log/dpkg.log - логи 

APT
apt-get 
apt-get --help
apt-get update - обновить список репозиториев
apt-get upgrade - обновить пакеты 
apt-get install gmail-notify - установка пакета gmail-notify
apt-get remove  gmail-notify - удаление пакета gmail-notify
apt-get autoremove - удалить все ненужные пакеты
apt-cache --help
apt-cache search gmail-notify - найти программу gmail-notify
apt-cache show gmail-notify - показать информацию о пакете gmail-notify
apt-cache depend gmail-notify - посмотреть от кого зависит пакета gmail-notify
apt-cache rdepend gmail-notify - посмотреть кто зависит gmail-notify

aptitude 
aptitude --help 

nano /etc/apt/sources.list - список репозиториев 
restricted - частично свободные  
universe  - управляются сообществом 
multivers - не свободное
main - стандартные 

Работа с пакетами redhat / CentOS RPM


RPM
rpm - стандартная программа управления пакетами RedHat, CentOS
rpm --help
rpm -iv name_packet.rpm - установка пакета 
rpm -e name_packet - удалить пакет
rpm -K name_packet.rpm - проверить ключ пакета  
rpm -Vv name_packet - проверка пакетов name_packet (выведет список файлов и т.д.)также в случаи нарушения или редактирования покажет нарушения целостности (слева будет S.5....T.)
rpm -q name_packet - проверка версии name_packet
rpm -qi name_packet - выведет больше информации name_packet
rpm -qd name_packet - покажет где документация  name_packet
rpm -qa name_packet - покажет где установлены все пакеты, пакета name_packet

rpm2cpio - ультелита для распаковки rpm пакетов для других систем управления пакетами
rpm2cpio name_packet.rpm > name_packet.cpio - преобразуем пакет
less name_packet.cpio - можем посмотреть содержимое пакета 

YUM
yum --help
yum install name_packet - установка пакета  name_packet
yum remove name_packet - удаление пакета name_packet
/etc/yum.repos.d/ - каталог с файлами репозиториев 
yum upgrade - обновление пакетов
yumdownloader - ультелита для скачивания пакетов в папку. 
yum search name_packet - поиск пакетов name_packet

Работа в командной строке


/bin/bash - шелл по умолчанию
/etc/profile - настройки для всех профилей
/home/username/.profile - настройка профиля для пользователя username
/home/username/.bashrc - настройки оснастки bash у пользователя username
cat /etc/password - посмотреть какой шелл используется у пользователей
cat - вывод содержимого файла в консоль
cd - переход в каталог 
ls - вывод содержимого каталога
echo - вывод текста в консоль
echo Hello; ls; echo Bye - выведет Hello , выполнит команду ls, выведет Bye (для bash  знак ";" новая строка  )
touch - обновление времени редактирования файла или создать пустой файл
file - справка по файлу  
whatis - справка по названию
history - вывод истории команд
env - вывод переменных среды
pwd - текущий каталог 
export - задание переменной
unset - отключение переменной 
uname - выведет Linux
uname -a - покажет версию ядра и дистрибутив

Создание своей переменной 
ABC=123 - создаем значение 
export ABC - добавляем переменную
env - убедится что переменная добавилась
echo $ABC - показать значение переменной
unset ABC - отменить переменную

Добавление в существующую переменную
PATCH=$PATH:. - добавить к переменно patch текущий каталог (.)

Каталоги
~ - домашний каталог
~- - ссылка на предыдущую рабочею папку
. - ссылка  на текущую папку
.. - ссылка на папку, расположенную над текущей

Механизмы подстановки
? - любой символ
* - любое кол-во любых символов (в том числе ни одного), но не*-файлы!
** - любые файлы и каталоги, в том числе из всех подкаталогов
[abc] - один из символов указанный в скобках (диапазон) (применяют при поиске)
ls [1-3].txt - покажет файлы 1.txt 2.txt 3.txt 
{1,2,3,4} - один из символов указанный (последовательно) (применяют при создании)
touch {1,2,3}.txt - создаст  три файла 1.txt 2.txt 3.txt
[a-f] - символ из указанного диапазона
[!abc] - любые символы, кроме тех, что указаны в скобках

man -k http - найти мануалы по http

Работа с текстовыми патоками
файлы не трогаются все выводится на экран.
cat - выводит содержимое файлов и может склеивать файлы
cut - выводит содержимое на экран вырезая не нужные символы
expand - выводит на экран преобразует  символы табуляции в пробелы 
unexpad - преобразует пробелы в TAB
fmt - убирает переносы строки
fmt -w 5 - выведет на строке не больше 5 символов
head - покажет начала файла 10 строк 
head -n 3 - покажет первые 3 троки
tail - покажет конец файла  10 строк
od - конвертация файлов  ( по умолчанию 8код)
join - объединяет строчки файлов по общему полю
less - читать файл
nl - нумерует строки 
paste - объединяет строки файлов 
pr - подготавливает и показывает как будет выглядить печать 
sed - замена слов, букв и т.д. в файле
sort - сортировка слов 
split - разбивание фалов (строки, байты и т.д.)
tr - переводит и удаляет символы
uniq - ищет дубли в файле, покажет дубли, 
wc - показывает кол символов, слов, строк


Основные операции с файлами
cp
mv
ls
rm
mkdir
touch
find 
dd
gzip
bzip2
xz
tar
cpio - двоичный архиватор
ls | cpio -o > archiv.cpio - вот так архивируем 
cd extract | cpio -id < archiv.cpio - распаковка