GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo saber qué hará exactamente un comando o programa antes de ejecutarlo

¿Alguna vez se preguntó qué hará un comando de Unix antes de ejecutarlo? No todos saben lo que hará un comando o programa en particular. Por supuesto, puedes comprobarlo con Explainshell . Debe copiar/pegar el comando en el sitio web de Explainshell y le permitirá saber qué hace cada parte de un comando de Linux. Sin embargo, no es necesario. Ahora, podemos saber fácilmente qué hará exactamente un comando o programa antes de ejecutarlo, directamente desde la Terminal. Saluda a "tal vez" , una herramienta simple que le permite ejecutar un comando y ver qué hace con sus archivos ¡sin hacerlo realmente! Después de revisar el resultado de la lista, puede decidir si realmente desea ejecutarlo o no.

¿Cómo funciona "tal vez"?

Según el desarrollador,

"tal vez" ejecuta procesos bajo el control de ptrace con la ayuda de la biblioteca python-ptrace. Cuando intercepta una llamada del sistema que está a punto de realizar cambios en el sistema de archivos, registra esa llamada y luego modifica los registros de la CPU para redirigir la llamada a una ID de llamada del sistema no válida (convirtiéndola efectivamente en una no operación) y establece el devolver el valor de esa llamada no operativa a uno que indique el éxito de la llamada original. Como resultado, el proceso cree que todo lo que está tratando de hacer realmente está sucediendo, cuando en realidad no sucede nada.

Advertencia :Debes tener mucho, mucho cuidado cuando utilice esta utilidad en un sistema de producción o en cualquier sistema que le interese. Todavía puede causar daños graves, ya que bloqueará solo un puñado de llamadas al sistema.

Instalando "tal vez"

Asegúrate de haber instalado Pip en su sistema Linux. De lo contrario, instálelo como se muestra a continuación según la distribución que utilice.

En Arch Linux y sus derivados como AntergosManjaro Linux , instala pip usando el siguiente comando:

$ sudo pacman -S python-pip

En RHELCentOS :

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

En Fedora :

$ sudo dnf install python-pip

En DebianUbuntuLinux Mint :

$ sudo apt-get install python-pip

En SUSEabrir SUSE :

$ sudo zypper install python-pip

Una vez instalado pip, ejecute el siguiente comando para instalar "tal vez".

$ sudo pip install maybe

Sepa qué hará exactamente un comando o programa antes de ejecutarlo

¡El uso es absolutamente fácil! Simplemente agregue "quizás" delante de un comando que desee ejecutar.

Permítame mostrarle un ejemplo.

$ maybe rm -r ostechnix/

Como puede ver, voy a eliminar una carpeta llamada "ostechnix" de mi sistema. Aquí está la salida de muestra.

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

La herramienta "tal vez" realiza 5 operaciones del sistema de archivos y me muestra qué hará exactamente este comando (es decir, rm -r ostechnix/). Ahora puedo decidir si debo realizar esta operación o no. Genial, ¿sí?

Aquí hay otro ejemplo. Voy a instalar Inboxer Cliente de escritorio para Gmail. Esto es lo que tengo.

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

Si no detecta ninguna operación del sistema de archivos, simplemente mostrará un resultado similar al siguiente.

Por ejemplo, ejecuto este comando para actualizar mi 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.

¿Ver? No detectó ninguna operación del sistema de archivos, por lo que no hubo advertencias. Esto es absolutamente brillante y exactamente lo que estaba buscando. De ahora en adelante, puedo saber fácilmente qué hará un comando o un programa incluso antes de ejecutarlo

Lectura sugerida:

  • Cómo simular comandos de Linux sin cambiar nada en el sistema

Linux
  1. Cómo averiguar qué hace un comando de Linux

  2. Diseccionando el comando libre:lo que el administrador de sistemas de Linux necesita saber

  3. ¿Ejecutar un comando remoto en la conexión Ssh, antes de iniciar sesión?

  4. Lo que debe saber antes de habilitar IPv6

  5. ¿Qué es el correo y cómo se navega?

Comando de archivo de Linux:qué hace y cómo usarlo

Cómo usar el comando de tiempo de Linux:todo lo que necesita saber

Comando de cola de Linux:qué es y cómo usarlo

Cómo rastrear la ejecución del programa usando el comando Strace de Linux

¿Qué es el comando fuente en Linux y cómo funciona?

¿Cómo recuerdo un comando específico del historial de comandos, sin ejecutarlo?