GNU/Linux >> Tutoriels Linux >  >> Linux

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

Vous êtes-vous déjà demandé ce que ferait une commande Unix avant de l'exécuter ? Tout le monde ne sait pas ce qu'une commande ou un programme particulier fera. Bien sûr, vous pouvez le vérifier avec Explainshell . Vous devez copier/coller la commande sur le site Web Explainshell et cela vous permet de savoir ce que fait chaque partie d'une commande Linux. Cependant, ce n'est pas nécessaire. Désormais, nous pouvons facilement savoir ce qu'une commande ou un programme fera exactement avant de l'exécuter, directement depuis le terminal. Dites bonjour à "peut-être" , un outil simple qui 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.

Comment "peut-être" fonctionne ?

Selon le développeur,

"peut-être" exécute des processus sous le contrôle de ptrace à l'aide de la bibliothèque python-ptrace. Lorsqu'il intercepte un appel système qui est sur le point d'apporter des modifications au système de fichiers, il enregistre cet appel, puis modifie les registres du processeur pour à la fois rediriger l'appel vers un ID d'appel système invalide (le transformant effectivement en un no-op) et définir le renvoie la valeur de cet appel sans opération à un indiquant le succès de l'appel d'origine. En conséquence, le processus croit que tout ce qu'il essaie de faire se produit réellement, alors qu'en réalité rien ne se produit.

Avertissement  :Vous devez être très très prudent lors de l'utilisation de cet utilitaire dans un système de production ou dans tout système qui vous intéresse. Il peut encore faire de sérieux dégâts, car il ne bloquera qu'une poignée d'appels système.

Installer "peut-être"

Assurez-vous d'avoir installé Pip dans votre système Linux. Sinon, installez-le comme indiqué ci-dessous en fonction de la distribution que vous utilisez.

Sur Arch Linux et ses dérivés comme AntergosManjaro Linux , installez pip à l'aide de la commande suivante :

$ sudo pacman -S python-pip

Sur RHELCentOS :

$ sudo yum install epel-release
$ sudo yum install python-pip

Sur Fedora :

$ sudo dnf install python-pip

Sur DebianUbuntuLinux Mint :

$ sudo apt-get install python-pip

Sur SUSEouvrezSUSE :

$ sudo zypper install python-pip

Une fois pip installé, exécutez la commande suivante pour installer "peut-être".

$ sudo pip install maybe

Savoir ce qu'une commande ou un programme fera exactement avant de l'exécuter

L'utilisation est absolument facile ! Ajoutez simplement "peut-être" devant une commande que vous souhaitez exécuter.

Permettez-moi de vous montrer un exemple.

$ maybe rm -r ostechnix/

Comme vous pouvez le voir, je vais supprimer un dossier appelé "ostechnix" de mon système. Voici l'exemple de sortie.

maybe has prevented rm -r ostechnix/ from performing 5 file system operations:

 delete /home/sk/inboxer-0.4.0-x86_64.AppImage
 delete /home/sk/Docker.pdf
 delete /home/sk/Idhayathai Oru Nodi.mp3
 delete /home/sk/dThmLbB334_1398236878432.jpg
 delete /home/sk/ostechnix

Do you want to rerun rm -r ostechnix/ and permit these operations? [y/N] y

L'outil "peut-être" effectue 5 opérations sur le système de fichiers et me montre ce que cette commande (c'est-à-dire rm -r ostechnix/) fera exactement. Maintenant, je peux décider si je dois effectuer cette opération ou non. Cool, ouais ?

Voici un autre exemple. Je vais installer Inboxer client de bureau pour Gmail. C'est ce que j'ai.

$ maybe ./inboxer-0.4.0-x86_64.AppImage 
fuse: bad mount point `/tmp/.mount_inboxemDzuGV': No such file or directory
squashfuse 0.1.100 (c) 2012 Dave Vasilevsky

Usage: /home/sk/Downloads/inboxer-0.4.0-x86_64.AppImage [options] ARCHIVE MOUNTPOINT

FUSE options:
 -d -o debug enable debug output (implies -f)
 -f foreground operation
 -s disable multi-threaded operation

open dir error: No such file or directory
maybe has prevented ./inboxer-0.4.0-x86_64.AppImage from performing 1 file system operations:

create directory /tmp/.mount_inboxemDzuGV

Do you want to rerun ./inboxer-0.4.0-x86_64.AppImage and permit these operations? [y/N]

S'il ne détecte aucune opération du système de fichiers, il affichera simplement un résultat comme ci-dessous.

Par exemple, j'exécute cette commande pour mettre à jour mon Arch Linux.

$ maybe sudo pacman -Syu
sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?
maybe has not detected any file system operations from sudo pacman -Syu.

Voir? Il n'a détecté aucune opération du système de fichiers, il n'y a donc pas eu d'avertissements. C'est absolument génial et exactement ce que je cherchais. Désormais, je peux facilement savoir ce que va faire une commande ou un programme avant même de l'exécuter

Suggestion de lecture :

  • Comment simuler des commandes Linux sans rien changer au système

Linux
  1. Qu'est-ce qu'une commande Chown sous Linux et comment l'utiliser

  2. Qu'est-ce qu'une commande cURL et comment l'utiliser ?

  3. Comment savoir ce que fait une commande Linux

  4. Comment exécuter la commande avant la connexion de l'utilisateur sous Linux ?

  5. Exécuter une commande à distance sur une connexion Ssh, avant de se connecter ?

Commande de fichier Linux :que fait-elle et comment l'utiliser

Comment utiliser Linux Time Command :tout ce que vous devez savoir

Commande Linux Tail :qu'est-ce que c'est et comment l'utiliser

Comment suivre l'exécution d'un programme à l'aide de la commande Linux Strace

Qu'est-ce que la commande source sous Linux et comment ça marche ?

Qu'est-ce que le courrier et comment est-il navigué ?