GNU/Linux >> Tutoriales Linux >  >> Linux

Usando la fuerza en la línea de comando de Linux

En algún momento de la historia reciente, los nerds de la ciencia ficción comenzaron una celebración anual de todo Star Wars el 4 de mayo, un juego de palabras con la bendición Jedi, "Que la Fuerza te acompañe". Aunque la mayoría de los usuarios de Linux probablemente no sean Jedi, todavía tienen formas de usar la fuerza. Por supuesto, la película podría no haber sido tan emocionante si Yoda simplemente le hubiera dicho a Luke que escribiera man X-Wing fighter o fuerza humana . O si hubiera dicho "RTFM" (leer el manual de la fuerza, por supuesto).

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Muchos comandos de Linux tienen un -f opción, que significa, lo adivinaste, ¡fuerza! A veces, cuando ejecuta un comando, falla o le solicita una entrada adicional. Esto puede ser un esfuerzo para proteger los archivos que intenta cambiar o informar al usuario que un dispositivo está ocupado o que ya existe un archivo.

Si no quieres que te molesten las indicaciones o no te importan los errores, ¡usa la fuerza!

Tenga en cuenta que el uso de la opción de fuerza de un comando para anular estas protecciones es, por lo general, destructivo. Por lo tanto, el usuario debe prestar mucha atención y asegurarse de que sabe lo que está haciendo. ¡Usar la fuerza puede tener consecuencias!

Los siguientes son cuatro comandos de Linux con una opción forzada y una breve descripción de cómo y por qué es posible que desee usarlo.

cp

El cp comando es la abreviatura de copiar:se usa para copiar (o duplicar) un archivo o directorio. La página del manual describe la opción forzada para cp como:

-f, --force
       if an existing destination file cannot be opened, remove it
       and try again

Este ejemplo es para cuando trabaja con archivos de solo lectura:

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 13 May  1 12:24 Hoth
-r--r----- 1 alan alan 14 May  1 12:23 Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Green Planet

Si desea copiar un archivo llamado Hoth a Naboo , el cp el comando no lo permitirá desde Naboo es de solo lectura:

[alan@workstation ~]$ cp Hoth Naboo 
cp: cannot create regular file 'Naboo': Permission denied

Pero usando la fuerza, cp no preguntará. Los contenidos y permisos de Hoth se copiará inmediatamente a Naboo :

[alan@workstation ~]$ cp -f Hoth Naboo 
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Icy Planet

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 12 May  1 12:32 Hoth
-rw-rw---- 1 alan alan 12 May  1 12:38 Naboo

¡Oh, no! Espero que tengan ropa de invierno en Naboo.

ln

El ln El comando se usa para hacer vínculos entre archivos. La página del manual describe la opción forzada para ln como:

-f, --force
       remove existing destination files

Supongamos que la princesa Leia mantiene un servidor de aplicaciones Java y tiene un directorio donde se almacenan todas las versiones de Java. Aquí hay un ejemplo:

leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia   12 Mar  5  2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

Como puede ver, hay varias versiones de Java Development Kit (JDK) y un enlace simbólico que apunta a la última. Utiliza un script con los siguientes comandos para instalar nuevas versiones de JDK. Sin embargo, no funcionará sin una opción forzada o a menos que el usuario root lo ejecute:

tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk

El alquitrán El comando extraerá el archivo .gz al directorio especificado, pero el ln El comando no podrá actualizar el enlace porque ya existe uno. El resultado será que el enlace ya no apunta al último JDK:

leia@workstation:/usr/lib/java$ ln -vs jdk1.8.0_181 jdk
ln: failed to create symbolic link 'jdk/jdk1.8.0_181': File exists
leia@workstation:/usr/lib/java$ ls -lt
total 28
drwxr-x--- 2 leia leia 4096 May  1 15:44 jdk1.8.0_181
lrwxrwxrwx 1 leia leia   12 Mar  5  2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

Ella puede forzar a ln para actualizar el enlace correctamente pasando la opción forzar y otra, -n . El -n es necesario porque el enlace apunta a un directorio. Ahora, el enlace nuevamente apunta al último JDK:

leia@workstation:/usr/lib/java$ ln -vsnf jdk1.8.0_181 jdk
'jdk' -> 'jdk1.8.0_181'
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia   12 May  1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia leia 4096 May  1 15:44 jdk1.8.0_181
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

Se puede configurar una aplicación Java para encontrar el JDK con la ruta /usr/lib/java/jdk en lugar de tener que cambiarlo cada vez que se actualiza Java.

rm

La firma comando es la abreviatura de "eliminar" (que a menudo llamamos eliminar, ya que algunos otros sistemas operativos tienen un del comando para esta acción). La página del manual describe la opción forzada para rm como:

-f, --force
       ignore nonexistent files and arguments, never prompt

Si intenta eliminar un archivo de solo lectura, rm se lo indicará. :

[alan@workstation ~]$ ls -l
total 4
-r--r----- 1 alan alan 16 May  1 11:38 B-wing
[alan@workstation ~]$ rm B-wing
rm: remove write-protected regular file 'B-wing'?

Debe escribir y o n para responder al aviso y permitir que rm comando para proceder. Si usa la opción forzar, rm no le preguntará y eliminará inmediatamente el archivo:

[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$

El uso más común de la fuerza con rm es eliminar un directorio. La -r La opción (recursiva) le dice a rm para eliminar un directorio. Cuando se combina con la opción forzar, eliminará el directorio y todo su contenido sin preguntar.

La firma comando con ciertas opciones puede ser desastroso. A lo largo de los años, los foros en línea se han llenado de bromas e historias de terror de usuarios que borran por completo sus sistemas. Este uso notorio es rm -rf * . Esto eliminará inmediatamente todos los archivos y directorios sin ningún aviso donde sea que se use.

delusuario

El del usuario comando es la abreviatura de eliminación de usuario, que eliminará un usuario. La página del manual describe la opción forzada para userdel como:

-f, --force
    This option forces the removal of the user account, even if the
    user is still logged in. It also forces userdel to remove the
    user's home directory and mail spool, even if another user uses
    the same home directory or if the mail spool is not owned by the
    specified user. If USERGROUPS_ENAB is defined to yes in
    /etc/login.defs and if a group exists with the same name as the
    deleted user, then this group will be removed, even if it is
    still the primary group of another user.

    Note: This option is dangerous and may leave your system in an
    inconsistent state.

Cuando Obi-Wan llegó al castillo de Mustafar, supo lo que tenía que hacer. Tuvo que eliminar la cuenta de usuario de Darth, pero Darth todavía estaba conectado.

[root@workstation ~]# ps -fu darth
UID        PID  PPID  C STIME TTY          TIME CMD
darth     7663  7655  0 13:28 pts/3    00:00:00 -bash
[root@workstation ~]# userdel darth
userdel: user darth is currently used by process 7663

Dado que Darth está actualmente conectado, Obi-Wan tiene que usar la opción forzar para userdel . Esto eliminará la cuenta de usuario aunque haya iniciado sesión.

[root@workstation ~]# userdel -f darth
userdel: user darth is currently used by process 7663
[root@workstation ~]# finger darth
finger: darth: no such user.
[root@workstation ~]# ps -fu darth
error: user name does not exist

Como puede ver, el dedo y ps Los comandos confirman que el usuario Darth ha sido eliminado.

Usando la fuerza en scripts de shell

Muchos otros comandos tienen una opción de fuerza. Un lugar donde la fuerza es muy útil es en los scripts de shell. Dado que utilizamos secuencias de comandos en trabajos cron y otras operaciones automatizadas, es crucial evitar cualquier aviso, de lo contrario, estos procesos automatizados no se completarán.

Espero que los cuatro ejemplos que compartí anteriormente lo ayuden a comprender cómo ciertas circunstancias pueden requerir el uso de la fuerza. Debe tener una sólida comprensión de la opción de forzar cuando se usa en la línea de comandos o al crear scripts de automatización. Su mal uso puede tener efectos devastadores, a veces en toda su infraestructura, y no solo en una sola máquina.


Linux
  1. Generar contraseñas en la línea de comandos de Linux

  2. 8 consejos para la línea de comandos de Linux

  3. Una introducción al uso de tcpdump en la línea de comandos de Linux

  4. Tener una vaca en la línea de comandos de Linux

  5. Encárguese en la línea de comandos de Linux

Uso de más para ver archivos de texto en la línea de comandos de Linux

Uso de less para ver archivos de texto en la línea de comandos de Linux

Usando el comando libre de Linux

Domina la línea de comandos de Linux

Tutorial sobre el uso del comando Timeout en Linux

Cómo descargar archivos en Rocky Linux 8 en la línea de comandos usando wget