Команды linux


Просмотр web:
curl -s http://example.com | lynx -stdin -dump
lynx 192.168.56.105  --dump| less
curl -s http://example.com | html2text -utf8

при не срабатывании tab в ubuntu:  
1. установить     - sudo apt install bash-completion
2. запустить скрипт     - source /etc/profile.d/bash_completion.sh

LC_ALL=C            - это комбинация, которая меняет язык/локаль для одной команды. Например чтобы вывести справку в оригинале.
<какая то команда> | column -t     - выравнивает вывод команды по столбцам.
/etc/machine-id        - рандомное 16иричное число определяющее индивидуальное id машины.
pgrep <имя процесса>    - выдает ID процесса
sudo smartctl -a /dev/sda    - вывод данных диска sdd (похоже на fdisk -l)
systemd-nspawn         - это утилита из пакета systemd для создания легковесных контейнеров (неполной виртуализации). Она позволяет запускать команды     или целые ОС в изолированном окружении на уровне процессов, сети и файловой системы.
neofetch, screenfetch    - утилита которая выводит в терминал информацию о системе рядом с красочным ASCII-логотипом дистрибутива 
wc            - утилита возвращает количество срок, слов и символов в указанном тексте(вывод из файла или другой утилиты).
uniq -[опция] [имя файла]    - удаляет повторяющиеся строки. -c количество повторений. -d дублируемые строки. -u в единственном экземпляре.
>[имя файла],  touch [имя файла]    - создается пустой файл.
alias            - выводит список alias текущего пользователя
apropos [искомый текст]    - ищет искомый  текст во всех man справочниках установленных в системе.
file             - определяет тип файла: текстовый файл, директория, программа, скрипт
type            - показывает является ли указанное ИМЯ: Встроенной командой оболочки (shell builtin), Внешней программой/исполняемым файлом, Алиасом , псевдонимом, Функцией, Зарезервированным словом.
chmod            - управлением правами доступа к файлам и папкам.
chown            - изменение владельца или группы для файла или директории.
hash            - выводит список команд которые попали в хэш таблице. Хэш таблица создается в начале сессии в нее заносятся внешние выполняймые команды такие как: ls, chmod и другие.
help             - выводит список внутренних команд bash.f
w            - показывает кто сейчас находится в системе и что они делают.
whatis        - краткая справка по команде.
reset            - перезагружает терминал сбрасывает его настройки на настройки по умолчанию.(используется при "сломанном терминале")
trans            - построчный перевод текста (устанавливается пакет translate-shell)
less            - построчный или постраничный просмотр текстовых файлов. (пример less  -Ip "[текст для поиска]" [путь к файлу] - регистра независимый поиск в тексте)
locate [имя или часть имени]        - Команда locate используется в Linux для быстрого поиска файлов и директорий по их имени. После установки locate необходимо обновить базу данных (sudo updatedb).
sudo updatedb    - Обновить базу данных вручную ( используется если команда locate не может найти недавно созданный файл.)
fc [номер команды в истории(history)]    - открывает текстовый редактор с введенной командой. Можно ввести несколько команд в текстовый редакторе чтобы они выполнились.
sort            - сортирует полученный текст по алфавиту(по умолчанию).
;            - ожидание выполнения команды с левой стороны. (пример: find [имя файла]; pwd)
source [имя файла скрипта]    - скрипт выполняется в текущей оболочке bash что добавляет все переменные в текущею оболочку.
. [имя файла скрипта]        - аналог предыдущей команда.
evn            - выводит список всех переменных.
export [имя переменной]        - Добавляет или обновляет переменную в текущею оболочку.
lspci            - список устройств подключенных к шине PCI. (-v более подробно)
lsusb            - информация о всех usb концентраторах и usb устройствах. (-v более подробно)
lscpu            - информация о процессоре. 
nl [параметр] [имя файла]                - нумерация строк в файле.(-s[указать разделитель между цифрой и текстом строки], w[число]-указать отступ по нумерации строк).
cat [один или список файлов через пробел]        - выводит содержимое файлов на экран. (cat >[имя файла] -выводится текст с начало на экран потом в текстовый файл ctrl+d команда прерывается в файл записывается набранный текст.)
tac [один или список файлов через пробел]        - выводит текст файла с последней до первой строки. т.е. порядок строк наоборот.
less [имя файла ]            - просмотр в построчном режиме. ПРИ нажатии   (v) переход в текстовый редактор по умолчанию.
cut -[параметр] [имя файла]        - вырезает часть текста, используется для вывода столбцов. Параметр -с1-9 - вырезает символы 1го по 9ый. Параметр  -d ',' -f 2 - выводит 2й столбец с разделителем (,).
tr [символ 1] [символ 2]        - замена символа 1 на символ 2 по всему тексту. Также меняет диапазоны символа a-z на A-Z или a-z,A-Z на 0-1. 
rev [строка]            - переворачивает строку. (И последние станут первыми)
diff -[параметр] [имя файла1] [имя файла2]        - построчно сравнивает файл 1 и 2 и если находит различия выводит сообщение.
cmp -[параметр] [имя файла1] [имя файла2]        - побайтное сравнение 2х файлов. с параметром s возвращает 0 - одинаковые 1 - разные 2 - ошибка.
banner [текст баннера]        - выводит большими буквами 5ть раз больше шрифта текст баннера.
cksum [путь/к/файл]        - выводит контрольную сумму по CRC алгоритму.
md5sum [путь/к/файл]        - выводит контрольную сумму по md5 алгоритму.
ln [путь/к/файл] [путь/к/ссылке]    - создает жесткую ссылку. 
ln -s [путь/к/файл] [путь/к/ссылке]    - создает символическую ссылку. 
yes [текст сообщения]        - выводит текст сообщения пока команда не будет прервана. Если сообщение не задано выводит (y).
recode -[параметр]        - преобразует файлы из одного формата в другой. 
paste [имя файла] [имя файла]    - построчно объединяет два файла. -d '|' - указывает явный разделитель.
shuf [имя файла]            - перемешивает строки в случайном порядке. 
pwgen [опция]            - генерирует строку со случайным набором букв и цифр.
cat /etc/*release (или /etc/*rel*)    - информация о системе (alt linux Это /etc/os-release)
runlevel                - текущий уровень выполнения Linux.(обычно от 2-5. 5 стандарт где все разрешено)
stat [имя файла]          - выводит подробные метаданные о файлах или файловых системах.

 

----------------------------------------------------------Для проксирования пакетов в командной оболочке

export http_proxy="http://user:password@ip-address:port"    - ввести параметры своего прокси в нужные места. Все команды которые обращаются в интернет в оболочке должны использовать данный прокси.
export https_proxy="http://user:password@ip-address:port"    - проксирование по https протоколу

Настройка по умолчанию команды запускаются при старте системы
в файл ~/.bashrc 
добавить:

export http_proxy="http://user:password@ip-address:port"
export https_proxy="http://user:password@ip-address:port"
export ftp_proxy="http://user:password@ip-address:port"
export no_proxy="localhost,127.0.0.1,::1"

-----------------------------------------------------------

-----------------------------------------------------------Проверка DNS

host [имя домена]    - проверка домена на преобразования в ip адрес
dig [имя домена]    - просмотр А записей у DNS домена.
getnet -(узнать подробней ка работает.)

------------------------------------------------------------------------------------------ssh


ssh-keygen -t [тип шифрования](пример: ed25519)    - создание ключей шифрования 
ssh-copy-id -p [номер порта] -i [имя файла(пить к ключу шифрования)] [имя пользователя]@IP устройства]     - скопировать открытый ключ шифрования на устройство.             
/etc/ssh/sshd_config     - для отказа входа root установить параметр:         PermitRootLogin     no.
            - отключение входа по логину паролю:             PasswordAuthentication     no.
            - отключить "интерактивную" аутентификацию по паролю:     KbdInteractiveAuthentication     no.
            - оставить root-доступ, но только по ключу:         PermitRootLogin     prohibit-password
            - не разрешать root вход:                 PermitRootLogin     no.                             
ssh [имя пользователя]@[имя или IP системы] "[bash команда]"     - удаленное выполнение команд через ssh команда с параметрами берется в кавычки.
ssh -X [имя пользователя]@[имя или IP системы] "[bash графическая команда]"    - если параметр( X11Forwarding yes ) в /etc/ssh/sshd_config включен то через ssh можно запустить графическое приложение.
ssh -X [имя пользователя]@[имя или IP системы]    - если включено ( X11Forwarding yes ) в /etc/ssh/sshd_config можно запускать графические программы на удаленной системе.
ssh -p [номер порта] [имя пользователя]@[имя или IP системы]    - подключение по определенному порту.

------------------удаленное копирование
недостатки: потеря атрибутов, потеря символических ссылок.

scp [имя файла(что копируем)]  [имя пользователя]@[имя или IP системы]:[имя файла(куда копируем)]    - удаленное копирование. Копируется из настольной системы в подключаемую систему. 
пример:
scp /home/sa/file*.txt sa@172.17.47.20:~/testcopy
scp [имя пользователя]@[имя или IP системы]:[имя файла(что копируем)] [имя файла(куда копируем)]    - удаленное копирование. Копируется из удаленной системы в настольную систему.
пример:
scp sa@172.17.47.20:~/testcopy /home/sa/newtestcopy
scp -P [номер порта] [имя каталога(что копируем)]  [имя пользователя]@[имя или IP системы]:[имя каталога(куда копируем)]    - P заглавная при указании порта.
scp -r [имя каталога(что копируем)]  [имя пользователя]@[имя или IP системы]:[имя каталога(куда копируем)]     - рекурсивное копирование всего каталога на удаленный ПК.
пример: 
scp -r /home/sa/dir sa@172.17.47.20:~/testcopy
scp -r  [имя пользователя]@[имя или IP системы]:[имя каталога(куда копируем)]  [имя каталога(что копируем)]    - рекурсивное копирование всего каталога на свой пк с удаленного.
пример: 
scp -r sa@172.17.47.20:~/testcopy /home/sa/dir 
------------------------------------------------------------------------------------------ssh

-------------------------------------------------------------rsync
rsync -avl [имя пользователя]@[имя или IP системы]:[имя файла(что копируем)] [имя файла(куда копируем)]     - добавочное копирование. a - рекурсивное архивирование. v - подробно . l - копировать символические ссылки.
-- delete     - параметр добавляется если надо синхронизировать удаленные объекты из копируемого каталога с каталогом куда производится копирование. т.е. если в копируемом каталоге удалят какие-то файлы то при копировании они удалятся и в резервной копии.
-------------------------------------------------------------rsync

-------------------------------------------------------------sftp
sftp [имя пользователя]@[имя или IP системы]    - интерактивный режим загрузки выгрузки файлов. ввести help для вывода списка команд. 
-------------------------------------------------------------sftp

------------------------------------------------------------------------------------------Переменные окружения

EDITOR или VISUAL            - текстовый редактор по умолчанию.
HISTTIMEFORMAT="%Y-%m-%d %T "    - отвечает за формат вывода команд в history. (При таком формате выводится дата и время ввода команда).

# hostname            - имя пк
spike.example.com
# dnsdomainname            - имя домена к которому принадлежит устройство.
example.com
$0            - содержит имя или путь, которым была вызвана текущая оболочка или скрипт. -bash - значит login shell (оболочка входа)
$-            - показывает активные настройки (опции) оболочки в виде строки из символов. bhimBHs -вариант вывода каждый символ имеет значение(i - интерактивный режим). 
------------------------------------------------------------------------------------------Псевдо графический браузер

lynx    - браузер
links    - браузер

------------------------------------------------------------------------------------------Буфер обмена

xclip         - команда буфера обмена. -o вставка содержимого буфера.
echo "text" | xclip    - передача в буфер.
xclip -o > text.file    - вставка в файл.


------------------------------------------------------------------------------------------Сочетание клавиш в терменале

ctrl+r    - поиск в истории команд.
ctrl+u    - удаление текста командной строки с лева от курсора.
ctrl+k    - удаление текста командной строки с права от курсора.
ctrl+a    - перемещает курсор к началу команды.
ctrl+e    - перемещает курсор к концу команды.
ctrl+[стрелки в левл в право]    - перемещение курсора к пробелам с строке.

ПроСмотр в реальном времени:
при вводе  less -f [имя файла]        - необходимо на нажать shift+f что бы просматривать в реальном времени добавление в файл.

------------------------------------------------------------------------------------------Конвейеры команда 
[команда a]&&[команда b]    - команда (b) выполняется только после того как выполнится команда (a).
[команда a]&&[команда b]&&[команда c] &     - Команды выполняются в фоновом режиме. Если одна из них не срабатывает то команда в фоне прекращает свою работу.
[команда a]||[команда b]    - команда (b) выполняется если команда (a) не выполнилась. 
[команда a];[команда b]        - команды (a,b) выполняются последовательно не зависимо друг от друга.
echo $?                - выводит значение переменной ? которая хранит результат выполнения предыдущей команды. 0 - выполнена успешно. 1 - не выполнено. 
[команда a]$([команда b])    - вывод команды (b) является аргументом для команды (a). Если команда (b) выводится список то команда (a) должно уметь принимать список в качестве аргумента.

[команда a] <([команда b]) <([команда c])    - команды b и с. Выводят аргументы для команды a.  <([команда ]) - данная конструкция создает файловый дескриптор для чтения.
Она позволяет передать вывод одной команды другой команде так, будто этот вывод — обычный текстовый файл.
<(команда) — создает временный «виртуальный файл» (обычно в /dev/fd/...), который содержит результат выполнения.
([команда])> данная конструкция создает файловый дескриптор для записи.


пример: diff <(ls -a /home/sa) <(sudo ls -a /home/user) - сравнение содержимого 2х каталогов пользователей.
------------------------------------Утилита xargs
устанавливается с пакетом: sudo apt-get install findutils
[команда для входных значений] | xargs [команда принимающая входные значения] 
пример: ls | xargs cat 

------------------------------------------------------------------------------------------Перенаправление результатов команд 

ls -l > /dev/pts/[номер терминала]     - перенаправляет вывод команды на указанный терминал.
ls -l fjkdshfkjhkdsjhfkj 2>&1 1> /dev/null | grep fj    - 2>&1 - перенаправляет вывод ошибок(туда же куда направлен 1й поток) в поток стандартного вывода 1> /dev/null - стандартный поток отправляет в /dev/null  
tee                     - выводит данные и на экран и в файл.(пример: ls  / | tee [имя файла])
&>     - направляет как 1 (стандартный вывод) так и 2 (вывод ошибок) в одно место.
cat > [имя файла] << EOF     - открывает поток ввода в [имя файла] окончанием ввода считается нажатие ctrl+D.

{}    - применение фигурных скобок при работе с файлами. Работает как символьный массив {1, qwe, 23} или {3-15}. Пример: touch {1..3} создает файлы: 1, 2, 3 . 
touch addfile{1, qwe, 23} создает файлы: addfile1, addfileqwe, addfile23.
sudo bash -c '[команда(ы)]'    - запуск команд от имени администратора. (используется когда sudo [команда] не сработает)
пример: sudo bash -c 'echo "New log file" > /var/log/custom.log'

-------------------------------------------------------------------------------------------seq
Выводит заданную последовательность чисел.
seq 5         - выведи последовательность чисел от 1 да 5.
seq 3 8        - выводит последовательность от 3х до 8ми.
seq 1 3 12    - выводит последовательность с шагом 3 от 1го до 12
seq -s " " 5    - меняет разделитель на пробел.
seq -w 8 12    - уравнивает вывод добавляя 0 в начало: 08, 09.
seq -f "Число %03g" 1 2    - задает формат вывода "Число 001". %g - обозначает вывод числа.

-------------------------------------------------------------------------------------------Sed

sed -n 1p [Имя файла]     - выводит первую строку в файле
sed -n -e 1p -e 5p [Имя файла]     - выводит первую и пятую строку в файле
sed -n -e '3,10p' [Имя файла]    - выводит диапазон 3-10 строки
sed -n 3,10p [Имя файла]    - выводит диапазон 3-10 строки
sed -n -e '3,10!p' [Имя файла]    - выводит все строки кроме 3-10 строк.
sed -n '5,$p' [Имя файла]     - выводит все строки с 5й до конца файла(знак $ - означает конец строки)
sed -n -e '3p;10p;23p' [Имя файла]    - выводит указанные строки 3, 10, 23.
sed 1d [Имя файла]     - удаляет 1ю строку.
sed '1,7d' [Имя файла]     - удаляет c 1ю по 7ю строку.

sed 's/[искомый текст]/[заменяющий текст]/' [имя файла]     - меняет [искомый текст] на [заменяющий текст] из указанного файла результат выводится на экран. [искомый текст] - могут использоваться регулярные выражения. Разделитель можно использовать любой не обязательно / . 
sed 's/rw/рв/' [имя файла] - меняет только первое совпадение в строке wr на рв результат выводится.
sed 's=rw=рв=' [имя файла] - работает также как предыдущий вариант.
sed 's/rw/рв/g' [имя файла] - меняет все найденные совпадения wr на рв результат выводится.

-------------------------------------------------------------------------------------------nohut

nohup [команда] &         - запускает процесс который работает после выхода из консоли или ssh. Процесс работает в фоновом режиме. (Вывод команда печатается в nohup.out)
пример: nohup ping ya.ru &    - рузультаты ping выводится в  nohup.out

-------------------------------------------------------------------------------------------Именованный канал (pipe)

mkfifo [имя канала] - создает именованный канал в виде файла.

------------------------------------------------------------------------------------------vim

В командной строке ввести vimtutor            - помощник в освоении vim/
В командной строке ввести vimtutor  ru            - помощник в освоении vim/ru
    :! [команда которую необходимо выполнить]     - выводит результаты команды в консоль не изменяет текст.(просто чтоб посмотреть)
    :r! [команда которую необходимо выполнить]     - выводит результаты команды в текст где установлен курсор
    :.! [команда которую необходимо выполнить]     - выводит результаты команды заменяя текущую строку
    :! bash                    - открывает новый сеанс bash. Чтоб выйти ввести exit или ctrl+D.
    :term                    - открывает в половину терминала окно bach. Для перехода между окнами Ctrl+W + W. Для выхода из терминала exit.(остается только vim)
    :vert term                - вертикальное разделение.
    Если term не работает вероятно не установлена полная версия для до установки необходимо поставить vim-enhanced:
    sudo apt-get install vim-enhanced 
    :Ex                     - открывает проводник в текущем окне.
    :Sex                      - открывает проводник, разделив окно горизонтально.
    :Vex                      - открывает проводник, разделив окно вертикально.
    :e .                     - открывает проводник для текущей рабочей директории.

------------------------------------------------------------------------------------------tmux

Программа для разделения терминала по горизонтальным и вертикальным сегментам.--------префикс по умолчанию Ctrl+b--------

tmux new -s [имя сессии]                - открывает tmux c определенным именем сессии.
ctrl+B +d                        - закрывает сессию с возможностью дальнейшего входа.
tmux ls                        - выводит список закрытых сессий. Цифрами обозначаются сессии без имени(если tmux был запущен без параметров).
tmux attach -t [имя сессии или ее номер]        - подключится к уже запущенной но закрытой сессии.

tmux new-session ; split-window -h(или v)        - открывает новую сессию tmux разделенную на 2а окна -h делит окно с верху вниз -v с лева на право. 
ctrl+B (нажать через shift)+"                - разделяет окно с верху вниз 
ctrl+B (нажать через shift)+%                - разделяет окно с лева на право
Переход между окнами:
    ctrl+B (пауза) стрелками вверх, вниз, лево, право.
tmux set -g mouse on                - включает мышь для переключений между окнами и изменения размера.
tmux split-window -h(или v)                - в существующее окно tmux делит на два окна -v и -h соответственно.

    Создать конфиг .tmux.conf в домашнем каталоге. Вставляем строки:
set -g mouse on                - включает мышь для переключений между окнами и изменения размера.
unbind C-b                    - отключает префикс на Ctrl+b
set-option -g prefix C-a                - включает префикс на Ctrl+a (заменить на любую другую букву [a-z])
bind C-a send-prefix
set -s set-clipboard on                -Синхронизация с системным буфером.(ДЛЯ КОПИРОВАНИЯ ТЕКСТА если подключение через ssh клиент необходимо зажать shift чтоб настройки tmux игнорировались)!!!!

tmux source-file ~/.tmux.conf                - После изменения конфигурации перезагрузить tmux.

tmux kill-session                    - полностью выключить сессию.

------------------------------------------------------------------------------------------Proc

man proc
/proc/        - все процессы.
/proc/meminfo    - информация о оперативной памяти.

________________________________________________________________Скрипты 

Запуск скрипта (или любого другова приложения) от имени root:
сделать запись в файл /etc/sudoers следующего вида: имя_пользователя ALL=(ALL) NOPASSWD: /путь/к/скрипту.sh
запускаем скрипт: sudo /путь/к/скрипту.sh

------------------------удаление подстроки

${[имя переменной]%[разделитель][удаляя часть текста]}    - удаляет часть текста после разделителя.[удалая част текста] - можно подставить * - все символы после разделителя  , ? - один любой символ, [a4-] - перечисление нескольких символов если присутствует один из них он удаляется. 
Пример:     ${perem%.txt}     - удаляет txt
    ${perem%.*}     - удаляет все после точки.
    ${perem%.[fl][io][ln][eb]}    - удаляет 4и символа если они присутствуют в указанных диапазонах.
    ${perem%-.*}    - удаляется все после разделителя (-.).
    ${perem%%.*}    - удалит все да последнего разделителя найденной точки.
${[имя переменной]#[удаляя часть текста][разделитель]}    - удаляет часть текста перед разделителем.
Пример:    ${perem#*.}     - удаляет весь текст перед точкой.
Количество знаков # или % регулирует глубину поиска разделителей. Так например ## считается максимальным удаление и ищет самый последний разделитель в тексте.

------------------------замена подстроки

${[имя переменной]/[что заменить ][на что заменить]}    - меняет текст изменяемой части на текст изменяющий. Изменяемая часть ищется с начала. Количество / определяет глубину заменяемых частей текста // значит максимальная глубина меняет все заменяемые части.
пример:     ${perem/plus/minus}     - переменной perem plus изменяется на minus
    ${perem//plus/minus}    - все  плюсы меняются на minus

-----------------------количество символов в строке

${#[имя переменной]}      - выводит количество символов в строке.

--------------------------script
script [параметр] [имя файла]     - записывает все что происходит в bash используется  для логирования. Также используется для составления простых скриптов.


________________________________________________________________Пользователи  

id             - возвращает id пользователя, id  группы, в каких группа состоит.
groups [имя пользователя]    - выводит список групп в которых состаит пользователь.
who             - показывает какие пользователи сейчас на худятся в системе
w            - показывает какие пользователи сейчас на худятся в системе. Так же выводит строки из команды top отображается: время запуска, время работы, общие число пользователей, нагрузка на сервер.

adduser -[параметр] [имя пользователя]    - создать пользователя. Использовать для более полного создания пользователя.
adduser -i [uid] [имя пользователя]        - создается учетная запись с уже существующим UID пользователя.
useradd -[параметр] [имя пользователя]    - более простой вариант создать пользователя. Опускаются многие параметры в том числе не создается домашний каталог. Чтобы каталог создался необходимо ввести -m (useradd -m [имя пользователя]). Для добавления пароле необходимо ввести passwd [имя пользователя].

После ввода команды производится ряд действий: 
    считывается файл /etc/login.defs проверяются настройки по умолчанию.
    из папки /etc/skel копируются файлы в каталог созданного пользователя

useradd -D    - выводит настройки по умолчанию.

Считывает файлы /etc/login.defs и /etc/default/useradd, чтобы найти значения по умолчанию для использования при создании учетных записей.
Копирует все файлы, находящиеся в каталоге /etc/skel, в новый домашний каталог. 

passwd [имя пользователя]                - задать пароль для пользователя.
usermod -[параметр] [значение параметра] [имя пользователя]    - изменяет параметры учетной записи пользователя.
usermod -aG [список груп] [имя пользователя]    - добавляет пользователя в указанные группы.
userdel -[параметр] [имя пользователя]        - удаляет пользователя из файла passwd. Параметр -r удаляет каталог пользователя.

________________________________________________________________Группы

newgrp [имя группы]     - устанавливает временно основную группу пользователя (пользователь должен состоять в этой группе). При замены группы все созданные файлы будут принадлежать данной группе. Также временно можно разрешить пользователю сменить групп на ту в которой он не состоит. Для этого от имени root необходимо задать пароль на группу введя:      gpasswd [имя группы]. 
После чего пользователь может временно стать членом этой группы введя  newgrp [имя группы]  затем ввести пароль. 
groupadd [имя группы]     - создать группу
groupmod [параметр] [имя группы] - различные модификации над группами.


________________________________________________________________Поиск файлов

locate [имя или часть имени]        - Команда locate используется в Linux для быстрого поиска файлов и директорий по их имени. После установки locate необходимо обновить базу данных (sudo updatedb).
find / -xdev -iname '*passwd*'    - поиск файлов -xdev запрещает поиск в файловых системах, отличных от выбранной. Не заходит в директории, которые являются точками монтирования других разделов или устройств (например, /boot, /home, /mnt/usb).
find /etc -iname '*passwd*'    - поиск файлов похожих на '*passwd*' и регистр не учитывается.
find /etc/ -mmin -10        - поиск всех файлов которые были изменены менее 10ти минут назад.
find /bin /usr/bin /sbin /usr/sbin -ctime -3    - поиск файлов метаданные которых были изменены за последние 3и  дня.
find /var/ftp /var/www -atime +300    - поиск файлов которые не менялись более 300 дней.
find / -user [имя пользователя] -ls    - выдает список файлов принадлежащих указанному пользователю.
find / -uid [uid пользователя] -ls    - выдает список файлов принадлежащих указанному пользователю по uid.
find / -nouser -ls            - выдает список файлов принадлежащих не каким пользователям(пользователи которые отсутствуют в системе).
find /var/allusers/ -user [имя пользователя] -not -group [имя группы] -ls     - поиск фалов принадлежащих пользователю но не принадлежащих группе.
find /var/allusers/ -user joe -and -size +1M -ls    - поиск файлов принадлежащих пользователю и размером больше 1M.
find [ параметры ] -exec команда {} ;        - поиск и выполнение команды над этими файлами. {} - это найденный файл командой find.
sudo find /etc/ -group root -exec du -h {} ;
find /путь/к/каталогу -type f -perm -o=x        - поиск файлов имеющих параметр запуска для остальных пользователей.
find [ параметры ] -ok команда {} ;        - поиск и выполнение команды над этими файлами с подтверждением для каждого файла.
sudo find /etc/ -group root -exec du -h {} ;
find /var/allusers/ -user joe -ok mv {}  /tmp/joe/  ;    - ищет все файлы пользователя joe и перемещает их в каталок /tmp/joe с подтверждение выполнения перемещения.

grep -i desktop /etc/services        - поиск строк со словом desktop без учета регистра
grep -rli peerdns /usr/share/doc/    - рекурсивный поиск в каталоге с выводом имен файлов при обнаружении текста в данных файлах.

________________________________________________________________Права доступа к файлу

chmod    [опция]-или+[список прав] [имя файла]    - установка базовых прав доступа. Припер: chmod a+x /home/my/script/* - устанавливает для всех файлов право на исполнение.
-R     - опция для рекурсивного присваивания прав.

Бит Set user ID     4     u + s    - Любой пользователь, запуская этот файл, выполняет его с правами владельца. (В некоторых Linux игнорируется из соображений безопасности)
Бит Set group ID     2     g + s    - Для каталога : Включается наследование группы. Все новые файлы и подпапки, созданные внутри этой директории, будут автоматически принадлежать той же группе, что и сама директория (а не основной группе пользователя, который их создал).
                                - Для файлов : Программа запускается с правами группы-владельца этого файла, а не группы пользователя, который её запустил.
Бит Sticky bit         1     o + t    - Для каталогов (основное применение): Запрет на удаление чужих файлов: Пользователь может удалять или переименовывать внутри этой папки только те файлы, владельцем которых он является.

umask    - настройка прав доступа по умолчанию.
chwon    [имя владельца]:[группа владельца] [имя файла]     - смена владельца и или группы владельца файла каталога.

---------------------------------------Capabilities 

Capabilities     — это механизм, который позволяет делегировать привилегии root-процесса точечно, без выдачи полного root-доступа. Вместо бинарного «root / не root» процесс может получить отдельные права (например, возможность слушать порт 80 или изменять системное время).

getcap     — показывает, какие capabilities установлены у файла.
setcap     — устанавливает capabilities их.

-----------------------------------------(get, set)fattr (Set Extended Attributes) Расширенные атрибуты файлов.

Эта команда управляет расширенными атрибутами (xattr). Это произвольные пары «имя=значение», которые можно прикрепить к файлу.
setfattr [опция] [префикс].[значение] [ключ действия] [аргумент для ключа] [путь/к/файлу]    - устанавливает расширенный атрибут.
пример: 
    setfattr -n user.comment -v "важный файл" myfile.txt

getfattr [опция] [префикс].[значение] [имя файла]        - выводит расширенный атрибут( если указать только имя выведит все атрибуты)
пример: 
    getfattr -n user.comment myfile.txt

Каждое имя атрибута должно начинаться с одного из следующих префиксов: 
user. (Пользовательские)
    Доступ: Доступны обычным пользователям. Чтобы установить такой атрибут, нужно иметь права на запись в файл.
    Для чего: Хранение любых метаданных приложений (например, user.comment, user.checksum, user.mime_type).
security. (Безопасность)
    Доступ: Обычно управляются модулями безопасности (LSM), такими как SELinux.
    Для чего: Хранение контекстов безопасности (например, security.selinux) или меток целостности.
system. (Системные)
    Доступ: Используются ядром Linux.
    Для чего: Хранение списков контроля доступа (ACL) — например, system.posix_acl_access, или возможностей файлов (Capabilities).
trusted. (Доверенные)
    Доступ: Видимы и изменяемы только процессами с правами CAP_SYS_ADMIN (обычно это root).
    Для чего: Хранение системных данных, которые должны быть скрыты от обычных пользователей даже при наличии прав на чтение файла.

-----------------------------------------chattr (Change Attributes)

Это команда для управления низкоуровневыми атрибутами файловой системы (традиционно ext2/ext3/ext4).

chattr [опция] [путь/к/файлу]    - установка атрибута файла опция с + устанавливает атрибут опция - убирает атрибут = установить указанные атрибуты удалив все остальные.
ключи:
a    - Append-only: файл можно открыть только для до записи. Существующие данные нельзя изменять или удалять.
i    - Immutable: файл абсолютно неизменяем. Его нельзя удалить, переименовать, изменить или создать на него ссылку даже пользователю root.
A    - No atime updates: при доступе к файлу не обновляется время последнего обращения (atime), что снижает нагрузку на диск.
c    - Compressed: ядро прозрачно сжимает файл на диске при записи и распаковывает при чтении.
C    - No Copy on Write: отключает механизм «копирования при записи» (актуально для btrfs).
d    - No dump: программа dump будет игнорировать этот файл при создании резервных копий.
e    - Extent format: указывает, что файл использует экстенты для управления блоками на диске (обычно устанавливается автоматически в ext4).
j    - Data journaling: все данные файла сначала пишутся в журнал файловой системы, а затем в основной блок (только для ext3/ext4).
s    - Secure deletion: при удалении файла его блоки на диске перезаписываются нулями, чтобы данные нельзя было восстановить.
S    - Synchronous updates: изменения записываются на диск немедленно (аналог вызова sync).
u    - Undeletable: при удалении содержимое файла сохраняется, что теоретически позволяет его восстановить.

lsattr [имя файла]    - выводит список атрибутов (если без имени выводит список с атрибутами всех объектов в текущем каталоге).

-----------------------------------------ACL

sudo apt install acl    - установка acl
sudo setfacl -m u:[имя пользователя]:[права на файл] [имя файла]    - установка прав acl для пользователя.
sudo setfacl -m g:[имя группы]:[права на файл] [имя файла]        - установка прав acl для группы.
sudo setfacl -m o:[права на файл] [имя файла]        - установка прав acl для остальных пользователей и групп не присутствующих в acl.
sudo setfacl -m d:[ключ метки прав(u,g,o)]:[имя в зависимости от ключа]:[права(rwx)] [имя каталога]        - присваивает права доступа acl полмолчания. Все созданные объекты в этом каталоге будут наследовать эти права. Если в правах будет установлено право на выполнение (x) то оно будет удалено при создании фала.

getfacl    [имя файла]     - выводит список прав acl.
Если в поле mask установлены права меньше чем в acl то появляется надпись effective:[действующие права] эти права являются реально работающими. Чтобы исправить mask необходимо поменять данные права у владельца файла с помощью chmod.

Авто монтирование acl в fstab:
в столбце <options> добавить acl. Пример: defaults,acl
Просмотреть смонтирован ли acl:
tune2fs -l /dev/mapper/имя устройства | grep "mount options"
ll /dev/mapper/     - посмотреть какие устройства смонтированные каталоги
Установка параметров acl на устройство:
tune2fs -o acl /dev/[имя устройства]
Монтирование acl вручную: 
mount -o acl /dev/[имя устройства] /[точка монтирования].


________________________________________________________________Метасимволы для пакетной обработке

*    - любое количество любых символов.
?    - один любой символ.
[ ]    - люблой символ из диапазона(пример: [0-7], [a-d], [snd], [3 6 8] )

________________________________________________________________Справочная информация 

cat /etc/services    - выводи список служб с портами по умолчанию.
cat /proc/devices    - выводи типы устройств с его мажорным номером драйвера. Мажорный номер используется в определении типа устройства в каталоге /dev.

________________________________________________________________Grep

-v "[символы]"    - ключь позволяет не отображать указанные символы
-v "^$"        - не выводит пустые строки. "^$" - ^-начало строки $-конец строки
-A [число строк]    - выводит число строк после найденного значения (если несколько совпадений выводит для каждого)
-B [число строк]    - выводит число строк перед найденным значением (если несколько совпадений выводит для каждого)
-i        - игнорирует регистр.

________________________________________________________________Установка удаление программ

sudo dpkg-query -L [имя пакета]     - выводит список файлов и каталогов которые были установлены указанным пакетом.
sudo dpkg -l [имя пакета]        - выводит список файлов и каталогов которые были установлены указанным пакетом.

------------------------------------------------------------------------------------------deb

apt                -менеджер пакетов
apt download [имя пакета]        - скачать deb пакет.
apt-cache search [слово  для поиска]    - поиск пакетов по указанному слову. 

dpkg -i [имя пакета].deb        - Установка и обновление пакета из файла
dpkg -r [имя пакета]            - Удаление пакета (-P удаляет и конфиги программы)
dpkg -l                - Список всех установленных пакетов.
dpkg -s [имя пакета]        - Информация о пакете
dpkg -L [имя пакета]        - Список файлов в пакете
dpkg -S [имя пакета]        - Найти пакет по файлу
dpkg -c [имя пакета].deb        - Просмотр состава файла deb пакетов.

------------------------------------------------------------------------------------------rpm

yum [имя пакета]    - менеджер пакетов
dnf [имя пакета]     - продвинутый менеджер пакетов
dnf search [искомый текст]     - поиск по тексту в имени пакета.
dnf provides [название команды]    - поиск пакета в котором есть данная команда.
dnf list [опция или имя пакета]    - список пакетов. (installed - установленных; available - доступных)
dnf deplist [имя пакета]     - выводит список зависимостей.
dnf reinstall [ имя пакета]    - переустановка пакета.
dnf remove [имя пакета]    - удаление пакета.
dnf history [опция если надо]    - история установок.
dnf grouplist    - список групп пакетов.
dnf groupinstall [имя группы пакетов]    - установка группы пакетов.
dnf groupremove [имя группы пакетов]    - удаление группы пакетов.
dnf clean [Опция(all,packages  или metadata)]
dnf check         - проверка целостности базы rpm.
prm --rebuilddb    - пересобрать базу rpm.
dnf download [имя пакета]    - загрузка rpm пакета без установки.


rpm -q [имя пакета]        - информация о пакете (или rpm -iq )
rpm -qa [имя пакета]        - поиск пакета в репозитории.
rpm -i [полный путь до пакета или полное имя (как zsh-5.5.1-6.el8.x86_64.rpm)]     - установка rpm пакета.
rpm -v [имя пакета]        - проверка пакета на повреждение изменение не конфигурационных файлов.
rpm -i --replacepkgs [имя пакета]    - переустановка испорченного поврежденного пакета.
rpm -Uhv [полный путь до пакета]     - обновление rpm пакета.
rpm -e [имя пакета]        - удаление  пакета.
rpm -ql [имя пакета]    - список файлов.
rpm -qf [имя файла]    - выводит пакет к которому принадлежит файл.
rpm -qd [имя пакета]    - документация  пакета.
rpm -qc [имя пакета]    - список конфигурационных файлов.
rpm -q --requires [имя пакета]         - список требований к пакету (библиотеки, команды, другие пакеты).
rpm -q --provides [имя пакета]    - какую версию программного обеспечения предоставляет.
rpm -q --scripts [имя пакета]        - какие сценарии запускаются до и после установки или удаления RPM.
rpm -q --changelog [имя пакета]    - какие изменения были внесены в пакет RPM пакета.
rpm -q zsh --queryformat "The package is %{NAME} and the release is %{RELEASE}n"    - запрос определенных тего и вывод в свободной форме. rpm --querytags | less      - выводит список тегов.

________________________________________________________________Процессы
man proc            - мануал по каталогу proc.

/proc/version     - Содержит версию ядра
/proc/cmdline     - Список параметров, переданных ядру при загрузке
/proc/cpuinfo     - Информация о процессоре
/proc/meminfo     - Информация об использовании оперативной памяти (почти то же, что и команда free)
/proc/devices     - Список устройств
/proc/filesystems     - Файловые системы, которые поддерживаются вашей системой
/proc/mounts     - Список под монтированных файловых систем
/proc/modules     - Список загруженных модулей
/proc/swaps     - Список разделов и файлов подкачки, которые активны в данный момент

cat /proc/interrupts — показывает прерывания;

cat /proc/net/dev — показывает сетевые интерфейсы и статистику по ним;


cat /proc/meminfo        - информация о загрузки памяти.
cat /proc/cpuinfo        - информация о процессоре.
/proc/kcore        - вся память системы.
/proc            - каталог со всеми процессами в системе. Номер папки это PID процесса.
/proc/[PID]/exe        - ссылка на файл запуска данного процесса.
/proc/[PID]/fd        - файловый дескриптор. Отображает потоки вывода данного процесса.
lsof            - Отображает процесс использующий файл.
top            - мониторинг системы
htop            - мониторинг системы

kill -[номер опции] [pid процесса]    - различные способы завершения процесса или перечитать конфигурационный файл если -1.
killall -[опция] [названия процесса] - завершение работы процесса или процессов по имени. 

nice -n [приоритет] [имя запускаемого процесса] - запускает процесс с указанным приоритетом
renice -n [приоритет] [pid]        - изменяет приоритет указанного pid процесса.

ctrl+Z        - приостановить команду отправить в фоновый режим.
[команда] &        - переводит процесс в фоновый режим.
jobs             - выводит список процессов в фоновом режиме. ( добавить -l для отображения id процесса)
fg %1            - выводит процесс из фонового режима на передний план.
bg            - выводит приостановленное задание в фоновый режим.
bg %[номер процесса в фоне]    - запуск процесса в фоновом режиме.
kill %[номер процесса в фоне]     - завершения процесса в фоновом режиме.
ps             - выводит список процессов с различными параметрами. 
ps -efH            - вывод всех процессов ключь f - показывает дерево процессов. 
ps -eo pid,user,group,gid,vsz,rss,comm --sort=-vsz | head    - выводит список процессов отсортированных по параметру vsz(памяти зарезервировано). За счет команды head выводится первые 10ть процессов.
ps xawf -eo pid,user,cgroup,args (список процессов со столбцом cgroup который позволяет определить родительскую группу дочернего процесса)

pstree [pid процесса]    - выводит дерево процессов.

atop            - мониторинг системы. 
systemctl start atop        - запуск службы для логирования системы в /var/log/atop_[дата]
atopsar -G -r /var/log/atop/atop_[дата]    - просмотр мониторинга с интервалом по умолчанию в 10мин.

Ограничение ресурсов для процессов и пользователей. cgroups (доп. сведения в инт.)

fuser -va [номер порта/протокол] (22/tcp - пример)     - выводит PID и владельца 
fuser -va [путькфайлу]                 - выводит PID, пользователя, доступ, команда 
sudo fuser -k -TERM -m [путькфайлу]             - завершает все процессы использующие файл.

_________________________________________________________________Просмотр нагрузки на систему

top    - просмотр загрузки системы.
htop    - просмотр загрузки системы.
iotop    - просмотр загрузки дискового  ввода-вывода(io - input output).
iostat    - мониторинг производительности (io) дисков и процессора.
free    - ввывод данных о загрузки памяти.(Обратить внимание свободная память не только в столбце  free но и buff/cacha)
cat /proc/meminfo    - информация о загрузки памяти.


_________________________________________________________________Сеть

echo ”1" > /proc/sys/net/ipv4/ip_forward     - разрешить маршрутизацию.(действует до перезагрузки)
для постоянного включения добавить в файл:
/etc/sysctl.conf
строчьку: net.ipv4.ip_forward=1
sudo iptables -t nat -S             -таблица проброса портов
sudo iptables -L -n -v
sudo iptables -t nat -L PREROUTING -n        - просмотр PREROUTING 
sudo iptables -L FORWARD -n            - просмотр FORWARD 


netstat -tnlp    - отображает список портов который слушается по tcp протоколу.
netstat -rn    - вывод таблицы маршрутов.
iperf3        - проверка пропускной способности сети между двумя ПК. (Работает на порту:  5201 )
ipref3 -c [ip-адресс] 
rout        - просмотреть и изменить таблицу маршрутизации;

ifup [имя интерфейса]        - включить интерфейс.
ip link set [имя интерфейса] up    - включить интерфейс.
ifdown [имя интерфейса]        - отключить интерфейс.
ifconfig [имя интерфейса] promisc    - включает режим для снифинга сети.

ip r        - показывает подсети для всех интерфейсов и список шлюзов(маршрут по умолчанию).
ip a add [ip] dev [имя устройства (сетевой интерфейс)]    - добавление ip на сетевое интерфейс.
ip route add default via <IP-адрес шлюза> dev <интерфейс>    - добавление маршрута по умолчанию на сетевой интерфейс.
ip link delete [имя устройства (сетевой интерфейс)]    - удалить сетевой интерфейс.

sudo ip link set eth0 [up или down]    - включить отключить интерфейс. 
sudo ip addr add 192.168.1.10/24 dev eth0    - добавление ip адреса.
sudo ip addr del 192.168.1.10/24 dev eth0        - удаление ip адреса.
ip -s link show    - статистика по пакетам
ip -s a        - статистика по пакетам с  нумерацией сетей

sudo cat /proc/net/dev — показывает сетевые интерфейсы и статистику по ним;

iftop        - программа для просмотра сетевого трафика.
nload        - просмотр загрузки сетевого трафика.
iptraf-ng    - псевдо графически утилита для отслеживания трафика.

---------------------wi-fi
sudo iwconfig     - просмотреть информацию обо всех беспроводных интерфейсах.
iwlist scan     - выводит список беспроводных сети;

_________________________________________________________________SYSTEMD

----------------Инициализация---------------------------
/etc/inittab    - классический файл инициализации системы ().
runlevel        - текущий уровень выполнения Linux.(обычно от 2-5. 5 стандарт где все н разрешено)
для смены уровня выполнения:

0 Завершение работы
1 или S Однопользовательский режим
2 Многопользовательский режим без поддержки сети
3 Многопользовательский режим без поддержки сети
4 Пользовательский уровень
5 Многопользовательский режим с поддержкой сети и графической оболочки
6 Перезагрузка компьютера

sudo init [номер уровня]    - изменит уровень выполнения на указанный.
sudo telinit [номер уровня]    - изменит уровень выполнения на указанный.
/etc/rc.d/rc#.d         - где # - выбранный уровень выполнения.(перечень каталогов со списком приложений для запуска на определенный уровень выполнения). В каталогах скрипты начинающиеся на K немедленно останавливают процесс, те же которые начинаются на S запускают процесс. 


----------------Инициализация---------------------------

Существует 12 типов юнитов systemd:
automount;
device;
mount;
path;
service;
snapshot;
socket;
target;
timer;
wap;
slice;
cope.

Расположение конфигурационных файлов: /lib/systemd/system и /etc/systemd/system.
 systemctl list-unit-files --type=target           - для вывода списка иен файлов конфигураций --type=target - можно установить любой другой(service). Также отображаются статусы статус static (служба включена по умолчанию ) включен по умолчанию и не может быть отключен даже суперпользователем.

systemctl show --property "Wants" multi-user.target | fmt -10 | sed 's/Wants=//g' | sort           - вертикальная сортировка. 


systemd-cgtop - команда отображает группы процессов и отображает количество ресурсов используемые ими.

ps xawf -eo pid,user,cgroup,args (список процессов со столбцом cgroup который позволяет определить родительскую группу дочернего процесса)

systgemd systemctl: 

systemctl kill [иям_службы или юнита]crond.service - завершает все дочерние процессы в том числе. сигнал SIGTERM
systemctl kill -s SIGKILL [иям_службы или юнита]crond.service
systemctl kill -s HUP --kill-who=main crond.service - заставляет перечитать файл конфигурации.
systemctl list-dependencies multi-user.target --all    -Рекурсивно перечислить все зависимости, нужно добавить флаг all
systemctl list-dependencies nginx.service --reverse    - Показать обратные зависимости (юниты, зависящие от юнита)
systemctl list-units -t target --all    - Просмотр списка модулей с типом таргет:
systemctl status        - Просмотр статуса системы:
systemctl --full edit <имя_юнита>    -Редактирование юнита
systemctl --force --full edit <имя_юнита>     -Cоздание юнита
systemctl     - Активные юниты
systemctl show --property "Wants" multi-user.target           - список юнитов которых активизирует целевой юнит (multi-user.target).

 

Анализируем загрузку групп сервисов
systemd-cgtop
Проверить вхождение в группы
systemd-cgls /init.scope
Анализируем скорость загрузки Linux 
systemd    -analyze время загрузки операционной системы:
systemd-analyze time     -большие задержки загрузки:
systemd-analyze blame | head -n 10
# systemd-analyze plot > boot_analysis.svg     -графическая карта анализа загрузки Linux: 

sudo dnf install systemd-bootchart    - установка bootchart для анализа загрузки системы.
sudo systemctl enable systemd-bootchart    - включить bootchart  перезапустить систему сгенерируемое изображение лежит  в  /run/log/*.svg

_________________________________________________________________ДИСКИ

Список драйверов файловых систем, загруженных в данный момент 
Создаём с помощью команды sudo dd if=/dev/zero of=/disk.img count=2000 bs=1M status=progress файл размером 2Gb.
cat /proc/filesystems
chroot [раздел, содержащий корневую файловую систему]    - перезапишет начальный загрузчик.

fdisk -l     - просмотр дисков работа с диском.
cfdisk [путь до диска (/dev/sda)] - просмотр дисков работа с диском.
lsblk      - Показывает древовидную структуру всех блочных устройств.(просмотр всех дисков в системе)
blkid     - UUID список дисков
tune2fs     - настройка файловой системы без переформатирования. -l просмотр супер блока.

extundelete    - это бесплатный инструмент с открытым исходным кодом, предназначенный для восстановления удаленных файлов именно с ext3 и ext4

ls -l /dev/disk/by-uuid/    - список UUID(идентификаторов дисков) дисков в системе.
badblocks -v [полное имя диска]    - Программа badblocks позволяет проверить жесткий диск на наличие сбойных блоков.

-----------------------------------------------------LVM
pvs    - просмотр lvm разделов
pvcreate [ полный путь до раздела  (пример: /dev/sdb1)]    - создание lvm раздела
vgcreate [ имя группы ] [перечисление разделов (пример: /dev/sda1 /dev/sdb1   можно указать один раздел)]     - создание lvm группы
vgextend [имя группы которую надо расширить] [полный путь до раздела которым будет расширятся группа (/dev/sdc1)]     - увеличение размера lvm группы.
lvs    - просмотр логических томов.
lvcreate [имя группы] -n [имя логического тома] -L [размер тома  (пример 10G)]         - создание логического тома
lvcreate [имя группы] -n [имя логического тома] -l 100%FREE         - создает логический том на все свободное место раздела (-l 100%FREE). 
lvextend [полный путь до тома lvm (пример: /dev/mapper/[имя группы]-[имя тома] или /dev/dm-[цифра])] -L +[указать размер (пример: +10G)]    - увеличение размера тома (можно добавить -r чтобы не выполнять команду resize2fs) (-l +100%FREE) - для увеличения размера на все свободное пространство.
resize2fs [полный путь до тома lvm (пример: /dev/mapper/[имя группы]-[имя тома] или /dev/dm-[цифра])]      - указывает системе новый размер диска lvm.

vgs    - просмотр lvm групп
ls -l /dev/mapper/[символьная ссылка состоящая из [имя группы][имя логического тома]] -> ../dm-[номер]     - просмотр адресов lvm на символьные ссылки.

-------------------------------------------------------LVM
lvm тома назначаются из /dev/mepper

fsck     - используется для проверки и исправления ошибок файловых систем.
cfdisk     — псевдографическая утилита
mkfs     - создание файловой системы.
sudo mkfs.ext4 /dev/sdb1 (форматирует раздел /dev/sdb1 в файловую систему ext4)
sudo mkfs -t [Имя файловой системы] /dev/sdb1 (форматирует раздел /dev/sdb1 в файловую систему кототая указана в параметре.)
fsch     - проверка на ошибки.

Для временного монтирования используется команда:
sudo mount /dev/устройство точка_монтирования(/mnt/какойто каталог - необходимо создать зарание)
Для размонтирования используется один из вариантов: 
sudo umount /dev/устройство_moма
sudo umount точка_монтирования
sudo umount -l /mnt/mpoint     - принудительное демонтированные устройства.
ЕСЛИ  ПОЯВЛЯЕТСЯ СООБЩЕНИЕ umount: (полный путь к каталогу): target is busy. необходимо посмотреть какие процессы, пользователи используют данный каталог.

sudo lsof         (полный путь к каталогу) - покажет какие процессы, пользователи используют каталог
sudo fuser -vm     (полный путь к каталогу) - покажет какие процессы, пользователи используют каталог
sudo fuser -km     (полный путь к каталогу) - завершить все процессы которые используют данный коталог.

-----------swap раздел подкачьки----------------------

mkswap [путь до раздела или файла]    - создание swap раздела (может быть как раздел диска так и указанный файл).
swapon    - включение swap.
swapoff    - отключение swap.

-----------Авто монтирование fstab------------------

для определения UUID 
lsblk -f         - показать все диски с UUID
Далее добавить запись по шаблону:
Шаблон:     UUID=(UUID_диска))                   (точка_монтирования)       (тип_фс)       (опции)       (dump)       (pass)
Пример:    UUID=a1b2c3d4-1234-5678-90ab-cdef12345678         /mnt/mydisk         ext4     defaults     0     2
sudo mount -a     - смонтировать все файловые системы которые настроены в /etc/fstab (не сработало разобратся)
После перезагрузки файловая система автоматически будет смонтирована.

-----------Монтирование через Unit в Systemd------------------

sudo systemctl edit --full --force mnt-data.mount - создает службу для монтирования раздела
[Unit]
Description=Mount Data Disk    (Описание юнита авто монтирования)

[Mount]
What=/dev/sdc            (что | указывается раздел который будет монтироваться имя устройства (имя файла устройства, метка, UUID))
Where=/mnt/UnitMount        (где | куда будет смонтировать указанный раздел)
Type=ext4                (указывается тип файловой системы)
Option=defaults,noexec        (различные параметры монтирования . noexec - нельзя запускать файлы)

[Install]
WantedBy=multi-user.target
----------------Авто монтирование-------------------
Возможно использовать только на уже смонтированные каталоги
sudo systemctl edit --full --force mnt-data.automount     - команда для создания юнита

[Unit]
Description=Automount Data Disk

[Automount]
Where=/mnt/data
TimeoutIdleSec=300     # простой, потом отключение

[Install]
WantedBy=multi-user.target
----------------Утилиты-----------------------------------
tune2fs     - настройка параметров файловой системы  
sudo tune2fs -l /dev/sdb1     - покажет информацию из супер блока файловой системы
du     - показывает размеры папок
du -s /var        - только размер указанного каталога
du -ha /var     - отчет по папкам и файлам
du -csh /var     -  Показать только итоговую сумму
lsblk     - информация о блочных устройствах(дисках, памяти)
lsblk -f     - показывает UUID
ncdu     - псевдо графическая утилита для просмотра занятого пространства
df     - показывает используемое дисковое пространство
df -h
df -i     - показывает iноды
debugfs    - отладчик файловой системы
dumpe2fs - делает дамп информации которая хранится на томе.
dump    -  делает дамп.
sudo dump -0uf /backup/backup.dump /dev/sdb1        # Создать полный бэкап
sudo dump -1uf /backup/backup-level1.dump /dev/sdb1    # Инкрементальный бэкап (уровень 1)
sudo restore -rf /backup/backup.dump            - восстанавливает бэкуп.

e2fsck     - проверка целостности структуры ФС
resize2fs     - изменение размеров ФС
e4defrag     - дефрагментация ФС ext4
e2image     - сохранения метаданных ФС в файл

-------------------------------------------------------------dd (осторожно вводить)

dd if=[имя файла] of=[имя файла] [опции]    - по секторное копирование файла.
bs=        - размер блока (block size) (4K, 4M )
count=        - количество блоков для копирования 
skip=        - пропустить N блоков во входном файле
seek=        - пропустить N блоков в выходном файле
status=progress    - показывать прогресс.

Копировать файл:         dd if=[имя файла] of=[имя файла]
Создать образ всего диска:     sudo dd if=/dev/sda of=backup_disk.img bs=4M
Прямое клонирование:     sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress
Создать пустой файл размером 100 МБ:    dd if=/dev/zero of=testfile bs=1M count=100
Создать образ раздела и сжать его:     dd if=/dev/sda1 bs=4M | gzip > backup.img.gz
Пропустить первые 100 блоков и скопировать следующие 50    dd if=bigfile.bin of=part.bin bs=512 skip=100 count=50
Записать данные с определённого смещения (seek — смещение в блоках)    dd if=data.bin of=/dev/sda seek=2048 bs=512
Уничтожение всех данных раздела жесткого диска    dd if=/dev/zero of=/dev/sdb2 bs=1M

-------------------------------------------------------------dd

___________________________________________________________________Архивирование

tar --totals --create --verbose --file arh.tar /etc     - создание архива без сжатия 
tar --totals -cvf arh1.tar /etc    - создание архива без сжатия (сокращенная форма)
tar --totals -cjvf arh.tar.bz /etc    - создание архива с сжатием bzip2
tar --totals -czvf arh.tar.gz /etc    - создание архива с сжатием gzip
tar --totals -cJvf arh.tar.xz /etc    - создание архива с сжатием XZ

dd if=/dev/sdb of=sdb.img status=progress     - клонирование дисков( if=источник — файл-источник of=цель — файл-назначение bs=размер_блока — размер блока данных count=число — количество локов данных status=progress выполнения статуса)
rsync <ключи> <источьник> <приемник>     - Синхронизации файла на локальном компьютере
rsync -zvh file /tmp/backups/
rsync -avz /home/sergiy/tmp/ root@192.168.56.102:/home/     - Синхронизация с удаленным сервером. Копируем по протоколу ssh
rsync -avz /home/sergiy/tmp/ rsync://192.168.56.102:/share    - Использовать ранее созданный сервер rsync, нужно указать это явно
rsync -avzhe "ssh -p 22" root@192.168.56.102:/root/install.log /tmp/    - Синхронизация с удаленным сервером. Копируем по протоколу ssh с явным указыванием порта.

dump -0auL -f /mnt/udisk/backup.dump /dev/sda1    - резервное копирование С помощью команды dump делается полная резервная копия (флаг -0) устройства /dev/sda1 в файл /mnt/udisk/backup.dump;
Логи для dump : /etc/dumpdates
-L сигнализирует, что перед началом нужно сделать снимок данного раздела;
-а означает «auto-size», т.е. будет заполнено всё свободное место на носителе;
-u указывает сохранить служебную информацию в файл /etc/dumpdates, чтобы использовать при создании следующих резервных копий.
restore -i -f /dev/sda1     - Для восстановления файлов из дампа в диалоговом режиме используйте команду(из каталога /mnt/udisk/):
______________________________________________________________________Планировщики заданий

zeit     - графический планировщик
atd     - Служба  предназначена для выполнения команд в заданное время.
at <время> <дата>
at 12:15 PM today
at 12:15 tomorrow
at now +1 minute
at 11:10
at> echo "Test"
at> <EOT> # Нажатие Ctrl+D
echo "echo Test" | at 12:15 tomorrow
echo "cp test /tmp" | at 12:15
atq    - Список задач текущего пользователя
at -f <filename> -m <time>.      - Скрипт может находится в любой папке, но лучше в папке указанной в переменной $PATH
atrm <номер>     -  Удаление задачи из очереди
batch    - Запуск задачи во время простоя компьютера. Задача выполнится когда средняя загрузка будет меньше 0.8.
/etc/at.allow и /etc/at.deny      - позволяют ограничить доступ к командам at и batch.
--------------------------сrontab--------------------------------
crontab -e     - создания задания
/etc/cron.d
/etc/cron.hourly     - каждый час;
/etc/cron.daily    - каждый день;
/etc/cron.weekly    - каждую неделю;
/etc/cron.monthly     - каждый месяц.
@reboot         — при загрузке, только один раз;
@yearly, @annually     — раз год;
@monthly     — раз в месяц;
@weekly         — раз в неделю;
@daily, @midnight     — каждый день;
@hourly         — каждый час.
crontab -l        - Просмотр задач

5 0 * * * echo "Выполняется каждый день в 0:5"
15 14 1 * * echo "Выполняется в 1 числа каждого числа в 14:15"
0 22 * * 1-5 echo "Рабочий день закончен" | mail -s "Уже 22:00" john
23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Выполняется в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
* * * * * echo "Это тоже ежеминутно"
0-59/2 * * * * echo "Выполняется по чётным минутам"
1-59/2 * * * * echo "Выполняется по нечётным минутам"
*/5 * * * * echo "Прошло пять минут"
@hourly echo "Ежечасно, т. е. аналог 0 * * * *"
@weekly echo "Еженедельно, т. е. аналог 0 0 * * 0"

crontab -l         - Вывод расписания текущего пользователя — 
crontab -r        - Удаление расписания текущего пользователя — 
/var/spool/cron/<имя пользователя>    - Расписания заданий для каждого пользователя свои. Они хранятся в данном каталоге.
/etc/cron.allow и /etc/cron.deny     - позволяют ограничить возможность использования планировщика cron
---------------------------------------anacron---------------------
Асинхронный или анахроничный cron, позволяет запускать запланированные
задания только на ежедневной основе. Доступен только root. Задания запускаются
интервалами. Если задание не выполнилось, оно будет выполнено после загрузки.
Файл конфигурации - /etc/anacrontab
___________________________________________________________Ядро

uname -a         - вывод рабочего ядра
lsmod     — посмотреть загруженные модули
modinfo     — информация о модуле
insmod     — загрузить модуль
rmmod     — удалить модуль
модули ядра заканчиваются на .ko
modprobe     - отключение подключение модулей ядра.

/dev файловая система для устройств
/proc кроме информации о каждом запущенном процессе, добавлена всевозможную информацию о состоянии работающего дра.
/sys информация, не относящаяся к процессу, которая попала в дерево /proc, дублируется в /sys.
sysctl    - утилита для просмотра и изменения параметров ядра во время выполнения.
sysctl -a
/proc/sys/    - каталог с настройками ядра и другими параметрами системы. Изменения значений в этом каталоге сразу вступают в силу без перезагрузки системы.

--------------------------------systemd-udevd-----------------------------------
udev     — это менеджер устройств для ядра Linux.
udevadm     - Программа используемая для отладки и диагностики.

/dev/null         — представляет собой что-то типа «мусорной корзины». Чтение /dev/null возвращает символы end-of-file — конец файла
/dev/zero     — чтение устройства возвращает � символы. Поэтому /dev/zero обычно используется для создания пустых файлов.
/dev/random и /dev/urandom         — создают «случайные» данные.

udevadm - инструмент управления udev
    info — отображение информации об устройстве
    trigger — используется для воспроизведения событий
    settle — отслеживает очередь событий udev
    control — изменение состояние демона
    monitor — события ядра и события udev
    test — моделирование поведения правил
    test-builtin — запустить встроенную команду
    wait — ожидание реакции устройства
    lock — тестовая блокировка устройств
sudo udevadm info -n sda     - поиск информации по заданному устройству.
lspci -vv <опции>     — информация о pci устройствах
lsusb <опции>     — Подключенные устройства USB
lsusb.py <опции>     — Подключенные устройства USB
usb-devices     — Подробная информация об USB устройствах
lsscsi <опции>     — Смотрим подключенные жесткие диски
lscpu <опции>     — Информация о процессоре
lsmem         — Для просмотра информации о используемой памяти
lshw <опции>     — Утилита выводит подробную информацию по устройствам
dmidecode     – Разнообразная информация о железе
inxi         — Скрипт, позволяющий получить информации о системе
hwinfo         — Утилита выводит информацию об устройствах
HardInfo         — Графическая утилита

---------------------------------------------------------------- каталог sys 

__________________________________________________________Аудит_журналирование
auditctl      - служба аудита
/etc/audit/auditd.conf     - конфиг
sudo cat /var/log/audit/audit.log    - лог файл
/etc/audit/audit.rules    - список правил аудита
-----------------------------------------------autrace-------------------------
autrace     - Аудит событий которые вызваны процессами
ausearch     - Поиск событий в лог файле

sudo auserch -a номер_события    - Поиска событий по номерам событий:
sudo ausearch -sc ptrace -i        - Поиска событий по именам системных вызовов:
sudo ausearch -ui 2010        - Поиска событий по идентификаторам пользователей:
sudo ausearch -x /usr/bin/nmap    - Поиска событий по именам исполняемых файлов:
sudo ausearch -tm pts/0        - Поиска событий по имени терминала:
sudo ausearch -tm cron        - Поиска событий по именам демонов:

sudo aureport    - статистика по событиям
sudo aureport -au    - аутентификация пользователей
sudo aureport -x    - исполняемые файлы
sudo aureport -l    -вход в систему

mate-system-log     - Графическая программа просмотра логов

/var/log/afick    - информация о целостности системы
/var/log/boot.log    - логи загрузки
-----------------------------------------Rsyslog----------------------------
Rsyslog         - сервис управления логами
/etc/rsyslog.conf
-----------------------------------------logrotate--------------------------
Утилита Logrotate автоматически обрабатывает журналы
/etc/logrotate.conf
/etc/logrotate.d     - Папка для дополнительных настроек 
Некоторые параметры управления и обработки журналов.
rotate     — сколько старых логов нужно хранить;
create     — создать пустой лог файл после перемещения старого;
dateext     — добавляет дату ротации перед заголовком старого лога;
delaycompress     — не сжимать последний и предпоследний журнал;
maxage     — выполнять ротацию, если журналы старше, чем указано;
missingok     — не выдавать ошибки, если лог файла не существует;
olddir     — перемещать старые логи в отдельную папку;
postrotate/endscript — выполнить команды после ротации;
size         — размер лога, когда он будет перемещен;

logrotate -d /etc/logrotate.d/bootlog     - Проверка конфигурации ротации.

---------------------------------systemd-journald----------------------------
systemd-journald — демон (служба), который собирает записи журнала из всей системы.
/etc/systemd/journald.conf
systemctl restart systemd-journald     - перезагрузка.
sudo journalctl -eu NetworkManager<название службы>    - просмотр логов определенной службы.
sudo journalctl -f    - отслеживать события в реальном времени.
sudo journalctl --unit nginx    - журнал юнита
sudo journalctl --disk-usage     - Вывести общий размер лог файлов на диске
journalctl _PID=1234    - Просмотр логов процесса с PID 1234:
journalctl _UID=1010    - Просмотр логов процессов, запущенных от пользователя с UID 1010

--------------------------------dmesg-------------------------------------------
dmesg — сообщения ядра Линукс
/var/log/dmesg
-C, --clear     — очистить буфер сообщений ядра;
-H, --human     — включить вывод, удобный для человека;
-k, --kernel     — отображать только сообщения ядра;
-u, --userspace     — сообщения от программ пространства пользователя;
-w, --follow     — после вывода всех сообщений ждать новых;
-x, --decode     — выводить категорию и уровень журналирования.

---------------------------------sysstat sar 
Журналирования и мониторинг устройств системы.
установить sysstat
sudo apt-get install sysstat
sudo systemclt enable sysstat
sudo systemctl start sysstat

sar -u | less    - загрузка процессора.
sar -d | less    - загрузка диска.
sar -n DEV 5 2    - выдает информацию каждые 5ть секунд 2а тика. Информация о нагрузке на сеть -n DEV. 

_________________________________________________ssh

ssh user69@200.200.200.1    - подключение
ssh -T dima@localchost <<EOF     - Можно просто получить результат выполнения команд
копирование:
scp $filename user@targethost:remote_path     - С локального хоста на удаленный хост:
scp user@remote.host:file.txt ~/MyDocs        - С удаленного хоста на локальную машину.
/etc/ssh/    - конфиги ssh ssh_config - конфиг клиента sshd_config - конфиг сервера.
        Запуск командна удаленном хосте:
ssh myhost.example.com ls > outfile         - Создает outfile на локальном хосте.
ssh myhost.example.com "ls > outfile"        - Создает outfile на удаленном хосте.


_________________________________________________SELinux

sestatus     - статус SELINUX    
seinfo     – утилита получения информации о политике SELinux /sys/fs/selinux/policy (необходимо установить sudo dnf install setools-console)
/etc/selinux/config     - конфиг selinux
setenforce 0    - переовд в режим permissive (все разрешено включено только логирование)
ls -Z        - отображает контекст SELinux
getfattr -m . -d <имя файла коталога>    - отображает вне ядерные атрибуты безопасности SELinux
ps -Z     - отбражает контекст безопасности процессов.
sudo chcon -v <устанавливаемый контекст> <имя файла папки>    - изменение контекста
getsebool -a    -Просмотр действующих правил (boolean) SELinux:
semanage boolean -l    - То же самое с кратким описанием правила:
semanage port -l    - Просмотр известных SELinux портов
setsebool <boolean> <value>    - Включение / отключение правила:
sudo semanage fcontext -C -l    
sudo sealert -a /var/log/audit/audit.lo    - поиск событий безопасности.

_________________________________________________Tcp Wrappers
контроля доступа к сетевым сервисам на уровне приложений.(устаревштй)
/etc/hosts.allow     - файл настройки разрешений.
/etc/hosts.diny        - файл настройки запретов.