crappy commit

This commit is contained in:
Илья Макаров 2024-10-30 19:26:17 +03:00
parent 1cdc439e4e
commit 7eb6cdf61e
10 changed files with 310 additions and 4 deletions

31
db/POSTGRES.MD Normal file
View File

@ -0,0 +1,31 @@
[Cheat sheet](https://gist.github.com/Kartones/dd3ff5ec5ea238d4c546)
- `sudo -u postgres psql postgres`
- `CREATE DATABASE имя_базы_данных;`
- `\l` - просмотр списка бд
- `\q` - выход
---
- `\c имя_базы_данных [имя_пользователя]` - подключение к бд или из bash `psql -U username -d database_name`
- `\dt` - просмотр списка таблиц
- `\d [имя таблицы]` - показывает столбцы, типы данных и индексы
- `\dn` - список схем
- `\dt schema_name.*` - список таблиц в схеме
---
- `CREATE TABLE имя_таблицы (id SERIAL PRIMARY KEY, колонка1 тип, колонка2 тип, ...);` - создание таблицы
- `DROP TABLE имя_таблицы;`
- `CREATE USER имя_пользователя WITH PASSWORD 'пароль';`
- `CREATE ROLE имя_роли;`
- `GRANT ALL PRIVILEGES ON DATABASE имя_базы TO имя_пользователя;`
- `DROP USER имя_пользователя;`
- `DROP ROLE имя_роли;`
---
- `SELECT * FROM pg_stat_activity;` - просмотр текущий подключений
- `SELECT * FROM pg_locks;` - просмотр блокировок

View File

@ -2,3 +2,6 @@
- `git remote -v` - показывает все удалённые репозитории, которые связаны с локальным репозиторием - `git remote -v` - показывает все удалённые репозитории, которые связаны с локальным репозиторием
- `git branch -vv` - показывает upstream ветку - `git branch -vv` - показывает upstream ветку
- `rm -rf /path/to/repo/.git` - git больше не будет отслеживать эту директорию - `rm -rf /path/to/repo/.git` - git больше не будет отслеживать эту директорию
- `git config --global --list`
- `git config --global user.name "Ваше Имя"`
- `git config --global user.email "ваш_емейл@example.com"`

11
java/COMMANDS.MD Normal file
View File

@ -0,0 +1,11 @@
- `sudo alternatives --config java`
---
Версия java
- `jar tf bftDsudDownloader.jar`
- `sudo jar xf bftDsudDownloader.jar io/netty/util/Timer.class`
- `javap -verbose io/netty/util/Timer.class | grep "major version"`

0
java/NOTES.MD Normal file
View File

View File

@ -36,6 +36,21 @@
APT работает поверх более низкоуровневого инструмента `dpkg`, который непосредственно устанавливает .deb пакеты. APT работает поверх более низкоуровневого инструмента `dpkg`, который непосредственно устанавливает .deb пакеты.
- `sudo dpkg -i package_name.deb` - для установки `.deb` пакета - `sudo dpkg -i package_name.deb` - для установки `.deb` пакета
- `sudo apt --fix-broken install` - если возникли проблемы с зависимостями - `sudo apt --fix-broken install` - если возникли проблемы с зависимостями
---
- `rpm -ivh <package_name>.rpm` - установка rpm пакета
- `rpm -e <package_name>.rpm` - удаления пакета
- `rpm -Uvh <package_name>.rpm` - обновление пакета, если он не установленЮ он установится
- `rpm -qi <package_name>` - просмотр информации о пакете
- `rpm -V <package_name>` - проверка целостности пакета
- `rpm -ql <package_name>` - список файлов в пакете
- `dnf install <package_name>.rpm` - установка rpm пакета через dnf, dnf будет управлять зависимостями
- `dnf install https://example.com/package-file.rpm` - установка rpm пакета напрямую из ссылки
![](../static/image.png)
### Сеть ### Сеть
- `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh - `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh
- `ss -tulpn` - информация о текущих сетевых соединениях и портах - `ss -tulpn` - информация о текущих сетевых соединениях и портах
@ -48,6 +63,8 @@ APT работает поверх более низкоуровневого ин
- `speedtest-cli` - спидтест - `speedtest-cli` - спидтест
- `speedtest-cli --list` - список серверов - `speedtest-cli --list` - список серверов
- `speedtest-cli --server SERVER_ID` - `speedtest-cli --server SERVER_ID`
- `fuser 9095/tcp` - проверить доступность порта
### База ### База
- `cp -p` - сохранить атрибуты файлов (время создания, права, владельца) - `cp -p` - сохранить атрибуты файлов (время создания, права, владельца)
@ -95,6 +112,9 @@ APT работает поверх более низкоуровневого ин
- notice (5): Важные события. - notice (5): Важные события.
- info (6): Информационные сообщения. - info (6): Информационные сообщения.
- debug (7): Отладочные сообщения. - debug (7): Отладочные сообщения.
- `journalctl -xe`
- x (или --catalog) — выводит дополнительные объяснения (аннотации) к некоторым сообщениям журнала. Это помогает понять детали ошибок или предупреждений, предлагая описания и возможные решения, если такие есть.
- e (или --pager-end) — открывает журнал в режиме постраничного просмотра и сразу прокручивает его до конца, показывая самые последние записи.
- `smartctl -a /dev/sda` - смарт отчет диска, генерит сам диск - `smartctl -a /dev/sda` - смарт отчет диска, генерит сам диск
- `free -m` - оперативная память - `free -m` - оперативная память
@ -105,7 +125,7 @@ APT работает поверх более низкоуровневого ин
- `curl -Lv domain.ru` - получить html страницу - `curl -Lv domain.ru` - получить html страницу
- `curl -v telnet://127.0.0.1:22` - доступность порта - `curl -v telnet://127.0.0.1:22` - доступность порта
- `tcpdump -i any port 9100 -nn` - пакеты через этот порт ъ - `tcpdump -i any port 9100 -nn` - пакеты через этот порт
- `tar` - работа с архивами - `tar` - работа с архивами
- `-cvf` - создать архив - `-cvf` - создать архив
- `-xvf` - извлечь архив - `-xvf` - извлечь архив
@ -137,6 +157,14 @@ APT работает поверх более низкоуровневого ин
- `sudo reboot now` - перезагрузка системы - `sudo reboot now` - перезагрузка системы
- `sudo shutdown now` - выключить компьютер - `sudo shutdown now` - выключить компьютер
- `watch "some command"` - переодически запускает команду - `watch "some command"` - переодически запускает команду
- `lscpu` - информация о процессоре
- `lspci` - информация об устройствах подключенных к pci шине
- `lsusb`
- `/var/log/dmesg` - логи загрузки системы
- `pstree` - дерево процессов
- `/usr/lib/systemd` - директория с юнитами по умолчанию
### Разное ### Разное
- `alt .` - перебирает последние аргументы из истории команд (`history`), если аргументов нет, то перебирает сами команды - `alt .` - перебирает последние аргументы из истории команд (`history`), если аргументов нет, то перебирает сами команды
@ -181,7 +209,7 @@ APT работает поверх более низкоуровневого ин
- Показывает список всех подключенных устройств (жестких дисков, SSD и т.д.). - Показывает список всех подключенных устройств (жестких дисков, SSD и т.д.).
- Отображает размер дисков, типы разделов, точки монтирования. - Отображает размер дисков, типы разделов, точки монтирования.
- Полезно для диагностики, перед созданием или изменением разделов. - Полезно для диагностики, перед созданием или изменением разделов.
- `lsblk` - показывает дерево всех подключенных устройств, их разделы, точки монтирования. (`-f` - для более детальной информации) - `lsblk` - показывает дерево всех подключенных устройств, их разделы, точки монтирования. (`-f` - для более детальной информации о файловых системах, `-p` - полные пути к устройствам, `-d` - показывает только диски, без разделов, `-J` - результат в виде json)
- `sudo cfdisk <устройство>` - команда для работы с разделами диска - `sudo cfdisk <устройство>` - команда для работы с разделами диска
@ -212,4 +240,12 @@ mount [OPTIONS] <DEVICE> <MOUNTPOINT>
- `sudo mount -t ext4 /dev/sda1 /mnt` - подключить с указанием типа файловой системы - `sudo mount -t ext4 /dev/sda1 /mnt` - подключить с указанием типа файловой системы
--- ---
`df -Th` - информация о файловых системах и их типах - `df -Th` - информация о файловых системах и их типах
- `du -sh *` - размеры файлов и директорий в текущей
- `lsblk -d -o name,rota`
- 1 это HDD (жесткий диск).
- 0 это SSD (твердотельный накопитель)
> диск с названием sr* это cd привод
- `lsscsi` - отображает устройства, подключенные через интерфейс SCSI
- `cp /etc/fstab{,.bkp}` == `cp /etc/fstab /etc/fstab.bkp`

View File

@ -109,4 +109,49 @@ Swap-файл (или swap-раздел) — это специальная об
Если целевой файл удален, символическая ссылка становится «битой» и неработоспособной, так как она указывает на несуществующий путь. Если целевой файл удален, символическая ссылка становится «битой» и неработоспособной, так как она указывает на несуществующий путь.
Символические ссылки могут указывать на файлы или каталоги. Символические ссылки могут указывать на файлы или каталоги.
Работают между различными файловыми системами. Работают между различными файловыми системами.
Они легче по объему, поскольку содержат только путь к файлу, а не данные самого файла. Они легче по объему, поскольку содержат только путь к файлу, а не данные самого файла.
---
В файловой системе XFS иноды выделяются динамически, а вот в ext4 нет
---
Блочные устройства отправляют данные блоками, символьные потоков данных
---
Виртуальная файловая система — это файловая система, которая существует только в памяти и не хранит данные на диске. Примером является /proc, также известная как procfs (процессная файловая система).
- Не хранит данные на диске: Виртуальная файловая система отображает информацию, которая создаётся динамически при запросе и не сохраняется на постоянных носителях.
- Динамическое содержимое: Данные генерируются операционной системой в реальном времени. Например, содержимое файлов в /proc — это текущая информация о системе, процессах, памяти, конфигурациях и т.д., которая изменяется в зависимости от состояния системы.
Почему система виртуальная
- Отражение состояния системы: Виртуальные файловые системы, такие как /proc, работают как интерфейс для чтения и управления текущим состоянием системы и процессами. Эти файлы не сохраняют данные, а лишь отображают их.
- Экономия ресурсов: Так как информация хранится только в памяти, это позволяет быстро получать текущие данные, не записывая их на диск.
- `/sys`: Динамическая информация о подключённых устройствах и драйверах.
- `/dev`: Содержит устройства, создаваемые динамически
---
Динамическое создание: В большинстве современных систем устройства в /dev управляются с помощью udev (система управления устройствами), которая автоматически создаёт и удаляет файлы в зависимости от подключаемых устройств.
Нет данных на постоянных носителях: Данные о состоянии устройств хранятся в памяти, а сами файлы в /dev отображают текущие устройства системы.
Доступ через ядро: Когда обращаются к файлам в /dev, ядро перенаправляет запросы к соответствующим драйверам, позволяя операционной системе взаимодействовать с оборудованием и эмулированными устройствами.
---
`.wants`
Используется для слабых зависимостей. Если основной юнит запущен, он попытается запустить все юниты, указанные в его `.wants`, но не завершит работу, если какой-то из них не удастся запустить.
Каталог `.wants` создается автоматически, если для юнита добавляют зависимость с WantedBy=. Например, для `foo.service` можно создать `foo.service.wants/`, чтобы там указать зависимости, которые желательно иметь.
`.requires`
Используется для сильных зависимостей. Если основной юнит не может запустить одну из служб, указанных в `.requires`, запуск основного юнита тоже завершится с ошибкой.
Каталог `.requires` также создается при использовании директивы RequiredBy=, и его используют для критически необходимых зависимостей.

View File

@ -0,0 +1,27 @@
- `ps -ef | grep -v grep | grep postgres` - определяем, есть ли процесс постгрес
- `which psql` - есть ли в локальном окружении
- `ss -tulpn` - ищем порт на котором слушает постгрес
- `sudo docker ps` - смотрим, какие контейнеры запущены
- `docker ps --format "{{.Names}}"` - только имена контейнеров
- `sudo docker inspect <имя_контейнера> | grep postgres` - есть ли постгрес в контейнере
- `psql -V` или `/usr/bin/psql -V` - версия постгрес
- `psql -U postgres -c "SELECT pg_database.datname AS database_name, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;"` - смотрим базы и их размер
- `psql -U postgres -c "SELECT pg_size_pretty(SUM(pg_database_size(pg_database.datname))) AS total_size FROM pg_database;"` - общий размер всех баз
- `psql -U postgres -c "SHOW data_directory;"`
- `df -sh <path_to_data_dir>` - размер директории с данными баз, логами, конфигами, транзакциями и т.д.
- `psql -U postgres -c "SHOW port;"`
---
`sudo find / -type f -name "*.backup" -o -name "*.sql" -o -name "*.dump"` - этой командой можно поискать бэкапы
---
- `docker volume ls`
- `docker volume inspect <volume_name>`
- `docker inspect <container_name> | grep -i mount`
- `docker inspect <container_name> | grep -i volumes`
- `docker port <container_name>`
- `docker inspect <container_name> | grep -i port`

34
other/SYSTEMD.MD Normal file
View File

@ -0,0 +1,34 @@
### Создание юнита
- в каталоге для хранения unit файлов `cd /etc/systemd/system/` создаём файл с расширением `.service` для службы
- ```bash
sudo vi /etc/systemd/system/myservice.service
```
- пишем `unit` файл
```bash
[Unit]
Description=Описание сервиса
After=network.target # Определяет, когда сервис должен запускаться (например, после сети)
[Service]
ExecStart=/path/to/your/executable_or_script # Команда для запуска сервиса
ExecStop=/path/to/stop/script (необязательно) # Команда для остановки сервиса, если нужно
ExecReload=/path/to/reload/script (необязательно) # Команда для перезагрузки
User=your_user # Пользователь, от которого запустится сервис (если нужно)
Group=your_group # Группа (если нужно)
Restart=always # Политика перезапуска (может быть "on-failure", "always", "no")
RestartSec=5 # Задержка перед перезапуском
Environment="ENV_VAR=value" # Можно задавать переменные окружения
[Install]
WantedBy=multi-user.target # Указывает, что сервис должен запускаться в multi-user режиме (стандартный для большинства серверов)
```
> `multi-user` - многопользовательский текстовый режим
- `sudo systemctl daemon-reload` - обновить конфигурацию systemd
- `sudo systemctl enable myservice.service`
- `sudo systemctl start myservice.service`
- `sudo systemctl status myservice.service`

BIN
static/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

119
vebsrv/tomcat/TOMCAT.MD Normal file
View File

@ -0,0 +1,119 @@
[Документация](https://tomcat.apache.org/tomcat-8.5-doc/introduction.html)
- `wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.96/bin/apache-tomcat-9.0.96.tar.gz`
- `CATALINA_HOME` : представляет собой корень вашей установки Tomcat, например /home/tomcat/apache-tomcat-9.0.10 или C:\Program Files\apache-tomcat-9.0.10.
- `CATALINA_BASE` : представляет корень конфигурации времени выполнения определенного экземпляра Tomcat. Если вы хотите иметь несколько экземпляров Tomcat на одной машине, используйте свойство CATALINA_BASE.
- установка и настройка `tomcat`
- `cd /opt/`
- `wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz`
- `sudo useradd -r -m -U -d /opt/tomcat tomcat`
- `sudo chown -R tomcat:tomcat /opt/tomcat`
- `which java`
- `readlink -f /usr/bin/java`
- `cd /opt/tomcat/bin`
- `./startup.sh`
- **Создаём systemd unit**
- `sudo vi /etc/systemd/system/tomcat.service`
```bash
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=CATALINA_HOME=/opt/tomcat/
Environment=CATALINA_BASE=/opt/tomcat/
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
```
- `sudo systemctl daemon-reload`
- `sudo systemctl start tomcat`
- `sudo systemctl enable tomcat`
- `sudo systemctl status tomcat`
```
/opt/tomcat
├── conf
│ ├── server.xml # Основной файл конфигурации серверов и виртуальных хостов
│ ├── logging.properties # Общие настройки логирования
│ ├── [host1] # Каталог для настроек виртуального хоста host1 (опционально)
│ │ └── app1.xml # Конфигурация приложения для host1/app1
│ └── [host2] # Каталог для настроек виртуального хоста host2 (опционально)
│ └── app2.xml # Конфигурация приложения для host2/app2
├── logs # Общая директория для логов (или отдельные каталоги для каждого хоста)
│ ├── host1 # Логи виртуального хоста host1 (если настроено)
│ ├── host2 # Логи виртуального хоста host2 (если настроено)
│ └── catalina.out # Основной лог Tomcat
├── webapps # Общая папка для приложений (используется по умолчанию для всех виртуальных хостов)
│ ├── ROOT # Основное приложение по умолчанию
│ ├── examples # Пример приложения
│ └── [host-specific-apps]
│ ├── host1/app1 # Приложение app1 для host1
│ └── host2/app2 # Приложение app2 для host2
└── temp
└── work
└── bin
└── lib
```
Содержимое CATALINA_HOME в `/opt/tomcat`:
- `/bin` — скрипты для запуска и остановки Tomcat (startup.sh, catalina.sh)
- `/lib` — библиотеки, необходимые для работы сервера (catalina.jar, jasper.jar)
`CATALINA_BASE` — директория с конфигурациями, временными файлами и приложениями, которые специфичны для каждого экземпляра Tomcat. Для нескольких инстансов рекомендуется создать отдельный `CATALINA_BASE` для каждого инстанса, например:
`/etc/tomcat-instance1`, `/etc/tomcat-instance2` и т.д.
- `/conf` — конфигурационные файлы для инстанса (server.xml, web.xml, context.xml).
- `/webapps` — развернутые приложения и .war файлы для данного инстанса.
- `/logs` — папка с логами инстанса.
- `/temp` — временные файлы инстанса.
- `/work` — кешированные объекты и скомпилированные JSP для данного инстанса.
---
Про библиотеку **Logback** для логирования Java приложений
В logback.xml основные блоки конфигурации включают:
`<configuration>` — корневой блок файла, внутри которого настраиваются все остальные элементы.
`<appender>` — определяет, куда будут направляться логи (например, в файл, консоль, удалённый сервер):
- `ConsoleAppender` — вывод в консоль (обычно используется для отладки).
- `FileAppender` — запись логов в файл.
- `RollingFileAppender` — запись в файл с ротацией по размеру или дате.
- `SocketAppender` — отправка логов на удалённый сервер.
`<encoder>` — внутри аппендера определяет форматирование логов (например, шаблоны с датой, уровнем лога и сообщением).
`<root>` — задаёт общий уровень логгирования (например, INFO, DEBUG) и связывает его с аппендерами.
`<logger>` — настраивает уровень логгирования для отдельных классов или пакетов приложения (переопределяет `<root>`).
- `TRACE`: Самый детализированный уровень, для отладки.
- `DEBUG`: Для отладки, но с меньшей детализацией, чем TRACE.
- `INFO`: Обычные информационные сообщения, отображающие состояние приложения.
- `WARN`: Предупреждения о возможных проблемах.
- `ERROR`: Сообщения об ошибках, когда выполнение операции не удалось
WEB-INF/classes или src/main/resources
`<configuration scan="true" scanPeriod="30 seconds">`