Какая программа использует порт 4005(ps port)
$ lsof -i :4005 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 3973653 agis 53u IPv4 518855933 0t0 TCP *:4005 (LISTEN)
Самое быстрое копирование директорий между хостами
date && tar -C ./agis -c . | pigz | ssh agis@192.168.0.8 tar -C /data/backup/agis -zx && date date && tar -C ./agis -c . | pigz | ssh agis@192.168.0.8 cp -i /dev/stdin /000/agis.tgz && date
pigz — сокращение от Parallel Implementation of GZip (параллельная реализация GZip), это полная замена GZip, способная использовать несколько процессоров (нескольких ядер) при сжатии данных.
Сбросить или обновить пароль пользователя linux
- Загрузиться с флешки (live cd ubuntu)
- Примонтировать файловую систему root: mount /dev/sda2 /mnt
- Изменить root файловой системы: chroot /mnt
- Поменять пароль пользователя: passwd agis
- Перегрузить: reboot
Глобально заменить в файлах текст
Во всех xml файлах заменить 43103 на 41303
sed -i 's|43103|41303|g' ./*.xml
sed -i 's|-ust|-taldyk|g' */.env
Во всех config файлах заменить /data/agis/agis-bil-config на ./agis-bil-config
sed -i 's|/data/agis/agis-bil-config|./agis-bil-config|g' ./*.config
В файле list.txt
sed -i 's|BIND_VOLUME=/data/agis/agis-bil-config|BIND_VOLUME=./agis-bil-config|g' ./list.txt sed -i 's|-aktau|-ust|g' ./*.env
Вывод содержимого всех .env файлов
Для вывода содержимого всех.env
файлов в текущей директории и всех её поддиректориях, с указанием названия директории и файла, можно использовать следующую команду bash:
find . -name "*.env" -print0 | while IFS= read -r -d '' file; do echo "Directory: $(dirname "$file")"; echo "File: $(basename "$file")"; cat "$file"; echo; done Directory: ./agis-is File: .env CONTAINER_NAME=agis-is-aktau BIND_VOLUME=../agis-scada-config PORT_EXPOSE_NAME=3000 Directory: ./agis-mes-odata File: .env CONTAINER_NAME=agis-mes-odata-aktau BIND_VOLUME=./ PORT_NAME=33382 PORT_EXPOSE_NAME=3000 TIME_ZONE=Asia/AlmatyДля того чтобы ограничить вывод содержимым файлов .env только строками, содержащими PORT_NAME, можно немного изменить команду, добавив фильтрацию с помощью grep
find . -name "*.env" -print0 | while IFS= read -r -d '' file; do echo "Directory: $(dirname "$file")" echo "File: $(basename "$file")" grep 'PORT_NAME' "$file" echo done
Как в Linux создать или увеличить файл подкачки (Swap)
swapon --show #Создаю сам файл, который будет использоваться в качестве файла Swap (подкачки): sudo fallocate -l 10G /swapfile sudo chmod 600 /swapfile #Форматируем этот файл в swap: sudo mkswap /swapfile #И включаем новый файл подкачки: sudo swapon /swapfile swapon --show cat /etc/fstab /swapfile none swap defaults 0 0 /swapfile none swap sw 0 0Приоритет, когда 2 файла. Для этого используйте параметр pri=, например так:
cat /etc/fstab /swapfile none swap defaults,pri=100 0 0 /dev/sda1 none swap defaults,pri=10 0 0Или установить значения приоритета в командной строке:
sudo swapoff /swapfile sudo swapon --priority 100 /swapfile
SFTP FTP
Using the -p flag preserves the timestamps of the source:
sftp> mget -p *
TAR
Распаковка конкретных файлов
Из архива tar, tar.gz или tar.bz2 можно извлечь как все файлы, так и один конкретный файл, указав имя файла:
tar xvf mnt.tar file1.txt
Аналогично, можно указать несколько имен файлов, разделенных пробелом, чтобы извлечь их вместе за один переход.
tar xvf mnt.tar file1.txt file2.txt file3.txt
Исключение определенных файлов
может быть обязательным при создании архивов tar. Этого можно достичь с помощью флага –exclude.
tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -czf mnt.tgz dir/
tar --exclude="agis-asa/db" --exclude="agis-asa/agis-scada-config/logs" -czf agis-asa.tgz agis-asa/
tar --exclude="agis-asa/db" --exclude="agis-asa/agis-scada-config/logs" --exclude="agis-asa/agis-scada-config/.tilecache" -czf agis-asa.tgz agis-asa/
tar --exclude="db" --exclude="old" --exclude="agis-zander202" --exclude="agis-zander-401-server" --exclude="agis-scada-config/logs" -czf mnt.tgz ./
tar --exclude="555" -czf mnt.tgz 000/
Распаковка с помощью маски
tar xvf mnt.tar --wildcards "file*"
Добавлять новые файлы
В существующий несжатый архив можно добавлять новые файлы используя флаг r или –append с новыми именами файлов или шаблоном подстановочных символов (помните, что это работает только с несжатыми TAR-файлами, а не со сжатыми форматами tar.gz или tar.bz2):
tar rvf mnt.tar file-new*
Удаление определенных файлов
Удаление определенных файлов из архива tar возможно с помощью флага –delete, как показано ниже (сравните список tar до и после удаления файлов):
tar –delete -f mnt.tar file1.txt file2.txt file3.txt
Извлечь содержимое в определенную папку
Если вы хотите извлечь содержимое в определенную папку вместо текущего каталога, используйте флаг -C с указанием пути к каталогу, как показано ниже:
tar xvf mnt.tar -C new-directory/
Поиск любых изменений между файлами
Можно использовать флаг –diff или d для поиска любых изменений между файлами в архиве tar и файлами в файловой системе. Вот пример, который запускает diff один раз, когда файл внутри архива и снаружи был один и тот же. Если запустить команду снова после обновления файла, то можно увидеть разницу в выходных данных.
tar dvf mnt.tar file4.txt
More…
Rsync
echo $(date +"%d-%m-%Y %T") backup user >> /var/services/homes/backup/backup.log /usr/bin/rsync -aze "ssh -p 22" user@remote-host:/home/user /var/services/homes/backup/
user@remote-host:/home/user – создаст /var/services/homes/backup/user и скопирует содержимое user
user@remote-host:/home/user/ – скопирует содержимое user в /var/services/homes/backup/
Rsync – это remote sync или удаленная синхронизация, является средством удаленной и локальной синхронизации файлов. Он использует алгоритм, который минимизирует объем копируемых данных, перемещая только те части файлов, которые были изменены.
sudo apt-get install rsync
rsync -options /source/ /destination/
Закрывающий слэш
Когда вы указываете путь к директории в качестве источника, обращайте внимание на закрывающий слэш – символ / в конце имени директории. Закрывающий слэш означает “внутреннее содержимое”. Например, если в конце /source/ есть слэш, rsync скопирует содержимое /source/ в /destination/. Но если слэша в /source не будет, то rsync создаст директорию dir внутри /destination/ и скопирует все содержимое /source/ в /destination/source/. При этом, наличие или отсутствие закрывающего слэша в имени директории, в которую будет происходить копирование, значения не имеет.
Ключ -r обеспечивает рекурсивную синхронизацию каталогов.
Вместо опции -r чаще всего на практике используют опцию -a. Опция позволяет выполнять рекурсивную синхронизацию, сохраняет символические ссылки, специальные файлы и файлы устройств, время модификации, группу, владельца и права.
-a, –archive archive mode; equals -rlptgoD (no -H,-A,-X)
Синхронизация удаленной системы
Синхронизация с удаленным каталогом выполняется по аналогии с синхронизацией локальных каталогов. Используйте команду в следующем формате:
rsync -a ~/directory1 username@remote_host:destination_directory
В терминах git данную операцию можно назвать push. Операцию аналогичную pull также можно выполнить:
rsync -a username@remote_host:/home/username/directory directory1
Если вы передаете файлы, которые еще не были сжаты, например, текстовые файлы, то включить сжатие можно с помощью опции -z:
rsync -az source destination
Для отображения процесса синхронизации можно использовать флаг -P:
rsync -azP source destination
Основные ключи:
-a, режим архивирования, включает ключи -rlptgoD;
-r, каталоги копируются рекурсивно;
-l, копировать символические ссылки «как есть», то есть rsync не будет следовать по ним, обращаясь к файлам;
-p, сохранение прав доступа к файлам;
-t, сохранение времени модификации файлов;
-g, -o, сохранение владельца и группы файла;
-D, сохранение файлов устройств и специальных файлов;
-u, режим обновления, пропускаются файлы на получателе, имеющие более позднюю дату модификации, чем в источнике;
-v, выводит имена копируемых файлов;
-q, не выводит сообщения об ошибках;
-z, включение режим сжатия;
-P, отображение прогресса при копировании;
-с, проверка файлов по контрольной сумме, а по размеру и дате модификации. Дополнительная нагрузка на процессор, сильно увеличивает время синхронизации;
—ignore-errors, продолжение копирования и удаления даже после появления ошибок;
—max-delete, максимальное число удаляемых за один раз файлов и каталогов;
—files-from=FILE, задается список файлов и директорий для копирования в файле;
-e ssh, использование при копировании ssh;
—bwlimit=KBPS, ограничение скорости копирования.
/usr/bin/rsync -rz -e "ssh -p 2566" /data/backup/ dump@192.168.66.87:/var/services/homes/dump/backup/agis_dump/backup/
Открытые порты
Netstat — широко используемый инструмент для сбора информации о сетевой подсистеме Linux. Вы можете использовать его для вывода всех открытых портов следующим образом:
$ sudo netstat -ltup
Флаг -l указывает netstat вывести все прослушивающие сокеты (сокет это ip + порт), -t показывает все TCP-соединения, -u отображает все соединения UDP, а -p позволяет выводить имя приложения/программы, прослушивающее порт.
Подавлять ошибки в bash
find / -name file2find 2>/dev/null
https подключение с помощью CURL из командной строки
Добавить флаг -k к вызову, чтобы разрешить небезопасные соединения
curl -k https://129.10.1.10:30345
Проверка версии Ubuntu из терминала
$ lsb_release -a
Grep
Чтобы не выводить все строки с совпадением, а вывести только имя файла, нужно воспользоваться конструкцией (https://eternalhost.net/base/vps-vds/bash-rabota-so-strokami):
$ grep -I "devir" */*/package.* node_modules/common-tools/package.json: "url": "http://git.devir.kz:10080/root/common-tools.git" node_modules/communication-layer/package.json: "url": "http://git.devir.kz/root/communication-layer.git" node_modules/data-layer/package.json: "url": "http://git.devir.kz:10080/root/data-layer.git" node_modules/zander-data-models/package.json: "url": "http://git.devir.kz:10080/root/zander-data-models.git" node_modules/zander-data-models/package.json: "data-layer": "git+http://git.devir.kz:10080/root/data-layer.git" node_modules/zander-support/package.json: "url": "http://git.devir.kz:10080/root/zander-support.git"
Nano. Замена. Жмем ALT+R или Ctrl
Вводим, что ищем, затем на что меняем. Клавишей Y мы подтверждаем одну замену, а клавишей A — заменить все.
Systemd (systemctl): управление автозагрузкой служб в Linux
В большистве популярных современных популярных дистрибутивов Linux (CentOS 7, RHEL, Debian, Fedora и Ubuntu) в качестве демона автозагрузки вместо init.d используется systemd. Systemd – менеджер системы и служб Linux, используется для запуска других демонов и управления ими в процессе работы, использует unit-файлы из /etc/systemd/system (init.d использовал скрипты из каталога /etc/init.d/). Systemd позволяет распараллелить запуск служб в процессе загрузки ОС, тем самым ускоряя запуск.
Для управления system используется команда systemctl.
Для начала, после загрузки системы, мы проверим список юнитов, которые в данный момент добавлены в systemd:
# systemctl list-units UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automount P sys-devices-pci0000:17-0000:17:00.0-0000:18:00.0-0000:19:03.0-0000:1a:00.0-net-eno1.device loaded active plugged Ethernet Connection X722 for 10GbE SFP+ sys-devices-pci0000:17-0000:17:00.0-0000:18:00.0-0000:19:03.0-0000:1a:00.1-net-eno2.device loaded active plugged Ethernet Connection X722 for 10GbE SFP+ sys-devices-pci0000:17-0000:17:00.0-0000:18:00.0-0000:19:03.0-0000:1a:00.2-net-eno3.device loaded active plugged Ethernet Connection X722 for 1GbE sys-devices-pci0000:17-0000:17:00.0-0000:18:00.0-0000:19:03.0-0000:1a:00.3-net-eno4.device loaded active plugged Ethernet Connection X722 for 1GbE sys-devices-pci0000:17-0000:17:02.0-0000:1c:00.0-host0-target0:2:0-0:2:0:0-block-sda-sda1.device loaded active plugged AVAGO 1 sys-devices-pci0000:17-0000:17:02.0-0000:1c:00.0-host0-target0:2:0-0:2:0:0-block-sda-sda2.device loaded active plugged AVAGO 2 sys-devices-pci0000:17-0000:17:02.0-0000:1c:00.0-host0-target0:2:0-0:2:0:0-block-sda-sda3.device loaded active plugged AVAGO 3 sys-devices-pci0000:17-0000:17:02.0-0000:1c:00.0-host0-target0:2:0-0:2:0:0-block-sda.device loaded active plugged AVAGO
Список unit-файлов можно получить командой:
# systemctl list-unit-files
Данная команда отобразит все доступные юнит-файлы (не зависимо от того, были они загружены в systemd после загрузки ОС или нет).
Чтобы вывести список активных сервисов и их состояние, выполните:
# systemctl list-units -t service
Следующая команда выведет список юнитов, которые загрузил или пытался загрузить systemd. Так как после запуска некоторые юниты могут стать неактивными, с помощью флага —all вы получите полный список.
# systemctl list-units --all
Как видим из списка, здесь отображаются даже сервисы, которые не были найдены на диске «not-found».
Использую данную команду, вы можете добавить и другие флаги, например:
—state — используется для определения состояния демона Load, Active, Sub
—type — позволяет фильтровать юниты по их типу.
Примеры:
выведет список только активных юнитов
# systemctl list-units --all --state=active
выведет список юнитов, которые являются сервисом.
# systemctl list-units —type=service
Добавление сервиса в systemd
Для управления сервисами в systemd используется особый синтаксис. После имени серверсв в конце нужно указывать .service. Например:
команда добавит в автозагрузку веб-сервер nginx
systemctl enable nginx.service
Данная команда создаст символическую ссылку на копию файла, указанного в команде сервиса, в директории автозапуска systemd.
Чтобы посмотреть добавлен тот или иной сервис в автозагрузку, можно проверить его статус:
# systemctl status nginx.service
При выводе нужно обратить внимание на строку:
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Значение enabled означает что данный сервис загружается автоматически (добавлен в автозагрузку). Если сервис не загружается автоматом, здесь буде указано disabled.
Удаление сервиса из systemd
Вы можете удалить сервис из автозагрузки, чтобы он не запускался после старта Linux (при этом сам сервис с сервера не удаляется). Чтобы удалить сервис из автозагрузки, выполните команду:
# systemctl disable нужный_сервис
Например, чтобы удалить из автозагрузки nginx, выполните:
# systemctl disable nginx.service Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service # systemctl disable gitlab-runner.service Removed /etc/systemd/system/multi-user.target.wants/gitlab-runner.service.
После выполнения команды, симлинк на файл сервиса будет удален из директории systemd. Можно проверить, есть ли юнит в автозагрузке:
# systemctl is-enabled sshd
Systemd: маскировка юнитов
В моей практике встречались «вредные» сервисы, которые после удаления их из автозагрузки, все равно там оставались и запускались после рестарта ОС. Чтобы решить этот вопрос, можно замаскировать сервис:
# systemctl mask nginx.service
И после этого, он вообще не будет запускаться, ни вручную, ни после перезагрузки ОС:
Created symlink from /etc/systemd/system/nginx.service to /dev/null. # service nginx restart Redirecting to /bin/systemctl restart nginx.service Failed to restart nginx.service: Unit is masked.
Снять маску можно командой:
# systemctl unmask nginx.service Removed symlink /etc/systemd/system/nginx.service.
Это работает, если встречается ошибка
# systemctl start vsftpd Failed to start vsftpd.service: Unit vsftpd.service is masked.
Если после маскировки сервиса, вы проверите юнит-файлы, то увидите, что сервис помечен как замаскированный (состояние masked):
Таким нехитрым способом, можно избавить себя от удаления сервиса, даже если он не удаляется из автозагрузки systemd.
systemctl list-units
To list all loaded services on your system (whether active; running, exited or failed, use the list-units subcommand and –type switch with a value of service.
# systemctl list-units –type=service
OR
# systemctl –type=service
And to list all loaded but active services, both running and those that have exited, you can add the –state option with a value of active, as follows.
# systemctl list-units –type=service –state=active
OR
# systemctl –type=service –state=active
But to get a quick glance of all running services (i.e all loaded and actively running services), run the following command.
# systemctl list-units –type=service –state=running
OR
# systemctl –type=service –state=running
http://rus-linux.net/MyLDP/boot/systemd_5_masking_units.html
grub восстановление
mount /dev/sda /mnt
mount –bind /dev /mnt/dev
mount –bind /dev/pts /mnt/dev/pts
mount –bind /proc /mnt/proc
mount –bind /sys /mnt/sys
chroot /mnt
grub-install /dev/sda
grub-install –rechek /dev/sda
update-grub
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev/pts
umount /mnt/dev
umount /mnt
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won’t be possible.
grub-install: error: embedding is not possible, but this is required for cross-disk install
ВОССТАНОВЛЕНИЕ ЗАГРУЗЧИКА GRUB 2 В LINUX UBUNTU
Администраторы и пользователи Linux Ubuntu иногда сталкиваются с проблемой восстановления/переустановки загрузчика Grub 2. Типичные ситуации, которые приводят к необходимости восстановления загрузчика — это инсталляция второй операционной системы, случайное повреждение вследствие неосторожности и т.п.
Если система вдруг перестала загружаться, не стоит отчаиваться. Восстановить загрузчик Grub 2 можно с помощью Live CD или Live USB с операционной системой Linux Ubuntu.
ПОДГОТОВКА
Загрузитесь с Live CD или USB. Определите, если не знаете или не уверены, номер раздела жёсткого диска, используемого в качестве корневого. Сделать этом можно с помощью утилиты Disks, входящей в поставку Linux Ubuntu, или любым другим удобным способом. Например, /dev/sda2, /dev/sdb1. Обозначим раздел диска, используемый в качестве корневого восстанавливаемой системы, как /dev/sdXY, где X — это буква, обозначающая жёсткий диск, например, a, b, c и т.д., а Y — это номер корневого раздела.
ВОССТАНОВЛЕНИЕ
Смонтируйте корневой раздел /dev/sdXY восстанавливаемой системы в директорию /mnt Ubuntu Live, выполнив в терминале команду:
sudo mount /dev/sdXY /mnt
Далее нам потребуется создать синонимы в дереве файловой системы для некоторых директорий из Live Ubuntu. Для этого необходимо выполнить в терминале последовательно следующие команды:
sudo mount –bind /dev /mnt/dev
sudo mount –bind /dev/pts /mnt/dev/pts
sudo mount –bind /proc /mnt/proc
sudo mount –bind /sys /mnt/sys
Последнее действие позволит нам обращаться к директории /dev через путь /mnt/dev, к директории /dev/pts через путь /mnt/dev/pts и т.д.
На следующем шаге следует с помощью системного вызова chroot произвести операцию изменения корневого каталога на /mnt следующим образом:
sudo chroot /mnt
Теперь всё готово для восстановления загрузчика Grub 2. Выполним восстановление, заменив в командах ниже имя диска sdX на своё, например, sda, sdb и т.д. Выполните последовательно следующие команды:
grub-install /dev/sdX
grub-install –recheck /dev/sdX
update-grub
Если в процессе выполнения последних трёх команд отсутствовали сообщения об ошибках, то можно констатировать, что загрузчик Grub 2 восстановлен. Нам остаётся лишь в обратном порядке вернуться к системному корневому каталогу «живой» системы, размонтировать все синонимы каталогов, а также размонтировать корневой раздел восстановленной системы, выполнив последовательно команды:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt
Перезагрузите систему и убедитесь, что загрузчик Grub 2 восстановлен.
ВОЗМОЖНЫЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ
Одной из наиболее распространённых проблем, с которой сталкиваются при восстановлении загрузчика Grub 2 описанным выше способом, является ошибка, вызванная отсутствием раздела c флагом bios_grub на жёстком диске с таблицей разделов GUID (GPT). Проблема проявляется во время выполнения команды:
grub-install /dev/sdX
в виде ошибки:
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won’t be possible.
grub-install: error: embedding is not possible, but this is required for cross-disk install.
Причиной такой ошибки является либо отсутствие флага bios_grub на специальном разделе диска, либо полное отсутствие такого раздела на жёстком диске, который требуется для нормальной работы жёстких дисков с таблицей разделов GPT. В соответствии с технологией GPT на жёстком диске для осуществления загрузки операционных систем обязательно должен присутствовать служебный раздел «BIOS boot partition» с минимальным размером 1-2 Мб и флагом bios_grub.
Если вы столкнулись с ситуацией отсутствия раздела — создайте его, используя утилиту Disks из Ubuntu Live или любым другим удобным способом. Я рекомендую «отрезать» раздел размером 2 Мб от раздела подкачки, который, как правило, присутствует на жёстких дисках с Linux Ubuntu. Можно сначала удалить раздел подкачки, затем создать требуемый служебный раздел с файловой системой EXT4 размером 2 Мб и после из оставшегося свободного неразделённого пространства жёсткого диска вновь создать раздел покачки swap.
Кроме того, возможно потребуется отсортировать с помощью утилиты gdisk разделы на диске, чтобы порядок их нумерации соответствовал физическому размещению по отношению к началу дискового пространства (для тех, кто любит порядок). Сделать это можно командой «s» в интерфейсе утилиты gdisk, доступ к которому для диска /dev/sdX осуществляется следующим образом:
sudo gdisk /dev/sdX
где sdX следует заменить на ваш диск (не забудьте перед выходом из утилиты записать все изменения на диск командой «w»). При этом придётся отредактировать файл /etc/fstab на восстанавливаемой системе, заменив либо прямые указатели разделов диска вида /dev/sdXY на новые, которые образовались после сортировки, либо на UUID разделов диска, которые можно узнать, используя команду:
sudo blkid
Когда служебный раздел диска размером 2 Мб (вообще говоря максимальный размер служебного раздела не ограничен, но в нашем случае 2 Мб будет достаточно) создан либо если такой раздел существовал, но на нём отсутствовал флаг bios_grub, необходимо окончательно устранить проблему, которая не позволяет восстановить загрузчик, как описано выше. Для этого установим флаг bios_grub на созданный (или проблемный) служебный раздел GPT:
sudo parted /dev/sdX set Y bios_grub on
где sdX следует заменить на идентификатор вашего диска, на котором расположен служебный раздел, например: sda, sdc и т.п., а «Y» соответствует номеру служебного раздела. Например, если служебный раздел размером 2 Мб для GPT — это sdb3, то в таком случае sdX следует заменить на sdb, а «Y» — на 3.
После проведённых манипуляций с дисками следует повторить процедуру восстановления Grub 2 заново так, как это указано выше.
Обратите внимание, что GPT GUID-идентификатор служебного раздела GPT после всех операций изменится на EF02, который соответствует «BIOS boot partition». Указанное произойдёт даже если в процессе создания/форматирования раздела была использована файловая система Ext4 или любая другая.
В завершение замечу, что проверить таблицу разделов диска, в том числе GPT GUID разделов и т.п., можно с помощью утилиты gdisk:
sudo gdisk /dev/sdX
с использованием команды «p» после входа в интерфейс утилиты, пример:
root@dump:~# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): p
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Model: ST1000NM0033-9ZM
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): FB8EEE82-3CE5-4F18-881A-473361590CFD
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 5485 sectors (2.7 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4095 1024.0 KiB EF02
2 4096 1953521663 931.5 GiB 8300
Просматривать же флаги, установленные на разделах дисков, очень удобно с помощью другой утилиты parted:
sudo parted /dev/sdX print
Пример:
root@dump:~# parted /dev/sda print
Model: ATA ST1000NM0033-9ZM (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB bios_grub
2 2097kB 1000GB 1000GB ext4
Теперь загрузимся с USB в Kubuntu Live.
Проверим EFI раздел:
kubuntu@kubuntu:~$ efibootmgr
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0000,0003,0001
Boot0000* Windows Boot Manager
Boot0001* Hard Drive
Boot0003* UEFI: JetFlashTranscend 16GB
Boot0000 — виндовый загрузчик
Boot0001 — дефолтный загрузчик
Boot0003 — флешка с Kubuntu Live
Обратите внимание, что список загрузчиков не привязан к одному физическому диску как в MBR. Он хранится в NVRAM.
Можем также сразу посмотреть, что же в этом разделе, подмонтировав его:
kubuntu@kubuntu:~$ sudo mkdir /media/efi
kubuntu@kubuntu:~$ sudo mount /dev/sda2 /media/efi
Там окажутся следующие файлы:
EFI
|–Boot
| |–bootx64.efi # дефолтный загрузчик
|–Microsoft
|–Boot
|–bootmgfw.efi # основной виндовый загрузчик
|–# много других файлов
После завершения установки Kubuntu, заходим в систему и проверяем, какие файлы появились на efi разделе (монтировать уже не нужно):
user@kubuntu:~$ sudo ls /boot/efi/EFI
Boot Microsoft ubuntu
user@kubuntu:~$ sudo ls /boot/efi/EFI/ubuntu
grub.cfg grubx64.efi MokManager.efi shimx64.efi
Смотрим, как теперь выглядит список загрузчиков:
user@kubuntu:~$ efibootmgr -v
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0000,0003,0001
Boot0000* Windows Boot Manager HD(2,96800,32000,c4f37e07-0441-4967-a1ac-75fb5a36e4f3)File(\EFI\Microsoft\Boot\bootmgfw.efi)
Boot0001* Hard Drive BIOS(2,0,00)
Boot0002* ubuntu HD(2,96800,32000,c4f37e07-0441-4967-a1ac-75fb5a36e4f3)File(\EFI\ubuntu\shimx64.efi)
Boot0003* ubuntu HD(2,96800,32000,c4f37e07-0441-4967-a1ac-75fb5a36e4f3)File(EFI\Ubuntu\grubx64.efi)
Из чего состоят записи в /etc/fstab
Первое поле (fs_spec).
Это поле описывает специальное блочное устройство, удалённую файловую систему или образ файловой системы для loop устройства, которое нужно смонтировать, или файл подкачки, или раздел подкачки, который нужно включить.
Для обычных монтирований он будет содержать (ссылку на) узел специального блочного устройства (созданный утилитой mknod) для монтируемого устройства, например, «/dev/cdrom» или «/dev/sdb7». Для монтирования NFS это поле – :
, например, «knuth.aeb.nl:/». Для файловых систем без хранилища можно использовать любую строку, которая будет отображаться, например, в выводе df. Обычно для procfs используется «proc»; а для tmpfs используются «mem», «none» или «tmpfs». Другие специальные файловые системы, такие как udev и sysfs, обычно не указываются в fstab.
Вместо имени устройства можно указать LABEL= или UUID=. Это рекомендуемый метод, поскольку имена устройств часто совпадают с порядком обнаружения оборудования и могут измениться при добавлении или удалении других дисков. Например, «LABEL=Boot» или «UUID=3e6be9de-8139-11d1-9106-a43f08d823a6». (Используйте инструмент, специфичный для файловой системы, например e2label, xfs_admin или fatlabel, чтобы установить LABEL в файловых системах).
Также можно использовать ARTUUID= и PARTLABEL=. Эти идентификаторы разделов поддерживаются, например, для таблицы разделов GUID (GPT).
Чтобы узнать UUID всех дисков используйте любую из следующих команд:
1
2
3
4
|
findmnt --real -o TARGET,SOURCE,FSTYPE,UUID mount | grep "^/dev" blkid lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,TYPE,UUID |
Чтобы узнать UUID определённого диска, используйте любую из следующих команд:
1
2
3
|
findmnt --real -o TARGET,SOURCE,FSTYPE,UUID /dev/ ДИСК blkid /dev/ ДИСК lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,TYPE,UUID /dev/ ДИСК |
Второе поле (fs_file).
Это поле описывает точку монтирования (цель) для файловой системы. Для разделов подкачки это поле должно быть указано как «none». Если имя точки монтирования содержит пробелы или табуляции, их можно использовать как «\040» и «\011» соответственно.
Третье поле (fs_vfstype).
Это поле описывает тип файловой системы. Linux поддерживает множество типов файловых систем: ext4, xfs, btrfs, f2fs, vfat, ntfs, hfsplus, tmpfs, sysfs, proc, iso9660, udf, squashfs, nfs, cifs и многие другие.
Запись подкачки в этом поле должна содержать «swap».
Запись «none» полезна для привязки или перемещения монтирований.
Можно указать несколько типов в списке, разделённом запятыми.
mount и umount поддерживают подтипы файловых систем. Подтип определяется суффиксом «.subtype». Например, «fuse.sshfs». Рекомендуется использовать нотацию подтипа, а не добавлять префикс в первое поле fstab (например, «sshfs#example.com» является устаревшим).
Четвёртое поле (fs_mntops).
В этом поле описаны параметры монтирования, связанные с файловой системой.
Поле отформатировано как список параметров, разделённых запятыми. Оно содержит как минимум тип монтирования (ro или rw), а также любые дополнительные параметры, соответствующие типу файловой системы (включая параметры настройки производительности).
Основные параметры, не зависящие от файловой системы:
defaults
использовать параметры по умолчанию: rw, suid, dev, exec, auto, nouser и async.
noauto
не монтировать при использовании команды «mount -a» (например, во время загрузки)
user (пользователь)
позволяет монтировать указанному пользователю
owner (владелец)
позволяет монтировать указанному владельцу устройства
комментарий
или x- для использования программами поддержки fstab
nofail
не сообщает об ошибках для этого устройства, если оно не существует.
Пятое поле (fs_freq).
Это поле используется dump, чтобы определить, какие файловые системы нужно выгрузить. По умолчанию, если не присутствует, — ноль (не выгружать).
Шестое поле (fs_passno).
Это поле используется fsck для определения порядка, в котором выполняется проверка файловых систем во время загрузки. Корневая файловая система должна быть указана с fs_passno равным 1.
Для других файловых систем значение fs_passno должно быть равно 2. Файловые системы на диске будут проверяться последовательно, но файловые системы на разных дисках будут проверяться одновременно, чтобы использовать параллелизм, доступный на оборудовании. По умолчанию нулевое значение (не использовать fsck), если оно отсутствует.
Пример файла /etc/fstab с объяснением значений записей
Рассмотрим пример реального файла /etc/fstab на моей системе:
1
2
3
4
5
6
7
8
9
|
# # /dev/nvme0n1p2 UUID=01e4d4f5-698f-4dc2-987b-270499457f48 / ext4 rw,relatime 0 1 # /dev/nvme0n1p1 UUID=7327-B4E4 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2 /dev/sda /mnt/disk_d ext4 rw,relatime 0 0 #/swapfile none swap defaults 0 0 |
Этот файл отчасти создан автоматически, отчасти дописан вручную.
Автоматическая часть была создана командой в соответствии с «Инструкцией по установке Arch Linux»:
1
|
genfstab -U -p /mnt >> /mnt/etc/fstab |
Самая первая строка является комментарием и просто напоминает значение полей.
Затем строка «# /dev/nvme0n1p2» также является комментарием, она содержит удобное для восприятия имя диска, чтобы было проще ориентироваться, к какому диску относится последующая запись.
Следующая строка начинается с «UUID=01e4d4f5-698f-4dc2-987b-270499457f48» – это уникальный идентификатор диска. Вторым полем идёт «/», это означает, что диск смонтирован в корень файловой системы. Затем «ext4» указывает на тип файловой системы. Затем идут опции монтирования «rw,relatime». Затем идёт «0», означающий, что не нужно выгружать файловые системы. Последней идёт «1», означающая, что в случае возникновения проблем этот диск должен быть проверен первым.
Следующая строка вновь является комментарием, показывающим нам, к какому диску она относится «# /dev/nvme0n1p1».
Затем идёт идентификатор диска «UUID=7327-B4E4», обратите внимание, что он намного короче предыдущего — видимо, зависит от файловой системы. Затем идёт точка монтирования «/boot», то есть это загрузочный раздел, который монтируется в указанную папку. Далее тип файловой системы «vfat». Затем опции монтирования «rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro» – все опции монтирования будут рассмотрены в конце данной статьи, поэтому не будем на них останавливаться. Затем идёт «0», означающий, что не нужно выгружать файловые системы, затем идёт «2», означающая, что диск должен быть проверен вторым.
На этом заканчивается автоматически сгенерированная часть и начинается часть дописанная мною вручную.
После установки системы, второй внутренний диск мной был отформатирован в файловую систему ext4, у этого диска название /dev/sda и он смонтирован в директорию /mnt/disk_d с опциями «rw,relatime». Вместо имени диска /dev/sda можно указать его UUID — но это не критично.
Далее идёт закомментированная строка, подключающая файл подкачки «#/swapfile none swap defaults 0 0». Поскольку строка закомментированна, это означает, что файл подкачки не используется.
Про создание и удаление файлов подкачки смотрите статьи:
- Как в Kali Linux создать или увеличить файл подкачки (Swap)
- Файл подкачки и раздел подкачки в Arch Linux: что выбрать и как добавить Swap
- Как в Linux Mint и Ubuntu увеличить и раздел подкачки. Как в Linux создать файл подкачки Swap
- Как создать раздел подкачки не на системном диске. Как переместить раздел подкачки на другой диск
Как управлять опциями монтирования с помощью /etc/fstab
Помните, что при любом монтировании, даже если он
о происходит не в начале запуска компьютера, а в любое другое время, программа mount сверяется с опциями из файла /etc/fstab. По этой причине можно прописать необходимые опции и точки монтирования в этом файл.
К примеру, у меня есть внешний USB диск, который при подключении к компьютеру по умолчанию монтируется в «/run/media/mial/Новый том».
Мне такое название точки монтирования не нравится, я хочу, чтобы именно этот диск монтировался в /mnt/disk_e (как на моём старом компьютере это был диск E:\).
В этом случае мне нужно отмонтировать диск и заново его монтировать примерно следующей командой:
1
|
sudo mount -t ntfs -o rw,utf8 /dev/sdc1 /mnt/disk_e |
Это ненужные действия, которые можно избежать, прописав опции монтирования и точку монтирования в файле fstab. Открываем этот файл для редактирования:
1
|
sudo gedit /etc/fstab |
Мне необходимо узнать UUID данного диска (поскольку при подключении он иногда получает имя /dev/sdc1, иногда /dev/sdd1 или другие, например, если к компьютеру уже подключены другие диски или флешки). UUID диска можно узнать например так:
1
|
blkid /dev/sdc1 |
Вывод:
1
|
dev /sdc1 : LABEL= "M-PM-^]M-PM->M-PM-2M-QM-^KM-PM-9 M-QM-^BM-PM->M-PM-<" BLOCK_SIZE= "512" UUID= "26FC3023FC2FEC2D" TYPE= "ntfs" PARTUUID= "fd8237ec-01" |
Теперь в файл /etc/fstab я добавляю следующие строки:
1
2
|
# /dev/sdc1 1.5 ТБ внешний USB UUID=26FC3023FC2FEC2D /mnt/disk_e ntfs nofail,rw,utf8 0 0 |
Первая из них — комментарий, который напомнит мне, к чему относится эта запись.
Затем идёт строка, с описанными выше полями. В первом поле я идентифицирую диск — я использую не его имя, а UUID, поскольку имя устройства может меняться. Затем указываю точку монтирвоания (/mnt/disk_e). Затем тип файловой системы (ntfs). Затем идут опции, обратите внимание, что ОБЯЗАТЕЛЬНО нужно добавить опцию nofail, иначе если этот диск не подключён к компьютеру во время загрузки, компьютер может вовсе не загрузиться из-за ошибки в файле /etc/fstab. Затем идут ещё две цифры необязательных полей (отмена выгрузки файловых систем и отмена проверки).
Теперь в любое время при подключении этого диска он будет автоматически смонтирован в /mnt/disk_e. Это можно проверить с помощью команды:
1
|
findmnt --real |
Примечание: вы можете обратить внимание, что опции монтирования из файла /etc/fstab и опции монтирования на скриншоте не совпадают. Дело в том, что программа mount может использовать программы-помогатели, которые фактически и выполняют монтирования. При вызове программ-помогателей некоторые опции могут теряться или игнорироваться программой, которая в конечном счёте выполняет монтирование. По этой же причине, кстати, вместо файловой системы ntfs указана fuseblk — это означает, что работу по монтированию диска выполнила FUSE.
Смотрите также: Что такое FUSE. Что такое файловая система fuseblk
Ещё одним следствием описания монтирования в файле /etc/fstab является то, что для указанных там дисков можно использовать сокращённую команду монтирования — указывая только точку монтирования или только имя устройства, например:
1
|
sudo mount /mnt/disk_e |
Эта команда сработает как надо, смонтировав диск /dev/sdc1 в /mnt/disk_e — недостающие сведения и опции монтирования будут взяты из /etc/fstab.
.
Сеть (bonding)
$ cat /etc/netplan/00-installer-config.yaml network: version: 2 renderer: networkd ethernets: enp5s0f0: dhcp4: false dhcp6: false enp5s0f1: dhcp4: false dhcp6: false bonds: bond0: dhcp4: false dhcp6: false interfaces: - enp5s0f0 - enp5s0f1 addresses: [192.168.60.38/24] gateway4: 192.168.60.2 parameters: mode: balance-rr nameservers: addresses: [192.168.60.2,8.8.8.8,8.8.4.4] $ netplan apply
mode=0 (balance-rr)
Последовательно кидает пакеты, с первого по последний интерфейс.
mode=1 (active-backup)
Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
mode=2 (balance-xor)
Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Все пакеты на все интерфейсы
mode=4 (802.3ad)
Link Agregation — IEEE 802.3ad, требует от коммутатора настройки.
mode=5 (balance-tlb)
Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.
mode=6 (balance-alb)
Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.
Как в Ubuntu посмотреть и изменить скорость сетевой карты
$ sudo ethtool enp5s0f1 Settings for enp5s0f1: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: on (auto) Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: yes
Как видим, это гигабитная сетевая. Чтобы принудительно понизить на ней скорость до 100 Мбит/с в режиме Full Duplex и отключить автоопределение настроек, выполним простую команду:
$ sudo ethtool -s enp5s0f1 duplex full speed 100 autoneg off
Вернуть сетевую карту в гигабитный режим можно командой:
$ sudo ethtool -s enp5s0f1 duplex full speed 1000 autoneg off
Использование Systemctl для управления службами и блоками Systemd
systemd — это система инициализации и системный диспетчер для дистрибутивов Linux, управление службами
https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units-ru
Основополагающая цель системы инициализации заключается в инициализации компонентов, которые должны запускаться после загрузки ядра Linux (традиционно называются компоненты пользовательского пространства). Система инициализации также используется для управления службами и демонами для сервера и в любой момент времени работы системы.
В systemd целью большинства действий являются «модули», являющиеся ресурсами, которыми systemd знает, как управлять. Модули распределяются по категориям по типу ресурса, который они представляют, и определяются файлами, известными как файлы модулей. Тип каждого модуля можно вывести из суффикса в конце файла.
Для задач по управлению службами целевым модулем будут модули службы, которые имеют файлы модулей с суффиксом .service. Однако для большинства команд по управлению службами вы можете не использовать суффикс .service, поскольку systemd достаточно умна, чтобы знать, что вы, возможно, хотите работать со службой при использовании команд по управлению службами.
# systemctl start openvpn@agisVpn.service # systemctl status openvpn@agisVpn.service # systemctl enable openvpn@agisVpn.service # systemctl list-units # systemctl list-units -all # systemctl list-unit-files | grep 'openvpn' # systemctl list-unit-files --type=service | grep 'openvpn' # service openvpn status # systemctl --version
OpenVpn клиент
У каждого модуля есть свои особенности, так же и для openvpn клиента.
Place your client configuration file in /etc/openvpn/client (notice however that, due to an outdated version of openvpn, some distrubitions, like Ubuntu 20.10, look for configuration files under /etc/openvpn instead of /etc/openvpn/client. In caso of doubt, check the specific error message in journalctl -xe)
Use the openvpn-client@.service like so:
$ sudo systemctl start openvpn-client@{Client-config}
Replace {Client-config} with the name of your config file without the .conf
Далее пример для Ubuntu 20.04
# ls -1 /etc/openvpn agisVpn.conf pass.txt update-resolv-conf # systemctl start openvpn@agisVpn.service # systemctl status openvpn@agisVpn.service # systemctl enable openvpn@agisVpn.service
Чтобы перезапустить работающую службу, можно использовать команду restart:
sudo systemctl restart openvpn@agisVpn.service
Если данное приложение может перезагрузить файлы конфигурации (без перезапуска), вы можете выдать команду reload для инициализации этого процесса:
sudo systemctl reload openvpn@agisVpn.service
Если вы не уверены, есть ли у службы функция перезагрузки своей конфигурации, можно использовать команду reload-or-restart. Это перезагрузит необходимую конфигурацию при наличии. В противном случае будет перезагружена служба для выбора новой конфигурации:
sudo systemctl reload-or-restart openvpn@agisVpn.service
Включение и отключение служб
Указанные выше команды полезны для запуска или остановки служб во время текущего сеанса. Чтобы дать команду systemd автоматически запускать службы при загрузке, их необходимо включить.
Для запуска службы во время загрузки используйте команду enable:
sudo systemctl enable openvpn@agisVpn.service
При этом будет создана символическая ссылка из системной копии служебного файла (обычно в /lib/systemd/system или /etc/systemd/system) в месте на диске, где systemd ищет файлы для автозапуска (обычно /etc/systemd/system/some_target.target.wants; что такое цель, мы рассмотрим далее в этом руководстве).
Чтобы отключить автоматический запуск службы, можно ввести следующее:
sudo systemctl disable openvpn@agisVpn.service
При этом будет удалена символическая ссылка, что укажет на то, что служба не должна запускаться автоматически.
Помните, что включение службы не запустит ее в текущем сеансе. Если вы хотите запустить службу и включить ее при загрузке, необходимо дать обе команды, start и enable.
Проверка статуса служб
Чтобы проверить статус службы в вашей системе, можно использовать команду status:
systemctl status openvpn@agisVpn.service
Список текущих модулей
Чтобы увидеть список всех активных модулей, о которых знает systemd, можно использовать команду list-units:
systemctl list-units
Это покажет вам список всех модулей, которые у systemd активны в системе
чтобы увидеть все модули, которые загрузила система systemd (или пыталась загрузить), независимо от их активности в данный момент, можно использовать следующий флаг –all:
systemctl list-units --all
APT (advanced packaging tool)
Apt (advanced packaging tool) – это программа для работы с пакетами программ в операционных системах Linux Debian, и основанных на них – Ubuntu, Linux Mint и т.д. По сути, apt – это терминальный (консольный) пакетный менеджер.
Основные команды:
- list – список пакетов;
- –upgradable – просмотр списка пакетов которые могут быть обновлены (есть новые версии в репозиториях)
- –installed – просмотр списка всех установленных пакетов в системе
- –manual-installed – просмотр списка пакетов, которые устанавливались в ручную пользователем
- –all-version – просмотр вообще всех пакетов, описанных выше.
- –verbose – отображение краткой информации (что это за пакет программы) по всем пакета
- search – поиск пакетов по имени;
- show – показать подробную информацию о пакете;
- update – обновить списки доступных пакетов;
- install – установить пакет;
- remove – удалить пакет;
- upgrade – установить доступные новые версии пакетов;
- full-upgrade – полное обновление системы;
- edit-sources – редактировать файл источников программного обеспечения.
Устновить пакет
# apt install -y vsftpd
Удалить пакет
# apt remove -y vsftpd
Cписок установленных пакетов
# apt list --installed
Найти все пакеты php, используя команду grep :
# apt list --installed | grep php
Будет выполнено полное удаление пакета, включая конфигурационные файлы и зависимости, только рекомендованные программы останутся
# apt remove имя_пакета
Что если вы устанавливали программу из deb файла и теперь не знаете точно, как называется ее пакет, чтобы удалить?
Это очень просто узнать, например по исполняемому файлу, допустим исполняемый файл программы TimeShift находится по адресу /usr/bin/timeshift, теперь узнаем ее пакет:
# dpkg -S /usr/bin/timeshift
timeshift: /usr/bin/timeshift
Как видите, пакет так и называется – timeshift. Теперь можно удалить программу через apt
ПОЧЕМУ ПОЯВИЛСЯ APT?
Раньше в Ubuntu использовалась очень мощная система управления пакетами дистрибутива Debian. Её преимущество в том, что она имеет очень много функций, полезных для разработчиков, но из этого возникает один недостаток, эти функции были разнесены по нескольким исполняемым файлам. Большинство возможностей обычные пользователи не используют, а те, которые они используют оказались разбиты на две утилиты: apt-get и apt-cache.
Ubuntu стремится к простоте. Утилита apt была реализована, чтобы упростить работу с менеджером пакетов и объединить несколько команд в одну. Функциональность apt-get и apt-cache была переписана, и несмотря на то, что теперь утилита полностью совместима с apt-get, её код новый.
Хотят ли люди признавать или нет, но apt-get – устаревший инструмент и практичность его применения очень сомнительна. Инструмент apt был разработан с нуля, чтобы быть еще эффективнее, он предназначен быть приятным для новых пользователей.
Главное отличие apt от apt-get – в том, что программа объединяет большинство команд apt-get и apt-cache. Вся функциональность теперь находится в одной утилите.
Разница apt и apt-get
https://linuxrussia.com/apt-vs-apt-get.html
https://linuxrussia.com/apt-vs-apt-get.html
# fdisk /dev/sdb Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. The size of this disk is 3.7 TiB (4000787030016 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT). Command (m for help): g Created a new GPT disklabel (GUID: C9FE7125-08AF-2144-B845-007D2D172D66). The old dos signature will be removed by a write command. Command (m for help): p Disk /dev/sdb: 3.65 TiB, 4000787030016 bytes, 7814037168 sectors
Дата и время создания файла. Изменить
$ touch -t 203203101513 asd
$ ls --full-time -la asd
-rw-rw-r-- 1 agis agis 4 2032-03-10 15:13:00.000000000 +0600 asd
И все
Umount file system
Посмотреть какие процессы держат файловую систему
umount: /data/backup: target is busy.
root@bill:~# lsof | grep '/data/backup' // sudo lsof /dev/sda1
sftp-serv 1763348 bill 3r REG 8,17 134705288722 33685506 /data/backup/month/Aug_agis-2022-08-01_00-10-01.tgz
root@bill:~#
Можно удалить процесс или дождаться его окончания
Или насильно (forse) отмонтировать файловую систему
umount -f /data/backup
И все