GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter à sec ou simuler des commandes Linux sans rien changer au système

Chaque commande Linux a une ou plusieurs options et drapeaux pour effectuer différentes opérations. Aujourd'hui, découvrons l'une des options utiles et importantes qui nous permettent de simuler des commandes Linux mais ne modifient pas réellement le système.

Par exemple, nous pouvons simuler (ou exécuter à blanc) le processus d'installation ou de suppression d'un package ou d'un programme, mais sans réellement installer ou supprimer le package prévu d'un système Linux.

Comme vous le savez déjà, la simulation n'est qu'une imitation du fonctionnement d'un processus ou d'un système réel pour vérifier comment le processus fonctionnera en temps réel.

La simulation est utilisée dans de nombreux domaines pour l'enseignement, les tests, la formation et la résolution de problèmes. Revenons maintenant et apprenons à simuler des commandes Linux.

Pourquoi exécuter à blanc ou simuler des commandes Linux ?

Simple. Nous pouvons trouver exactement ce qu'une commande Linux fera avant même de l'exécuter. Par exemple, vous pouvez installer l'éditeur Vim sur votre machine Linux. Vous ne savez pas quelles dépendances supplémentaires ce paquet a apportées avec lui. En simulant le processus d'installation, vous saurez combien de dépendances seront installées avec le package. Il en est de même pour la suppression de colis. Vous saurez quelles dépendances ne sont plus nécessaires après la désinstallation d'un package. Cela vous aide également à vous assurer qu'une commande fonctionne correctement avant même de l'exécuter. Vous ne comprenez toujours pas ? Aucun problème. Permettez-moi de vous montrer un exemple.

Simuler des commandes Linux

Disons que vous voulez installer Vim éditeur sur votre système Ubuntu.

Pour simuler l'installation de Vim sur Ubuntu, lancez simplement :

$ sudo apt install vim --dry-run

Ou,

$ sudo apt install vim --simulate

Ou brièvement :

$ sudo apt install vim -s

Exemple de sortie des commandes ci-dessus :

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])

Comme vous pouvez le voir dans la sortie ci-dessus, nous avons seulement simulé le processus d'installation de Vim, mais nous ne l'avons pas réellement installé. Rien n'est changé dans le système, juste une simulation. En regardant la simulation, nous pouvons trouver quels packages supplémentaires (dépendances) vont être installés avec le package réel.

De même, nous pouvons simuler la suppression d'un programme installé comme ci-dessous.

$ sudo apt remove vim --dry-run

Ou,

$ sudo apt remove vim --simulate

Ou brièvement :

$ sudo apt remove vim -s

Exemple de résultat :

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]

Encore une fois, nous avons seulement simulé le processus de suppression, mais n'avons rien supprimé du système. Vous pouvez vous assurer que les programmes seront supprimés si vous exécutez les commandes ci-dessus en temps réel.

Nous pouvons même simuler l'ensemble du processus de mise à niveau sur Ubuntu comme ci-dessous.

$ 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])

En simulant le processus de mise à niveau, vous aurez une idée précise des packages qui seront mis à niveau.

Veuillez noter que les utilisateurs non root peuvent également effectuer la simulation . Si vous exécutez la simulation sans sudo, vous verrez un message d'avertissement comme ci-dessous.

$ 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]

Que faire si l'option "Dry Run" n'est pas disponible ?

Autant que je sache, la plupart des commandes Linux et Unix ont l'option d'exécution à sec, mais certaines commandes ne l'ont pas. Par exemple, le yum la commande n'a pas d'option d'exécution à sec. Si vous souhaitez simuler les opérations d'installation ou de suppression de Yum, utilisez "setopt" comme ci-dessous.

$ yum install --setopt tsflags=test vim

Si vous voulez simuler l'installation d'un .rpm colis, faites :

$ sudo rpm -ivh --test vim-enhanced-7.4.629-6.el7.x86_64.rpm

Les commandes ci-dessus n'installeront pas vim, mais afficheront comment "yum install vim" et "rpm -ivh" les commandes s'exécuteront en temps réel.

Peut-être devriez-vous essayer "peut-être"

Vous pouvez également utiliser un utilitaire de ligne de commande nommé "peut-être" pour simuler des commandes Linux. Il vous permet d'exécuter une commande et de voir ce qu'elle fait à vos fichiers sans le faire ! Après avoir examiné la sortie répertoriée, vous pouvez alors décider si vous voulez vraiment l'exécuter ou non. Pour plus de détails, veuillez visiter le lien suivant.

  • Comment savoir ce qu'une commande ou un programme va faire exactement avant de l'exécuter

J'espère que cela vous aidera.


Linux
  1. Comment vérifier la version du système d'exploitation et de Linux

  2. Comment lister les dépendances d'un paquet sous Linux

  3. Comment tester un paquet sans l'installer sous Linux

  4. Comment exécuter une commande en tant qu'administrateur système (racine) ?

  5. Comment exécuter un script en arrière-plan (linux openwrt) ?

Comment changer le shell par défaut dans le système Linux

Comment utiliser la commande fd sur le système Linux

Les 50 commandes Linux les plus utiles à exécuter dans le terminal

Comment exécuter les commandes sudo sans mot de passe

Comment rétrograder des packages sur le système Linux :le guide ultime

Comment exécuter les packages .run et .bin dans le système Linux