GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire a secco o simulare i comandi Linux senza modificare nulla nel sistema

Ogni comando Linux ha una o più opzioni e flag per eseguire diverse operazioni. Oggi impariamo a conoscere una delle opzioni utili e importanti che ci consentono di simulare i comandi di Linux ma non di modificare effettivamente il sistema.

Ad esempio, possiamo simulare (o eseguire il dry run) il processo di installazione o rimozione di un pacchetto o programma, ma senza installare o rimuovere effettivamente il pacchetto previsto da un sistema Linux.

Come già saprai, la simulazione è solo un'imitazione del funzionamento di un processo o di un sistema reale per verificare come funzionerà il processo in tempo reale.

La simulazione viene utilizzata in molti campi per l'insegnamento, il test, la formazione e la risoluzione di problemi. Ora torniamo indietro e impariamo come simulare i comandi Linux.

Perché eseguire il dry run o simulare i comandi Linux?

Semplice. Possiamo trovare esattamente cosa farà un comando Linux anche prima di eseguirlo. Ad esempio, potresti voler installare l'editor Vim sulla tua macchina Linux. Non sai quali dipendenze aggiuntive questo pacchetto ha portato con sé. Simulando il processo di installazione, saprai quante dipendenze verranno installate insieme al pacchetto. È lo stesso anche per la rimozione del pacchetto. Saprai quali dipendenze non sono più necessarie dopo aver disinstallato un pacchetto. Ti aiuta anche ad assicurarti che un comando funzioni correttamente anche prima di eseguirlo. Ancora non capisci? Nessun problema. Permettetemi di mostrarvi un esempio.

Simula i comandi di Linux

Diciamo che vuoi installare Vim editor sul tuo sistema Ubuntu.

Per simulare l'installazione di Vim su Ubuntu, esegui semplicemente:

$ sudo apt install vim --dry-run

Oppure,

$ sudo apt install vim --simulate

O a breve:

$ sudo apt install vim -s

Esempio di output dei comandi precedenti:

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

Come puoi vedere nell'output sopra, abbiamo solo simulato il processo di installazione di Vim, ma in realtà non l'abbiamo installato. Nulla è cambiato nel sistema, solo una simulazione. Osservando la simulazione, possiamo trovare quali pacchetti aggiuntivi (dipendenze) verranno installati con il pacchetto effettivo.

Allo stesso modo, possiamo simulare la rimozione di un programma installato come di seguito.

$ sudo apt remove vim --dry-run

Oppure,

$ sudo apt remove vim --simulate

O a breve:

$ sudo apt remove vim -s

Risultato di esempio:

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]

Ancora una volta, abbiamo solo simulato il processo di rimozione, ma non abbiamo rimosso nulla dal sistema. Puoi assicurarti quali programmi verranno eliminati se esegui i comandi sopra in tempo reale.

Possiamo anche simulare l'intero processo di aggiornamento su Ubuntu come di seguito.

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

Simulando il processo di aggiornamento, avrai un'idea chiara di quali pacchetti verranno aggiornati.

Tieni presente che anche gli utenti non root possono eseguire la simulazione . Se esegui la simulazione senza sudo, vedrai un messaggio di avviso come di seguito.

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

Cosa succede se l'opzione "Dry Run" non è disponibile?

Per quanto ne so, la maggior parte dei comandi Linux e unix ha l'opzione dry run, ma alcuni comandi no. Ad esempio, il yum il comando non ha l'opzione di funzionamento a secco. Se vuoi simulare le operazioni di installazione o rimozione di Yum, usa "setopt" opzione come di seguito.

$ yum install --setopt tsflags=test vim

Se vuoi simulare l'installazione di un .rpm pacchetto, fare:

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

I comandi precedenti non installeranno vim, ma mostreranno come "yum install vim" e "rpm -ivh" i comandi verranno eseguiti in tempo reale.

Forse dovresti provare "forse"

In alternativa, puoi utilizzare un'utilità della riga di comando denominata "forse" per simulare i comandi di Linux. Ti permette di eseguire un comando e vedere cosa fa ai tuoi file senza farlo davvero! Dopo aver esaminato l'output elencato, puoi quindi decidere se desideri eseguirlo o meno. Per maggiori dettagli, visitare il seguente link.

  • Come sapere cosa farà esattamente un comando o un programma prima di eseguirlo

Spero che questo aiuti.


Linux
  1. Come testare un pacchetto senza installarlo in Linux

  2. Come cambiare l'identità di un sistema Linux

  3. Come eseguire un comando come amministratore di sistema (root)?

  4. Come eseguire uno script in background (linux openwrt)?

  5. Come eseguire il comando Vim dalla shell?

Come modificare la shell predefinita nel sistema Linux

Come utilizzare il comando fd sul sistema Linux

I 50 comandi Linux più utili da eseguire nel terminale

Come eseguire sudo comandi senza password

Come eseguire il downgrade dei pacchetti su un sistema Linux:la guida definitiva

Come eseguire i pacchetti .run e .bin nel sistema Linux