GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, co příkaz nebo program přesně udělá, než jej provede

Přemýšleli jste někdy, co udělá unixový příkaz před jeho provedením? Ne každý ví, co konkrétní příkaz nebo program udělá. Samozřejmě to můžete zkontrolovat pomocí Explainshell . Musíte zkopírovat/vložit příkaz na web Explainshell a ten vám dá vědět, co každá část příkazu Linuxu dělá. Není to však nutné. Nyní můžeme snadno vědět, co přesně příkaz nebo program provede, než jej provede, přímo z terminálu. Pozdravte „možná“ , jednoduchý nástroj, který vám umožní spustit příkaz a zjistit, co to udělá s vašimi soubory, aniž byste to skutečně dělali! Po zkontrolování uvedeného výstupu se můžete rozhodnout, zda jej skutečně chcete spustit nebo ne.

Jak „možná“ funguje?

Podle vývojáře

„možná“ spouští procesy pod kontrolou ptrace pomocí knihovny python-ptrace. Když zachytí systémové volání, které se chystá provést změny v systému souborů, zaprotokoluje toto volání a poté upraví registry CPU tak, aby přesměrovalo volání na neplatné ID syscall (ve skutečnosti je změnilo na ne-op) a nastavilo návratová hodnota tohoto neoperativního volání na hodnotu indikující úspěch původního volání. Výsledkem je, že proces věří, že vše, o co se snaží, se skutečně děje, i když ve skutečnosti nic.

Upozornění :Měli byste být velmi velmi opatrní při použití tohoto nástroje v produkčním systému nebo v jakémkoli systému, na kterém vám záleží. Stále může způsobit vážné škody, protože zablokuje pouze několik systémových volání.

Instalace „možná“

Ujistěte se, že jste nainstalovali Pip ve vašem systému Linux. Pokud ne, nainstalujte jej, jak je uvedeno níže, v závislosti na distribuci, kterou používáte.

Na Arch Linux a jeho deriváty jako AntergosManjaro Linux , nainstalujte pip pomocí následujícího příkazu:

$ sudo pacman -S python-pip

Na RHELCentOS :

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

Na Fedoře :

$ sudo dnf install python-pip

DebianuUbuntuLinux Mint :

$ sudo apt-get install python-pip

Na SUSEopenSUSE :

$ sudo zypper install python-pip

Jakmile je pip nainstalován, spusťte následující příkaz pro instalaci „možná“.

$ sudo pip install maybe

Vědět, co příkaz nebo program přesně udělá, než jej spustí

Použití je naprosto snadné! Stačí přidat „možná“ před příkaz, který chcete provést.

Dovolte mi ukázat vám příklad.

$ maybe rm -r ostechnix/

Jak vidíte, smažu složku s názvem "ostechnix" ze svého systému. Zde je ukázkový výstup.

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

Nástroj „možná“ provede 5 operací souborového systému a ukáže mi, co přesně tento příkaz (tj. rm -r ostechnix/) udělá. Nyní se mohu rozhodnout, zda mám tuto operaci provést nebo ne. Skvělé, jo?

Zde je další příklad. Chystám se nainstalovat Inboxer desktopový klient pro Gmail. To je to, co jsem dostal.

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

Pokud nedetekuje žádné operace souborového systému, pak jednoduše zobrazí výsledek podobný níže.

Tento příkaz jsem například spustil, abych aktualizoval svůj 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.

Vidět? Nezjistil žádné operace souborového systému, takže se neobjevila žádná varování. To je naprosto skvělé a přesně to, co jsem hledal. Od této chvíle mohu snadno vědět, co příkaz nebo program udělá, ještě před jeho provedením

Doporučené čtení:

  • Jak simulovat příkazy Linuxu, aniž byste cokoli změnili v systému

Linux
  1. Jak zjistit, co dělá příkaz Linuxu

  2. Linux – Jak vědět, co dělat Grep v Dmesg?

  3. Co byste měli vědět, než povolíte IPv6

  1. Jak napsat a spustit svůj první Qt program v Debianu 10

  2. Co je to pošta a jak se v ní orientuje?

  3. Jak si vybavím konkrétní příkaz z historie příkazů, aniž bych jej provedl

  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Co je příkaz cURL a jak jej používat?

  3. Rozebírání příkazu free:Co potřebuje vědět správce systému Linux