Заметки на полях — различия между версиями
Noname (обсуждение | вклад) (дополнение) |
Noname (обсуждение | вклад) м (оформление) |
||
Строка 9: | Строка 9: | ||
Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод. По умолчанию: 60 | Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод. По умолчанию: 60 | ||
− | + | --summary-interval=<SEC> | |
Задать максимальную общую скорость загрузки в байтах/сек. 0 значит неограниченно. Вы можете добавить K или M (1K = 1024, 1M = 1024K). | Задать максимальную общую скорость загрузки в байтах/сек. 0 значит неограниченно. Вы можете добавить K или M (1K = 1024, 1M = 1024K). | ||
− | + | --max-overall-download-limit | |
Строка 24: | Строка 24: | ||
Создаем read-only снимок - send требует, чтобы отправляемый снимок был read-only | Создаем read-only снимок - send требует, чтобы отправляемый снимок был read-only | ||
− | + | # btrfs subvolume snapshot -r /mnt/@ /mnt/ss/@-ss-date-main | |
− | + | # sync | |
− | + | # btrfs send /mnt/ss/@-ss-date-main | zstd -16 -T0 -vv -o /files/.backups/root-distr-date-main.btrfs.zst | |
Восстановление из снимка будет производиться как-то так: | Восстановление из снимка будет производиться как-то так: | ||
− | + | # zstd -d /files/.backups/root-distr-date-main.btrfs.zst | btrfs receive /path | |
− | + | # sync | |
[https://help.ubuntu.ru/wiki/btrfs#снимки ubuntu-wiki: btrfs#снимки] | [https://help.ubuntu.ru/wiki/btrfs#снимки ubuntu-wiki: btrfs#снимки] | ||
Строка 37: | Строка 37: | ||
=== Дефрагментация === | === Дефрагментация === | ||
− | + | # btrfs fi defrag -r /mnt | |
=== Перебалансировка системы === | === Перебалансировка системы === | ||
− | + | # btrfs balance start /mnt | |
[https://help.ubuntu.ru/wiki/btrfs#балансировка ubuntu-wiki: балансировка] | [https://help.ubuntu.ru/wiki/btrfs#балансировка ubuntu-wiki: балансировка] | ||
Строка 50: | Строка 50: | ||
удалить виртуальное cd/dvd-rom устройство | удалить виртуальное cd/dvd-rom устройство | ||
− | + | $ cdemu remove-device | |
добавить виртуальное cd/dvd-rom устройство | добавить виртуальное cd/dvd-rom устройство | ||
− | + | $ cdemu add-device | |
== chattr - изменение атрибутов файлов == | == chattr - изменение атрибутов файлов == | ||
− | + | # chattr +i /path/to/file | |
− | + | # chattr -i /path/to/file | |
атрибут '''+i''' запрещает любое изменение, переименование и удаление файла/каталога, '''-i''' - разрешает. | атрибут '''+i''' запрещает любое изменение, переименование и удаление файла/каталога, '''-i''' - разрешает. | ||
Строка 70: | Строка 70: | ||
Чтобы все вернуть, как было, нужно выполнить: | Чтобы все вернуть, как было, нужно выполнить: | ||
− | + | $ sudo dmsetup ls - чтобы увидеть список таких носителей | |
− | + | $ sudo dmsetup remove_all - чтобы удалить их | |
Строка 78: | Строка 78: | ||
== exiftool == | == exiftool == | ||
Удалить метаданные фото | Удалить метаданные фото | ||
− | + | $ exiftool -all= * | |
− | + | В росе нужно установить пакет perl-Image-ExifTool | |
Строка 86: | Строка 86: | ||
Дефрагментация | Дефрагментация | ||
− | + | $ sudo e4defrag -c / # анализ корневого раздела | |
− | + | $ sudo e4defrag / # дефрагментация корневого раздела | |
Уменьшить размер зарезервированного места | Уменьшить размер зарезервированного места | ||
− | + | $ sudo tune2fs -m 0.1 /dev/sda1 | |
Строка 99: | Строка 99: | ||
найти исполняемые файлы с шаблоном *.zip | найти исполняемые файлы с шаблоном *.zip | ||
− | + | $ find /path -type f -perm /a=x -name '*.zip' | |
найти исполняемые файлы и напечатать | найти исполняемые файлы и напечатать | ||
− | + | $ find /path -type f -perm /a=x | |
найти исполняемые файлы и сделать неисполняемыми | найти исполняемые файлы и сделать неисполняемыми | ||
− | + | $ find /path -type f -perm /a=x -exec chmod -x '{}' \; | |
найти все файлы и напечатать | найти все файлы и напечатать | ||
− | + | $ find /path -type f -print | |
найти все файлы и вывести их кол-во | найти все файлы и вывести их кол-во | ||
− | + | $ find /path -type f -print | wc -l | |
найти файлы по шаблону и показать их суммарный размер | найти файлы по шаблону и показать их суммарный размер | ||
− | + | $ find /path -type f -name "Dana*" -print0 | xargs -0 du -ch | tail -n 1 | awk '{print $1}' | |
найти все файлы, подсчитать хеш-сумму и записать результат в файл | найти все файлы, подсчитать хеш-сумму и записать результат в файл | ||
− | + | $ find /path -type f -print0 | xargs --null md5sum > /tmp/listsums | |
найти файлы по шаблону и удалить их | найти файлы по шаблону и удалить их | ||
− | + | $ find /path -type f -name "*.directory" -exec rm {} \; | |
найти все файлы в текущем каталоге и получить все доступные ссылки из расширенных аттрибутов (необходимо установить пакет attr) | найти все файлы в текущем каталоге и получить все доступные ссылки из расширенных аттрибутов (необходимо установить пакет attr) | ||
− | + | $ find . -maxdepth 1 -type f -print0 | xargs -0 getfattr -d | grep -e 'origin.url' | awk -F "\"" '{print $2}' | |
не учитывать регистр при поиске | не учитывать регистр при поиске | ||
− | + | $ find /path -type f -iname '*name-file*' | |
рекурсивный расчет контрольных сумм файлов каталога | рекурсивный расчет контрольных сумм файлов каталога | ||
− | + | $ find /path -type f -print0 | xargs --null md5sum | |
исключить из поиска определенную директорию | исключить из поиска определенную директорию | ||
− | + | $ find . -type f -not -path './dir/*' -iname name | |
найти все файлы и каталоги принадлежащие указанному uid и изменить uid и gid | найти все файлы и каталоги принадлежащие указанному uid и изменить uid и gid | ||
− | + | # find /path -uid 500 -print0 | xargs -0 chown -h 1000:1000 | |
− | + | # find /path -uid 500 -exec chown -h 1000:1000 '{}' \; | |
find и rsync | find и rsync | ||
− | + | $ find . -type d -printf "%P\n" | rsync -avn --delete --exclude-from=- . ../output_dir/ | |
т.к. параметр **--delete** не работает с **--no-recursive** исключать директории нужно с помощью программы **find** и параметра **--exclude-from** | т.к. параметр **--delete** не работает с **--no-recursive** исключать директории нужно с помощью программы **find** и параметра **--exclude-from** | ||
− | + | $ rsync -avn --delete --exclude-from=<(find . -type d -printf "%P\n") . ../output_dir/ | |
<!-- G --> | <!-- G --> | ||
+ | |||
== grep == | == grep == | ||
Показать 20 символов после искомой фразы | Показать 20 символов после искомой фразы | ||
− | + | $ grep -oP "(искомая фраза)[^\n]{0,20}" file.txt | |
− | + | $ grep -oP "[^\n]{0,0}(искомая фраза)[^\n]{0,20}" file.txt | |
Показать 20 символов до искомой фразы | Показать 20 символов до искомой фразы | ||
− | + | $ grep -oP "[^\n]{0,20}(искомая фраза)" file.txt | |
− | + | $ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,0}" file.txt | |
Показать 20 символов до и после искомой фразы | Показать 20 символов до и после искомой фразы | ||
− | + | $ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,20}" file.txt | |
+ | |||
<!-- H --> | <!-- H --> | ||
Строка 179: | Строка 181: | ||
=== Отключение открытия Меню запуска приложений клавишей Super (Windows) === | === Отключение открытия Меню запуска приложений клавишей Super (Windows) === | ||
− | + | $ kwriteconfig5 --file kwinrc --group ModifierOnlyShortcuts --key Meta "" | |
Строка 189: | Строка 191: | ||
2. Потом нужно добавить в файл '''/etc/minidlna.conf''' под '''#media_dir=/opt''': | 2. Потом нужно добавить в файл '''/etc/minidlna.conf''' под '''#media_dir=/opt''': | ||
− | + | media_dir=A,/home/username/Музыка | |
− | + | media_dir=V,/home/username/Видео | |
− | + | media_dir=P,/home/username/Изображения | |
3. А после выполнить команду | 3. А после выполнить команду | ||
− | + | $ sudo systemctl start minidlna.service | |
Строка 205: | Строка 207: | ||
Установка | Установка | ||
− | + | $ sudo dnf install postgresql postgresql-contrib postgresql-server | |
Запуск сервера postgresql | Запуск сервера postgresql | ||
− | + | $ sudo systemctl start postgresql12.service | |
Создание базы данных | Создание базы данных | ||
− | + | $ sudo su postgres | |
− | + | psql | |
− | + | CREATE USER test_user WITH password '123456qwerty'; | |
− | + | CREATE DATABASE test_database OWNER test_user; | |
Удаление базы данных | Удаление базы данных | ||
− | + | DROP DATABASE test_db; | |
Показывать номера строк при выводе в less | Показывать номера строк при выводе в less | ||
− | + | $ echo "\setenv PAGER 'less -S'" | tee -a ~/.psqlrc | |
Вывести данные таблицы с конвертированием unixtime | Вывести данные таблицы с конвертированием unixtime | ||
− | + | select col1, to_timestamp(col2_with_unixtime) as col2_with_datetime, col3, col4, col5 from table; | |
− | + | select col1, to_timestamp(col2_with_unixtime) at time zone 'Time_Zone_Name' as col2_with_datetime, col3, col4, col5 from table; | |
Вывести данные таблицы и отразить дату и время в конкретном часовом поясе | Вывести данные таблицы и отразить дату и время в конкретном часовом поясе | ||
− | + | select col1, to_char(col2_with_datetime AT TIME ZONE 'Time_Zone_Name', 'YYYY.MM.DD hh24:mi') as col2_with_datetime, col3, col4 from table; | |
Имена временных зон можно узнать в документации [https://www.postgresql.org/docs/8.1/datetime-keywords.html postgresql]. | Имена временных зон можно узнать в документации [https://www.postgresql.org/docs/8.1/datetime-keywords.html postgresql]. | ||
Строка 243: | Строка 245: | ||
Установка | Установка | ||
− | + | $ sudo dnf install qemu qemu-kvm | |
Проверить загрузочную флешку в qemu | Проверить загрузочную флешку в qemu | ||
− | + | $ sudo qemu-system-x86_64 -enable-kvm -m 1024 -usb /dev/sdb | |
=== virt-manager === | === virt-manager === | ||
Virt-Manager не может подключиться к QEMU/KVM | Virt-Manager не может подключиться к QEMU/KVM | ||
− | + | Не удалось подключить сокет к «/var/run/libvirt/virtqemud-sock»: Нет такого файла или каталога | |
Чтобы решить эту проблему нужно запустить libvirtd: | Чтобы решить эту проблему нужно запустить libvirtd: | ||
− | + | $ sudo systemctl start libvirtd | |
Строка 263: | Строка 265: | ||
== rsync и ssh == | == rsync и ssh == | ||
=== Загрузка на удаленную машину === | === Загрузка на удаленную машину === | ||
− | + | $ rsync -av -zz -e "ssh -p 123" --progress --dry-run /local/folder/ user@host:/remote/forlder/ | |
* -a – Режим архивирования | * -a – Режим архивирования | ||
* -v – Выводить подробную информацию о процессе копирования | * -v – Выводить подробную информацию о процессе копирования | ||
Строка 280: | Строка 282: | ||
=== Загрузка с удаленной машины === | === Загрузка с удаленной машины === | ||
− | + | $ rsync -avP -zz -e "ssh -p 123" user@host:/remote/forlder/file /local/folder/file | |
rsync работает быстрее, чем scp. | rsync работает быстрее, чем scp. | ||
Строка 291: | Строка 293: | ||
Смотрим какой дисплей использует пользователь | Смотрим какой дисплей использует пользователь | ||
− | + | $ who | |
− | + | user tty1 date (:0) | |
− | + | user pts/0 date (:0) | |
− | + | :0 | |
логинимся под тем пользователем | логинимся под тем пользователем | ||
− | + | $ su user | |
отправляем сообщение | отправляем сообщение | ||
− | + | $ export DISPLAY=:0 && kdialog --msgbox "Сообщение" | |
==== Список подключенных сеансов ==== | ==== Список подключенных сеансов ==== | ||
− | + | $ netstat -tnpa | grep 'ESTABLISHED.*sshd' | |
− | + | $ ps auxwww | grep sshd: | |
==== sshfs ==== | ==== sshfs ==== | ||
− | + | $ sudo mkdir -v -m 755 /media/remote | |
− | + | $ sshfs -C -p 123 user@host:/home /media/remote/ | |
− | + | $ fusermount -u /media/remote | |
Строка 318: | Строка 320: | ||
== tput == | == tput == | ||
− | + | tput bold # Включить жирность | |
− | + | tput dim # Затемнить текст | |
− | + | tput smul # Включить подчеркивание | |
− | + | tput rmul # Отключить подчеркивание | |
− | + | tput rev # Поменять цвет текста на цвет фона | |
− | + | tput setaf 1-255 # Установить цвет текста | |
− | + | tput setab 1-255 # Установить фон текста | |
− | + | tput sgr0 # Вернуть к значениям по умолчанию | |
− | + | tput blink # мигающий текст | |
Строка 334: | Строка 336: | ||
Преобразовать двоичный файл в текстовую форму | Преобразовать двоичный файл в текстовую форму | ||
− | + | uuencode -m input-file set-file-name >output-file | |
− | + | xxd -p input-file >output-file | |
Преобразовать текст в двоичный файл | Преобразовать текст в двоичный файл | ||
− | + | uudecode -o output-file input-file | |
− | + | xxd -p -r input-file >output-file | |
чтобы преобразовать stdin нужно использовать xxd с параметром -ps | чтобы преобразовать stdin нужно использовать xxd с параметром -ps | ||
Строка 350: | Строка 352: | ||
Для подключения в виртуальной машине портов USB необходимо добавить пользователя хост-системы в группу vboxusers. Это можно сделать либо через графический интерфейс системы, либо в терминале командой: | Для подключения в виртуальной машине портов USB необходимо добавить пользователя хост-системы в группу vboxusers. Это можно сделать либо через графический интерфейс системы, либо в терминале командой: | ||
− | + | $ sudo usermod -a -G vboxusers $USER | |
Для включения режима USB 2.0 и USB 3.0 необходимо установить VirtualBox Extension Pack с сайта [https://www.virtualbox.org/] | Для включения режима USB 2.0 и USB 3.0 необходимо установить VirtualBox Extension Pack с сайта [https://www.virtualbox.org/] | ||
Строка 356: | Строка 358: | ||
Для работы с общими папками необходимо внести пользователя гостевой системы в группу vboxsf | Для работы с общими папками необходимо внести пользователя гостевой системы в группу vboxsf | ||
− | + | $ sudo usermod -a -G vboxsf $USER | |
Строка 367: | Строка 369: | ||
Чтобы в дельфине в контекстное меню добавить действия "Запустить в Yakuake" и "Открыть Yakuake в этой папке" надо сделать следующее: | Чтобы в дельфине в контекстное меню добавить действия "Запустить в Yakuake" и "Открыть Yakuake в этой папке" надо сделать следующее: | ||
− | + | $ git clone https://github.com/aplatanado/yakuake-session.git | |
− | + | $ sudo cp yakuake-session /usr/bin | |
− | + | $ cp ServiceMenus/yakuakehere.desktop ServiceMenus/yakuakerun.desktop ~/.local/share/kservices5/ServiceMenus/ | |
==== Удалить из yakuake кнопку закрытия программы ==== | ==== Удалить из yakuake кнопку закрытия программы ==== | ||
Строка 377: | Строка 379: | ||
==== Запуск программ в Yakuake при старте KDE ==== | ==== Запуск программ в Yakuake при старте KDE ==== | ||
− | + | $ qdbus org.kde.yakuake /yakuake/sessions runCommand rtorrent # запуск команды rtorrent в текущей сессии | |
− | + | $ qdbus org.kde.yakuake /yakuake/sessions addSession # добавление новой сессии | |
− | + | $ qdbus org.kde.yakuake /yakuake/sessions runCommand htop # запуск команды htop в добавленной сессии | |
Строка 388: | Строка 390: | ||
Установка | Установка | ||
− | + | $ sudo dnf install zsh | |
Установка oh-my-zsh | Установка oh-my-zsh | ||
− | + | $ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" | |
Чтобы сделать zsh шеллом по умолчанию нужно выполнить: | Чтобы сделать zsh шеллом по умолчанию нужно выполнить: | ||
− | + | $ sudo usermod -s /bin/zsh $USER (Роса) | |
− | + | $ sudo usermod -s /usr/bin/zsh $USER (ubuntu) | |
Строка 403: | Строка 405: | ||
Создание архива с паролем и скрытым содержимым (содержимое можно увидить только после ввода пароля) | Создание архива с паролем и скрытым содержимым (содержимое можно увидить только после ввода пароля) | ||
− | + | $ 7z a -mhe=on -p test.7z /directory/file | |
= 2 = | = 2 = | ||
Строка 414: | Строка 416: | ||
Для этого необходимо воспользоваться командой tee: | Для этого необходимо воспользоваться командой tee: | ||
− | + | $ some_command parameters | tee -a /tmp/logfile.txt | |
Или | Или | ||
− | + | $ script /tmp/logfile.txt | |
Строка 429: | Строка 431: | ||
== Запись свободного места нулями == | == Запись свободного места нулями == | ||
− | + | $ cat /dev/zero >/path/file | |
− | + | $ dd if=/dev/zero of=/path/file bs=4M #или bs=4M-20M | |
Строка 436: | Строка 438: | ||
== Изменить разрешение экрана == | == Изменить разрешение экрана == | ||
− | + | $ xrandr -s 1366x768 | |
− | + | $ xrandr -s 800x600 | |
Строка 475: | Строка 477: | ||
Нулевой код свидетельствует об успешном завершении, а ненулевой указывает на наличие ошибки<br /> | Нулевой код свидетельствует об успешном завершении, а ненулевой указывает на наличие ошибки<br /> | ||
В большинстве интерпретаторов команд код завершения последней выполненной программы содержится в специальной переменной:<br /> | В большинстве интерпретаторов команд код завершения последней выполненной программы содержится в специальной переменной:<br /> | ||
− | + | $? | |
== Конвертировать все .odt в директории в .pdf == | == Конвертировать все .odt в директории в .pdf == | ||
− | + | $ libreoffice --headless --convert-to pdf *.odt | |
Строка 488: | Строка 490: | ||
== Настройка swappiness == | == Настройка swappiness == | ||
==== Временные изменения: ==== | ==== Временные изменения: ==== | ||
− | + | $ cat /proc/sys/vm/swappiness | |
− | + | $ sudo sysctl vm.swappiness=25 | |
− | + | $ sudo sysctl vm.vfs_cache_pressure=1000 | |
==== Постоянные в /etc/sysctl.conf: ==== | ==== Постоянные в /etc/sysctl.conf: ==== | ||
− | + | vm.swappiness=25 | |
− | + | vm.vfs_cache_pressure=1000 | |
− | + | Параметр vm.vfs_cache_pressure указывает размер используемого дискового кэша. | |
− | + | Если Вы обладатель компьютера с SSD-накопителем, то для Вас будет актуально значение 50 | |
− | + | Если HDD, то наибольшую отзывчивость можно получить при установке 1000 | |
Строка 504: | Строка 506: | ||
== Отправить весь вывод команды в /dev/null == | == Отправить весь вывод команды в /dev/null == | ||
− | + | $ command >/dev/null 2>&1 | |
Строка 519: | Строка 521: | ||
== Показать смонтированные ФС == | == Показать смонтированные ФС == | ||
− | + | $ findmnt --all | |
== Посмотреть открытые порты == | == Посмотреть открытые порты == | ||
− | + | $ sudo lsof -Pni | grep LISTEN | |
== Посмотреть информацию о релизе дистрибутива == | == Посмотреть информацию о релизе дистрибутива == | ||
− | + | $ cat /etc/os-release | |
Строка 535: | Строка 537: | ||
Продолжить выполнение можно следующим образом: | Продолжить выполнение можно следующим образом: | ||
− | + | $ jobs | |
смотрим номер приостановленной задачи | смотрим номер приостановленной задачи | ||
− | + | $ fg N | |
вместо N номер нужной задачи | вместо N номер нужной задачи | ||
Строка 545: | Строка 547: | ||
== Получить прогресс выполнения dd == | == Получить прогресс выполнения dd == | ||
− | + | $ dd if=/dev/urandom of=/dev/null status=progress | |
− | + | $ watch -n 5 pkill -x -USR1 dd | |
− | + | $ watch -n 5 'sudo kill -USR1 $(pgrep ^dd)' # где -n 5 = 5 сек. | |
Строка 553: | Строка 555: | ||
== Распаковать rpm-пакет в терминале == | == Распаковать rpm-пакет в терминале == | ||
− | + | $ rpm2cpio pkg-name.rpm | cpio -idm | |
Строка 559: | Строка 561: | ||
== Сделать снимок с веб-камеры из терминала == | == Сделать снимок с веб-камеры из терминала == | ||
− | + | $ sudo ffmpeg -f video4linux2 -s 1024x768 -i /dev/video0 -vframes 3 -f image2 'img%d.jpg' | |
− | + | $ sudo ffmpeg -f video4linux2 -s 1024x768 -i /dev/video0 -vframes 1 -f image2 img-$(date +%s).jpg | |
Строка 566: | Строка 568: | ||
Снимок экрана | Снимок экрана | ||
− | + | $ import -window root "/files/Pictures/Screenshots/$(date +%F_%s-%N).png" | |
Снимок области | Снимок области | ||
− | + | $ import "/files/Pictures/Screenshots/$(date +%F_%s-%N).png" | |
== Собрать расширение из исходного кода для firefox == | == Собрать расширение из исходного кода для firefox == | ||
− | + | $ 7z a ../extension-name.xpi * -r | |
Если нужно пересобрать расширение с тем же названием необходимо удалить перед этим действием старое. | Если нужно пересобрать расширение с тем же названием необходимо удалить перед этим действием старое. | ||
Строка 582: | Строка 584: | ||
== Смена редактора по умолчанию в терминале == | == Смена редактора по умолчанию в терминале == | ||
Установить редактор по умолчанию в терминале для всех пользователей | Установить редактор по умолчанию в терминале для всех пользователей | ||
− | + | $ echo "EDITOR=vim" | sudo tee -a /etc/environment | |
Если после перезагрузки сеанса нет изменений, то нужно искать в /etc/ файлы с переменной EDITOR | Если после перезагрузки сеанса нет изменений, то нужно искать в /etc/ файлы с переменной EDITOR | ||
− | + | $ find /etc/ -type f -exec grep -H "EDITOR" '{}' \; | |
В Росе 2021.1 есть два файла которые мешают сменить редактор: | В Росе 2021.1 есть два файла которые мешают сменить редактор: | ||
− | + | /etc/profile.d/10-nano-as-default-editor.sh | |
− | + | /etc/profile.d/10-nano-as-default-editor.csh | |
их нужно удалить. | их нужно удалить. | ||
Строка 600: | Строка 602: | ||
==== Rosa ==== | ==== Rosa ==== | ||
− | + | # systemctl {enable|disable|start|stop|restart|status} name_service | |
==== Ubuntu ==== | ==== Ubuntu ==== | ||
− | + | # service name_service {start|stop|restart|reload|force-reload|status} | |
− | + | # systemctl {enable|disable} name_service | |
== Узнать DE == | == Узнать DE == | ||
− | + | $ echo $XDG_CURRENT_DESKTOP | |
− | + | $ echo $DESKTOP_SESSION | |
− | + | $ wmctrl -m | |
Строка 619: | Строка 621: | ||
== Удаление пароля пользователя == | == Удаление пароля пользователя == | ||
− | + | $ sudo passwd -d user | |
== Узнать дату создания или изменения файла == | == Узнать дату создания или изменения файла == | ||
− | + | $ stat -c %y file --- время модификации | |
− | + | $ stat -c %w file --- время создания, если поддерживается ФС | |
== Удалить запись из истории в zsh == | == Удалить запись из истории в zsh == | ||
− | + | $ LC_ALL=C sed -i '/$1/d' $HISTFILE | |
== Убить все процессы пользователя == | == Убить все процессы пользователя == | ||
− | + | $ pgrep -u $USER | xargs kill -9 | |
− | + | $ pkill -9 -u $USER | |
== Узнать дату установки ОС Linux из свойств файловой системы == | == Узнать дату установки ОС Linux из свойств файловой системы == | ||
− | + | $ sudo tune2fs -l $(df / | tail -1 | cut -f1 -d' ') | grep created | |
− | + | В ext4 точно работает. В других фс не знаю. | |
== Узнать точную версию sata диска == | == Узнать точную версию sata диска == | ||
− | + | $ sudo smartctl -a /dev/sda | grep SATA | |
Строка 655: | Строка 657: | ||
<!-- Ю --> | <!-- Ю --> | ||
<!-- Я --> | <!-- Я --> | ||
− | |||
<!-- A --> | <!-- A --> | ||
<!-- B --> | <!-- B --> | ||
Строка 662: | Строка 663: | ||
=== Создание рез. копии с помощью squashfs === | === Создание рез. копии с помощью squashfs === | ||
Делаем бэкап раздела sdd1 | Делаем бэкап раздела sdd1 | ||
− | + | $ sudo mount /dev/sdd1 /mnt/sdd1 | |
− | + | $ sudo mksquashfs /mnt/sdd1 /home/user/name.squashfs | |
Распаковываем на другой носитель | Распаковываем на другой носитель | ||
− | + | $ sudo unsquashfs -f -d /mnt/sdс1 /home/user/name.squashfs | |
Версия 17:36, 5 января 2023
Содержание
- 1 1
- 2 2
- 2.1 Видеть результат выполнения команды на экране, и одновременно писать его в файл
- 2.2 Запись свободного места нулями
- 2.3 Изменить разрешение экрана
- 2.4 Информация по пользовательским скриптам
- 2.5 Комбинации клавиш в терминале
- 2.6 Коды завершения программ
- 2.7 Конвертировать все .odt в директории в .pdf
- 2.8 Настройка swappiness
- 2.9 Отправить весь вывод команды в /dev/null
- 2.10 Отключение темы Plymouth в Росе
- 2.11 Показать смонтированные ФС
- 2.12 Посмотреть открытые порты
- 2.13 Посмотреть информацию о релизе дистрибутива
- 2.14 Приостановка выполнения команды в терминале
- 2.15 Получить прогресс выполнения dd
- 2.16 Распаковать rpm-пакет в терминале
- 2.17 Сделать снимок с веб-камеры из терминала
- 2.18 Создание снимков экрана из терминала
- 2.19 Собрать расширение из исходного кода для firefox
- 2.20 Смена редактора по умолчанию в терминале
- 2.21 Управление сервисами
- 2.22 Узнать DE
- 2.23 Управление группами в линукс
- 2.24 Удаление пароля пользователя
- 2.25 Узнать дату создания или изменения файла
- 2.26 Удалить запись из истории в zsh
- 2.27 Убить все процессы пользователя
- 2.28 Узнать дату установки ОС Linux из свойств файловой системы
- 2.29 Узнать точную версию sata диска
- 2.30 backups (резервные копии)
1
aria2c
Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод. По умолчанию: 60
--summary-interval=<SEC>
Задать максимальную общую скорость загрузки в байтах/сек. 0 значит неограниченно. Вы можете добавить K или M (1K = 1024, 1M = 1024K).
--max-overall-download-limit
btrfs
Создание резервной копии снимка btrfs
Создаем read-only снимок - send требует, чтобы отправляемый снимок был read-only
# btrfs subvolume snapshot -r /mnt/@ /mnt/ss/@-ss-date-main # sync # btrfs send /mnt/ss/@-ss-date-main | zstd -16 -T0 -vv -o /files/.backups/root-distr-date-main.btrfs.zst
Восстановление из снимка будет производиться как-то так:
# zstd -d /files/.backups/root-distr-date-main.btrfs.zst | btrfs receive /path # sync
Дефрагментация
# btrfs fi defrag -r /mnt
Перебалансировка системы
# btrfs balance start /mnt
cdemu
удалить виртуальное cd/dvd-rom устройство
$ cdemu remove-device
добавить виртуальное cd/dvd-rom устройство
$ cdemu add-device
chattr - изменение атрибутов файлов
# chattr +i /path/to/file # chattr -i /path/to/file
атрибут +i запрещает любое изменение, переименование и удаление файла/каталога, -i - разрешает.
dmsetup
После локальной сборки iso Росы (rosa2016.1) все не смонтированные носители дублируются в ФМ. В выводе команды lsblk эти носители имеют тип dm и имя osprober-linux-sda1. Чтобы все вернуть, как было, нужно выполнить:
$ sudo dmsetup ls - чтобы увидеть список таких носителей $ sudo dmsetup remove_all - чтобы удалить их
exiftool
Удалить метаданные фото
$ exiftool -all= *
В росе нужно установить пакет perl-Image-ExifTool
ext4
Дефрагментация
$ sudo e4defrag -c / # анализ корневого раздела $ sudo e4defrag / # дефрагментация корневого раздела
Уменьшить размер зарезервированного места
$ sudo tune2fs -m 0.1 /dev/sda1
find
найти исполняемые файлы с шаблоном *.zip
$ find /path -type f -perm /a=x -name '*.zip'
найти исполняемые файлы и напечатать
$ find /path -type f -perm /a=x
найти исполняемые файлы и сделать неисполняемыми
$ find /path -type f -perm /a=x -exec chmod -x '{}' \;
найти все файлы и напечатать
$ find /path -type f -print
найти все файлы и вывести их кол-во
$ find /path -type f -print | wc -l
найти файлы по шаблону и показать их суммарный размер
$ find /path -type f -name "Dana*" -print0 | xargs -0 du -ch | tail -n 1 | awk '{print $1}'
найти все файлы, подсчитать хеш-сумму и записать результат в файл
$ find /path -type f -print0 | xargs --null md5sum > /tmp/listsums
найти файлы по шаблону и удалить их
$ find /path -type f -name "*.directory" -exec rm {} \;
найти все файлы в текущем каталоге и получить все доступные ссылки из расширенных аттрибутов (необходимо установить пакет attr)
$ find . -maxdepth 1 -type f -print0 | xargs -0 getfattr -d | grep -e 'origin.url' | awk -F "\"" '{print $2}'
не учитывать регистр при поиске
$ find /path -type f -iname '*name-file*'
рекурсивный расчет контрольных сумм файлов каталога
$ find /path -type f -print0 | xargs --null md5sum
исключить из поиска определенную директорию
$ find . -type f -not -path './dir/*' -iname name
найти все файлы и каталоги принадлежащие указанному uid и изменить uid и gid
# find /path -uid 500 -print0 | xargs -0 chown -h 1000:1000 # find /path -uid 500 -exec chown -h 1000:1000 '{}' \;
find и rsync
$ find . -type d -printf "%P\n" | rsync -avn --delete --exclude-from=- . ../output_dir/
т.к. параметр **--delete** не работает с **--no-recursive** исключать директории нужно с помощью программы **find** и параметра **--exclude-from**
$ rsync -avn --delete --exclude-from=<(find . -type d -printf "%P\n") . ../output_dir/
grep
Показать 20 символов после искомой фразы
$ grep -oP "(искомая фраза)[^\n]{0,20}" file.txt $ grep -oP "[^\n]{0,0}(искомая фраза)[^\n]{0,20}" file.txt
Показать 20 символов до искомой фразы
$ grep -oP "[^\n]{0,20}(искомая фраза)" file.txt $ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,0}" file.txt
Показать 20 символов до и после искомой фразы
$ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,20}" file.txt
KDE
Отключение открытия Меню запуска приложений клавишей Super (Windows)
$ kwriteconfig5 --file kwinrc --group ModifierOnlyShortcuts --key Meta ""
minidlna
1. Сначала необходимо установить пакет minidlna.
2. Потом нужно добавить в файл /etc/minidlna.conf под #media_dir=/opt:
media_dir=A,/home/username/Музыка media_dir=V,/home/username/Видео media_dir=P,/home/username/Изображения
3. А после выполнить команду
$ sudo systemctl start minidlna.service
postgresql. psql.
Установка
$ sudo dnf install postgresql postgresql-contrib postgresql-server
Запуск сервера postgresql
$ sudo systemctl start postgresql12.service
Создание базы данных
$ sudo su postgres psql CREATE USER test_user WITH password '123456qwerty'; CREATE DATABASE test_database OWNER test_user;
Удаление базы данных
DROP DATABASE test_db;
Показывать номера строк при выводе в less
$ echo "\setenv PAGER 'less -S'" | tee -a ~/.psqlrc
Вывести данные таблицы с конвертированием unixtime
select col1, to_timestamp(col2_with_unixtime) as col2_with_datetime, col3, col4, col5 from table; select col1, to_timestamp(col2_with_unixtime) at time zone 'Time_Zone_Name' as col2_with_datetime, col3, col4, col5 from table;
Вывести данные таблицы и отразить дату и время в конкретном часовом поясе
select col1, to_char(col2_with_datetime AT TIME ZONE 'Time_Zone_Name', 'YYYY.MM.DD hh24:mi') as col2_with_datetime, col3, col4 from table;
Имена временных зон можно узнать в документации postgresql.
qemu
Установка
$ sudo dnf install qemu qemu-kvm
Проверить загрузочную флешку в qemu
$ sudo qemu-system-x86_64 -enable-kvm -m 1024 -usb /dev/sdb
virt-manager
Virt-Manager не может подключиться к QEMU/KVM
Не удалось подключить сокет к «/var/run/libvirt/virtqemud-sock»: Нет такого файла или каталога
Чтобы решить эту проблему нужно запустить libvirtd:
$ sudo systemctl start libvirtd
rsync и ssh
Загрузка на удаленную машину
$ rsync -av -zz -e "ssh -p 123" --progress --dry-run /local/folder/ user@host:/remote/forlder/
- -a – Режим архивирования
- -v – Выводить подробную информацию о процессе копирования
- -zz – Сжимать файлы перед передачей
- -e – Использовать другой транспорт
- --bwlimit – Ограничение скорости KBytes в секунду
- --progress – Выводить прогресс передачи файла
- --dry-run – Показать, что скопируется
- -c – Проверка контрольных сумм для файлов
- -b – Создание резервной копии
- -u – Не перезаписывать более новые файлы
- --delete – Удалять файлы которых нет в источнике
- --exclude – Исключить файлы по шаблону
- --include – Не исключать файлы по шаблону
- -P – эквивалент для --partial --progress
Загрузка с удаленной машины
$ rsync -avP -zz -e "ssh -p 123" user@host:/remote/forlder/file /local/folder/file
rsync работает быстрее, чем scp.
ssh
Отправить сообщение на экран пользователя
Смотрим какой дисплей использует пользователь
$ who user tty1 date (:0) user pts/0 date (:0) :0
логинимся под тем пользователем
$ su user
отправляем сообщение
$ export DISPLAY=:0 && kdialog --msgbox "Сообщение"
Список подключенных сеансов
$ netstat -tnpa | grep 'ESTABLISHED.*sshd' $ ps auxwww | grep sshd:
sshfs
$ sudo mkdir -v -m 755 /media/remote $ sshfs -C -p 123 user@host:/home /media/remote/ $ fusermount -u /media/remote
tput
tput bold # Включить жирность tput dim # Затемнить текст tput smul # Включить подчеркивание tput rmul # Отключить подчеркивание tput rev # Поменять цвет текста на цвет фона tput setaf 1-255 # Установить цвет текста tput setab 1-255 # Установить фон текста tput sgr0 # Вернуть к значениям по умолчанию tput blink # мигающий текст
uuencode/uudecode, xxd
Преобразовать двоичный файл в текстовую форму
uuencode -m input-file set-file-name >output-file xxd -p input-file >output-file
Преобразовать текст в двоичный файл
uudecode -o output-file input-file xxd -p -r input-file >output-file
чтобы преобразовать stdin нужно использовать xxd с параметром -ps
virtualbox
Для подключения в виртуальной машине портов USB необходимо добавить пользователя хост-системы в группу vboxusers. Это можно сделать либо через графический интерфейс системы, либо в терминале командой:
$ sudo usermod -a -G vboxusers $USER
Для включения режима USB 2.0 и USB 3.0 необходимо установить VirtualBox Extension Pack с сайта [1]
Для работы с общими папками необходимо внести пользователя гостевой системы в группу vboxsf
$ sudo usermod -a -G vboxsf $USER
yakuake
Добавить действия в дельфине
Чтобы в дельфине в контекстное меню добавить действия "Запустить в Yakuake" и "Открыть Yakuake в этой папке" надо сделать следующее:
$ git clone https://github.com/aplatanado/yakuake-session.git $ sudo cp yakuake-session /usr/bin $ cp ServiceMenus/yakuakehere.desktop ServiceMenus/yakuakerun.desktop ~/.local/share/kservices5/ServiceMenus/
Удалить из yakuake кнопку закрытия программы
Нужно закомментировать в файле title.skin выбранной темы блок QuitButton. В ConfigButton значению x присвоить 30, а в FocusButton - 53. Скины yakuake в Росе находятся в каталоге /usr/share/yakuake/skins
Запуск программ в Yakuake при старте KDE
$ qdbus org.kde.yakuake /yakuake/sessions runCommand rtorrent # запуск команды rtorrent в текущей сессии
$ qdbus org.kde.yakuake /yakuake/sessions addSession # добавление новой сессии $ qdbus org.kde.yakuake /yakuake/sessions runCommand htop # запуск команды htop в добавленной сессии
zsh
Установка
$ sudo dnf install zsh
Установка oh-my-zsh
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Чтобы сделать zsh шеллом по умолчанию нужно выполнить:
$ sudo usermod -s /bin/zsh $USER (Роса) $ sudo usermod -s /usr/bin/zsh $USER (ubuntu)
7z
Создание архива с паролем и скрытым содержимым (содержимое можно увидить только после ввода пароля)
$ 7z a -mhe=on -p test.7z /directory/file
2
Видеть результат выполнения команды на экране, и одновременно писать его в файл
Для этого необходимо воспользоваться командой tee:
$ some_command parameters | tee -a /tmp/logfile.txt
Или
$ script /tmp/logfile.txt
Запись свободного места нулями
$ cat /dev/zero >/path/file $ dd if=/dev/zero of=/path/file bs=4M #или bs=4M-20M
Изменить разрешение экрана
$ xrandr -s 1366x768 $ xrandr -s 800x600
Информация по пользовательским скриптам
Если нужно чтобы скрипты были доступны сразу нескольким пользователям их нужно раскладывать по:
- сами скрипты класть в /usr/local/bin/
- иконки (если необходимы) в /usr/local/share/icons/name-script/
- desktop файлы в /usr/local/share/applications/name-script
Если для одного то в:
- скрипты в ~/bin или в $PATH добавить ~/.local/bin
- иконки в ~/.local/share/icons/
- desktop файлы в ~/.local/share/applications/
Комбинации клавиш в терминале
- ctrl+l -- очистить экран (bash, zsh)
- ctrl+a -- перейти в начало строки (bash, zsh)
- ctrl+e -- перейти в конец строки (bash, zsh)
- ctrl+u -- вырезать все слева от курсора (bash, zsh удаляет всю строку)
- ctrl+k -- вырезать все справа от курсора (bash, zsh)
- ctrl+w -- вырезать слово слева от курсора (bash, zsh)
- ctrl+y -- вставить вырезанный текст (bash, zsh)
- ctrl+d -- если строка пуста - завершить текущий сеанс в терминале, иначе - удалить символ справа от курсора (bash, zsh)
- ctrl+r -- поиск по ранее запущенным командам (bash, zsh)
- ctrl+shift+- -- отменить последнее действие (bash, zsh)
- ctrl+x+e -- открыть текстовый редактор для изменения введенной строки (bash, zsh)
- alt+u -- перевести текст после курсора в верхний регистр (bash, zsh)
- alt+d -- удалить слово после курсора (bash, zsh)
- alt+backspace -- удалить слово перед курсором (bash, zsh)
- alt+. -- вставить последний аргумент из предыдущей команды (bash, zsh)
Коды завершения программ
Нулевой код свидетельствует об успешном завершении, а ненулевой указывает на наличие ошибки
В большинстве интерпретаторов команд код завершения последней выполненной программы содержится в специальной переменной:
$?
Конвертировать все .odt в директории в .pdf
$ libreoffice --headless --convert-to pdf *.odt
Настройка swappiness
Временные изменения:
$ cat /proc/sys/vm/swappiness $ sudo sysctl vm.swappiness=25 $ sudo sysctl vm.vfs_cache_pressure=1000
Постоянные в /etc/sysctl.conf:
vm.swappiness=25 vm.vfs_cache_pressure=1000
Параметр vm.vfs_cache_pressure указывает размер используемого дискового кэша. Если Вы обладатель компьютера с SSD-накопителем, то для Вас будет актуально значение 50 Если HDD, то наибольшую отзывчивость можно получить при установке 1000
Отправить весь вывод команды в /dev/null
$ command >/dev/null 2>&1
Отключение темы Plymouth в Росе
<=2016.1
Чтобы отключить использование графической заставки при старте системы, необходимо удалить в файле /etc/default/grub в GRUB_CMDLINE_LINUX_DEFAULT параметры quiet и splash=silent.
2021.1
Нужно в /etc/default/grub quiet и splash=silent заменить на plymouth.enable=0. Если хочется видеть строки загрузки, то splash=silent надо удалить, а вместо quiet поставить verbose.
Показать смонтированные ФС
$ findmnt --all
Посмотреть открытые порты
$ sudo lsof -Pni | grep LISTEN
Посмотреть информацию о релизе дистрибутива
$ cat /etc/os-release
Приостановка выполнения команды в терминале
Приостановка делается сочетанием клавиш Ctrl+Z
Продолжить выполнение можно следующим образом:
$ jobs
смотрим номер приостановленной задачи
$ fg N
вместо N номер нужной задачи
Получить прогресс выполнения dd
$ dd if=/dev/urandom of=/dev/null status=progress $ watch -n 5 pkill -x -USR1 dd $ watch -n 5 'sudo kill -USR1 $(pgrep ^dd)' # где -n 5 = 5 сек.
Распаковать rpm-пакет в терминале
$ rpm2cpio pkg-name.rpm | cpio -idm
Сделать снимок с веб-камеры из терминала
$ sudo ffmpeg -f video4linux2 -s 1024x768 -i /dev/video0 -vframes 3 -f image2 'img%d.jpg' $ sudo ffmpeg -f video4linux2 -s 1024x768 -i /dev/video0 -vframes 1 -f image2 img-$(date +%s).jpg
Создание снимков экрана из терминала
Снимок экрана
$ import -window root "/files/Pictures/Screenshots/$(date +%F_%s-%N).png"
Снимок области
$ import "/files/Pictures/Screenshots/$(date +%F_%s-%N).png"
Собрать расширение из исходного кода для firefox
$ 7z a ../extension-name.xpi * -r
Если нужно пересобрать расширение с тем же названием необходимо удалить перед этим действием старое.
Ссылка где можно подписать расширение для работы в ff: https://addons.mozilla.org/ru/developers/
Смена редактора по умолчанию в терминале
Установить редактор по умолчанию в терминале для всех пользователей
$ echo "EDITOR=vim" | sudo tee -a /etc/environment
Если после перезагрузки сеанса нет изменений, то нужно искать в /etc/ файлы с переменной EDITOR
$ find /etc/ -type f -exec grep -H "EDITOR" '{}' \;
В Росе 2021.1 есть два файла которые мешают сменить редактор:
/etc/profile.d/10-nano-as-default-editor.sh /etc/profile.d/10-nano-as-default-editor.csh
их нужно удалить.
Управление сервисами
Rosa
# systemctl {enable|disable|start|stop|restart|status} name_service
Ubuntu
# service name_service {start|stop|restart|reload|force-reload|status} # systemctl {enable|disable} name_service
Узнать DE
$ echo $XDG_CURRENT_DESKTOP $ echo $DESKTOP_SESSION $ wmctrl -m
Управление группами в линукс
drakuser -- Гуй в kde (может и в других de)
usermod -- инструмент в терминале
Удаление пароля пользователя
$ sudo passwd -d user
Узнать дату создания или изменения файла
$ stat -c %y file --- время модификации $ stat -c %w file --- время создания, если поддерживается ФС
Удалить запись из истории в zsh
$ LC_ALL=C sed -i '/$1/d' $HISTFILE
Убить все процессы пользователя
$ pgrep -u $USER | xargs kill -9 $ pkill -9 -u $USER
Узнать дату установки ОС Linux из свойств файловой системы
$ sudo tune2fs -l $(df / | tail -1 | cut -f1 -d' ') | grep created
В ext4 точно работает. В других фс не знаю.
Узнать точную версию sata диска
$ sudo smartctl -a /dev/sda | grep SATA
backups (резервные копии)
Создание рез. копии с помощью squashfs
Делаем бэкап раздела sdd1
$ sudo mount /dev/sdd1 /mnt/sdd1 $ sudo mksquashfs /mnt/sdd1 /home/user/name.squashfs
Распаковываем на другой носитель
$ sudo unsquashfs -f -d /mnt/sdс1 /home/user/name.squashfs