Si trabajas como Sysadmin, developer o DevOps, entre otros, utilizar efectivamente Linux se vuelve una habilidad fundamental, ya que Linux es considerado la columna vertebral de la mayoría de los servidores y aplicaciones en todo el mundo.
Para 2021, el 47% de profesionales confirmó el uso de sistemas operativos basados en Linux como su entorno de desarrollo preferido, de acuerdo con Statista.
Es por esta razón que te presentaré una lista curada de los comandos que te ayudarán a ser más eficiente y gestionar un sistema Linux y sus herramientas vitales.
Este comando se usa para copiar archivos y directorios, funciona muy similar al comando cp
. Sin embargo, también permite copiarlos en ubicaciones remotas y proporciona barra de progreso.
Es útil a la hora de realizar copias de seguridad.
# Ejemplo
$ rsync -vap --ignore-existing <source_file># Banderas
v = verboso
r = recursivo
p = preservar permisos
g = grupo
o = propietario
a = archivo
--progress = barra de progreso
Comando sencillo, pero útil. Su funcionalidad es generar una contraseña aleatoria compleja con la longitud especificada.
# Ejemplo
$ mkpasswd -l 8
# Salida
> iwF1g2Lo
Screen es un gestor de ventanas a pantalla completa. Este comando crea una única ventana con un shell
en ejecución y permite ejecutar varias ventanas dentro de una única sesión.
Es especialmente útil cuando tienes que ejecutar una tarea larga de forma remota y tienes la preocupación de que tu sesión SSH se caiga y arruine todo. Screen se asegurará de seguir ejecutando los comandos incluso cuando la ventana no esté en primer plano.
# Ejemplos# Inicia una sesión
$ screen
# Lista los servicios en ejecución
$ screen -ls
Si trabajas regularmente con bases de datos LDAP, ldapsearch
se volverá tu mejor amigo. Abre una conexión a un servidor LDAP y te permite buscar, encontrar y depurar entradas en tu base de datos.
# Ejemplo
$ ldapsearch -x -W -D # Banderas
-x = autenticación simple
-W = solicitar la contraseña
-D = utiliza el nombre de bind dn para enlazar con el directorio LDAP
Uptime
devuelve métricas sobre el tiempo en que un servidor ha estado en funcionamiento, la hora actual, el número de usuarios y el promedio de uso de memoria. Si algo va mal en un servidor, esta debería de ser tu primera opción.
# Ejemplo
$ uptime
# Atajo, despliega información al detalle
$ w
Este comando permite enviar un mensaje a la terminal de todas las personas que estén conectadas al servidor en ese momento. Es increíble para mandar anuncios a todo el sistema.
# Ejemplo
$ wall "Mantenimiento programado para las 15:00"# Salida
> Broadcast message from Joel@localhost: Mantenimiento programado para las 15:00
Muestra una lista de procesos que se actualiza automáticamente para las métricas de uso del CPU y de memoria crítica.
# Ejemplo
$ top
Este comando te permite listar los archivos que están siendo utilizados, ya que identifica rápidamente qué archivos están en uso y qué procesos los tienen abiertos.
# Ejemplo
$ lsof
Netcat
o mejor conocido como nc
se utiliza principalmente para el escaneo de puertos, aunque esta no es su única funcionalidad. Netcat
puede soportar el escaneo de puertos, copia de archivos, reenvío de puertos, servidores proxy y servidores de alojamiento.
# Ejemplos# Comprueba la conexión entre dos hosts en un puerto determinado
$ nc -vz # Crea un servidor proxy
$ nc -l 8080 | nc 80
Netstat
devuelve detalles de la red, como tablas de enrutamiento, conexiones de red, membresías, estadísticas y banderas, entre otros.
# Ejemplos# Lista de todos los puertos de red
$ netstat -a# # Listar todos los puertos de escucha
$ netstat -tlpn
# Banderas-s = Muestra estadísticas
-v = verboso
-r = Muestra tablas de enrutamiento
-i = Muestra tabla de interfaces
-g = Muestra memorias de grupo
Se utiliza para obtener información sobre servidores en Internet o en la red local. nslookup
consulta el DNS para encontrar la información del servidor y puede ser útil para depurar la red.
# Ejemplo
$ nslookup platzi.com
# Key Flags
-port = Cambia el número de puerto para la conexión
-type = Cambiar el tipo de consulta
-domain = Establece el dominio
La lectura de datos de un archivo JSON desde la terminal puede ser frustrante cuando se trabaja con una API. Como puedes observar en la siguiente imagen, incluso un conjunto de datos pequeño puede ser difícil de leer.
$ cat person.json
Por suerte, Python tiene una solución para esto. Al enviar la salida del documento a través de Python se puede invocar el módulo de JSON, lo cual imprimirá el documento de una forma mucho más amigable para su lectura.
$ cat person.json | python -m json.tool
Si no recuerdas el nombre exacto de un paquete, puedes buscarlo haciendo uso del apt-cache
con alguna palabra clave. El resultado de este comando será una lista de paquetes que coincidan con la palabra clave buscada.
$ apt-cache search
Si en algún momento requieres listar todos los servicios, es decir, los activos e inactivos, este comando te será de gran ayuda. Además de listarlos, puedes utilizar el filtro --type
para limitar los resultados según su tipo.
$ systemctl list-units --type=service --all
Cuando necesites convertir un timestamp a un formato legible para cualquier ser humano, el comando date
te ahorrará muchísimo tiempo.
$ date -d 1656685875
En la imagen puedes observar que utilicé -r
en lugar de -d
esto es porque me encuentro en el sistema operativo de macOS. Si estás en un sistema operativo Linux, la bandera -d
funcionará perfectamente para ti.
El comando date
te permite obtener la hora actual en el formato de timestamp si lo llegas a necesitar.
$ date "+%s"
Con estos comandos y herramientas estoy segura de que te convertirás en un as con la terminal en Linux y empezarás a disfrutar de ejecutar diversas tareas desde ella. En los comentarios cuéntame qué comando faltó y consideres que es un must conocerlo para resolver alguna tarea del día a día.
Si bien, como te comentaba al inicio de este blog, el 47% de profesionales dedicados al desarrollo utiliza Linux en su día a día, también este sistema operativo tiene la mayor adopción para la administración de servidores. Por lo tanto, si quieres adentrarte aún más en este mundo, te recomiendo el Curso de Administración de Servidores Linux.
Recuerda nunca parar de aprender 💚
Excelente!. Hay un typo en el 13 “seach” por “search”.
Para quien no se acuerde, en el 12
cat person.json | python -m json.tool
La barra vertical es un operador de canalización que envían el resultado del primer comando como dato de entrada para el 2do.
Agrego que rsync en particular es excelente, adicional a lo que menciona Alex permite identificar copias parciales y hace del proceso de copia algo muy sencillo.
Corregido el typo muchas gracias 💚
Qué buen aporte, Alex!!! No me sabía esos trucos, los pondré en práctica, muchas gracias 🤓🤓🤓
Yo incluiría el comando de apropos
Si no cuentas con google para saber qué comandos hay disponibles según tus necesidades puedes usarlo. Por ejemplo, para averiguar los comandos relacionados con redes escribes el comando seguido del nombre del tema que buscas como argumento
apropos network
Y el stdout será una lista de muchísimos comandos útiles segun esta necesidad. 😎
yo incluiría, el comando who. para saber quien esta conectado al sistema
esta re cool todo! aun no uso ni la mitad de esos comandos, creo solo uso los basicos como mkdir, cp, cd, rm -r, pwd etc pero esta genial saber otros comandos por ahi ❤️
We will rock 🤘
Yo le agregaría al menos 2 herramientas a esta lista, exa y bat que son la versión moderna de ls y cat respectivamente.
Post para cracks, buena!!!
Yo agregaria el comando ps -ef | more
para ver los diferentes procesos que estan corriendo en el servidor y quien los esta corriendo
también agregaria el comando df -v para ver el porcentaje de ocupacion de los diferentes fyle systems
Pues a instalar la WSL ya!