Полезные команды Linux: различия между версиями

Материал из The Magic of Number 8 Wiki
journalctl
Строка 255: Строка 255:


<code>sudo docker buildx build --platform=linux/amd64 .</code>
<code>sudo docker buildx build --platform=linux/amd64 .</code>
Создать новый контейнер в фоне и дать ему определенное имя.
<code>sudo docker run -d --name godot-ci-4.5-beta1 lourensrich/godot-ci-4.5-beta1</code>


Отобразить список всех контейнеров.
Отобразить список всех контейнеров.

Версия от 20:56, 1 июля 2025

В данном руководстве перечислен список команд к различным Linux приложениям. Некоторые из этих команд могут быть применены и к Windows версиям программ.

Базовые команды

Включение возможности изменения раскладки клавиатуры через Alt + Shift.

setxkbmap -layout us,ru -option grp:alt_shift_toggle

Установить DPI для подключенного дисплея/монитора (Подсчитать DPI можно тут).

xrandr --output eDP1 --dpi 135.09

Удаленно запустить приложение на основном дисплее (X11).

DISPLAY=:0 anydesk

Файловые операции

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

Создать символическую ссылку

ln -s /original/path/to/file /path/to/symlink

Запустить команду pwd -P в текущем каталоге и в поддиректориях.

find . -type d -exec sh -c 'cd -P -- "{}" && pwd -P' \;

Переименовать кириллические файлы в каталоге

find -mindepth 1 -exec sh -c 'mv "$1" "$(echo "$1" | iconv -f cp1252 -t cp850 | iconv -f cp866 )"' sh {} \;

Права доступа

Изменить владельца и группу для файла.

chown username:usergroup file.txt

Показать режима доступа файла или папки в восьмеричной системе счисления Октал.

stat -c %a file.txt

Оценка использования пространства накопителя

Общий отчёт об использовании пространства файловой системы.

df -h /

Информация об использовании файлами и директориями пространства файловой системы.

du -h file.bin

Поиск 10 наибольших файлов и директорий с сортировкой по убыванию их размера.

du -ahx . | sort -rh | head -10

Форматирование накопителя

Низкоуровневое форматирование накопителя.

sudo dd if=/dev/zero of=/dev/sdb bs=1M

Принудительно обновить таблицу разделов.

sudo partprobe

Архивы

Создание

Создать tar архив.

tar -cf archive.tar file1 file2

Создать tar архив и исключить добавление отдельного файла.

tar --exclude='file3' -cf archive.tar file1 file2

Создать tar архив директории без сохранении информации о полном пути файлов. Обратите внимание что перед site стоит пробел. Это позволяет при распаковке получить корневую директорию site со всем содержимым.

tar -cf site1.tar -C /var/www/ site

Создать tar архив с Gzip сжатием.

tar -czf archive.tar.gz file1 file2

Создать tar архив с Bz2 сжатием.

tar -cjf archive.tar.bz2 file1 file2

Просмотр содержимого

Посмотреть содержимое tar архива.

tar -tf archive.tar

Посмотреть содержимое Zip архива

unzip -l Архив.zip

Посмотреть содержимое Zip архива с кириллическими именами в названии файлов.

unzip -l Архив.zip | grep -aEv '^Archive:' | iconv -f iso8859-1 -t cp850 | iconv -f cp866

Распаковка

Распаковать tar архив в текущую директорию.

tar -xf archive.tar

Распаковать tar архив в требуемую директорию.

tar -xf archive.tar -C ~/folder

Другие возможные tar команды собраны здесь: https://linuxize.com/post/how-to-create-and-extract-archives-using-the-tar-command-in-linux/

Модификация архива

Добавить новый файл в tar архив.

tar -rvf archive.tar newfile

Удалить файл из tar архива.

tar --delete -f archive.tar file1

Portable Document Format (PDF)

Склеить несколько pdf файлов в один.

pdftk A=1.pdf B=2.pdf cat A1 B2-4 output Result.pdf

Разрезать pdf по листам.

pdftoppm Input.pdf outputname -png

Изображения

ExifTool

Прочитать EXIF атрибуты.

exiftool 1.jpg

Удалить все EXIF атрибуты.

exiftool -all= 2.jpg

ImageMagick

Изменить размер изображения

convert 3.jpg -resize 128x128 1.png

Перевернуть изображение

convert 4.jpg -rotate 90 2.jpg

Конвертировать изображение в pdf файл

convert 5.jpg Result.pdf

Конвертировать изображение в pdf файл с параметрами формата листа и заполнения заднего фона.

convert 6.jpg -background white -page a4 Output.pdf

SANE

Получить изображение со сканера или МФУ.

scanimage --format=png --output-file test.png --progress

Видео

FFmpeg

Конвертировать аудиодорожку видео в формат MP3.

ffmpeg -i filename.mp4 filename.mp3

Сделать копию видео в формате mp4.

ffmpeg -i example.mkv -c copy example.mp4

Кодировать видео с наложением субтитров (Создание хардсаба).

ffmpeg -i "Made_in_Abyss_Retsujitsu_no_Ougonkyou_[02]_[AniLibria_TV]_[WEBRip_1080p].mkv" -vf subtitles="02.ass" -c:v libx264 -crf 23 -c:a aac -b:a 192k output-02.mp4

Кодировать видео с наложением субтитров и сделать 2-ую аудио-дорожку основной.

ffmpeg -i "Made_in_Abyss_Retsujitsu_no_Ougonkyou_[03]_[AniLibria_TV]_[WEBRip_1080p].mkv" -vf subtitles="03.ass" -map 0:0 -map 0:2 -c:v libx264 -crf 23 -c:a:2 aac -b:a 192k output-03.mp4

Вырезать отрезок видео в выбранном диапазоне времени.

ffmpeg -ss 00:01:00 -to 00:02:00 -i input.mp4 -c copy output.mp4

MKVToolNix

Извлечь 4-ую дорожку (счёт ведётся с нуля) содержащую встроенные субтитры.

mkvextract tracks Made_in_Abyss_Retsujitsu_no_Ougonkyou_\[03\]_\[AniLibria_TV\]_\[WEBRip_1080p\].mkv 4:AniLibria_TV-03.ass

yt-dlp

Cкачать плейлист YT с названием плейлиста в качестве имени папки

yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --yes-playlist --write-auto-subs --embed-subs --embed-chapters --embed-thumbnail -o /"path/%(playlist_title)s/%(playlist_index)s - %(title)s.%(ext)s" --embed-chapters https://youtube.com/playlist?list=xyz

Сетевые команды

Отобразить информацию о сетевых соединениях.

netstat -na

Импорт OpenVPN профиля в NetworkManager.

nmcli connection import type openvpn file ~/VPNs/name.ovpn

Послать Wake-on-LAN пакет на удаленную машину.

wol 00:00:00:00:00:00 -h example.com -p 9

Оптимизированная передача изображения с удаленного X сервера.

ssh -X comminux@example.com -c chacha20-poly1305@openssh.com -C

Найти GET запросы в директории логов сервера Nginx, которые характерны DoS-атакам.

sudo grep -r '"-" "-"' /var/log/nginx

Загрузить копию веб-сайта и другие страницы посредством рекурсивного прохода по найденным веб-ссылкам.

Полное описание параметров команды: https://pingvinus.ru/note/wget-download-sites

wget -r -k -l 2 -p -E -nc http://site.com/

Настройка файрвола

UFW - Uncomplicated Firewall

Используется по умолчанию в Ubuntu.

Отобразить список активных правил в файрволе UFW.

sudo ufw status numbered

Удалить 7-е правило.

sudo ufw delete 7

Создать новое правило блокировки IP и поместить его в начало списка. Если не соблюдать порядок блокирующих (DENY) и разрешающих правил (ALLOW), то добавленные правила могут не исполняться.

sudo ufw insert 1 deny from 52.185.71.28 to any

Базы данных

MariaDB

Подключиться к серверу MariaDB.

mariadb -u root -p

Экспортировать базу данных.

mariadb-dump -u username -p database_name > data-dump.sql

Импортировать базу данных из резервной копии. Если при импорте будет возникать ошибка ERROR at line 1: Unknown command '\-'., то требуется дополнительное действие: https://habr.com/ru/articles/824490/

mariadb -u username -p new_database < data-dump.sql

Виртуализация

Контейнеры

Docker

Собрать новый образ из Dockerfile, расположенного в текущей директории.

sudo docker buildx build --platform=linux/amd64 .

Создать новый контейнер в фоне и дать ему определенное имя.

sudo docker run -d --name godot-ci-4.5-beta1 lourensrich/godot-ci-4.5-beta1

Отобразить список всех контейнеров.

sudo docker ps -a

Отобразить список загруженных или собранных образов.

sudo docker images

Открыть bash сессию в запущенном контейнере

sudo docker exec -it container_id bash

Создать контейнер и запустить в нём bash-сессию. Параметр image_id является хэш указателем или тэгом уникального образа.

sudo docker run -it image_id bash

Удалить контейнер с данными.

sudo docker container rm container_id

Удалить контейнеры с данными по наименованию образа, от которого они были созданы.

sudo docker container rm $(docker ps -a -q --filter "ancestor=containrrr/watchtower")

Удалить образ.

sudo docker rmi image_id

Удалить все неактивные образы из системы.

sudo docker rmi $(docker images -q)

Автоматическое обновление требуемого образа каждые 12 часов при помощи containrrr/watchtower.

docker run -d --name watchtower-openwebui --restart=always -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower open-webui --interval 43200

Ручное обновление требуемого образа при помощи containrrr/watchtower в режиме отладки.

docker run -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui --debug

Менеджер загрузки EFI

efibootmgr

Восстановление загрузочной записи

Обычно восстановление загрузочной записи загрузчика systemd-boot требуется после обновления прошивки (BIOS) материнской платы.

efibootmgr -c -d /dev/sdX -p Y -l "\EFI\systemd\systemd-bootx64.efi" -L "Linux Boot Manager"

Очистка и сортировка загрузочных записей

Отобразить очередь загрузки.

efibootmgr

Удалить 4-ую запись из очереди загрузки.

efibootmgr -b 4 -B

Изменить порядок загрузки.

efibootmgr -o 0,1,2

Android

Android Debug Bridge (adb)

Создать резервную копию данных выбранного приложения. После ввода команды потребуется выполнить подтверждение операции на самом устройстве. Некоторые приложения могут иметь флаг запрещающий создание подобных резервных копий.

adb backup -noapk com.unciv.app -f unciv-data.ab

Git

Работа с репозиториями

Инициализировать структуру Git репозитория.

git init

Добавить файл README.md в индекс существующего репозитория.

git add README.md

Осуществить коммит изменений с выбранным заголовком.

git commit -m 'Initial commit'

Ветвление

Создать новую ветку.

git branch branch_name

Переключиться на требуемую ветвь.

git checkout branch_name

Создать новую ветвь и переключиться на неё в одной команде.

git checkout -b branch_name

Удалить локальную ветку.

git branch -d branch_name

Удалить удаленную ветку.

git push -d origin branch_name

Загрузить удаленную ветку в новую для этого локальную ветвь.

git fetch gitea master:fork

Выгрузка локальной ветки может осуществляться в другую удаленную ветвь.

git push gitea fork:master

Для GitHub имеется возможность загрузить запрос на слияние в новую локальную ветвь.

git fetch origin pull/103781/head:pr-103781

Подмодули

Инициализация, получение и извлечение всех существующих вложенных подмодулей.

git submodule update --init --recursive

Bare репозиторий

Bare репозиторий — это репозиторий, который не содержащий рабочего каталога. Явным признаком bare репозитория является наличие следующего содержимого в корневой директории:

branches  config  description  FETCH_HEAD  HEAD  hooks  info  objects  packed-refs  refs

Для конвертации bare репозитория в "нормальное" состояние, требуется выполнить следующие действия:

git config core.bare false
mkdir .git
mv * .git/
git reset --hard

Пакетные менеджеры

Composer

Создать новый проект.

composer create-project laravel/laravel example-site

Установить необходимые зависимости в существующий проект.

composer install

Запустить скрипт dev, определенный в composer.json проекта. Данный скрипт запускает локальный веб-сервер для проверки Laravel приложения.

composer run dev

pacman

pacman -q

Отобразить пакеты установленные вручную, которые не были найдены в базе данных синхронизации. К примеру из AUR.

Системы сборки

Scons

scons -c

Очистить scons кэш.

Обслуживание компьютера

Очистка кэша

ccache -C

Очистить ccache кэш.

trizen -Scc

Очистить trizen кэш.

systemd

journalctl

sudo journalctl -u act_runner.service

Показать все сообщения для определенного сервиса.