Skip to content

Latest commit

 

History

History
677 lines (482 loc) · 23.3 KB

File metadata and controls

677 lines (482 loc) · 23.3 KB

Linux — заметки

Ориентир: современные Debian/Ubuntu (и частично RHEL/CentOS через yum/dnf). Ниже — сжатые актуальные команды и приложение в конце: туда перенесены по возможности полные ручные сценарии из старого Linux.txt (без реальных паролей и PSK из Wi‑Fi; где было неверно — помечено). Внутренние URL и хосты при необходимости подставьте свои.

Книги и материалы

Пакеты (APT)

Поиск пакета:

apt-cache search <имя>

Установка / удаление:

sudo apt update
sudo apt install <пакет>
sudo apt remove <пакет>

Локальный .deb:

sudo dpkg -i package_name.deb
sudo dpkg -r <краткое_имя_пакета>

Если зависимости «сломались»: sudo apt -f install.

Зависший dpkg / «Unable to lock…»: дождаться окончания другого apt, при необходимости снять блокировку и восстановить — см. Ask Ubuntu (в заметках не смешивать с посторонними командами вроде deluser).

Maven

sudo apt install maven
mvn -version

Дополнительно: Installing Maven (статья; версии в репозитории могут отставать). В старых Ubuntu пакет мог называться maven2.

Git

sudo apt install git
git --version

Раньше метапакет часто назывался git-core — сейчас обычно достаточно git.

Jenkins

Официальная установка меняется; актуальные шаги: Jenkins — Linux.

Как было в ручных заметках (старый репозиторий pkg.jenkins-ci.org) — сейчас URL и ключи могут не работать, оставлено для воспроизведения легаси-окружения:

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update && sudo apt-get install jenkins

В заметках были свои URL веб-UI Jenkins и APEX — подставьте актуальные хосты.

Обновление после подключения репозитория:

sudo apt update
sudo apt install jenkins
sudo systemctl restart jenkins
# раньше: service jenkins restart

Порт и параметры (в т.ч. свой порт вроде 8180): /etc/default/jenkins или unit-файл systemd — сверяйте с версией пакета.

Диски (udisks, сведения)

sudo apt install udisks2   # имя пакета в современных дистрибутивах часто udisks2
udisksctl status
# или классика:
sudo fdisk -l
lsblk
blkid
df -h

На очень старых системах встречалось sudo apt-get install udisks и сведения так: udisks --show-info /dev/sda1 (udisks1; в udisks2 — другой CLI).

Samba-клиент для монтирования SMB/CIFS

Пакет smbfs устарел; используйте CIFS:

sudo apt install cifs-utils

Прочее

sudo apt install sysinfo    # по желанию
sudo apt install memtester  # тест ОЗУ: memtester <МБ> <прогоны>

Монтирование

Список смонтированного:

mount
df -h

Примеры:

sudo mount /dev/sdb1 /mnt/video
sudo mount -t ext4 /dev/sdb1 /mnt/video

Из ручных заметок (пути и ext3 могли быть именно такими):

sudo mount /dev/sdb1 /home/user/Видео
sudo mount -t ext3 /dev/sdb1 /home/user/Видео
sudo mount -t ext3 -o rw,iocharset=utf8,codepage=866 /dev/sdb1 /home/user/Видео

Типы ФС: ntfs, ntfs-3g, vfat, iso9660 и т.д. Права: -o rw / -o ro. Для проблем иногда -o force.

Кодировки (старые сценарии с FAT/NTFS):

sudo mount -t ntfs-3g -o rw,iocharset=utf8,codepage=866 /dev/sdb1 /mnt/video

Отмонтировать:

sudo umount /dev/sdb1
# или по точке монтирования

CD-ROM и ISO:

sudo mount -t iso9660 -o ro /dev/cdrom /mnt/cd
sudo mount -t iso9660 -o loop /path/file.iso /mnt/iso

Сетевая шара CIFS (не использовать устаревший тип smbfs):

sudo mount -t cifs -o username=USER,password=PASS //server/share /mnt/mountpoint

Раньше в заметках был тип smbfs и шара вида //pupkin_v/oracle10g-binary → точка монтирования /home/user/oracle-binariesсейчас только CIFS (cifs-utils), команда та же по смыслу с -t cifs.

Безопаснее — учётные данные в файле с правами 600 и опция credentials=.

Файлы и каталоги

mkdir -p /home/user/dev
cd /home/user/dev
git init
ls
ls -l
ls -R
ls -lR
pwd
file <filename>
mv источник назначение

Поиск каталога:

find / -name '<dir_name>' -type d 2>/dev/null

Обзор find: losst.ru — find.

Удаление по маске (сначала без -delete — проверка):

find . -name "*.versionsBackup" -type f
find . -name "*.versionsBackup" -type f -delete
find . -name 'build.gradle' -delete

Замена строки в .txt рекурсивно:

find . -type f -name "*.txt" -exec sed -i 's/string1/string2/g' {} +

Права, пользователи, группы

sudo -s
# или
sudo bash

su -
# ввод пароля root (если настроен)

chown -R user:group /path
chown -R pi /home/pi
sudo usermod -a -G pi root
id -a
id username
who
w
last

Добавить пользователя в группу:

sudo usermod -aG groupname username

Пример: пользователь в группе docker (после — перелогиниться или newgrp docker):

sudo usermod -aG docker "$USER"
grep docker /etc/group   # в заметках: проверить, что пользователь в строке группы
sudo systemctl restart docker
# или: sudo service docker restart

После добавления в группу — выход/вход в сессию или newgrp docker (иногда нужна перезагрузка).

Установка Docker Engine, daemon.json, Compose и прочая настройка демона — в Docker.md.

/etc/passwd, /etc/shadow, /etc/group — учётные записи (пароли в shadow).

Сеть и SSH

hostname -I
ip addr
ip route
ping 8.8.8.8
nc -zv host port

Статический адрес (пример классики ifupdown; на современных системах часто Netplan или NetworkManager — сверяйте дистрибутив):

/etc/network/interfaces — пример:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1

Raspberry Pi / Netplan: используйте актуальную документацию вашего образа.

SSH-ключ:

ssh-keygen -t rsa -b 4096   # или ed25519: ssh-keygen -t ed25519
ssh-keygen -t rsa -C "your_email@example.com"
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Копирование с удалённого хоста:

scp user@host:/path/to/file .
scp -r user@host:/remote/dir ./local-dir

Туннель через промежуточный хост:

ssh -L local_port:target_host:target_port user@gateway_host

С Windows: PuTTY / plink — в Windows.md (раздел про PuTTY и plink).

Проверка SOAP/WSDL:

wget 'http://host:port/Service?wsdl' -q -O -

Пример из заметок (подставьте свой хост):

wget 'http://adcosgiq3:9009/BookerDomainService?wsdl' --quiet -O -

Wi‑Fi (ручная настройка)

На десктопе чаще NetworkManager (nmcli, GUI). Ниже — полная последовательность из ручных заметок (адаптер wlx…, SSID в примере замените на свой; реальные пароли и hex PSK не воспроизводятся — заново сгенерируйте через wpa_passphrase). См. также linuxcommando — WPA/WPA2.

iw dev
ip link show wlxXXXXXXXXXXXX
# при необходимости: sudo ip link set wlxXXXXXXXXXXXX up
iw wlxXXXXXXXXXXXX link
sudo iw wlxXXXXXXXXXXXX scan | less
sudo -s
wpa_passphrase "YOUR_SSID" >> /etc/wpa_supplicant.conf
# ввести пароль; в файле останутся ssid и psk=...
exit
sudo wpa_supplicant -B -i wlxXXXXXXXXXXXX -c /etc/wpa_supplicant.conf
iw wlxXXXXXXXXXXXX link
sudo dhclient wlxXXXXXXXXXXXX
ip addr show wlxXXXXXXXXXXXX

Маршрут по умолчанию — через шлюз сети (часто 192.168.1.1), а не через IP, выданный интерфейсу. В черновике заметок ошибочно фигурировал via на адрес самого клиента — используйте:

sudo ip route add default via 192.168.1.1 dev wlxXXXXXXXXXXXX
ping 8.8.8.8

Проверка SMB соседа: smbclient -L 192.168.0.100 -U%.

Драйверы USB (пример TP‑Link T2U Plus / rtl8814au): Ask Ubuntu, форум TP‑Link.

Диагностика:

dmesg
journalctl -b
lspci
lsusb

Старые логи: /var/log/dmesg; про udev на старых системах смотрели /var/log/udev.

Oracle XE 10g (исторически)

Репозиторий и пакеты могут быть мёртвы; шаги ниже — как в ваших ручных заметках, для архива / легаси.

  1. В /etc/apt/sources.list (осторожно): deb http://oss.oracle.com/debian unstable main non-free
  2. Ключ: wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
  3. sudo apt-get update
  4. sudo aptitude install oracle-xe oracle-xe-client или sudo apt-get install oracle-xe
  5. sudo /etc/init.d/oracle-xe configure (пароли sys/system)
  6. Веб: http://127.0.0.1:8080/apex

Установка из скачанного .deb (как в заметках: расшарили каталог, смонтировали сеть):

cd <каталог_с_deb>
sudo dpkg -i oracle-xe_10.2.0.1-1.1_i386.deb
sudo /etc/init.d/oracle-xe configure

PATH для Oracle в ~/.profile (в заметках была опечатка):

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/
export PATH="$PATH:$ORACLE_HOME/bin"

Было неверно: export $PATH=$PATH:....

Файл подкачки (swap)

Вариант из заметок (файл /swpfs1, ~1 ГиБ):

sudo dd if=/dev/zero of=/swpfs1 bs=1M count=1000
sudo mkswap /swpfs1
sudo swapon /swpfs1

Современный вариант — отдельный /swapfile с chmod 600 и запись в /etc/fstab по документации дистрибутива.

Печать (CUPS + Samba)

Как в ручных заметках (Raspberry / pi):

sudo apt-get update
sudo apt-get install vim mc cups samba samba-common-bin
sudo usermod -aG lpadmin pi
sudo /etc/init.d/cups start
sudo /etc/init.d/samba restart
# сейчас чаще: sudo systemctl enable --now cups smbd

Фрагменты, которые правили в /etc/cups/cupsd.conf (проверьте актуальность для вашей версии CUPS):

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>
<Location /admin>
  Order allow,deny
  Allow @local
</Location>
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @local
</Location>

В /etc/samba/smb.conf в секции [printers]: browseable = yes.

Дальше по заметкам: веб CUPS http://<IP_малины>:631, добавили принтер Samsung ML-2010. Подключение с Windows к такому принтеру — в Windows.md (IPP / клиент интернет-печати).

Общая шпаргалка по шаре: Ubuntu community — Samba CLI.

sudo systemctl restart smbd
testparm

Snap: зависшая установка

snap changes
sudo snap abort <ID>
sudo snap install <имя>

Подробнее: Ask Ubuntu (RU).

Процессы и порты

ps aux | grep java
ps -ef | grep java
pgrep -a java
pidof <имя>
kill -9 "$(pgrep -f pattern)"   # осторожно с шаблоном

Убить процесс по имени, не зацепив grep (трюк с квадратными скобками в шаблоне):

kill -9 $(ps -ef | grep '[t]arantool' | awk '{print $2}')

Время работы процесса:

ps -o etime= -p PID
ps -o etime= -p "$(pidof tarantool)"

Порты:

ss -lntu
ss -tulpn
netstat -tulpn   # пакет net-tools
netstat -a -n

Какой процесс слушает порт (Linux):

sudo ss -tulpn | grep ':PORT'
# или
sudo lsof -i :PORT

На Windows проверка порта через CMD: Windows.md.

Java

sudo apt install openjdk-17-jdk   # или 11, 21 — по задаче
sudo apt install openjdk-8-jdk    # если нужен именно 8
sudo update-alternatives --config java
sudo update-alternatives --config javac
whereis java
readlink -f "$(which java)"

Несколько JDK: Ask Ubuntu — switch Java versions.

Сертификат TLS (OpenSSL)

Проверка срока / цепочки (подставьте имя хоста в -servername, не URL):

echo | openssl s_client -servername www.google.com -connect www.google.com:443 2>/dev/null | openssl x509 -noout -dates

Кастомный хост и порт (пример из заметок — подставьте свой SNI и порт):

echo | openssl s_client -servername int-paymentauthapi-qvc-de-v1.qvcdev.qvc.net -connect localhost:8989 2>/dev/null

Обзоры: ShellHacks (RU), Habr.

Проверка срока сертификата из вывода s_client: можно добавить | openssl x509 -noout -dates.

Кодирование Base64

echo -n "your_secret" | base64
base64 -w 0 client.keystore.jks
base64 -w 0 client.truststore.jks
echo '<строка_base64>' | base64 -d

Ansible Vault (ссылка)

ansible-vault-tool.com

SSH-ключи: просмотр / шифрование

Просмотр/анализ ключей: KeyStore Explorer.

Как в ручных заметках (rsautl; в OpenSSL 3 может понадобиться pkeyutl):

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > ~/.ssh/id_rsa.pub.pem
echo "String to Encrypt" \
  | openssl rsautl -pubin -inkey ~/.ssh/id_rsa.pub.pem -encrypt -pkcs \
  | openssl enc -base64 \
  > string.txt
openssl enc -base64 -d -in string.txt \
  | openssl rsautl -inkey ~/.ssh/id_rsa -decrypt

Современный вариант:

echo "String" | openssl pkeyutl -encrypt -pubin -inkey ~/.ssh/id_rsa.pub.pem | openssl base64 -A
openssl base64 -d -in string.b64 | openssl pkeyutl -decrypt -inkey ~/.ssh/id_rsa

Shell (bash), cron, автозагрузка

Интерактивная история (history, !n), export / unset, nohup, crontab, heredoc, nano, стартовый cd в ~/.bashrc — в Bash.md.

Системное время в консоли:

date

Автозапуск при загрузке ОС: systemd (unit-файлы) или @reboot в crontab пользователя/рута.

Из заметок — правка /etc/rc.local (команды до строки exit 0). На многих дистрибутивах сервис rc-local нужно включить явно; иначе файл не выполняется.

Сжатые логи, почта, звук

zless file.log.gz
zless rules.2.log.zip
mail -s "Script for web server" user@example.com < ~/app.py   # подставьте свой адрес; логи exim4: /var/log/exim4/mainlog
speaker-test

Версия ОС и ядра

cat /proc/version
cat /etc/os-release
cat /etc/issue

Тесты: сеть, GPU, gitk

iperf3
speedtest-cli   # пакет отдельно; см. [addictivetips](https://www.addictivetips.com/ubuntu-linux-tips/run-speedtest-from-linux-terminal/)
sudo dmidecode -t 2
glxgears      # пакет mesa-utils
glmark2

Ошибка gitk с emoji / X11: Unix.SE. Из заметок: снять цветные emoji-шрифты Noto, если мешают X11:

sudo apt remove --purge fonts-noto-color-emoji

Восстановление разделов (TestDisk)

  1. Загрузка с live CD/USB (например Ubuntu).
  2. sudo apt-get install testdisk; если пакета нет — sudo add-apt-repository universe, sudo apt update.
  3. sudo testdisk → создать log → выбрать диск → Proceed.
  4. Тип таблицы (часто Intel, если раздел был под Windows).
  5. Analyze → Quick Search → выделить удалённый раздел (стрелки, тип T при необходимости).
  6. Enter → Write → перезагрузка.

PM2

Документация PM2

pm2 start "serve -s ./" --name my-app
pm2 ls
pm2 logs

Netdata

netdata/netdata

JMX (консоль к JMX)

Историческая страница: jmxsh (Google Code, архив). Ищите живой форк на GitHub или используйте jconsole / jmxterm.

Пример из заметок:

java -jar jmxsh.jar br_fix_quartz_jobs.jmxsh

Разное

Задача Команда
алиас / тип команды type ls
очистить экран Ctrl+L или clear
терминал (GUI) Ctrl+Alt+T
дисплей / масштаб xrandr, gnome-tweaks
резолвер DNS /etc/resolv.conf (часто управляется systemd-resolved)
просмотр / редактор / heredoc less, nano, heredoc — в Bash.md; кратко: в less выход q, v$EDITOR
сокращение для ls -l ll (если задан алиас в shell)
локальные бинарники для пользователя ~/bin или /usr/local/bin

EC2 / Ubuntu и PuTTYgen с машины Windows: Windows.md.

Samba: см. ссылку Ubuntu community выше; после правок sudo systemctl restart smbd.

Форматирование флешки: losst.ru, GParted.

NVIDIA: гайды сильно зависят от дистрибутива и ядра, например gist с шагами — сверяйте дату и версию ОС.

Клавиатура в GNOME: sudo apt install gnome-tweaks.

UNIX basics (Stanford): mally.stanford.edu

Глобальный PATH для всех пользователей (из заметок):

echo 'export PATH=$PATH:/folder_name/' | sudo tee -a /etc/bash.bashrc

scp (синтаксис и пример с losst.ru): losst.ru — scp; пример: scp -r /home/user/photos root@host:/root/.

Группы пользователя (из заметок): pingvinus — добавление в группуsudo usermod -a -G editorsgroup pingvinus.

Переименование расширений файлов в Windows (в т.ч. .bat с циклом): Windows.md.

RPM-семейство (кратко)

sudo yum install <пакет>
sudo yum remove <пакет>
sudo rpm -i package.rpm
sudo rpm -e <имя>
# современнее на Fedora/RHEL: dnf вместо yum