## Linux useful ###### top [Текущая директория сервера в браузере по адресу `http://server_ip:8000/`](#tip001) [Запустить графическое приложение через ssh соединение `-Y`](#tip002) [Отобразить все группы пользователя](#tip003) [SSH соединение через промежуточный хост](#tip004) [SSH соединение без проверки подлинности ключа и его сохранения](#tip005) [Изменить первичную группу пользователя в текщем сеансе](#tip006) [Сохранить man в pdf](#tip007) [Прервать выполнение команды через 5 секунд](#tip008) [Инфо об ОС](#tip009) [Выполнить команду несколько раз в цикле](#tip010) [Конвертировать изоражения heic в jpg](#tip011) [Конвертировать jpg в pdf](#tip012) [получить UUID диска для монтирования](#tip013) [Сброс пароля root](#tip014) [Проверить доступность диапазона хостов](#tip015) [Конвертировать pdf в png](#tip016) [Узнать загрузку процессора определённым процессом](#tip017) *** ###### tip001 :large_blue_circle: **Текущая директория сервера в браузере по адресу `http://server_ip:8000/`** ```bash python -m SimpleHTTPServer ``` [вверх](#top) *** ###### tip002 :large_blue_circle: **Запустить графическое приложение через ssh соединение `-Y`** *для текущей сессии* ```bash ssh -Y pi@server_ip ``` *для всех подключений* `ForwardX11 yes` в файле `/etc/ssh/ssh_config` [вверх](#top) *** ###### tip003 :large_blue_circle: **Отобразить все группы пользователя** ```bash da2001@Metromint:~$ groups da2001 da2001 : da2001 adm cdrom sudo dip plugdev kvm lpadmin sambashare wireshark libvirt ``` [вверх](#top) *** ###### tip004 :large_blue_circle: **SSH соединение через промежуточный хост** ```bash ssh -t pi@192.168.89.2 ssh da2001@192.168.1.8 ``` *сначала будет запрошен пароль от 192.168.89.2, затем от 192.168.1.8* [вверх](#top) *** ###### tip005 :large_blue_circle: **SSH соединение без проверки подлинности ключа и его сохранения** ```bash ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.2.1 ``` [вверх](#top) *** ###### tip006 :large_blue_circle: **Изменить первичную группу пользователя в текщем сеансе** ```bash [lisa@server1 ~]$ groups lisa account sales [lisa@server1 ~]$ newgrp sales [lisa@server1 ~]$ groups sales lisa account [lisa@server1 ~]$ touch file1 [lisa@server1 ~]$ ls -l total 0 -rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1 ``` *теперь все новые файлы будут принадлежать группе sales* [вверх](#top) *** ###### tip007 :large_blue_circle: **Сохранить man в pdf** ```bash man -t <программа> | ps2pdf - .pdf ``` ```bash man -t tar | ps2pdf - tar_man.pdf ``` [вверх](#top) *** ###### tip008 :large_blue_circle: **Прервать выполнение команды через 5 секунд** ```bash timeout 5s command ``` [вверх](#top) *** ###### tip009 :large_blue_circle: **Инфо об ОС** ```bash cat /etc/*release ``` ```bash cat /etc/issue ``` ```bash uname -a ``` ```bash cat /etc/lsb-release ``` ```bash da2001@Metromint:~$ neofetch ...-:::::-... da2001@Metromint .-MMMMMMMMMMMMMMM-. ---------------- .-MMMM`..-:::::::-..`MMMM-. OS: Linux Mint 20.1 x86_64 .:MMMM.:MMMMMMMMMMMMMMM:.MMMM:. Host: VivoBook_ASUSLaptop X570DD_M570DD 1.0 -MMM-M---MMMMMMMMMMMMMMMMMMM.MMM- Kernel: 5.8.0-59-generic `:MMM:MM` :MMMM:....::-...-MMMM:MMM:` Uptime: 1 day, 1 hour, 41 mins :MMM:MMM` :MM:` `` `` `:MMM:MMM: Packages: 2750 (dpkg) .MMM.MMMM` :MM. -MM. .MM- `MMMM.MMM. Shell: bash 5.0.17 :MMM:MMMM` :MM. -MM- .MM: `MMMM-MMM: Resolution: 1920x1080 :MMM:MMMM` :MM. -MM- .MM: `MMMM:MMM: DE: Cinnamon :MMM:MMMM` :MM. -MM- .MM: `MMMM-MMM: WM: Mutter (Muffin) .MMM.MMMM` :MM:--:MM:--:MM: `MMMM.MMM. WM Theme: Mint-Y-Dark (Mint-Y-Dark) :MMM:MMM- `-MMMMMMMMMMMM-` -MMM-MMM: Theme: Mint-Y-Darker [GTK2/3] :MMM:MMM:` `:MMM:MMM: Icons: Papirus-Dark [GTK2/3] .MMM.MMMM:--------------:MMMM.MMM. Terminal: gnome-terminal '-MMMM.-MMMMMMMMMMMMMMM-.MMMM-' CPU: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx (8) @ 2.100GHz '.-MMMM``--:::::--``MMMM-.' GPU: NVIDIA GeForce GTX 1050 Mobile '-MMMMMMMMMMMMM-' GPU: AMD ATI 05:00.0 Picasso ``-:::::-`` Memory: 4924MiB / 5952MiB ``` [вверх](#top) *** ###### tip010 :large_blue_circle: **Выполнить команду несколько раз в цикле** ```bash da2001@Metromint:~$ for i in {1..5}; do echo $i; done 1 2 3 4 5 ``` *выполнение скрипта с параметрами в цикле* ```bash for i in {1..20}; do ./wlt_start.py -c config_m716.cfg; done ``` [вверх](#top) *** ###### tip011 :large_blue_circle: **Конвертировать изоражения heic в jpg** ```bash sudo apt-get install libheif-examples ``` *для конвертации одного изображения* ```bash heif-convert IMG_1234.HEIC IMG_1234.jpg ``` *для конвертации всех изображений в папке* ```bash mkdir jpg for file in *.heic; do heif-convert $file ./jpg/${file/%.heic/.jpg}; done ``` [вверх](#top) *** ###### tip012 :large_blue_circle: **Конвертировать jpg в pdf** *необходим установленный ImageMagick* ```bash sudo apt install imagemagick ``` *для конвертации одного изображения* ```bash convert image.jpg out.pdf ``` *для конвертации нескольких изображений* ```bash convert image1.jpg image2.jpg image3.jpg out.pdf ``` ***если в процессе конвертации будет получено сообщение об ошибке*** ```bash convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408. ``` в файле `/etc/ImageMagick-7/policy.xml` необходимо изменить директиву доступа *название папки ImageMagick-7 может отличаться в зависимости от установленной версии* между тегами `` и `` добавить/отредактировать ```bash ``` [вверх](#top) *** ###### tip013 :large_blue_circle: **получить UUID диска для монтирования** **Вариант 1** ```bash lsblk -n -o uuid /dev/sda1 ``` -n - не выводить заголовки -o - отображаемое поле *таким образом, для раздела с ФС ext4, запись в fstab можно добавить таким образом* ```bash mkdir /mntdir UUID=`lsblk -n -o uuid /dev/sda1` sudo bash -c 'echo "UUID=$UUID /mntdir ext4 defaults 0 0" >> /etc/fstab' ``` **Вариант 2** ```bash [root@server1 ~]# blkid -o export /dev/sda2 | grep '^UUID' UUID=d056212f-b1ea-4bc5-ba4e-99d036e5531e ``` *таким образом, можно перенаправить вывод в `/etc/fstab` и руками дополнить параметры монтирования* ```bash blkid -o export /dev/sda2 | grep '^UUID' >> /etc/fstab ``` [вверх](#top) *** ###### tip014 :large_blue_circle: **Сброс пароля root** **CentOS/RedHat Linux** 1. В самом начале загрузки системы, когда появляется меню GRUB, необходимо нажать `e`, чтобы попасть в настройку загрузки 2. В строке загрузки ядра, которая начинается со слова `linux` в конец добавить `rd.break`, затем нажать Ctrl+x, для применения сделанных настроек и загрузки системы (внесенные изменения действуют только в текущей сессии загрузки) 3. После появления приглашения консоли необходимо получить доступ к образу системы ```bash mount -o remount,rw /sysroot ``` 4. Изменить корневой каталог ```bash chroot /sysroot ``` 5. Теперь можно изменить пароль root ```bash passwd ``` будет предложено ввести новый пароль дважды. 6. Поскольку на ранней стадии загрузки SELinux еще не был активирован, тип контекста в `/etc/shadow` будет перепутан. Если сейчас перезагрузиться, никто не сможет войти в систему. Поэтому необходимо убедиться, что тип контекста установлен правильно. Для этого на этом этапе нужно загрузить политику SELinux с помощью команды ```bash load_policy -i ``` 7. Теперь нужно вручную установить правильный тип контекста в `/etc/shadow`. ```bash chcon -t shadow_t /etc/shadow ``` **вместо 6,7 пунктов можно просто в корне создать файл `.autorelabel`** ```bash touch /.autorelabel ``` 8. Всё, после перезагрузки, у root будет новый пароль. *для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d* ```bash reboot -f ``` **Debian** 1. В самом начале загрузки системы, когда появляется меню GRUB, необходимо нажать `e`, чтобы попасть в настройку загрузки 2. В строке загрузки ядра, которая начинается со слова `linux` в конец добавить `rd.break`, затем нажать Ctrl+x, для применения сделанных настроек и загрузки системы (внесенные изменения действуют только в текущей сессии загрузки) 3. После появления приглашения консоли необходимо получить доступ к образу системы ```bash mount -o remount,rw / ``` 4. Теперь можно изменить пароль root ```bash passwd ``` будет предложено ввести новый пароль дважды. 5. Всё, после перезагрузки, у root будет новый пароль. *для перезагрузки в данном режиме необходимо дважды ввести `reboot -f` или Ctrl+d* ```bash reboot -f ``` [вверх](#top) *** ###### tip015 :large_blue_circle: **Проверить доступность диапазона хостов** ```bash for i in {10..13}; do ping -c 2 192.168.1.$i > /dev/null && echo 192.168.1.$i - доступен || echo 192.168.1.$i - НЕ доступен; done ``` ```bash [da2001@co1 ~]$ for i in {10..13}; do ping -c 2 192.168.1.$i > /dev/null && echo 192.168.1.$i - доступен || echo 192.168.1.$i - НЕ доступен; done 192.168.1.10 - доступен 192.168.1.11 - доступен 192.168.1.12 - доступен 192.168.1.13 - НЕ доступен ``` [вверх](#top) *** ###### tip016 :large_blue_circle: **Конвертировать pdf в png** ```bash pdftoppm input.pdf outputname -png ``` *в результате каждая страница в PDF будет сохранена в формате outputname-01.png, где 01 будет номером страницы* **Конвертировать одну страницу или диапазон** ```bash pdftoppm input.pdf outputname -png -f {page} -singlefile ``` *Измените `{page}` на номер страницы. Он проиндексирован как 1, поэтому `-f 1` будет первой страницей.* *Если вы хотите работать с диапазоном страниц, вы также можете указать номер для флага `-l` (последняя страница), поэтому при использовании `-f 1 -l 30` будут указаны страницы от 1 до 30.* **Указать разрешение преобразованного изображения** *Разрешение по умолчанию для этой команды составляет 150 точек на дюйм.* *Чтобы увеличить разрешение преобразованного PDF-файла, добавьте параметры `-rx` {разрешение} и `-ry` {разрешение}.* ```bash pdftoppm input.pdf outputname -png -rx 300 -ry 300 ``` [вверх](#top) *** ###### tip017 :large_blue_circle: **Узнать загрузку процессора определённым процессом** **ps** *по имени процесса* ```bash ps -C iperf -o %cpu= ``` *по номеру процесса* ```bash ps -p 23635 -o %cpu= ``` или ```bash ps -p $(pgrep iperf) -o %cpu= ``` **top** ```bash top -b -n 2 -d 0.2 -p PID_ID | tail -1 | awk '{print $9}' ``` **Нагрузить процессор для проверки** ```bash cat /dev/zero > /dev/null ``` [вверх](#top)