GNU/Linux >> Tutoriales Linux >  >> Linux

17 comandos de Linux que todo administrador de sistemas debería conocer

Hace unos meses, le pedí a la comunidad de colaboradores de Enable Sysadmin que me ayudara a hacer una lista de sus comandos más esenciales. Después de procesar los resultados, 17 de los comandos resultaron ser esenciales o al menos enormemente beneficiosos para el trabajo de administrador de sistemas de Linux. Entonces, sin más demora, pasemos a esto.

¿Quiere obtener más información sobre los comandos de red? Lea la primera parte de nuestra lista de comandos de fuentes múltiples  ]

buscar —Este comando es parte de findutils y permite comandos de búsqueda personalizados. Por ejemplo, si quisiera encontrar directorios que coincidieran con un nombre específico, podría usar algo como esto:

find path/ -type d -iname '*dir_name*'

Puede encontrar más información sobre el comando aquí.

ls+xargs —Esta pareja era nueva para mí; sin embargo, fue realmente interesante de aprender y tiene algunas aplicaciones potencialmente revolucionarias. xargs le permite ejecutar comandos adicionales contra la salida de un comando dado. Un ejemplo súper básico de esto se puede ver cuando se empareja con ls dominio. Por ejemplo, si quisieras cat todos los archivos listados por ls , podrías usar algo como esto:

$ ls
1.file  2.file  3.file

$ ls | xargs cat
you are reading file 1
you are reading file 2 
you are reading file 3

Echa un vistazo en profundidad a xargs de HowtoGeek
awk/sed/(e)grep —Este trío fue nombrado más veces que cualquier otro comando por nuestra comunidad. Fue revelador ver cuán importantes son realmente estos comandos para la comunidad y para los administradores de sistemas en general. Centrémonos en grep primero.
grep —Grep es increíble, no es mentira. Si aún no conoce grep (y seamos honestos, eso es al menos posible, si eres nuevo en la línea de comandos de Linux), familiarízate con él. grep es una herramienta que le permitirá filtrar la salida estándar de casi cualquier cosa en la línea de comandos. Puedes grep para las palabras que desea encontrar, o invierta eso para mostrarle todo lo que NO coincida con su palabra clave. Incluso hablaremos un poco sobre una herramienta muy similar que extiende grep un poquito. Estos son algunos ejemplos.
Para mostrarle todas las líneas de un archivo dado que incluyen la palabra "error", por ejemplo, haría algo como esto:

$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.

$ grep error file.txt
This line contains an error.
$

Eso es lo que llamarías un grep inclusivo . También puede revertir eso usando un indicador de exclusión. Digamos que desea ver todas las opciones de configuración en su sshd config que no están comentados, puede hacer esto:

# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

… snip ...

Subsystem sftp /usr/libexec/openssh/sftp-server
#

Vale la pena señalar que grep distingue entre mayúsculas y minúsculas, como muchas cosas en Bash. Por lo tanto, buscar "error" no encontrará "Error" o "ERROR". Puedes decirle a grep para filtrar sin distinguir entre mayúsculas y minúsculas usando -i bandera.

$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.

Esto coincidirá con error, ERROR, erRoR o lo que sea, siempre que las letras sean las mismas.

Ahora, dije que podrías usar grep para filtrar la salida de cualquier comando, ¿verdad? Lo haces con la redirección de salida usando una tubería. Esto es realmente útil para cosas como filtrar registros, incluso en vivo con la cola -f .

   # tail -f /var/log/messages | grep -i error

Hay muchas más opciones para grep , incluido el filtrado basado en un archivo de palabras clave, expresiones regulares, incluso puede colorear la salida. Le sugiero que se familiarice con la página del manual si desea obtener más información.

egrep —Ahora, ¿y si quieres filtrar por más de una palabra? Siempre he usado egrep por esto.

Di que te gustaría grep en caso de error o advertencia, podría hacer algo como esto:

$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.

egrep admitirá otros patrones, estoy seguro, pero ese de ahí es para el que siempre lo he usado, y lo he encontrado muy útil.

wow —El awk El comando implementa el lenguaje de programación AWK para procesar texto y es particularmente bueno para procesar datos organizados en columnas. Este comando está disponible en la mayoría, si no en todas, las distribuciones de Linux, así como en cualquier otro sistema operativo UNIX.

Los administradores de sistemas suelen utilizar awk para extraer datos de archivos o canalizados desde la salida de otros comandos en la línea de comandos o scripts de Shell. Invocar awk ejecutando el comando proporcionando una acción entre '{}' . Puede hacer referencia a columnas como variables, como $1 para la primera columna, $2 , por el segundo, y así sucesivamente. Por defecto awk usa espacios como separador de columnas, pero puede usar cualquier carácter especificándolo con la bandera -F .

Por ejemplo, para imprimir el propietario y el grupo, las columnas 3 y 4 en la salida de ls -l , canalice su salida a awk así:

$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...

También puede filtrar líneas de la entrada proporcionando una expresión regular opcional antes de la acción. Por ejemplo, para imprimir todos los nombres de host (columna 2) de las líneas que comienzan con un número en su /etc/hosts archivos, use awk así:

$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...

awk es un comando versátil que admite un lenguaje de programación completo que le permite hacer muchas cosas, como realizar cálculos, condicionales, transformación de datos y más. Es una excelente opción para ayudarlo a automatizar sus sistemas y, a menudo, forma parte de los scripts de shell.

Para obtener más información, consulte el artículo Guía para principiantes de gawk y el comando man páginas.

sed —El comando sed —abreviatura de editor de secuencias— le permite filtrar y editar secuencias de texto en forma de secuencias de comandos. Los administradores de sistemas suelen utilizar sed en secuencias de comandos Bash para transformar texto canalizado desde otros comandos o directamente desde archivos. En su forma más básica, sed busca y reemplaza texto. Por ejemplo, utilícelo para reemplazar la cadena "flujo" con "texto" proveniente de una tubería, así:

$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text

También puede reemplazar texto en un archivo proporcionando el nombre del archivo como último parámetro, así:

$ sed 's/pattern/replacement/' filename

Por seguridad, sed envía los resultados a STDOUT sin modificar el archivo. Puede redirigir la salida a un nuevo archivo para guardar los resultados. También puede cambiar el archivo original en su lugar proporcionando -i bandera.

De forma predeterminada, sed cambia solo la primera aparición del patrón en cada línea. Para cambiar este comportamiento, lo que permite reemplazar todas las instancias del patrón, proporcione el g opción al final de sed expresión de comando, como esta:

$ sed 's/pattern/replacement/g' filename

Además de la búsqueda de texto básica, sed admite la coincidencia de expresiones regulares. Por ejemplo, use una expresión regular "[Ww]ord" para reemplazar tanto "Palabra" como "palabra" en cada línea:

$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD

Este comando ofrece muchas otras posibilidades, pero incluso con este uso básico, puede ahorrar mucho tiempo. Para más información sobre otras opciones, consulte al man páginas para sed .

ver —Este comando le permite ejecutar un comando/programa repetidamente usando un intervalo dado. De forma predeterminada, el intervalo es cada dos segundos. Muchos administradores de sistemas usan este comando para monitorear varias condiciones o tareas del sistema hasta que se completan.
Por ejemplo, si quisieras monitorear el uso de la memoria, podrías usar lo siguiente: watch -d free -m (el -d La opción resalta los valores que son diferentes de la última ejecución).

rizo —Este comando le permite transferir datos hacia/desde servidores, con muchas más opciones que solo HTTP/HTTPS. Funciona sin interacción del usuario y se ve con mucha frecuencia en situaciones en las que necesita realizar llamadas API REST (GET, POST, PUT).

curl admite muchas opciones para conectarse a servidores, como SSL, usar cookies, reanudar la transferencia de archivos, etc. Es casi como si tuviera un navegador web que puede ejecutar desde la línea de comandos.

El siguiente ejemplo muestra curl para una simple descarga de archivos, pero limitando el ancho de banda:

curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz

Como dice su manual, la cantidad de opciones disponibles para usar con curl son muchos. Algunos de los que uso con frecuencia son:

  •  -s: ejecutar en modo silencioso (sin barra de progreso)
  •  -k: permitir una conexión insegura (solo cuando se conecta a un servidor interno conocido para el que se utiliza un certificado autofirmado)
curl -X POST --header "Content-Type: application/json" \
             --data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
               https://myserver.example.com/posts

En el ejemplo anterior, estoy haciendo un POST y pasando el encabezado y el cuerpo .

correo —El mail command es una herramienta súper ordenada que permite al usuario enviar correos electrónicos directamente desde la línea de comandos, sin tener que abrir un navegador o un cliente dedicado. Deberá tener un servidor SMTP ejecutándose localmente en su máquina, por lo que es algo que debe tener en cuenta.

Instale el paquete:

 $ apt-get install mailutils

Para enviar un correo electrónico básico, puede usar lo siguiente:

$ mail -s "Subject Line" [email protected]

Cuando presionas Entrar , se le pedirá que escriba Cc campo. Puede agregar destinatarios adicionales o simplemente presionar Entrar saltear. Luego escribirás tu mensaje. Cuando termine, use Ctrl+D para enviar el mensaje para su entrega. Debería verse así cuando termine:

$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world" 
<Ctrl + D>

Para obtener más información sobre este comando, consulte este excelente artículo.

tmux —El tmux El comando, que es el multiplexor de terminal, permite múltiples ventanas dentro de una sola ventana de terminal. Puede saltar entre ventanas e incluso dividirlas en paneles individuales, cada uno con su propia CLI. Hemos publicado contenido excelente sobre tmux y como usarlo, así que les dejare un link a ese contenido. Consulte consejos para usar tmux para obtener más información.

sudo —El comando sudo es su camino hacia privilegios elevados. Todos los administradores de sistemas deben saber cómo usar este comando, en qué se diferencia de su (que muchos usan en lugar de sudo …mala idea), y cómo garantizar el acceso de las cuentas necesarias. Escribí un artículo de introducción a sudo hace mucho tiempo cuando eso puede resultarle útil.

ssh —El ssh El comando (shell seguro) le permite usar protocolos de trabajo remoto para acceder y manipular servidores a través de una conexión de red. Si alguna vez ha trabajado en soporte, o ha recibido ayuda de soporte, muchas veces el técnico de soporte usa ssh para acceder a su máquina o servidor.
El uso de comandos es bastante sencillo:

$ ssh username@hostname

Se le pedirá una contraseña y, si puede proporcionar las credenciales adecuadas, estará en camino al sistema deseado.

scp —El comando de copia segura (scp ) permite a un usuario copiar archivos a/desde un sistema remoto. Necesitarás ssh habilitado en ambos extremos de la transacción y una sintaxis de comando adecuada. Todo eso y deberías estar listo para irte. La sintaxis del comando debería verse así:

Para copiar un archivo DESDE un sistema remoto al directorio de trabajo actual:

scp user@ip_of_remote :/file/path/of/file.txt . 

pkill —Esta utilidad de comando nos permite señalar los procesos de ejecución de los programas. Puede buscar un proceso por nombre (completo o parcial), usuario, etc. Hay muchas opciones para usar esta utilidad; sin embargo, de forma predeterminada, el comando envía la señal 15 (TERM) a todos los PIDS que coincidan con sus criterios. Por ejemplo:

$ pkill chrome

Esto debería cerrar todas las instancias de Chrome que se ejecutan en la máquina.

lsns —Este comando, enumera espacios de nombres (lsns ), hace exactamente lo que dice:enumera los espacios de nombres. Loco verdad? De todos modos, hay muchas opciones que puedes agregar aquí: -J (formato json), -l (formato de lista), -n (sin encabezados), etc. Este comando es parte de util-linux paquete y está ampliamente disponible. Para obtener más información sobre lsns o espacios de nombres en general, consulte este artículo del colaborador Steve Ovens Los 7 espacios de nombres de Linux más utilizados.

dejar de compartir —Este también se centra en los espacios de nombres. El comando unshare ejecuta un programa en un espacio de nombres recién creado. De forma predeterminada, el nuevo espacio de nombres solo durará mientras tenga programas ejecutándose en él. Para obtener más información sobre este comando, consulta el man página en su máquina Linux favorita.

[ ¿Quiere poner a prueba sus habilidades de administrador de sistemas? Tome una evaluación de habilidades hoy. ]

Si puede incorporar estas herramientas en su flujo de trabajo donde tengan sentido, será un mejor administrador de sistemas para hacerlo. Si algunos de sus comandos favoritos no están en la lista, nos encantaría conocerlos. Siéntase libre de enviar un artículo sobre su comando favorito que no incluimos en la lista a [email protected].


Linux
  1. 20 comandos esenciales de Linux para cada usuario

  2. Temas de sonido en Linux:Lo que todo usuario debe saber

  3. 10 comandos que todo usuario de Linux debe conocer

  4. 3 habilidades que todo administrador de sistemas de Linux debe aportar

  5. 6 opciones de comandos de OpenSSL que todo administrador de sistemas debería conocer

Comandos básicos de red de Linux que debe conocer

5 comandos de Linux que todo usuario de Linux debe conocer

21 comandos esenciales que todo usuario de Docker debe conocer

5 trucos simples de Bash History que todo usuario de Linux debe saber

¡Trucos de terminal de Linux que todo entusiasta de Linux debe conocer!

Comandos de Linux que todos los usuarios deben conocer {Lista definitiva}