Как выполнить пробный запуск или смоделировать команды Linux
Каждая команда Linux имеет один или несколько параметров и флагов для выполнения различных операций. Сегодня давайте узнаем об одной из полезных и важных опций, которые позволяют нам имитировать команды Linux, но фактически не изменять систему.
Например, мы можем смоделировать (или провести пробный прогон) процесс установки или удаления пакета или программы, но без фактической установки или удаления предполагаемого пакета из системы Linux.
Как вы уже знаете, моделирование — это всего лишь имитация работы реального процесса или системы с целью проверки того, как этот процесс будет работать в реальном времени.
Моделирование используется во многих областях для обучения, тестирования, учебных целей и решения проблем. Теперь давайте вернемся и научимся моделировать команды Linux.
Зачем выполнять пробный запуск или симулировать команды Linux?
Простой. Мы можем точно узнать, что будет делать команда Linux, еще до ее запуска. Например, вы можете установить редактор Vim на свой компьютер с Linux. Вы не знаете, какие дополнительные зависимости принес с собой этот пакет. Смоделировав процесс установки, вы узнаете, сколько зависимостей будет установлено вместе с пакетом. То же самое касается и удаления пакета. Вы узнаете, какие зависимости больше не нужны после удаления пакета. Это также поможет вам убедиться, что команда работает правильно, еще до ее запуска. Все еще не понимаете? Без проблем. Позвольте мне показать вам пример.
Имитировать команды Linux
Допустим, вы хотите установить редактор Vim в своей системе Ubuntu.
Чтобы смоделировать установку Vim в Ubuntu, просто запустите:
sudo apt install vim --dry-run
Или,
sudo apt install vim --simulate
Или коротко:
sudo apt install vim -s
Пример вывода приведенных выше команд:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
ctags vim-doc vim-scripts
The following NEW packages will be installed:
vim
0 upgraded, 1 newly installed, 0 to remove and 82 not upgraded.
Inst vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf vim (2:8.0.1453-1ubuntu1.1 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Имитация команд Linux
Как вы можете видеть в приведенном выше выводе, мы только смоделировали процесс установки Vim, но на самом деле не установили его. В системе ничего не меняется, просто симуляция. Глядя на симуляцию, мы можем определить, какие дополнительные пакеты (зависимости) будут установлены вместе с реальным пакетом.
Аналогичным образом мы можем смоделировать удаление установленной программы, как показано ниже.
sudo apt remove vim --dry-run
Или,
sudo apt remove vim --simulate
Или коротко:
sudo apt remove vim -s
Пример вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
vim
0 upgraded, 0 newly installed, 1 to remove and 82 not upgraded.
Remv vim [2:8.0.1453-1ubuntu1.1]
Опять же, мы лишь смоделировали процесс удаления, но ничего из системы не удалили. Вы можете убедиться, какие программы будут удалены, если запустите приведенные выше команды в режиме реального времени.
Мы даже можем смоделировать весь процесс обновления в Ubuntu, как показано ниже.
$ sudo apt dist-upgrade --dry-run
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
apt apt-utils base-files bash bsdutils cloud-init console-setup console-setup-linux debconf debconf-i18n dmeventd dmsetup dpkg fdisk friendly-recovery grep
grub-common grub-pc grub-pc-bin grub2-common initramfs-tools initramfs-tools-bin initramfs-tools-core iputils-ping iputils-tracepath keyboard-configuration
landscape-common language-selector-common libapt-inst2.0 libapt-pkg5.0 libblkid1 libdevmapper-event1.02.1 libdevmapper1.02.1 libdrm-common libdrm2 libfdisk1
libldap-2.4-2 libldap-common liblvm2app2.2 liblvm2cmd2.02 libmount1 libnss-systemd libpam-systemd libprocps6 libpython3.6 libpython3.6-minimal libpython3.6-stdlib
libsmartcols1 libsystemd0 libudev1 libuuid1 linux-firmware lvm2 mdadm mount netplan.io nplan open-vm-tools procps python-apt-common python3-apt python3-debconf
python3-distupgrade python3-gdbm python3-software-properties python3.6 python3.6-minimal snapd software-properties-common sosreport systemd systemd-sysv thermald
ubuntu-minimal ubuntu-release-upgrader-core ubuntu-standard udev unattended-upgrades update-notifier-common util-linux uuid-runtime xkb-data
82 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst base-files [10.1ubuntu2.4] (10.1ubuntu2.7 Ubuntu:18.04/bionic-updates [amd64])
Conf base-files (10.1ubuntu2.7 Ubuntu:18.04/bionic-updates [amd64])
Inst bash [4.4.18-2ubuntu1] (4.4.18-2ubuntu1.2 Ubuntu:18.04/bionic-updates [amd64])
Conf bash (4.4.18-2ubuntu1.2 Ubuntu:18.04/bionic-updates [amd64])
Inst bsdutils [1:2.31.1-0.4ubuntu3.3] (1:2.31.1-0.4ubuntu3.4 Ubuntu:18.04/bionic-updates [amd64])
[..]
Conf thermald (1.7.0-5ubuntu5 Ubuntu:18.04/bionic-updates [amd64])
Conf unattended-upgrades (1.1ubuntu1.18.04.13 Ubuntu:18.04/bionic-updates [all])
Conf cloud-init (19.3-41-gc4735dd3-0ubuntu1~18.04.1 Ubuntu:18.04/bionic-updates [all])
Conf open-vm-tools (2:11.0.1-2ubuntu0.18.04.2 Ubuntu:18.04/bionic-updates [amd64])
Моделируя процесс обновления, вы получите четкое представление о том, какие пакеты будут обновлены.
Обратите внимание, что пользователи без полномочий root также могут выполнять моделирование. Если вы запустите симуляцию без sudo, вы увидите предупреждающее сообщение, как показано ниже.
apt remove vim --dry-run
NOTE: This is only a simulation!
apt needs root privileges for real execution.
Keep also in mind that locking is deactivated,
so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
vim
0 upgraded, 0 newly installed, 1 to remove and 82 not upgraded.
Remv vim [2:8.0.1453-1ubuntu1.1]
Имитировать удаление пакетов в Linux
Что делать, если опция «Сухой прогон» недоступна?
Насколько мне известно, большинство команд Linux и Unix имеют опцию пробного запуска, но некоторые команды ее не имеют. Например, команда yum
не имеет опции пробного запуска. Если вы хотите имитировать операции установки или удаления Yum, используйте опцию "setopt"
, как показано ниже.
yum install --setopt tsflags=test vim
Если вы хотите имитировать установку пакета .rpm
, выполните следующие действия:
sudo rpm -ivh --test vim-enhanced-7.4.629-6.el7.x86_64.rpm
Приведенные выше команды не устанавливают vim, но показывают, как команды "yum install vim"
и "rpm -ivh"
будут выполняться в реальном времени.
Может быть, тебе стоит попробовать «может быть»
Альтернативно вы можете использовать утилиту командной строки с именем “maybe” для имитации команд Linux. Он позволяет вам запустить команду и посмотреть, что она делает с вашими файлами на самом деле не выполняя этого! После просмотра перечисленных результатов вы можете решить, действительно ли вы хотите запустить это или нет. Для получения более подробной информации, пожалуйста, посетите следующую ссылку.
- Как узнать, что именно будет делать команда или программа, перед ее выполнением
Надеюсь это поможет.