В данной статье описаны команды linux (Дистрибутив Debian)
lscpu
- Информация о процессоре.
free -m
- Информация о RAM/SWAP (кол-во) в системе.
dmidecode -t memory
- Информация о слотах RAM
sensors
- Информация о датчиках системы (lm-sensors)
smartctl -a /dev/sda
- Информация о S.M.A.R.T (smartmontools)
top
- Информация о процессах системы (use htop
)
ps aux
- Информация о запущенных процессах
lsblk
- Список разделов на диске
blkid
- Вывод данных о разделах системы
fdisk -l
- Работа с диском/инфорация о секторах
lsblk -f /dev/sdc1
- Посмотреть разметку диска (и UUID)
df -h
- Распределение места на диске
journalctl -e
- Логи системы (последние)
journalctl -u zabbix-agent
- Логи systemd юнита
sysctl -a
- Вывод системных переменных (файла /etc/sysctl.conf
)
ps aux | grep defunct
- Поиск zombie процессов (или grep Z
)
uptime -h
- Аптайм системы
history
- .bash_history
uname -a
- Информация о ядре
whereis ls
- Расположение утилиты
who
- Текущие пользователи и их активность
last
- История входа пользователей
hostname -s
- Выводит DNS имя хоста
hostname -I | awk '{print $1}'
- Выводит IP адрес хоста
ip a
- Статус сетевых адаптеров
nestat -tulpen
- Отображение активных портов/коннектов (net-tools). Аналог ss
lsof -i
- Отображение коннектов в lsof
lsof -i :515
- Отображение процессов занимающих 515 порт
curl -Li http://localhost
- вывод содержимого веб-сайта по ссылке
tcpdump -i any -vvv port 515
- отображение информации о пакетах порта 515
useradd USER
- Добавить пользователя
userdel USER
- Удалить пользователя
usermod -aG sudo USER
- Добавить пользователя в sudo
usermod -s /bin/bash USER
- Добавить пользователю shell
usermod -g GROUP USER
- Изменить группу юзера
/etc/group
- Список групп в системе
/etc/passwd
- Пользователи в системе
groupadd NAME
- Добавить группу в систему
groupdel NAME
- Удалить группу из системы
id
- Отобразить группы пользователя
tar -xvf archive.tar
- разархивация архива в текущую директорию
tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
- распаковка targz в определенную директорию
du -a / | sort -n -r | head -n 20
- Поиск и вывод самых больших файлов/директорий
Inode это структура данных, которая хранит информацию о файле или каталоге, такую как его владелец, права доступа, дата и время создания и изменения, размер и расположение на жестком диске.
Если пул Inode закончится, то система не даст создать файл. Даже если свободного места хватает.
ls -i
- Вывести файлы (вместе с inode номером)
find / -inum 123456
- Поиск расположения файла по inum
df -i
- Вывести список разделов с занятым кол-вом inode
fg PROCESS
- Вернуться к замороженному процессу (после CTRL+Z)
source ~/.profile
- Перезагрузка shell конфигурации
Swap это своеобразный файл подкачки системы. Его можно увеличить (если разметить раздел), или установить его приоритет использования.
Чтобы посмотреть приоритет обратимся к файлу cat /proc/sys/vm/swappiness
. Вывод даст нам число от 0 до 100 (дефолт 60). При минимальном значении swap используется по минимуму.
По сути это значение- процент занятости памяти, при котором если в системе окажется меньше 60% свободного места, то свап начнет использоваться. При использовании ssd/nvme рекомендуется применять значение 10-20.
Подгрузившись с liveCD мы можем зайти в файловую систему ранее бывшей машины. для этого нам нужно примонтировать рутовый раздел и необходимые директории:
mount /dev/mapper/vg1234-root /mnt/disk
mount --bind /dev /mnt/disk/dev
mount --bind /proc /mnt/disk/proc
mount --bind /sys /mnt/disk/sys
Выйти из chroot: exit
В конце работы не забываем отмонтировать командой: umount -R /mnt/disk
Kill Bill...
kill -l
- Вывести список сигналов
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU
— остановка процесса
SIGCONT
— запуск остановленного процесса
SIGCHLD
— игнорируется
SIGQUIT, SIGILL, SIGTRAP, SIGABRT, SIGFPE, SIGSEGV
— сохранение дампа памяти и завершение (Linux)
SIGKILL, SIGTERM, SIGINT, SIGHUP
— завершение процесса. SIGKILL — не может быть проигнорирован, остальные могут. SIGTERM — оповещение служб о завершении работы ОС, SIGINT — завершение программы по нажатию Ctrl C, SIGHUP — оповещение программ, запущенных через модемное соединение, об обрыве связи (в настоящее время практически не используется).
SIGILL, SIGFPE, SIGBUS, SIGSEGV
— аппаратный сбой. SIGILL — недопустимая инструкция CPU, SIGFPE — ошибка вычислений с плавающей точкой (деление на ноль), SIGBUS — физический сбой памяти, SIGSEGV — попытка доступа к несуществующим (защищенным) адресам памяти.
SIGSTOP, SIGCONT
— приостановка и продолжение выполнения процесса
SIGPIPE
— попытка записи в канал или сокет, у которого нет читателя
SIGCHLD
— оповещение о завершении дочернего процесса.
Права доступа (на самом деле) работают очень легко. Запомнить труднее)
r- 4 (Чтение)
w- 2 (Запись)
x- 1 (Выполнение)
Условная команда chmod 700 устанавливает права доступа (rwx) для владельца файла. Т.е если посчитать сумму выдаваемых прав то получается необходимая нам циферка)
Для начала выведем текущие файлы в директории с правами доступа (ls -la)
В ответ увидим примерно это (-rw-r-xr-x root root test.sh)
Первая черточка (пустая) указывает на то является ли это директорией (поскольку у нас не директория стоит черточка). Далее идут непосредственно права доступа в следующем порядке: Владелец->Группа->Остальные
Для того чтобы понять как это работает сделаем так: -|rw-|r-x|r-x
. (Разделил группы черточками). Из представленных данных видим что у владельца права чтения/записи, а у всех остальных права чтения/выполнения
В директории /etc/systemd/
создаем unit.service
файл. В него мы укажем конфиг юнита.
Позднее нужно будет включить юнит
[Unit]
Description=bot
After=bot.service #Запуск после этой службы
StartLimitBurst=5 #Максимальное кол-во попыток перезапуска
StartLimitIntervalSec=10 #Максимальное кол-во времени при попытках перезапустить службу
[Service]
Type=simple
Restart=always
RestartSec=1 #Время ожидания при перезапуске
User=root #Запуск от указанного пользователя
ExecStart=/usr/bin/env python /app/bot.py #Команда запуска службы
[Install]
WantedBy=multi-user.target
BIOS - Базовая система
MBR/GPT - Загрузка GRUB
GRUB- Загрузка ядра
KERNEL - Ядро, грузит /sbin/init
INIT - Загружает программы уровней выполнения (systemd)
Командой fdisk -l
выводим список текущих дисков.
Вывести текущие массивы можно следующей командой: cat /proc/mdstat
Чтобы создать массив выполняем следующую команду:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdb
Сформатируем под ext4 наш свежесозданный массив: mkfs.ext4 /dev/md0
После чего нам необходимо примонтировать раздел в директорию /mnt/md0 (создаем). Делаем это командой mount /dev/md0 /mnt/md0
(Массив->Директория)
Пишем swapoff /dev/sda5
(отключаем свап)
Посмотрим список наших разделов командой fdisk /dev/sda
и p
Получим примерно такой вывод:
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5abbf406
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 18970623 18968576 9G 83 Linux
/dev/sda2 18972670 20969471 1996802 975M 5 Extended
/dev/sda5 18972672 20969471 1996800 975M 82 Linux swap / Solaris
После чего удаляем разделы диска. Жмем d
и клавишу Enter
(повторяем два раза, чтобы остался раздел /dev/sda1
Пишем p
и смотрим вывод:
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5abbf406
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 18970623 18968576 9G 83 Linux
После расширяем раздел. Для этого необходимо установить apt-get install cloud-guest-utils
а после прописать growpart --free-percent=10 /dev/sda 1
.
далее заходим в fdisk /dev/sda
Вводим n
после e
и жмякаем Enter
два раза. (Раздел автоматически заполнит все оставшееся пространство). Эту процедуру повторяем два раза, чтобы у нас создались разделы 2
и 5
.
Пишем w
Назначим тег раздела свап. Пишем t
раздел выбираем 5
и код 82
Пишем w
Теперь создадим свап. mkswap /dev/sda5
И включим его swapon /dev/sda5
Прописываем blkid
и копируем UUID
свапа. Его нам нужно будет вставить в файлы nano /mnt/etc/fstab
и nano /etc/initramfs-tools/conf.d/resume
. После вводим update-initramfs -u && update-grub
.
На этом расширение завершено!
Для редактирования сети в debian необходимо открыть файл /etc/network/interfaces
В файле мы должны отредактировать строчку с нашим сетевым интерфейсом. Текущий интерфейс можно вывести командой ip a
Строка с нашим интерфейсом в файле выглядит следующим образом: iface ens18 inet dhcp
Для применения статического ip нашему интерфейсу необходимо привести файл к следующему виду:
iface ens18 inet static
address 10.10.10.100
gateway 10.10.10.1
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
dns-nameservers 10.10.10.1, 10.10.10.2
После редактирования необходимо перезапустить службу netplan. Делается это следующим образом:
netplan try
- проверка и применение (безопасно).
netplan apply
- применение (небезопасно, т.к можно потерять доступ к машине если конфигурация окажется неправильной)
nano /etc/ssh/sshd_config
параметр PermitRootLogin
- вкл/выкл вход root. (yes/no)
nano /etc/ssh/sshd_config
параметр PasswordAuthentication
- вкл/выкл вход по паролю (yes/no)