Заметки на полях — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(дополнение)
м (оформление)
Строка 9: Строка 9:
 
Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод.  По умолчанию: 60
 
Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод.  По умолчанию: 60
  
    --summary-interval=<SEC>
+
--summary-interval=<SEC>
  
 
Задать максимальную общую скорость загрузки в байтах/сек. 0 значит неограниченно. Вы можете добавить K или M (1K = 1024, 1M = 1024K).
 
Задать максимальную общую скорость загрузки в байтах/сек. 0 значит неограниченно. Вы можете добавить K или M (1K = 1024, 1M = 1024K).
  
    --max-overall-download-limit
+
--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
+
# btrfs subvolume snapshot -r /mnt/@ /mnt/ss/@-ss-date-main
    # sync
+
# sync
    # btrfs send /mnt/ss/@-ss-date-main | zstd -16 -T0 -vv -o /files/.backups/root-distr-date-main.btrfs.zst
+
# 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
+
# zstd -d /files/.backups/root-distr-date-main.btrfs.zst | btrfs receive /path
    # sync
+
# 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 fi defrag -r /mnt
  
 
=== Перебалансировка системы ===
 
=== Перебалансировка системы ===
  
    # btrfs balance start /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
+
$ cdemu remove-device
  
 
добавить виртуальное cd/dvd-rom устройство
 
добавить виртуальное cd/dvd-rom устройство
  
    $ cdemu add-device
+
$ cdemu add-device
  
  
 
== chattr - изменение атрибутов файлов ==
 
== chattr - изменение атрибутов файлов ==
    # chattr +i /path/to/file
+
# chattr +i /path/to/file
    # chattr -i /path/to/file
+
# chattr -i /path/to/file
 
атрибут '''+i''' запрещает любое изменение, переименование и удаление файла/каталога, '''-i''' - разрешает.
 
атрибут '''+i''' запрещает любое изменение, переименование и удаление файла/каталога, '''-i''' - разрешает.
  
Строка 70: Строка 70:
 
Чтобы все вернуть, как было, нужно выполнить:
 
Чтобы все вернуть, как было, нужно выполнить:
  
    $ sudo dmsetup ls            - чтобы увидеть список таких носителей
+
$ sudo dmsetup ls            - чтобы увидеть список таких носителей
    $ sudo dmsetup remove_all    - чтобы удалить их
+
$ sudo dmsetup remove_all    - чтобы удалить их
  
  
Строка 78: Строка 78:
 
== exiftool ==
 
== exiftool ==
 
Удалить метаданные фото
 
Удалить метаданные фото
    $ exiftool -all= *
+
$ exiftool -all= *
  
    В росе нужно установить пакет perl-Image-ExifTool
+
В росе нужно установить пакет perl-Image-ExifTool
  
  
Строка 86: Строка 86:
 
Дефрагментация
 
Дефрагментация
  
    $ sudo e4defrag -c /    # анализ корневого раздела
+
$ sudo e4defrag -c /    # анализ корневого раздела
    $ sudo e4defrag /      # дефрагментация корневого раздела
+
$ sudo e4defrag /      # дефрагментация корневого раздела
  
 
Уменьшить размер зарезервированного места
 
Уменьшить размер зарезервированного места
  
    $ sudo tune2fs -m 0.1 /dev/sda1
+
$ 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 -name '*.zip'
  
 
найти исполняемые файлы и напечатать
 
найти исполняемые файлы и напечатать
  
    $ find /path -type f -perm /a=x
+
$ find /path -type f -perm /a=x
  
 
найти исполняемые файлы и сделать неисполняемыми
 
найти исполняемые файлы и сделать неисполняемыми
  
    $ find /path -type f -perm /a=x -exec chmod -x '{}' \;
+
$ find /path -type f -perm /a=x -exec chmod -x '{}' \;
  
 
найти все файлы и напечатать
 
найти все файлы и напечатать
  
    $ find /path -type f -print
+
$ find /path -type f -print
  
 
найти все файлы и вывести их кол-во
 
найти все файлы и вывести их кол-во
  
    $ find /path -type f -print | wc -l
+
$ 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 -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 -print0 | xargs --null md5sum > /tmp/listsums
  
 
найти файлы по шаблону и удалить их
 
найти файлы по шаблону и удалить их
  
    $ find /path -type f -name "*.directory" -exec rm {} \;
+
$ 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 . -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 -iname '*name-file*'  
  
 
рекурсивный расчет контрольных сумм файлов каталога
 
рекурсивный расчет контрольных сумм файлов каталога
  
    $ find /path -type f -print0 | xargs --null md5sum
+
$ find /path -type f -print0 | xargs --null md5sum
  
 
исключить из поиска определенную директорию
 
исключить из поиска определенную директорию
  
    $ find . -type f -not -path './dir/*' -iname name
+
$ 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 -print0 | xargs -0 chown -h 1000:1000
    # find /path -uid 500 -exec 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/
+
$ 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/
+
$ 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,20}" file.txt
    $ grep -oP "[^\n]{0,0}(искомая фраза)[^\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}(искомая фраза)" file.txt
    $ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,0}" file.txt
+
$ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,0}" file.txt
  
 
Показать 20 символов до и после искомой фразы
 
Показать 20 символов до и после искомой фразы
    $ grep -oP "[^\n]{0,20}(искомая фраза)[^\n]{0,20}" file.txt
+
$ 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 ""
+
$ 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=A,/home/username/Музыка
      media_dir=V,/home/username/Видео
+
media_dir=V,/home/username/Видео
      media_dir=P,/home/username/Изображения
+
media_dir=P,/home/username/Изображения
  
 
3. А после выполнить команду
 
3. А после выполнить команду
  
      $ sudo systemctl start minidlna.service
+
$ sudo systemctl start minidlna.service
  
  
Строка 205: Строка 207:
 
Установка
 
Установка
  
    $ sudo dnf install postgresql postgresql-contrib postgresql-server
+
$ sudo dnf install postgresql postgresql-contrib postgresql-server
  
 
Запуск сервера postgresql
 
Запуск сервера postgresql
  
    $ sudo systemctl start postgresql12.service
+
$ sudo systemctl start postgresql12.service
  
 
Создание базы данных
 
Создание базы данных
  
    $ sudo su postgres
+
$ sudo su postgres
    psql
+
psql
    CREATE USER test_user WITH password '123456qwerty';
+
CREATE USER test_user WITH password '123456qwerty';
    CREATE DATABASE test_database OWNER test_user;
+
CREATE DATABASE test_database OWNER test_user;
  
 
Удаление базы данных
 
Удаление базы данных
  
    DROP DATABASE test_db;
+
DROP DATABASE test_db;
  
 
Показывать номера строк при выводе в less
 
Показывать номера строк при выводе в less
  
    $ echo "\setenv PAGER 'less -S'" | tee -a ~/.psqlrc
+
$ 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) 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_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;
+
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
+
$ sudo dnf install qemu qemu-kvm
  
 
Проверить загрузочную флешку в qemu
 
Проверить загрузочную флешку в qemu
  
    $ sudo qemu-system-x86_64 -enable-kvm -m 1024 -usb /dev/sdb
+
$ 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»: Нет такого файла или каталога   
+
Не удалось подключить сокет к «/var/run/libvirt/virtqemud-sock»: Нет такого файла или каталога   
  
 
Чтобы решить эту проблему нужно запустить libvirtd:
 
Чтобы решить эту проблему нужно запустить libvirtd:
  
    $ sudo systemctl start 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/
+
$ 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 -avP -zz -e "ssh -p 123" user@host:/remote/forlder/file /local/folder/file
  
 
rsync работает быстрее, чем scp.
 
rsync работает быстрее, чем scp.
Строка 291: Строка 293:
 
Смотрим какой дисплей использует пользователь
 
Смотрим какой дисплей использует пользователь
  
    $ who
+
$ who
      user      tty1        date (:0)
+
  user      tty1        date (:0)
      user      pts/0        date (:0)
+
  user      pts/0        date (:0)
      :0
+
  :0
  
 
логинимся под тем пользователем
 
логинимся под тем пользователем
  
    $ su user
+
$ su user
 
отправляем сообщение
 
отправляем сообщение
  
    $ export DISPLAY=:0 && kdialog --msgbox "Сообщение"
+
$ export DISPLAY=:0 && kdialog --msgbox "Сообщение"
  
 
==== Список подключенных сеансов ====
 
==== Список подключенных сеансов ====
  
    $ netstat -tnpa | grep 'ESTABLISHED.*sshd'
+
$ netstat -tnpa | grep 'ESTABLISHED.*sshd'
    $ ps auxwww | grep sshd:
+
$ ps auxwww | grep sshd:
  
 
==== sshfs ====
 
==== sshfs ====
  
    $ sudo mkdir -v -m 755 /media/remote
+
$ sudo mkdir -v -m 755 /media/remote
    $ sshfs -C -p 123 user@host:/home /media/remote/
+
$ sshfs -C -p 123 user@host:/home /media/remote/
    $ fusermount -u /media/remote
+
$ fusermount -u /media/remote
  
  
Строка 318: Строка 320:
  
 
== tput ==
 
== tput ==
    tput bold            # Включить жирность
+
tput bold            # Включить жирность
    tput dim            # Затемнить текст
+
tput dim            # Затемнить текст
    tput smul            # Включить подчеркивание
+
tput smul            # Включить подчеркивание
    tput rmul            # Отключить подчеркивание
+
tput rmul            # Отключить подчеркивание
    tput rev            # Поменять цвет текста на цвет фона
+
tput rev            # Поменять цвет текста на цвет фона
    tput setaf 1-255    # Установить цвет текста
+
tput setaf 1-255    # Установить цвет текста
    tput setab 1-255    # Установить фон текста
+
tput setab 1-255    # Установить фон текста
    tput sgr0            # Вернуть к значениям по умолчанию
+
tput sgr0            # Вернуть к значениям по умолчанию
    tput blink          # мигающий текст
+
tput blink          # мигающий текст
  
  
Строка 334: Строка 336:
 
Преобразовать двоичный файл в текстовую форму
 
Преобразовать двоичный файл в текстовую форму
  
    uuencode -m input-file set-file-name >output-file
+
uuencode -m input-file set-file-name >output-file
    xxd -p input-file >output-file
+
xxd -p input-file >output-file
  
 
Преобразовать текст в двоичный файл
 
Преобразовать текст в двоичный файл
  
    uudecode -o output-file input-file
+
uudecode -o output-file input-file
    xxd -p -r input-file >output-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
+
$ 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
+
$ sudo usermod -a -G vboxsf $USER
  
  
Строка 367: Строка 369:
 
Чтобы в дельфине в контекстное меню добавить действия "Запустить в Yakuake" и "Открыть Yakuake в этой папке" надо сделать следующее:
 
Чтобы в дельфине в контекстное меню добавить действия "Запустить в Yakuake" и "Открыть Yakuake в этой папке" надо сделать следующее:
  
    $ git clone https://github.com/aplatanado/yakuake-session.git
+
$ git clone https://github.com/aplatanado/yakuake-session.git
    $ sudo cp yakuake-session /usr/bin
+
$ sudo cp yakuake-session /usr/bin
    $ cp ServiceMenus/yakuakehere.desktop ServiceMenus/yakuakerun.desktop ~/.local/share/kservices5/ServiceMenus/
+
$ 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 runCommand rtorrent # запуск команды rtorrent в текущей сессии
  
    $ qdbus org.kde.yakuake /yakuake/sessions addSession # добавление новой сессии
+
$ qdbus org.kde.yakuake /yakuake/sessions addSession # добавление новой сессии
    $ qdbus org.kde.yakuake /yakuake/sessions runCommand htop # запуск команды htop в добавленной сессии
+
$ qdbus org.kde.yakuake /yakuake/sessions runCommand htop # запуск команды htop в добавленной сессии
  
  
Строка 388: Строка 390:
 
Установка
 
Установка
  
    $ sudo dnf install zsh
+
$ 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)"
+
$ 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 /bin/zsh $USER (Роса)
    $ sudo usermod -s /usr/bin/zsh $USER (ubuntu)
+
$ sudo usermod -s /usr/bin/zsh $USER (ubuntu)
  
  
Строка 403: Строка 405:
 
Создание архива с паролем и скрытым содержимым (содержимое можно увидить только после ввода пароля)
 
Создание архива с паролем и скрытым содержимым (содержимое можно увидить только после ввода пароля)
  
    $ 7z a -mhe=on -p test.7z /directory/file
+
$ 7z a -mhe=on -p test.7z /directory/file
  
 
= 2 =
 
= 2 =
Строка 414: Строка 416:
 
Для этого необходимо воспользоваться командой tee:
 
Для этого необходимо воспользоваться командой tee:
  
    $ some_command parameters | tee -a /tmp/logfile.txt
+
$ some_command parameters | tee -a /tmp/logfile.txt
  
 
Или
 
Или
  
    $ script /tmp/logfile.txt
+
$ script /tmp/logfile.txt
  
  
Строка 429: Строка 431:
  
 
== Запись свободного места нулями ==
 
== Запись свободного места нулями ==
    $ cat /dev/zero >/path/file
+
$ cat /dev/zero >/path/file
    $ dd if=/dev/zero of=/path/file bs=4M  #или bs=4M-20M
+
$ dd if=/dev/zero of=/path/file bs=4M  #или bs=4M-20M
  
  
Строка 436: Строка 438:
  
 
== Изменить разрешение экрана ==
 
== Изменить разрешение экрана ==
    $ xrandr -s 1366x768
+
$ xrandr -s 1366x768
    $ xrandr -s 800x600
+
$ xrandr -s 800x600
  
  
Строка 475: Строка 477:
 
Нулевой код свидетельствует об успешном завершении, а ненулевой указывает на наличие ошибки<br />
 
Нулевой код свидетельствует об успешном завершении, а ненулевой указывает на наличие ошибки<br />
 
В большинстве интерпретаторов команд код завершения последней выполненной программы содержится в специальной переменной:<br />
 
В большинстве интерпретаторов команд код завершения последней выполненной программы содержится в специальной переменной:<br />
    $?
+
$?
  
  
 
== Конвертировать все .odt в директории в .pdf ==
 
== Конвертировать все .odt в директории в .pdf ==
    $ libreoffice --headless --convert-to pdf *.odt
+
$ libreoffice --headless --convert-to pdf *.odt
  
  
Строка 488: Строка 490:
 
== Настройка swappiness ==
 
== Настройка swappiness ==
 
==== Временные изменения: ====
 
==== Временные изменения: ====
    $ cat /proc/sys/vm/swappiness
+
$ cat /proc/sys/vm/swappiness
    $ sudo sysctl vm.swappiness=25
+
$ sudo sysctl vm.swappiness=25
    $ sudo sysctl vm.vfs_cache_pressure=1000
+
$ sudo sysctl vm.vfs_cache_pressure=1000
  
 
==== Постоянные в /etc/sysctl.conf: ====
 
==== Постоянные в /etc/sysctl.conf: ====
    vm.swappiness=25
+
vm.swappiness=25
    vm.vfs_cache_pressure=1000
+
vm.vfs_cache_pressure=1000
  
    Параметр vm.vfs_cache_pressure указывает размер используемого дискового кэша.
+
Параметр vm.vfs_cache_pressure указывает размер используемого дискового кэша.
    Если Вы обладатель компьютера с SSD-накопителем, то для Вас будет актуально значение 50
+
Если Вы обладатель компьютера с SSD-накопителем, то для Вас будет актуально значение 50
    Если HDD, то наибольшую отзывчивость можно получить при установке 1000
+
Если HDD, то наибольшую отзывчивость можно получить при установке 1000
  
  
Строка 504: Строка 506:
  
 
== Отправить весь вывод команды в /dev/null ==
 
== Отправить весь вывод команды в /dev/null ==
    $ command >/dev/null 2>&1
+
$ command >/dev/null 2>&1
  
  
Строка 519: Строка 521:
  
 
== Показать смонтированные ФС ==
 
== Показать смонтированные ФС ==
    $ findmnt --all
+
$ findmnt --all
  
  
 
== Посмотреть открытые порты ==
 
== Посмотреть открытые порты ==
    $ sudo lsof -Pni | grep LISTEN
+
$ sudo lsof -Pni | grep LISTEN
  
  
 
== Посмотреть информацию о релизе дистрибутива ==
 
== Посмотреть информацию о релизе дистрибутива ==
    $ cat /etc/os-release
+
$ cat /etc/os-release
  
  
Строка 535: Строка 537:
 
Продолжить выполнение можно следующим образом:
 
Продолжить выполнение можно следующим образом:
  
    $ jobs
+
$ jobs
  
 
смотрим номер приостановленной задачи
 
смотрим номер приостановленной задачи
  
    $ fg N
+
$ fg N
  
 
вместо N номер нужной задачи
 
вместо N номер нужной задачи
Строка 545: Строка 547:
  
 
== Получить прогресс выполнения dd ==
 
== Получить прогресс выполнения dd ==
    $ dd if=/dev/urandom of=/dev/null status=progress
+
$ dd if=/dev/urandom of=/dev/null status=progress
    $ watch -n 5 pkill -x -USR1 dd
+
$ watch -n 5 pkill -x -USR1 dd
    $ watch -n 5 'sudo kill -USR1 $(pgrep ^dd)'    # где -n 5 = 5 сек.
+
$ watch -n 5 'sudo kill -USR1 $(pgrep ^dd)'    # где -n 5 = 5 сек.
  
  
Строка 553: Строка 555:
  
 
== Распаковать rpm-пакет в терминале ==
 
== Распаковать rpm-пакет в терминале ==
    rpm2cpio packege-name.rpm | cpio -idm
+
$ 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 3 -f image2 'img%d.jpg'
    $ sudo ffmpeg -f video4linux2 -s 1024x768 -i /dev/video0 -vframes 1 -f image2 img-$(date +%s).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 -window root "/files/Pictures/Screenshots/$(date +%F_%s-%N).png"
  
 
Снимок области
 
Снимок области
    $ import "/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
+
$ 7z a ../extension-name.xpi * -r
  
 
Если нужно пересобрать расширение с тем же названием необходимо удалить перед этим действием старое.   
 
Если нужно пересобрать расширение с тем же названием необходимо удалить перед этим действием старое.   
Строка 582: Строка 584:
 
== Смена редактора по умолчанию в терминале ==
 
== Смена редактора по умолчанию в терминале ==
 
Установить редактор по умолчанию в терминале для всех пользователей
 
Установить редактор по умолчанию в терминале для всех пользователей
    $ echo "EDITOR=vim" | sudo tee -a /etc/environment
+
$ echo "EDITOR=vim" | sudo tee -a /etc/environment
  
 
Если после перезагрузки сеанса нет изменений, то нужно искать в /etc/ файлы с переменной EDITOR
 
Если после перезагрузки сеанса нет изменений, то нужно искать в /etc/ файлы с переменной EDITOR
    $ find /etc/ -type f -exec grep -H "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.sh
    /etc/profile.d/10-nano-as-default-editor.csh
+
/etc/profile.d/10-nano-as-default-editor.csh
  
 
их нужно удалить.
 
их нужно удалить.
Строка 600: Строка 602:
  
 
==== Rosa ====
 
==== Rosa ====
    # systemctl {enable|disable|start|stop|restart|status} name_service
+
# systemctl {enable|disable|start|stop|restart|status} name_service
  
 
==== Ubuntu ====
 
==== Ubuntu ====
    # service name_service {start|stop|restart|reload|force-reload|status}
+
# service name_service {start|stop|restart|reload|force-reload|status}
    # systemctl {enable|disable} name_service
+
# systemctl {enable|disable} name_service
  
  
 
== Узнать DE ==
 
== Узнать DE ==
    $ echo $XDG_CURRENT_DESKTOP
+
$ echo $XDG_CURRENT_DESKTOP
    $ echo $DESKTOP_SESSION
+
$ echo $DESKTOP_SESSION
    $ wmctrl -m
+
$ wmctrl -m
  
  
Строка 619: Строка 621:
  
 
== Удаление пароля пользователя ==
 
== Удаление пароля пользователя ==
    $ sudo passwd -d user
+
$ sudo passwd -d user
  
  
 
== Узнать дату создания или изменения файла ==
 
== Узнать дату создания или изменения файла ==
    $ stat -c %y file  --- время модификации
+
$ stat -c %y file  --- время модификации
    $ stat -c %w file  --- время создания, если поддерживается ФС
+
$ stat -c %w file  --- время создания, если поддерживается ФС
  
  
 
== Удалить запись из истории в zsh ==
 
== Удалить запись из истории в zsh ==
    $ LC_ALL=C sed -i '/$1/d' $HISTFILE
+
$ LC_ALL=C sed -i '/$1/d' $HISTFILE
  
  
 
== Убить все процессы пользователя ==
 
== Убить все процессы пользователя ==
    $ pgrep -u $USER | xargs kill -9
+
$ pgrep -u $USER | xargs kill -9
    $ pkill -9 -u $USER
+
$ pkill -9 -u $USER
  
  
 
== Узнать дату установки ОС Linux из свойств файловой системы ==
 
== Узнать дату установки ОС Linux из свойств файловой системы ==
    $ sudo tune2fs -l $(df / | tail -1 | cut -f1 -d' ') | grep created
+
$ sudo tune2fs -l $(df / | tail -1 | cut -f1 -d' ') | grep created
  
    В ext4 точно работает. В других фс не знаю.
+
В ext4 точно работает. В других фс не знаю.
  
 
== Узнать точную версию sata диска ==
 
== Узнать точную версию sata диска ==
    $ sudo smartctl -a /dev/sda | grep 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 mount /dev/sdd1 /mnt/sdd1
    $ sudo mksquashfs /mnt/sdd1 /home/user/name.squashfs
+
$ sudo mksquashfs /mnt/sdd1 /home/user/name.squashfs
  
 
Распаковываем на другой носитель
 
Распаковываем на другой носитель
    $ sudo unsquashfs -f -d /mnt/sdс1 /home/user/name.squashfs
+
$ sudo unsquashfs -f -d /mnt/sdс1 /home/user/name.squashfs
  
  

Версия 17:36, 5 января 2023

"$" — символ приглашения, означает что терминал готов принять команду от имени непривилегированного пользователя, т.е. не root.
"#" — означает что команду необходимо выполнять от пользователя root.

Источники: 1, 2


Содержание

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

ubuntu-wiki: btrfs#снимки

Дефрагментация

# btrfs fi defrag -r /mnt

Перебалансировка системы

# btrfs balance start /mnt

ubuntu-wiki: балансировка


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