Полезные команды (пополняется)
Полезные команды Linux - утилиты командной строки, предназначенные для выполнения различных задач в системе Linux. Они позволяют управлять файловой системой, процессами, пользователями, а также выполнять другие важные операции.
SSH
ssh-keygen -t rsa -C "rsa-key"- генерация ключа, алгоритмrsassh-keygen -t ed25519 -C "ed25519-key"- генерация ключа, алгоритмed25519(~/.ssh/- в каталог сохранятся ключи)ssh-keygen -f ./mykey -t ed25519 -C "ed25519-key"- генерация ключа, алгоритмed25519, сохранение в текущем каталоге с именемmykeyиmykey.pubssh-copy-id username@192.168.1.1- копировать публичную часть ключа на удаленный сервер
TAR GZ — Создание / распаковка архива
tar -cvf file.tar /full/path- создать.tartar -czvf file.tar.gz /full/path- создать.tar.gztar -cjvf file.tar.bz2 /full/path- создать.tar.bz2tar -xvf file.tar.gz- распаковать.tar.gz
Консольные утилиты
whoami- показывает имя пользователяlast -10- показывает последние 10 подключенийfind- показать содержимое текущего каталогаfind /home- показать содержимое каталога/homenl file.txt- нумерация строк файлаcat -n- отлично заменяетnl, более того,cat -nумеет иgreptree- структура в древовидном видеwhich ping- путь до утилитыpingwhereis ping- путь до утилитыpingscreen ./long-unix-script.sh- после запуска команды нажмитеCtrl + Aи затемd, чтобы отключить процесс от текущей сессии. Он будет продолжать работать в фоновом режиме. Для того, чтобы снова подключить процесс, введите:screen -r 4980.pts-0.localhost. Замечание: последняя часть команды здесь - этоidскрина, который можно узнать с помощью командыscreen -lscd -- если вы случайно сменили директорию, можно просто вернуться в последнююsudo !!- если вы набрали команду безsudo, а потом оказалось, что она необходима.!!вообще полезная штука. Если вдруг забыл набратьcdперед путем до директории, можно сделать такой же трюк, как и сsudo, т.е.cd !!mkdir test; cd $_- создать каталог и перейти в негоtouch my_script.sh && nano !$- автоматическая подстановка последнего аргументаmtr- мощный инструмент для диагностики сети. Он совмещает в себе функциональностьtracerouteиpingpkill [application_name]- завершает запущенный процесс. Эта команда особенно полезна, когда приложение не отвечаетw- показывает, кто на данный момент вошел в систему, наряду с другой полезной информацией такой, как время работы или нагрузкой процессораless- читать файл, можно пользоватьсяwиzдля пролистывания страниц,/для поиска текста и т.д.rev- переворачивает строчку задом на перед, напримерecho abc | revtailf- синонимtail -fusers | nl- имена всех авторизованных пользователейdu -hd 0- измеряет размер директории, в которой находитесьdu -hd 1- измеряет размер всех директорий в директории, в которой находитесьcp /path/to/file.txt{,.backup}- результат:/path/to/file.txtи/path/to/file.txt.backupmv /path/to/file.{txt,log}- результат:/path/to/file.log>/var/log/daemon.log- очистить файл:>/var/log/daemon.log- очистить файлgrep -vE "^#|^$" /etc/apt-cacher-ng/acng.conf- просмотр конфигов без закомментированных строкss -nltup | column -t-column -tвыстраивает данные в удобочитаемые таблицы. Еще пример:mount | column -techo 1 > /sys/block/sda/device/rescan- перечитать размер диска/dev/sda, выполняется от пользователяrootgrowpart /dev/sda 3- увеличить 3-тью областьopenssl pkcs12 -export -in certca.pem -inkey privateky.key -out output.pfx- создатьPFX-сертификатnohup ./script.sh > /dev/null &- запуск программы или скрипт а в фонеps -aux | grep scriptилиpgrep -a script- узнать id фоновой программы или скрипта, что бы потом завершить ее (kill 21536)
Записать строки в файл, включая спецсимволы, не открывая текстовый редактор:
1
2
3
4
5
sudo tee /etc/apt/apt.conf.d/00proxy <<'EOF' > /dev/null 2>&1
Acquire {
HTTP::proxy "http://mirror.itdraft.ru:3142";
}
EOF
Что бы дописать в строки в файл, включая спецсимволы, не открывая текстовый редактор: используем в команде выше tee -a
echo "proxy=http://mirror.itdraft.ru:3142" | sudo tee /etc/yum.conf > /dev/null 2>&1- перезаписать/etc/yum.confecho "proxy=http://mirror.itdraft.ru:3142" | sudo tee -a /etc/yum.conf > /dev/null 2>&1- добавить строку в/etc/yum.conf> /dev/null 2>&1- не выводить результат
Полезное для cURL
curl https://itdraft.ru -H 'User-Agent: GPTBot' -I- меняем User-Agent в CURL запросеcurl --connect-to "":":192.168.1.100:" https://example.com- Запрос будет отправлен наhttps://192.168.1.100:443, но URL останетсяhttps://example.com. Можно использовать что б к примеру не править файлhostscurl -x "http://mirror.itdraft.ru:3142" https://www.google.com -I- Запрос будет отправлен через proxy
Сочетания клавиш в Nano
CTRL + S- сохранитьALT + T- очистить все дальше кареткиCTRL + C- показать номер строкиCTRL + K- удалить строкуCTRL + W- поискEsc, #- отобразить нумерацию строк
Сочетание клавиш в консоли
CTRL + R- поиск по историиCRTL + S- остановить вывод логов, например при выводе командойtail -f /var/log/nginx/access.logCTRL + Q- продолжить вывод логов, например при выводе командойtail -f /var/log/nginx/access.logESC + .- последний аргумент командыCTRL + L- очистить терминалCRTL + R- поиск в истории команд терминалаCTRL + C- прервать работу командыCTRL + Z- перевести в фоновую. Чтобы посмотреть задачи, которые сейчас работают в фоне используйте командуjobs, а для возврата задачи в нормальный режим - командуfgCTRL + PиCTRL + N- альтернативы клавишам стрелкивверхивнизCTRL + AиCTRL + E- аналоги клавишHomeиEndCtrl + U- удалить весь текст от начала строки до позиции курсораCtrl + K- удалить весь текст от позиции курсора и до конца строкиCTRL + W- стереть слово перед курсором. Если курсор находится в середине слова, то будут стёрты все символы от курсора до начала словаAlt + Shift + 3- ставит в начало строки знак комментария и нажимаетEnter
Firewall-cmd
1
2
3
4
5
6
7
8
$ sudo firewall-cmd --list-all
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --permanent --zone=public --add-service={http,https}
$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=4990-4999/udp
$ sudo firewall-cmd --permanent --zone=public --remove-service=https
$ sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp
$ sudo firewall-cmd --reload
SSL сертификат
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -days 365- самоподписанный сертификат, interactiveopenssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/C=RU/ST=Moscow/L=Moscow/O=Company/OU=IT/CN=CommonNameOrHostname"- самоподписанный сертификат, non-interactiveopenssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout example.com.key -out example.com.crt -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1"- самоподписанный сертификат,altname
Nginx
Редирект http > https
1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
listen 443 default ssl;
server_name _;
...
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
...
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
...
Балансировка
1
2
3
4
5
6
7
8
9
10
11
12
upstream backend {
server 192.168.1.1:443;
server 192.168.1.2:442;
}
server {
...
location / {
proxy_pass https://backend;
...
}
}
Docker
Прописать зеркало и разрешить подключение по http (необходимо перезапустить сервис Docker)
1
2
3
4
5
6
7
8
$ cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.itdraft.ru"]
}
{
"insecure-registries" : ["registry.itdraft.ru:5000"]
}
docker exec -it %id% /bin/bash- подключиться к контейнеруtruncate -s 0 /var/lib/docker/containers/**/*-json.log- очистить логи контейнеров (выполнять от рута)
GIT
Инициализируем репозиторий и пушим в Git
1
2
3
4
5
6
7
8
$ cd /opt/nginx
$ git init
$ git config --global user.email "admin@itdraft.ru"
$ git config --global user.name "Maksim Makarov"
$ git add .
$ git commit -m "ver 1.0"
$ git remote add origin ssh://git@gitlab.itdraft.ru:10022/m.makarov/nginx.git
$ git push origin master
Пушим изменения в Git
1
2
3
4
$ cd /opt/nginx
$ git add .
$ git commit -m "ver 1.2"
$ git push origin master
Подтянуть изменения из Git
1
2
$ cd /opt/nginx
$ git pull origin main
