GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie Sie wissen, was ein Befehl oder Programm genau tun wird, bevor Sie es ausführen

Haben Sie sich jemals gefragt, was ein Unix-Befehl macht, bevor er ausgeführt wird? Nicht jeder weiß, was ein bestimmter Befehl oder ein bestimmtes Programm bewirkt. Natürlich können Sie dies mit Explainshell überprüfen . Sie müssen den Befehl auf der Explainshell-Website kopieren/einfügen, damit Sie wissen, was jeder Teil eines Linux-Befehls tut. Dies ist jedoch nicht erforderlich. Jetzt können wir leicht wissen, was ein Befehl oder Programm genau tun wird, bevor wir es direkt vom Terminal aus ausführen. Begrüßen Sie "vielleicht" , ein einfaches Tool, mit dem Sie einen Befehl ausführen und sehen können, was er mit Ihren Dateien macht, ohne es tatsächlich zu tun! Nachdem Sie die aufgelistete Ausgabe überprüft haben, können Sie entscheiden, ob Sie sie wirklich ausführen möchten oder nicht.

Wie "vielleicht" funktioniert?

Laut Entwickler

"vielleicht" führt Prozesse unter der Kontrolle von Ptrace mit Hilfe der Python-Ptrace-Bibliothek aus. Wenn es einen Systemaufruf abfängt, der im Begriff ist, Änderungen am Dateisystem vorzunehmen, protokolliert es diesen Aufruf und modifiziert dann die CPU-Register, um den Aufruf sowohl auf eine ungültige Syscall-ID umzuleiten (was ihn effektiv in eine No-Op umwandelt) als auch die Rückgabewert dieses No-Op-Aufrufs auf eins, der den Erfolg des ursprünglichen Aufrufs anzeigt. Infolgedessen glaubt der Prozess, dass alles, was er zu tun versucht, tatsächlich passiert, obwohl in Wirklichkeit nichts passiert.

Warnung :Sie sollten sehr, sehr vorsichtig sein wenn Sie dieses Dienstprogramm in einem Produktionssystem oder in anderen Systemen verwenden, die Ihnen wichtig sind. Es kann immer noch ernsthaften Schaden anrichten, da es nur eine Handvoll Systemaufrufe blockiert.

Installation von "vielleicht"

Stellen Sie sicher, dass Sie Pip installiert haben in Ihrem Linux-System. Falls nicht, installieren Sie es je nach verwendeter Distribution wie unten gezeigt.

Auf Arch Linux und seine Derivate wie AntergosManjaro Linux , installieren Sie Pip mit dem folgenden Befehl:

$ sudo pacman -S python-pip

Auf RHELCentOS :

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

Auf Fedora :

$ sudo dnf install python-pip

Auf DebianUbuntuLinux Mint :

$ sudo apt-get install python-pip

Auf SUSEopenSUSE :

$ sudo zypper install python-pip

Führen Sie nach der Installation von pip den folgenden Befehl aus, um "maybe" zu installieren.

$ sudo pip install maybe

Wissen Sie, was ein Befehl oder Programm genau tun wird, bevor Sie es ausführen

Die Anwendung ist absolut einfach! Fügen Sie einfach "vielleicht" vor einem Befehl hinzu, den Sie ausführen möchten.

Lassen Sie mich Ihnen ein Beispiel zeigen.

$ maybe rm -r ostechnix/

Wie Sie sehen können, werde ich einen Ordner namens "ostechnix" von meinem System löschen. Hier ist die Beispielausgabe.

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

Das "vielleicht"-Tool führt 5 Dateisystemoperationen durch und zeigt mir, was dieser Befehl (dh rm -r ostechnix/) genau tun wird. Jetzt kann ich entscheiden, ob ich diese Operation durchführen soll oder nicht. Cool, ja?

Hier ist ein weiteres Beispiel. Ich werde Inboxer installieren Desktop-Client für Gmail. Das habe ich bekommen.

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

Wenn es keine Dateisystemoperationen erkennt, zeigt es einfach ein Ergebnis wie das folgende an.

Zum Beispiel führe ich diesen Befehl aus, um mein Arch Linux zu aktualisieren.

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

Sehen? Es wurden keine Dateisystemoperationen erkannt, daher gab es keine Warnungen. Das ist absolut genial und genau das, wonach ich gesucht habe. Von nun an kann ich leicht wissen, was ein Befehl oder ein Programm tun wird, noch bevor ich es ausführe

Empfohlene Lektüre:

  • So simulieren Sie Linux-Befehle, ohne etwas im System zu ändern

Linux
  1. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  2. Was ist ein cURL-Befehl und wie wird er verwendet?

  3. So finden Sie heraus, was ein Linux-Befehl tut

  4. Analyse des freien Befehls:Was der Linux-Systemadministrator wissen muss

  5. Was Sie wissen sollten, bevor Sie IPv6 aktivieren

Linux-Dateibefehl:Was macht er und wie wird er verwendet?

So verwenden Sie den Linux-Zeitbefehl:Alles, was Sie wissen müssen

Linux-Tail-Befehl:Was es ist und wie man es verwendet

So verfolgen Sie die Programmausführung mit dem Linux-Strace-Befehl

Was ist Source Command in Linux und wie funktioniert es?

Woher weiß ich, was die „Errno“ bedeutet?