Skip to content

DragonDamage/Linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 

Repository files navigation

🐧 Linux - это операционная система с открытым исходным кодом, основанная на ядре Linux

Основные моменты, связанные с Linux:

История Linux был создан Линусом Торвальдсом в 1991 году как проект хобби. С течением времени он стал популярным и развился в операционную систему с открытым исходным кодом, привлекая множество разработчиков и сообществ
Дистрибутивы Linux доступен в различных дистрибутивах, таких как Ubuntu, Fedora, Debian и многих других. Дистрибутивы предлагают различные комбинации программного обеспечения и инструментов, чтобы удовлетворить потребности различных пользователей
Открытый исходный код Одна из ключевых особенностей Linux - это его открытый исходный код. Это означает, что любой может просматривать, изменять и распространять код операционной системы. Это способствует инновациям, сотрудничеству и быстрому исправлению ошибок
Утилиты и программное обеспечение Linux поставляется с множеством утилит и программного обеспечения, которые расширяют его функциональность. Это включает текстовые редакторы, компиляторы, интерпретаторы языков программирования, графические интерфейсы, серверы, базы данных и многое другое. Большинство из них также являются программами с открытым исходным кодом
Ядро Linux Ядро Linux является основой операционной системы. Оно управляет ресурсами компьютера, обеспечивает взаимодействие с аппаратным обеспечением и поддерживает различные функции, такие как управление памятью, планирование задач, файловая система и сетевые возможности
Многозадачность и многопользовательская поддержка Linux поддерживает многозадачность, что означает, что он может выполнять несколько задач одновременно. Он также поддерживает многопользовательскую среду, позволяя нескольким пользователям работать на одной системе одновременно
Командная строка Linux предоставляет мощную командную строку, которая позволяет пользователям выполнять различные задачи и управлять системой. Командная строка предлагает широкий спектр команд и утилит для управления файлами, процессами, сетью и другими аспектами операционной системы
Безопасность Linux известен своей высокой степенью безопасности. Открытый исходный код позволяет быстро обнаруживать и исправлять уязвимости, а также предоставляет возможность настройки системы безопасности в соответствии с потребностями пользователя
Файловая система Linux поддерживает различные файловые системы, такие как ext4, XFS, Btrfs и другие. Файловая система отвечает за организацию и управление файлами и папками на диске, а также за обеспечение доступа к данным
Сетевые возможности Linux обладает мощными сетевыми возможностями, которые позволяют подключаться к сети, обмениваться данными и предоставлять сетевые услуги. Он поддерживает протоколы TCP/IP, имеет встроенные сетевые утилиты и может работать как клиент и сервер
Linux 

Общие команды Linux:

uname -a                     # Показать всю информацию об операционной системе
whoami                       # Под каким логином находимся
pwd                          # Где сейчас находимся
uptime                       # Посмотреть сколько по времени включена тачка
lscpu                        # Посмотреть информацию о процессоре
clear                        # Очистить экран консоли
ls -ali                      # Посмотреть подробную информацию о файлах в директории
echo hello linux             # Вывести текст
echo $PATH                   # Посмотреть директории в которых linux будет запускать команды
whereis snap                 # Посмотреть путь, где находится файл/ПО
locate snap                  # Посмотреть путь, где находится файл/ПО
find /home -name "file.txt"  # Поиск файлов везде
sudo reboot -f               # Перезагрузка в фоновом режиме
sudo shutdown                # Выключить машину
top                          # Диспечер задач ([Shift]+[P] фильтр по cpu, [Shift]+[M] фильтр по RAM, [V] отобразить процессы в виде древа, [Z] подсветить чуть покрасивее, [Shift]+[E] показать в КБ/МБ/ГБ)
htop                         # Диспечер задач с красивым отображением в % загрузки
atop                         # Диспечер задач с красивым отображением в % загрузки
free -h                      # Показать RAM общую и нагруженную
dmesg                        # Лог ядра Linux
sudo apt update              # Проверка обновлений
sudo apt install {program}   # Установка ПО
sudo apt upgrade             # Установка обновлений
sudo su / sudo -s            # Вход под рутом и остаться в нём
neofetch                     # Как свойства компьютера в Windows
lsscsi                       # Диспетчер устройств (dec/sd*)
type {command}               # Узнать тип команды
history                      # Показать историю всех команд пользователя
export variable              # Даёт возможность наследования выбранной переменной в дочерний процесс
man {command}                # Мануал по команде
info {command}               # Аналог man
crontab -e                   # Редактировать запуск по расписанию в системе
set                          # Показать все переменные
ls | nl                      # (nl) Проставить нумерацию строк
date                         # Вывести информацию о времени
sleep                        # Задать таймер выключения системы
yes                          # Автозаполнение поля согласия на выполнение команды
watch -n 60 {command}        # Выполнять любую команду каждые 60 секунд

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

sudo apt-get {program}        # Скачать и установить ПО с APT (убунту репозитория)
sudo apt-get remove {program} # Удалить ПО
wget https://program.ru/file  # Скачать что либо с интернета. Пример -> wget https://raw.githubusercontent.com/DragonDamage/Vagrant/main/Vagrantfile
sudo dpkg -i {program}        # Установить ПО скаченное с интернета
sudo dpkg -r {program}        # Удалить ПО скаченное с интернета
sudo apt remove {program}     # Удалить ПО, но оставить конфигурационные файлы
sudo apt purge {program}      # Удалить ПО полностью
sudo apt autoremove           # Удалить ненужные зависимости
sudo apt autoclean            # Удалить старые архивы
sudo apt install -f           # Починить зависимости, если где-то возникли проблемы

Работа с пользователями, группами и правами:

su {user_name}                           # Зайти под другим пользователем
exit                                     # Выйти из под пользователя
who                                      # Кто сейчас ещё онлайн из пользователей
w                                        # Показывает подключенных пользаков и что они делают
cat /etc/passwd                          # Все пользователи
cat /etc/group                           # Все группы и кто в них входит
cat /etc/shadow                          # Пароли пользаков
cat /etc/sudoers                         # Пользователи с правами на команды
sudo chage {user_name}                   # Настроить пароль пользаку
id                                       # Кем мы сейчас работаем
id {user_name}                           # Посмотреть права пользователя
newgrb adm                               # Активная группа
sudo ls -al /home/user_name              # Показать файлы юзера
sudo adduser {user_name}                 # Создать побыстрому юзера и дать пароль
sudo userdel -r {user_name}              # Удалить юзера и (-r все его файлы)
sudo deluser {user_name} {group_name}    # Удалить пользователя из группы
sudo passwd {user_name}                  # Поменять пароль юзеру
sudo usermod -aG sudo                    # Добавить пользака в группу sudo
sudo usermod -aG adm {user_name}         # Добавить в список дополнительных групп адм пользователя
sudo groupadd {group_name}               # Создать группу
sudo groupdel {group_name}               # Удалить группу
passwd                                   # Сменить самому себе пароль
sudo chown -R andrey:www-data file_name  # Изменить владельца директории
sudo chgrp -R adm file_name              # Изменить владельца только группы adm
sudo chmod u=rwx,g=rw,o=r {file_name}    # Для владельца полные права (чтение, запись, исполнение), для группы (чтение,запись), для остальных (чтение) в name_file
sudo chmod +x {file_name}                # Дать права на исполнение для всех
sudo chmod 777 {file_name}               # Дать права на всё для всех
sudo chmod -R 777 /directory             # Дать права рекурсивно на все подпапки и файлы внутри директории
last                                     # Посмотреть кто заходил в систему из пользователей за последнее время
finger                                   # Показать пользователей в сети
sudo useradd -s /bin/bash -m -d /home/user_name user_name  # Создать пользователя

[CHMOD] комбинации разрешений для команды:

r (read)     # Позволяет просматривать содержимое файла/каталога
w (write)    # Позволяет изменять содержимое файла/каталога
x (execute)  # Позволяет выполнять файл как программу или скрипт

Вид разрешения                   | Символьный код  |  Числовой код  |
Нет допуска	                 ||       0        |
Чтение	                         |       r-	   |       4        |
Изменение	                 |      -w-        |       2        |
Запуск	                         |      -x	   |       1        |
Запуск + Изменение	         |      -wx	   |       3        |
Чтение + Запуск	                 |      r-x        |       5        |
Чтение + Изменение	         |      rw-        |       6        |
Запуск + Изменение + Запуск	 |      rwx        |       7        |

Работа с директориями:

cd <name_directory>                # Перейти в директорию
ls -d */                           # Показать только директории
mkdir <name_directory>             # Создать директорию
mkdir dir{1..3}                    # Одной командой создать несколько директорий - создать dir1, dir2, dir3
cp -R <directory> <new_directory>  # Скопировать директорию (с вложенными в неё файлами) в другую директорию
rm -R <name_directory>             # Удалить директорию
du -hs <./name_directory>          # Посмотреть обьём директории
tree                               # Показать директории и файлы в виде дерева (очень полезная команда)
ncdu <./name_directory>            # Посмотреть свободное и занятое место в директориях
find /* -type d -name "dir_name"   # Поиск папки по названию
ls -d [!t]*/                       # Поиск папок с исключением

Работа с файлами:

cat file.txt                  # Показать что в файле
nano -l file.txt              # Редактировать файл -l добавляет отображение строк (Ctrl+O сохранить изменения, Ctrl+X закрыть редактирование)
more file.txt                 # Показать что в файле (q для выхода из режима чтения)
less file.txt                 # Просмотр содержимого файла (/ для поиска, как ctrl+f в windows), (q для выхода)
touch file.txt                # Создать файл
cp file.txt ~/var/            # Скопировать файл в другую директорию
rm file.txt                   # Удалить файл
mv file.txt .new_file_name    # Переименовать файл (. сделать его скрытым)
mv file.txt ~/Desktop/        # Перенести файл в директорию (рабочий стол)
wc file.txt                   # Показать сколько: строк, слов, символов
wc -l file.txt                # Показать только количество строк
wc -w file.txt                # Показать только количество слов
wc -m file.txt                # Показать только количество символов
sort file.txt                 # cat + сортировка по алфавиту
sort -n file.txt              # cat + сортировка по цифрам
sort du file.txt              # cat + сортировка по размеру
sort -u file.txt              # cat + сортировка с удалением дубликатов
cut -d ">" -f 3 file.txt      # cat + делиметр, какое поле
cat file.txt > new_file.txt   # Сохранить результат команды в файл
cat file.txt >> new_file.txt  # Сохранить и добавить результат команды в файл с уже существующим текстом
ln file.txt file_dupl.txt     # Дублировать файл (жесткая ссылка)
echo file.txt                 # Вывести файл на консоль
echo ????                     # Вывести файлы с 4 символами
echo ????*                    # Вывести файлы 4 и больше символов
touch file.txt{01..10}        # Создать несколько файлов от 01 до 10
diff file1.txt file2.txt      # Сравнить содержимое файлов (c - изменённые строки, d - удалённые строки, а - новые строки)
file file.txt                 # Узнать точный формать файла
tac file.txt                  # cat в обратном порядке
uniq file.txt                 # cat без дублей
cut -c1-10 file.txt           # cat файла с первого символа по десятый
find /* -name file.txt        # Поиск файла file.txt по всем директориям
cat *.yml | grep -r "text"    # Найти и вывести файлы и их наименование, в которых есть text
find /* -type f или d или l -size + 40k      # Поиск по f-файлу, d-директории или l-ссылке, и по размеру файла в килобайтах
ln -s /home/andrey/name_directory name_link  # Создать символическую ссылку
lsof                                         # Показать список всех открытых файлов для всех процессов
ll | tee file.txt                            # tee сохраняет вывод команды в файл
cat file.txt | xclip -selection clipboard    # Копирование содержимого файла в буфер обмена
xsel --output > output.txt                   # Вставить содержимое буфера обмена в файл
ls -l | xclip -selection clipboard           # Копирование вывода команды в буфер обмена

Сочетание клавиш + полезные команды:

*             # Означает все
?             # Означает воспринять один любой символ
-v            # verbose - показывать процесс выполнения команды
|             # Пайп - выполнить одну команду за другой
.             # Текущая директория
..            # Предыдущая директория
&&            # Выполнить команды следом друг за другом
.Directory    # Значит конфигурационные директории
[TAB]         # Показывает варианты автозавершения команды
[CTRL] + [R]  # Поиск введённых команд по истории
[CTRL] + [C]  # Завершить исполнение процесса или выполнения команды
[CTRL] + [Z]  # Продолжить выполнять процесс в фоновом режиме
%             # Возобновить процесс из фонового режима
[Ctrl] + [A]  # Для быстрого перехода в начало строки
[Ctrl] + [E]  # Для быстрого перехода в конец строки
sudo visudo или nano /etc/sudoers  # Добавить строчку в самый низ: andrey ALL=(ALL:ALL) NOPASSWD: ALL  # теперь пользователь может выполнять sudo без пароля
cd /var/log $ head syslog          # Перейти в папку и показать первые 10 строчек лога
cd /var/log $ tail -n 20 syslog    # Перейти в папку и показать последние  (-n 20) 20 строк
nano /etc/ssh/sshd_config          # Настройка ssh - отключить вход под root → (PermitRootLogin yes меняем на no); изменить порт по умолчанию → (Port 22 меняем на 2222)
nano ~/.bashrc                     # Для отображения веток GIT - В последнюю строку вставляем: PS1='\[\033[0;32m\]\[\033[0m\033[0;32m\]\u\[\033[0;36m\] @ \[\033[0;36m\]\h \w\[\033[0;32m\] \$\[\033[0m\033[0;32m\] ▶\[\033[0m\] '

Нужные папки:

cat /etc/passwd            # Все пользователи
cat /etc/shadow            # Пароли пользаков
cat /etc/sudoers           # Пользователи с правами на команды (например sudo)
cat /etc/apt/sources.list  # Репозиторий ubuntu
cd /var/log/               # Хранение логов в данной папке
cat /etc/hosts             # Файл с параметрами DNS
cat /etc/fstab             # Файловые системы
cat /etc/hostname          # Имя ПК
cat /etc/hosts             # Посмотреть имя и ip локалхоста и нашей тачки
cat /etc/rsyslog.conf      # Файл с настройками логирования
cat /etc/crontab           # Файл crontab
cat /var/log/kern.log      # Логи ядра
cat /etc/netplan/00-installer-config.yaml  # Файл с конфигами сети

Работа с архивами:

wget https://....tar.gz              # Скачать архив в директорию
tar cvf <name.tar> /name_directory   # Создать архив директории с названием name.tar
tar tf <name.tar>                    # Посмотреть что находится внутри архива
tar xvf <name.tar>                   # Разархивировать архив (или tar -xvpf file.tar)
gzip <name.tar>                      # Запаковать/скомпрессировать файл
gungzip <name.tar.gz>                # Распаковать файл
xz <name.tar>                        # Средне запаковать/скомпрессировать файл
unxz <name.tar.xz>                   # Распаковать файл
bzip2 <name.tar>                     # Сильно запаковать/скомпрессировать файл
bunzip2 <name.tar.bz2>               # Распаковать файл
tar cvzf <name.gz> /name_directory   # Создать архив директории и запаковать его с помощью gzip
tar xvf <name.gz>                    # Распаковать файл gz
tar cvJf <name.xz> /name_directory   # Создать архив директории и запаковать его с помощью xz
tar xvf <name.xz>                    # Распаковать файл xz
tar cvjf <name.bz2> /name_directory  # Создать архив директории и запаковать его с помощью bzip
tar xvf <name.bz2>                   # Распаковать файл bz2
zip -r <name.zip> /name_directory    # Создать архив zip директории с названием name.zip
unzip <name.zip>                     # Распаковать файл zip

[ps] Работа с процессами:

ps                       # Посмотреть запущенные процессы
ps -u                    # Посмотреть запущенные процессы под пользаком
ps -afx или ps -aux      # Показать все запущенные процессы всех пользователей
ps auf | grep ssh        # Показать пользователей подключенных по ssh
kill -9 "id ps -afx"     # Убить процесс (KILL)
kill -15 "id ps -afx"    # Корректно завершить процесс (TERM)
ps -T -p [№процесса]     # Показать потоки процесса
ps -efl                  # Посмотреть список процессов с PID
jobs                     # Посмотреть есть ли приостановленные процессы
nice -n 3 bash           # Запустить bash с приоритетом процесса 3
ps I                     # Показать процессы по приоритетам
time wget https://ya.ru  # Секундомер позволяющий подсчитать время исполнения процесса (real - время исполнения, user - сколько времени пользователь занял у CPU, sys - сколько времени CPU было потрачено системой)

[systemctl] Работа с сервисами:

systemctl list-units --type=service --state=running     # Просмотр всех активных сервисов
systemctl list-units --type=service --all               # Просмотр всех сервисов (включая неактивные)
systemctl list-units --state=failed --type=service      # Посмотреть все неудачно загруженные сервисы
systemctl list-unit-files --state=failed --type=service # Посмотреть все неудачно загруженные сервисы
systemctl list-units --type=service --state=running --no-pager --no-legend | awk '{print $1}' | xargs -I {} systemctl status {} --no-pager --no-legend  # Просмотр всех активных серисов с выводом времени запуска
systemctl list-units --type=service --state=running --no-pager --no-legend | awk '{print $1}' | xargs -I {} sh -c "echo {}; systemctl status {} --no-pager --no-legend | grep 'Active:' | awk '{print \$2, \$3, \$4, \$5, \$6}'"  # То же самое, только вывести ещё дату
systemctl show service_name.service      # Посмотреть настройки сервиса
systemctl --type=service | grep failed   # Проверка сервисов на ошибки 
---
systemctl status name_service.service     # Показать статус сервиса
systemctl status -l name_service.service  # Показать более подробный статус сервиса
systemctl start name_service.service      # Запустить сервис
systemctl stop name_service.service       # Остановить сервис
systemctl restart name_service.service    # Рестарт сервиса
systemctl enable name_service.service     # Всегда запускать сервис при включении ПК

[journalctl] Работа с логами сервисов:

journalctl -e name_service.service   # Смотрим самые свежие логи
journalctl -eu name_service.service  # -eu Фильтр по определенному юниту
journalctl --all --since "5 minutes ago" --no-tail --no-pager -p 7 -f                # Смотрим логи за последние 5 минут
journalctl --all --since "5 minutes ago" --no-tail --no-pager -p 7 -f | grep 'ERROR' # Смотрим логи за последние 5 минут с 'ERROR'
journalctl --all --since "2024-07-09 12:00:00" --until "2024-07-09 21:00:00" --no-tail --no-pager -p 7 -u name_service.service > logs_name_service.txt  # Самый ТОП по логам
journalctl -eu name_service.service --since today          # Лог за сегодня
journalctl -eu name_service.service --since "2 hours ago"  # Лог за последние 2 часа
journalctl -a --since today | grep <text> > logs.txt       # Логи по grep по логам всех сервисов

[ip] [ss] [netstat] Работа с сетью и портами:

ifconfig           # Вся информация по сети
ip addr show       # Показать адаптеры и ip
ip -c a            # Инфа по сети
ip -c a | grep mtu # Посмотреть MTU
traceroute         # Куда пересылаются пакеты с промежуточными маршрутизаторами
route              # Куда пересылаются пакеты
ping 8.8.8.8       # Достучаться по сети до ip
host -t a ya.ru    # Показать ip сайта
dig ya.ru          # Показать ip сайта (подробнее)
mtr -b google.com  # Показать полную маршрутизацию и ip адрес хоста
netstat            # Показать открытые порты
lsof               # Показать открытые порты
sudo ufw allow 22  # Открыть порт
ip -c r            # Показать проведеные ip
ss -nutlp          # Показать какие сокеты открыты
ss -tulpan         # Полностью все открытые подключения
resolvectl         # Посмотреть параметры DNS
dig 8.8.8.8        # Посмотреть параметры DNS
dig -t mx ya.ru    # Посмотреть почтовую запись
curl -Lv ya.ru     # Отправить HTTP запрос на сервер
netstat -tuln | grep 9200        # Проверить свободный ли порт
cat /etc/services | grep -i 9200 # Проверить свободный ли порт
curl -v telnet://127.0.0.1:22    # Проверить доступность удаленного порта

CURL [Client URL]:

curl https://link.ru           # Get запрос на чтение HTML страницы
curl -X GET https://link.ru    # Get запрос на чтение HTML страницы
curl -I -X GET https://link.ru # Get запрос на статус и сервер
curl -Lv 127.0.0.1             # Отправить HTTP запрос на сервер

SSH [Secure Shell Protocol]:

sudo apt-get install openssh-server       # Ставим ssh-сервер на тачку
sudo systemctl status ssh                 # Проверить работает ли сервис ssh
sudo systemctl start ssh                  # Включить сервис ssh
ssh <you_ip>                              # Обычный способ подключиться по ssh к тачке
ssh -p 22 user_name@you_ip                # Подключиться по ssh к тачке с портом, user_name и айпишником
ssh -i C:\Users\user_name\key.pem         # Подключение по ssh с помощью ключа .pem
exit                                      # Выйти из сессии
ssh -L 9000:localhost:8000 {Server_NAME}  # Пробросить порт 8000 с сервера localhost на нашу тачку с портом 9000 (теперь приложение, которое было на 8000 порту мы пожем глянуть на нашей тачке по порту 9000)

Генерация ключей ssh (ходим на тачку без пароля):

0. Проверяем что на серваках включена аутентификация по ключам: PubkeyAuthentication yes
cat /etc/ssh/sshd_config | grep PubkeyAuthentication

1 Вариант (автоматически)
ssh-keygen -t rsa -b 4096  # Генерим ключи на нашем АРМ
ssh-copy-id domain\\username@server_ip  # Копируем ключи с нашего АРМ на удаленный server_ip

2 Вариант (вручную)
ssh-keygen                 # Сгенерировать пару ключей RSA формата (со стороны АРМа)
ssh-keygen -t ed25519      # Сгенерировать пару ключей более нового формата (со стороны АРМа)
ssh-copy-id                # Переносим ключ паблик вручную в /.ssh в файл authorized_keys (далее нужно было перелогиниться)
mkdir .ssh                 # Если на сервере нет скрытой директории .ssh, то создаем её
nano .ssh/authorized_keys  # Вставляем public-key на сервер
chown -R {NAME:NAME} /home/user_name/.ssh  # Делаем все файлы в директории от создателя {NAME}
chmod 700 ~/.ssh           # Даём права доступа на папку
chmod 644 ~/.ssh/*         # Даём права доступа на все файлы
cd /etc/ssh → sshd_config  # Можно изменить порт (на 61022 например)
---

Если много серверов, то создаем скрипт:
1. Создаем список IP-адресов серверов:
nano servers.txt  # Вставляем списком
2. Пишем скрипт:
nano script_ssh.sh
---
#!/bin/bash
for server in $(cat servers.txt); do
    ssh-copy-id domain\\username@$server
done
---
3. Запускаем скрипт:
./script_ssh.sh

[GREP] and [AWK]:

grep text ./*                             # Поиск файлов, в которых есть текст text, в текущей директории
grep -i text ./*                          # Поиск файлов, в которых есть текст text, в текущей директории (-i означает игнорировать регистр)
grep -ri text *                           # Поиск файлов, в которых есть текст text (-i означает игнорировать регистр, -r означает рекурсивный поиск)
grep -rnw '/' -e "text"                   # Поиск файла по тексту на всём ПК
grep andrey /etc/* &> all_log.txt         # Отправить все ответы в файл
grep andrey /etc/* > good.txt             # Отправить хорошие ответы в файл
grep andrey /etc/* 2> errors_file.txt     # Отправить плохие ответы в файл
grep andrey /etc/* 2> /dev/null           # Отправить в никуда
grep andrey /etc/* > good.txt 2> bad.txt  # Отправить хорошие ответы в файл good, а плохие ответы в файл bad
nano file.txt -> 1 2 3 , cat file.txt | awk '{print $2}'  # awk выбирает данные по столбцам

Разбор [ls -l]:

-rwxrw-r-- 1 andrey andrey 1024 Nov 22 18:34 file.txt  # Пример
-    # Означает файл
d    # Означает директория
l    # Означает линк (ссылка)
rwx              # Права на r-чтение, w-редактирование, x-исполнение
rwx|rw-|r--      # Первые права доступа к пользователю, вторые права доступа пользователям, третьи права доступа ко всем
1 или 2 и более  # Означает количество линков
andrey           # Пользователь и группа кто создал

Just_For_Fun:

sudo ls -la -R /  # Пролистать все диски 
sudo rm -R /      # Удалить все что есть на тачке (НИКОГДА НЕ ИСПОЛЬЗУЙТЕ)

Работа с дисками:

fdisk -l                        # Показать информацию о разделах на жестком диске
lsblk                           # Показать жесткие диски и другие устройства хранения (свободное место на примонтируемых дисках)
smartctl -a /dev/sda            # Показать полное состояние конкретного диска
df -h / df -kh                  # Показать общий размер файловой системы, использованное и доступное место
du -skh dir/                    # Показать сколько весит папка
du -h -d 1                      # Показать размер всех файлов и директорий в текущей директории
du -h -d 1 /you/dir             # Показать размер файлов и директорий внутри определяемой директории
du -h -a | sort -h -r           # Показать размер всех файлов и всех директорий с сортировкой
du -h | awk '$1 > 1M' | sort -h # Показать файлы и папки с размером и сортировкой по возрастанию с указанием от какого размера МБ
df -i                           # Показать иноды по дискам
cfdisk /dev/sdb                 # dos, создаем партицию диска
mkfs.ntfs -f /dev/sdb1          # Форматировать диск
nano /etc/fstab                 # /dev/sdb1 /media/hdd ntfs default 0 0  # делаем автомонтирование диска
mount /media/hdd                # Монитруем диск
ln -s /media/hdd ~/Desktop/HDD  # Создаём символическую ссылку с диском на рабочем столе
parted -l                       # Посмотреть таблицу разделов системы
iostat                          # Показать загрузку дисковой подсистемы
ftp                             # Передача данных другой системе
ncdu -x                         # Покажет, что место занимает и можно походить по директория посмотреть

Инструкция по созданию и монтированию дисков:

sudo fdisk -l        # Посмотреть диски подключенные к системе
sudo fdisk /dev/sdb  # Создаём новые разделы
n                    # Создаём новый
[enter]              # Номер раздела 1
[enter]              # Первый сектор 2048
+1G                  # Размер раздела
w                    # Сохранить правки

sudo mkfs -t ext4 /dev/sdb1                       # Задаём файловую систему (ext4 linux),(ntfs для windows),(vfat для windows и macos), (bfs linux)
sudo mount   -t ext4 /dev/sdb1 /home/ubuntu/mnt   # Монтируем диск в том в заранее созданную папку mnt

Команды [GRUB]:

grub> ls                            # Посмотреть диски
grub> set prefix=(hd0,1)/boot/grub  # Взять оба диска и загрузить boot раздел
grub> set root=(hd0,1)              # Запустить это от рута
grub> ls boot/grub                  # Посмотреть grub.cfg
grub> insmod ext2                   # Обновить grub (ext2 - файловая сисиетма)
grub> insmod normal                 # Перевести режим grub в норм режим
grub> normal                        # Запуск grub

[base64]:

echo -n "Password" | base64             # Кодировать
Вывод: UXdlcnzNDU2
echo -n "UXdlcnzNDU2" | base64 --decode # Декодировать
Вывод: Password

Декодирование переменных в Ansible:

sudo ansible-vault decrypt file.txt  # Расшифровать
sudo ansible-vault edit file.txt     # Редактировать
sudo ansible-vault encrypt file.txt  # Зашифровать 

[Scripts]:

./script.sh               # Запустить скрипт
chmod 777 script_name.sh  # Дать права на запуск скрипта
bash script_name.sh       # Запуск скрипт, если нет прав X
Примеры скриптов:

# переменные и команды
#!/bin/bash
mycomp="HONOR"
myOS=`uname -a`
echo "This script name is $0"
echo "Q $1"
echo "Q $2"
num1=10
num2=20
summ=$((num1+num2))
echo "$num1 + $num2 = $summ"
myhost=`hostname`
mygtw="8.8.8.8"
ping -c 4 $myhost
ping -c 4 $mygtw
echo -n "This is done..."
echo "DONE"

# if/elif/else/fi /read/case/esac
#!/bin/bash

if   [ "$1" == "Andrey" ]; then
	echo "Q $1"
elif [ "$1" == "Igor" ]; then
	echo "Q $1"
else echo "NoQ $1"
fi
read -p "Enter you parameter:" x
x=$2
echo "Starting CASE selection..."
case $x in
		1) echo "This is one";;
	[2-9]) echo "Two-Nine";;
 "Andrey") echo "Q $x";;
		*) echo "NO_PARAMETER"
esac

# while/-lt меньше или равно/done/for
#!/bin/bash

COUNTER=0
while [ $COUNTER -lt 10 ]; do
		echo "Current counter is $COUNTER"
		COUNTER=$(($COUNTER+1))
done

# ls *.txt | cat *.txt
for file in `ls *.txt`; do
	  cat $file
done
# for in RANGE
for x in {1..10}; do
		echo "X = $x"
done
# for like java style 
for (( i=1; i<=10; i++ )); do
		echo "№ I = $i"
done

# Function
#!/bin/bash

Function()
{
        echo "This is text from Function"
        echo "First parameter is: $1"
        echo "Second parameter is: $2"
}

Function 7 Andrey

About

Linux теория + команды

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages