Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Linux ESP
Linux ESP
www.dbooks.org
Machine Translated by Google
Suficiente Linux
Aprendiendo sobre Linux un comando a la vez
malcolm maclean
Este libro está a la venta en http://leanpub.com/jelinux
Esta versión fue publicada el 20170430
Este es un libro Leanpub . Leanpub empodera a los autores y editores con el proceso Lean Publishing. Lean
Publishing es el acto de publicar un libro electrónico en progreso utilizando herramientas livianas y muchas
iteraciones para obtener comentarios de los lectores, girar hasta que tenga el libro correcto y generar
tracción una vez que lo tenga.
Este trabajo tiene una licencia Creative Commons AttributionNonCommercialShareAlike 3.0 Unported License
Machine Translated by Google
También por Malcolm Maclean
Consejos y trucos de D3 v3.x
Consejos y trucos del folleto
Raspberry Pi: medir, registrar, explorar.
Coautoría suficiente en Leanpub
Solo suficiente ownCloud en una Raspberry Pi
Bastante Raspberry Pi
Solo suficiente fantasma en una Raspberry Pi
Solo suficientes Nagios en una Raspberry Pi
Consejos y trucos de D3 v4.x
Helado nunca suficiente
www.dbooks.org
Machine Translated by Google
Para el equipo
Machine Translated by Google
Contenido
www.dbooks.org
Machine Translated by Google
CONTENIDO
/casa . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
/lib . . / . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
perdido+encontrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
/medios . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
mnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
/ optar . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
proc . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
raíz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
/sbin . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
srv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
/tmp . . / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
usr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
/usr/bin . /usr/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
/usr/local . . . /usr/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
sbin . /var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
/var/lib . /var/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
registro . /var/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
carrete . . . /var/tmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Direccionamiento absoluto y relativo del nombre de ruta. . . . . . . . . . . . . . . . . . . . . . 27
Nombres de rutas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Direccionamiento de nombre de ruta absoluta. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Direccionamiento de nombre de ruta relativo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
El atajo de 'casa'. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Todo es un archivo en Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Archivos tradicionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Directorios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Información del sistema . . . . . . . . . . . .
. . .. . . . . . . . . . . . . . . . . . . 29
Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Archivos e inodos de Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
El nombre del archivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
El inodo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
. .
Enlaces blandos (también conocidos como enlaces simbólicos, también conocidos como enlaces simbólicos). . .
. . . . . . . . . . . . . . . . 34
Enlaces duros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Enlaces comparados. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 35
Edición de archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
El editor nano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Scripting . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 39
Escribiendo nuestro Guión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Haga que el script sea ejecutable. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 40
Coloque el script en algún lugar donde el shell pueda encontrarlo. . . . . . . . . . . . . . . . . 41
CONTENIDO
www.dbooks.org
Machine Translated by Google
CONTENIDO
netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
hacer ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
scp _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
sftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
trazar ruta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
wget _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Misceláneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
aptget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
claro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
eco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
agregar grupo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
hombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Modprobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
contraseña _ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
cerrar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
su . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
agregar usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
modo de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
OMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
quién soy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Introducción
¡Bienvenido!
Hola. Felicitaciones por estar lo suficientemente interesado en el proceso de aprender sobre Linux como para haber
conseguido este libro.
Si aún no lo ha adivinado, este será un viaje de descubrimiento para ambos. He 'jugado' con computadoras y Linux durante
muchos años, pero siempre sentí que faltaba algo. Así que he decidido escribir un libro sobre los comandos de Linux y la
filosofía detrás de ellos para ayudar a mi comprensión y, con suerte, a la suya también. Sé que este tipo de esfuerzo ya lo
han hecho otros, pero creo que es útil que la gente tenga opciones :).
Al igual que otros libros que he escrito (o estoy en proceso de escribir), seguirán siendo un trabajo en progreso. Son
documentos vivos, abiertos a la retroalimentación, comentario, expansión, cambio y mejora. Por favor, siéntase libre de dar
su opinión sobre las formas en que puedo mejorar las cosas. Su entrada sería muy apreciada.
Estoy seguro de que la mayoría de los autores tratan de ser lo más accesibles posible. Me gustaría hacer lo mismo, pero ten cuidado...
Es muy probable que si me hace una pregunta técnica no sepa la respuesta. Por lo tanto, sea amable con sus correos
electrónicos :).
Correo electrónico: [email protected]
¿Para quién es este libro?
¡Tú!
Solo por interesarte y conseguir una copia de este libro, has demostrado un deseo de aprender, explorar y desafiarte a ti
mismo. Ese es el criterio más importante que querrás tener cuando pruebes algo nuevo. Su nivel de experiencia vendrá en
segundo lugar a su deseo de aprender.
Habiendo dicho eso, necesitará acceso a una línea de comando de Linux en alguna parte. Esto podría significar que puede
hacer lo propio con una Raspberry Pi¹ (Mi recomendación) o podría ejecutar un servidor Linux como una máquina virtual
bajo otro sistema operativo. De lo contrario, podría iniciar Linux desde un CD en vivo. Lamentablemente, no voy a explicar
cómo lograr esta parte de la ecuación, pero no dude en consultar 'Just Enough Raspberry Pi²' para inspirarse.
Lo mejor que debe recordar es que antes de aprender algo nuevo, casi siempre parece indistinguible de la magia, pero una
vez que comienza a jugar, el misterio se desvanece rápidamente.
¹https://www.raspberrypi.org/
²https://leanpub.com/jerpi
www.dbooks.org
Machine Translated by Google
Introducción 2
Otros recursos útiles
El proyecto de información de Linux (linfo.org)
El Proyecto de información de Linux tiene una gran variedad de información que incluye una excelente sección 'Linux
para principiantes absolutos³' y una variedad de descripciones de comandos .
linuxconfig.org
raspberrypi.org
La 'nave nodriza' de raspberry Pi de raspberrypi.org tiene toneladas de buena información sobre Pi y que incluye guías
para usar Linux con la computadora pequeña favorita de todos.
howtovmlinux.com
techmint.com: Guía práctica de Linux
Un sitio realmente útil con una gran variedad de instrucciones, tutoriales y guías de Linux.
³http://www.linfo.org/newbies.html
http://www.linfo.org/command_index.html
https://linuxconfig.org/linuxtutorials
https://linuxconfig.org/linuxcommands
https: //www.raspberrypi.org/documentation/linux/
http://uk.linkedin.com/in/farooqmohammedahmed
http://www.howtovmlinux.com/articles/linux.html
¹ http://www.howtovmlinux.com/ articulos/rasberrypi.html
Machine Translated by Google
Conceptos de Linux
¿Qué es Linux?
En su forma más simple, la respuesta a la pregunta "¿Qué es Linux?" es que es un sistema operativo de
computadora. Como tal, es el software que forma una base que permite ejecutar las aplicaciones que se
ejecutan en ese sistema operativo.
En la forma más estricta de hablar, el término 'Linux' se refiere al kernel de Linux. Es decir, el núcleo central
del sistema operativo, pero el término se usa a menudo para describir el conjunto de programas, herramientas
y servicios que se agrupan junto con el kernel de Linux para proporcionar un sistema operativo completamente
funcional.
Un sistema operativo es un software que administra los recursos de hardware y software de la computadora
para aplicaciones informáticas. Por ejemplo Microsoft Windows podría ser el sistema operativo que permita
ejecutar la aplicación de navegador Firefox en nuestro ordenador de sobremesa.
Linux¹¹ es un sistema operativo de computadora que se puede distribuir como software gratuito y de código
abierto¹². El componente definitorio de Linux es el kernel de Linux, un kernel de sistema operativo lanzado
por primera vez el 5 de octubre de 1991 por Linus Torvalds.
Linux se desarrolló originalmente como un sistema operativo gratuito para computadoras personales
basadas en Intel x86. Desde entonces, se ha puesto a disposición de una amplia gama de plataformas de
hardware informático y es un sistema operativo líder en servidores, ordenadores centrales y superordenadores.
Linux también se ejecuta en sistemas integrados, que son dispositivos cuyo sistema operativo suele estar
integrado en el firmware y está muy adaptado al sistema; esto incluye teléfonos móviles, tabletas, enrutadores
de red, controles de automatización de instalaciones, televisores y consolas de videojuegos. Android, el
sistema operativo más utilizado para tabletas y teléfonos inteligentes, se basa en el kernel de Linux.
La mascota de Linux 'Tux'
¹¹http://en.wikipedia.org/wiki/Linux
¹²http://en.wikipedia.org/wiki/Free_and_opensource_software
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 4
El desarrollo de Linux es uno de los ejemplos más destacados de colaboración de software libre y de código
abierto. Por lo general, Linux se empaqueta en una forma conocida como distribución de Linux, tanto para uso
de escritorio como de servidor. Las distribuciones principales de Linux populares incluyen Debian, Ubuntu y el
Red Hat Enterprise Linux comercial. Las distribuciones de Linux incluyen el kernel de Linux, las utilidades y
bibliotecas de soporte y, por lo general, una gran cantidad de software de aplicación para llevar a cabo el uso
previsto de la distribución.
Una distribución destinada a ejecutarse como un servidor puede omitir todos los entornos de escritorio gráficos
de la instalación estándar y, en su lugar, incluir otro software para configurar y operar una pila de soluciones
como LAMP (Linux, Apache, MySQL y PHP). Debido a que Linux se redistribuye libremente, cualquiera puede
crear una distribución para cualquier uso previsto.
Linux no es un sistema operativo que la gente use normalmente en sus computadoras de escritorio en el hogar
y, como tal, los usuarios regulares de computadoras pueden encontrar alta la barrera de entrada para usar
Linux. Esto se hace más fácil mediante el uso de interfaces gráficas de usuario que se incluyen con muchas
distribuciones de Linux, pero estas superposiciones gráficas son una especie de cuña para el funcionamiento
subyacente de la computadora. Se puede obtener un mayor grado de control y flexibilidad al trabajar con Linux
en lo que se llama la 'Línea de comandos' (o CLI), y el floreciente campo de los elementos informáticos
educativos, como Raspberry Pi¹³, ha brindado acceso a un nuevo mundo . de oportunidades de aprendizaje
en este nivel más fundamental.
¹³http://raspberrypi.org/
Machine Translated by Google
Conceptos de Linux 5
Ejecutando Comandos en Linux
Un comando es una instrucción dada por un usuario que le dice a la computadora que lleve a cabo una acción. Esto
podría ser para ejecutar un solo programa o un grupo de programas vinculados. Los comandos generalmente se inician
escribiéndolos en la línea de comando (en una terminal) y luego presionando la tecla ENTER, que los pasa al shell.
La terminal
Una terminal se refiere a un programa contenedor que ejecuta un shell. Esto solía significar un dispositivo físico que
consiste en poco más que un monitor y un teclado. A medida que los sistemas Unix/Linux avanzaban, el concepto de
terminal se abstrajo en software. Ahora tenemos programas como LXTerminal (en Raspberry Pi) que abrirá una ventana
en una interfaz gráfica de usuario (GUI) que ejecutará un shell en el que puede ingresar comandos. Alternativamente,
podemos prescindir de la GUI por completo y simplemente comenzar en la línea de comando cuando iniciamos.
El shell es un programa que en realidad procesa comandos y devuelve resultados. Cada sistema operativo Linux tiene
al menos un shell y la mayoría tiene varios. El shell predeterminado en la mayoría de los sistemas Linux es bash.
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 6
El comando
Los comandos en los sistemas operativos Linux son comandos integrados o externos. Los comandos incorporados son
parte del shell. Los comandos externos son ejecutables (programas escritos en un lenguaje de programación y luego
compilados en un binario ejecutable) o scripts de shell.
Un comando consta de un nombre de comando seguido generalmente por una o más secuencias de caracteres que
incluyen opciones y/o argumentos. Cada una de estas cadenas está separada por un espacio en blanco. La sintaxis
general de los comandos es;
nombre de comando [opciones] [argumentos]
Los corchetes indican que los elementos adjuntos son opcionales. Los comandos suelen tener algunas opciones y utilizan
argumentos. Sin embargo, hay algunos comandos que no aceptan argumentos y algunos sin opciones. Como ejemplo,
podemos ejecutar el comando ls sin opciones ni argumentos de la siguiente manera;
ls
El comando ls enumerará el contenido de un directorio y, en este caso, se espera que el comando y la salida tengan un
aspecto similar al siguiente;
pi@frambuesapi ~ $ ls
Escritorio python_games
Opciones
Una opción (también conocida como interruptor o indicador) es un código de una sola letra, o a veces una sola palabra o
conjunto de palabras, que modifica el comportamiento de un comando. Cuando se utilizan varias opciones de una sola
letra, todas las letras se colocan una al lado de la otra (no separadas por espacios) y pueden estar en cualquier orden. El
conjunto de opciones generalmente debe estar precedido por un solo guión, nuevamente sin espacio intermedio.
Entonces, nuevamente usando ls si introducimos la opción l podemos mostrar el total de archivos en el directorio y
subdirectorios, los nombres de los archivos en el directorio actual, sus permisos, la cantidad de subdirectorios en los
directorios enumerados, el tamaño del archivo, y la fecha de la última modificación.
El comando que ejecutamos por lo tanto se ve así;
lsl
Entonces, el comando (con la opción l ) y la salida se verían de la siguiente manera;
Machine Translated by Google
Conceptos de Linux 7
pi@frambuesapi ~ $ ls l
26 totales
drwxrxrx 2 pi pi 4096 20 de febrero 08:07 Escritorio drwxrwxrx 2 pi pi 4096
27 de enero 08:34 python_games
Aquí podemos ver un cambio bastante radical en el formato y contenido de la información devuelta.
Argumentos
Un argumento (también llamado argumento de línea de comando) es un nombre de archivo u otros datos que
se proporcionan a un comando para que el comando lo use como entrada.
Usando ls nuevamente, podemos especificar que deseamos enumerar el contenido del directorio python_games
(que pudimos ver cuando ejecutamos ls) usando el nombre del directorio como argumento de la siguiente
manera;
ls python_games
El comando (con el argumento python_games ) y el resultado tendrían el siguiente aspecto (en realidad, eliminé
bastantes archivos para hacerlo un poco más legible);
pi@raspberrypi ~ $ ls python_games 4row_arrow.png
gem4.png 4row_black.png gem5.png 4row_board.png pentomino.py
gem6.png 4row_computerwinner.png gem7.png pinkgirl.png
4row_humanwinner.png gem1.png gem2.png gem3.png Plain_Block.png
princess.png
gemgem.py RedSelector.png
partido5.wav Wall_Block_Tall.png
memorypuzzle_offuscated.py Wood_Block_Tall.png memorypuzzle.py
gusano.py
Poniendolo todo junto
Y como nuestro ejemplo final, podemos combinar nuestro comando (ls) con una opción (l) y un argumento
(python_games) de la siguiente manera;
ls l python_games
Con suerte, en esta etapa, la salida no debería sorprender demasiado, aunque nuevamente he podado algunos
de los archivos por razones de legibilidad;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 8
pi@raspberrypi ~ $ ls l python_games
total 1800
rwrwr 1 pi pi 9731 27 de enero 08:34 4row_arrow.png rwrwr 1 pi
pi 7463 27 de enero 08:34 4row_black.png rwrwr 1 pi pi 8666 27 de
enero 08:34 4row_board.png rwrwr 1 pi pi 18933 27 de enero 08:34
4row_computerwinner.png rwrwr 1 pi pi 25412 27 de enero 08:34
4row_humanwinner.png rwrwr 1 pi pi 8562 27 de enero 08:34 4row_red.png
rwrwr 1 pi pi 14661 27 de enero 08:34 tetrisc.mid rwrwr 1 pi pi
15759 27 de enero 08:34 tetrominoforidiots.py rwrwr 1 pi pi
18679 27 de enero 08:34 tetromino.py rwrwr 1 pi pi 9771 27 de enero 08:34
Tree_Short.png rwrwr 1 pi pi 11546 27 de enero 08:34
Tree_Tall.png rwrwr 1 pi pi 10378 27 de enero 08:34 Tree_Ugly.png
rwrwr 1 pi pi 8443 27 de enero 08:34 Wall_Block_Tall.png rwrw
r 1 pi pi 6011 27 de enero 08:34 Wood_Block_Tall.png rwrwr 1 pi
pi 8118 27 de enero 08:34 wormy.py
Machine Translated by Google
Conceptos de Linux 9
Comandos
comodines
Un concepto importante a comprender en Linux es el uso de comodines. En un contexto deportivo, un comodín es algo (o
alguien) que se puede introducir en un juego como sustituto. Puede que no tenga un valor estrictamente definido, pero
podría reemplazar una variedad de objetos estándar.
Los comodines son una característica de la línea de comandos de Linux (y otros lugares) que hace que la línea de
comandos sea mucho más versátil que los administradores de archivos gráficos. Cualquiera que haya intentado usar
combinaciones sofisticadas de shift/ctrl y clic del mouse mientras clasificaba en un administrador de archivos dará fe de
cierto grado de dificultad.
Por ejemplo, si tenemos un directorio con una gran cantidad de archivos y subdirectorios, y necesitamos mover todos los
archivos de Python (archivos que terminan en .py) , que tienen la palabra 'pi' en algún lugar de sus nombres, de ese
directorio grande a otro directorio. Esto tiene el potencial de ser una tarea que requiere mucho tiempo.
En la línea de comandos de Linux, esa tarea es casi tan fácil de realizar como mover solo un archivo de Python, y es
simple debido a los comodines. Estos son caracteres especiales que nos permiten seleccionar nombres de archivo que
coincidan con ciertos patrones de caracteres. Esto nos ayuda a seleccionar un rango de coincidencia de archivos
escribiendo solo unos pocos caracteres y, en la mayoría de los casos (en mi humilde opinión), es más fácil que usar un
administrador de archivos gráfico.
El proceso de usar comodines también se conoce como 'Globbing'. El término 'Globbing' se originó
a partir de un programa llamado glob que (hace mucho tiempo) expandía los comodines y los
aplicaba a conjuntos de archivos (dependiendo de los comodines utilizados). Esto fue visto como
algo bastante útil. Tan útil que estaba integrado en el caparazón. Todavía se puede ejecutar desde
la línea de comandos (escriba man glob en una terminal para obtener más información).
Aquí hay una lista de los comodines más utilizados:
Comodín Partidos
* cero o más caracteres
? exactamente un carácter
[abcde] exactamente uno de los caracteres enumerados
[ae] [! exactamente un carácter en el rango especificado cualquier
abcde] [! carácter que no esté en la lista cualquier
ae] carácter que no esté en el rango especificado {pi,frambuesa}
exactamente una palabra completa de las opciones dadas
Además de poder aplicarse de forma aislada, algunas de las verdaderas fortalezas de los comodines surgen cuando se
usan en combinación.
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 10
Ejemplos
Cero o más caracteres
Para enumerar todos los archivos de Python con 'pi' en sus nombres;
ls *pi*.py
Exactamente un personaje
Para enumerar todos los archivos en el directorio actual con extensiones de archivo de tres caracteres;
ls *.???
Exactamente uno de los personajes enumerados.
Para enumerar todos los archivos que tienen una extensión que comienza con 'p' o 'j';
ls *.[pj]*
Exactamente un carácter en el rango especificado
Para enumerar todos los archivos que tienen un número en el nombre del archivo;
ls *[09]*
Combinación
Para enumerar todos los archivos que comienzan con una de las tres primeras o tres últimas letras del alfabeto y terminan con
una extensión 'jpg' o 'png'.
ls [acxz]*.{jp,pn}g
Machine Translated by Google
Conceptos de Linux 11
Expresiones regulares
Las expresiones regulares (también llamadas 'regex') son un sistema de coincidencia de patrones que utiliza secuencias de
caracteres construidas de acuerdo con reglas de sintaxis predefinidas para encontrar las cadenas deseadas en el texto. El
tema de las expresiones regulares es un libro en sí mismo y recomiendo de todo corazón la lectura adicional para aquellos
que sienten la necesidad de usarlas cuando están enojados.
Aunque los comodines se usan mucho en expresiones regulares y lenguajes de programación,
tenga en cuenta que los comodines no forman parte del conjunto de expresiones regulares
estándar. Esto significa que tratar de usar expresiones regulares en una terminal no siempre
funcionará.
El comando grep (donde re en grep significa expresión regular ) es una herramienta esencial para cualquiera
que use Linux, ya que permite usar expresiones regulares en búsquedas de archivos o resultados de
comandos. Aunque el uso de expresiones regulares está muy extendido en múltiples facetas de las
operaciones informáticas.
Por ejemplo, si quisiéramos buscar el archivo dmesg que está en el directorio /var/log y quisiéramos mostrar
cada línea que contenía la cadena de caracteres CPU. usaríamos el comando grep de la siguiente manera;
grep CPU /var/log/dmesg
El resultado del comando será similar al siguiente;
pi@raspberrypi ~ $ grep CPU /var/log/dmesg
0.000000] Arrancar Linux en CPU física 0xf00 0.000000] CPU:
Procesador ARMv7 [410fc075] revisión 5 (ARMv7), cr=10c5387d 0.000000] SLUB: HWalign=64,
Order=03, MinObjects=0, CPU=4, Nodes= 1 0.004116] CPU: Probando la coherencia del búfer
de escritura: ok 0.053503] CPU0: actualizar cpu_capacity 1024
0.053577] CPU0: hilo 1, cpu 0, socket 15, mpidr
80000f00 0.113791] CPU1: Procesador secundario arrancado 0.113851] CPU1:
actualizar cpu_capa ciudad 1024 0.113860] CPU1:
subproceso 1, cpu 1, zócalo 15, mpidr 80000f01
0,133710] CPU2: procesador secundario arrancado 0,133746] CPU2: actualizar
cpu_capacity 1024 0,133755] CPU2: subproceso 1, cpu
2, zócalo 15, mpidr 80000f02 0,153750] CPU3:
Secundario arrancado procesador 0.153788] CPU3: actualice cpu_capacity 1024
0.153797] CPU3: subproceso 1, cpu 3, socket 15, mpidr
80000f03 0.153891] Trajo 4 CPU 0.154045] CPU: Todas
las CPU se iniciaron en modo SVC. 2.406902] ledtrigcpu: registrado para indicar
actividad en las CPU
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 12
Este es un ejemplo básico que utiliza una cadena simple para hacer coincidir y no necesariamente debe considerarse como un
gran uso de expresiones regulares. Sin embargo, si quisiéramos limitar los resultados devueltos a instancias en las que la
cadena fuera la CPU de texto seguida del número 0, 1, 2 o 3, podríamos usar una expresión regular con una función que
incluyera un rango de opciones. Esto se logra mediante el uso de corchetes [] con el rango especificado dentro.
En nuestro caso queremos el texto CPU y debe ser seguido inmediatamente por un número en el rango de 0 a 3. Esto puede
ser designado por la expresión regular CPU[03].
Lo que significa que nuestra búsqueda es la siguiente;
grep CPU[03] /var/log/dmesg
… resultará en;
pi@raspberrypi ~ $ grep CPU[03] /var/log/dmesg [0.053503]
CPU0: actualizar cpu_capacity 1024 [0.053577] CPU0:
subproceso 1, cpu 0, socket 15, mpidr 80000f00 [0.113791] CPU1: Booted
secundario procesador [ 0.113851] CPU1: actualizar
cpu_capacity 1024 [ 0.113860] CPU1: hilo 1, cpu 1, socket
15, mpidr 80000f01 [ 0.133710] CPU2: Procesador secundario arrancado [ 0.133746]
CPU2: actualizar cpu_capacity 1024 [ 0.133755] CPU2 : hilo
1 , cpu 2, socket 15, mpidr 80000f02 [ 0.153750] CPU3:
Procesador secundario arrancado [ 0.153788] CPU3: actualizar cpu_capacity 1024
[ 0.153797] CPU3: subproceso 1, cpu 3, socket 15, mpidr
80000f03
Los corchetes son 'metacaracteres' y es el uso de estos metacaracteres lo que proporciona a las expresiones regulares la base
de su fuerza.
Los siguientes son algunos de los metacaracteres más utilizados y una descripción muy breve de su efecto (más adelante
mostraremos ejemplos);
[ ] Haga coincidir cualquier cosa dentro de los corchetes para UN carácter
ˆ
(circunflejo o símbolo de intercalación) Coincide solo al comienzo de la cadena de destino (cuando no se
usa entre corchetes (donde tiene un significado diferente))
ps Coincide solo al final de la cadena de destino
. (punto o punto) Coincide con cualquier carácter individual
? Coincide cuando el carácter anterior aparece 0 o 1 vez solamente
* Coincide cuando el carácter anterior aparece 0 o más veces
+ Coincide cuando el carácter anterior aparece 1 o más veces
( ) Se puede usar para agrupar partes de nuestra expresión de búsqueda |
(barra vertical o tubería) Nos permite encontrar los valores de la mano izquierda o derecha
Machine Translated by Google
Conceptos de Linux 13
Haga coincidir un solo carácter definido con corchetes ([])
Como se demostró al comienzo de esta sección, el uso de corchetes nos permitirá hacer coincidir cualquier carácter
individual. El ejemplo que usamos a continuación empleó el uso del carácter guión (o menos) como indicador de rango
para indicar que los caracteres posibles eran 0, 1, 2 o 3.
grep CPU[03] /var/log/dmesg
También podríamos haber puesto simplemente cada carácter entre corchetes de la siguiente manera;
grep CPU[0123] /var/log/dmesg
En cualquier caso, debe tenerse en cuenta que solo un carácter coincide con las entradas entre corchetes.
Podemos especificar más de un rango y también podemos distinguir entre mayúsculas y minúsculas. Por lo tanto los
siguientes rangos tendrán los resultados correspondientes;
• [az] : coincide con cualquier carácter individual entre la a y la z. •
[AZ] : coincide con cualquier carácter único entre la A y la Z. • [09] :
coincide con cualquier carácter único entre 0 y 9. • [azAZ09] :
coincide con cualquier carácter único, ya sea de la a a la z o A a Z o 0 a 9
Dentro de los corchetes también podemos usar el carácter circunflejo o de intercalación (ˆ) para negar la selección de
caracteres. Es decir con un símbolo de intercalación podemos decir buscar líneas con el texto CPU y debe ser seguido
inmediatamente por un carácter que no esté en el rango de 0 a 3. Esto se hace de la siguiente manera;
grep CPU[^03] /var/log/dmesg
Lo que daría como resultado una salida similar a la siguiente;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 14
pi@raspberrypi ~ $ grep CPU[^03] /var/log/dmesg [ [ [ [ [ [ [ [ [
0.000000] Arrancar Linux en CPU física 0xf00 0.000000] CPU: Procesador
ARMv7 [410fc075] revisión 5 (ARMv7), cr=10c5387d 0.000000] CPU: Caché de datos sin aliasing PIPT / VIPT, alias VIPT
0.000000] PERCPU: Embebido 11 páginas/c pu @ba05d000 s12864 r8192 d24000 0.000000] SLUB:
HWalign=64, Order=03, MinObjects=0, CPU=4, Nodes=1 0.004116] CPU: Probando la coherencia del búfer de
escritura: correcto 0.153891] Trajo 4 CPU 0.154045] CPU: Todas las CPU (s) iniciado en modo SVC. 2.406902]
ledtrigcpu: registrado para indicar actividad en las CPU
Tenga en cuenta que no se ha incluido ninguna de las líneas anteriores con CPU0, CPU1, CPU2 o CPU3 .
Coincidencia al principio de una cadena (ˆ)
Podemos usar el carácter circunflejo o de intercalación (ˆ) para hacer coincidir líneas de texto que comienzan con un conjunto
específico de caracteres.
Solo tenga cuidado y no confunda este uso del signo de intercalación con su uso dentro de
corchetes donde niega la búsqueda.
Dado un nombre de archivo de texto foo.txt con los siguientes contenidos;
Primera linea con algo
Segunda línea con algo más
La tercera línea sigue en marcha
Cuarta línea pero penúltima
Última línea. ¡Adiós!
Si ejecutamos el comando grep buscando la cadena 'Segundo' de la siguiente manera;
grep Segundo foo.txt
Deberíamos tener dos líneas devueltas como se muestra a continuación;
pi@raspberrypi ~ $ grep Segundo foo.txt Segunda línea con algo
más
Cuarta línea pero penúltima
Pero si usamos el carácter de intercalación para indicar que solo estamos buscando líneas que comiencen con nuestra cadena
de la siguiente manera;
Machine Translated by Google
Conceptos de Linux 15
grep ^Segundo foo.txt
… obtendremos el siguiente resultado donde solo se devuelve la segunda línea;
pi@raspberrypi ~ $ grep Segundo foo.txt Segunda línea con algo
más
Coincidencia al final de una cadena ($)
Podemos usar el carácter de signo de dólar ($) para hacer coincidir líneas de texto que terminan con un carácter específico o un
conjunto de caracteres.
Por ejemplo, dado un nombre de archivo de texto foo.txt con los siguientes contenidos;
Primera linea con algo
Segunda línea con algo más
La tercera línea sigue en marcha
Cuarta línea pero penúltima
Última línea. ¡Adiós!
Si usamos el carácter de signo de dólar para buscar todas las líneas que terminan en 'ing' de la siguiente manera;
grep ing$ foo.txt
… obtendremos el siguiente resultado donde solo se devuelve la segunda línea;
pi@raspberrypi ~ $ grep ing$ foo.txt Primera línea con algo
Tercera línea todavía activa
Tenga en cuenta que el signo $ se coloca después del texto que intenta hacer coincidir.
Coincide con cualquier carácter individual (.)
el . El carácter (punto) nos permitirá hacer coincidir cualquier carácter individual en esta posición.
Por ejemplo, dado un nombre de archivo de texto foo.txt con los siguientes contenidos;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux dieciséis
Primera linea con algo
Segunda línea con algo más
La tercera línea sigue en marcha
Cuarta línea pero penúltima
Última línea. ¡Adiós!
… si quisiéramos devolver todas las líneas donde los caracteres ing estuvieran en el medio de la línea (no
al final) podríamos ejecutar el siguiente comando grep ;
grep ing. foo.txt
Esto produciría una salida similar a la siguiente;
pi@raspberrypi ~ $grep ing. foo.txt Segunda línea con algo
más
Si bien hay otras dos líneas con ing (la primera y la tercera), ambas terminan con 'ing' y, como resultado, no hay
ningún carácter después de ellas. El único en el que hay 'ing' seguido de un carácter es en la segunda línea.
Coincide cuando el carácter anterior aparece 0 o 1 vez solamente (?)
Puede ser difícil pensar en una situación en la que querríamos coincidir con algo que ocurre 0 o 1 vez, pero el
mejor ejemplo proviene del mundo del lenguaje. En la ortografía estadounidense, la palabra 'color' difiere de la
ortografía británica por la omisión de la letra 'u' ('color'). Podemos escribir una expresión regular que coincida
con la ortografía de la siguiente manera;
color
De esta forma, el signo de interrogación indica que para que se produzca una coincidencia, el carácter anterior
no debe estar presente o debe aparecer una vez. Los caracteres adicionales ('colo' y la 'r') son literales en el
sentido de que deben estar presentes exactamente como se indica. La única variable en la expresión es la 'u'.
Coincidencia cuando el carácter anterior aparece 0 o más veces (*)
El metacarácter de asterisco en las expresiones regulares puede ser una de las opciones más confusas de
usar, pero esto se debe principalmente a que su fuerza real se aplica cuando se combina con otros metacaracteres.
Por ejemplo, se podría argumentar que una expresión regular como q*w coincidirá con w, qw y qqqw; sin
embargo, si usamos un punto y un asterisco juntos (.*) obtenemos una función que coincidirá con cero o más
de cualquier serie. de personajes
En este caso podemos usar una expresión regular como…
Machine Translated by Google
Conceptos de Linux 17
pagar
… para encontrar cualquier combinación de caracteres que comiencen con pa y terminen con y y que tengan
cualquier número de caracteres (incluido ninguno) en el medio. Estos incluirían lo siguiente;
pacificar
dolorosamente paisley
quiromancia
palpablemente
pagar
Coincidencia cuando el carácter anterior aparece 1 o más veces (+)
El uso del carácter + para permitir una o más instancias de un carácter es similar al del asterisco. Donde el
metacarácter * podría devolver las siguientes coincidencias de la expresión regular fe*d;
f.d.
alimentado
alimentar
El uso de fe+d resultaría en;
alimentado
alimentar
Agrupar partes de una expresión de búsqueda (())
Las expresiones regulares se pueden combinar en subgrupos que se pueden operar como entidades
separadas encerrando esas entidades entre paréntesis. Por ejemplo, si quisiéramos devolver una coincidencia
si viésemos la palabra 'monkey' o 'banana', usaríamos el metacarácter o | (la pipa) para intentar hacer coincidir
una cuerda u otra de la siguiente manera;
(mono)|(plátano)
Tenga en cuenta que si estamos tratando de operar una expresión regular en una terminal, es posible
que debamos encerrarla entre marcas de voz o escapar del paréntesis (y la tubería) con el carácter de
barra inclinada (\) . A veces, este tipo de cosas pueden comenzar a verse desordenadas dependiendo
del uso que se le dé a nuestra expresión regular.
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 18
Encuentra un grupo de valores u otro (|)
El metacarácter de tubería nos permite aplicar un operador lógico 'o' a nuestra coincidencia de patrones. Por
ejemplo, si quisiéramos devolver una coincidencia si viéramos la palabra 'monkey' o 'banana', usaríamos las
palabras encapsuladas entre paréntesis y el metacarácter de tubería para intentar hacer coincidir una cadena u
otra de la siguiente manera;
(mono)|(plátano)
Tenga en cuenta que si estamos tratando de operar una expresión regular en una terminal, es posible
que debamos encerrarla entre marcas de voz o escapar del paréntesis (y la tubería) con el carácter de
barra inclinada (\) . A veces, este tipo de cosas pueden comenzar a verse desordenadas dependiendo
del uso que se le dé a nuestra expresión regular.
Expresiones regulares extendidas
En las expresiones regulares básicas, los metacaracteres ?, +, {, |, (, y ) no se consideran especiales y, en su
lugar, debemos usar las versiones con barra invertida \?, \+, \{, \|, \(, y \).
Machine Translated by Google
Conceptos de Linux 19
Tuberías (|)
Los conductos se utilizan en Linux para combinar comandos y permitirles que la salida de un comando se alimente directamente a otro
comando y así sucesivamente. La idea es usar varios comandos para crear una secuencia de procesamiento de información de un
comando a otro.
Los comandos están separados por la línea vertical (|) que normalmente se encuentra sobre la tecla de barra invertida (\). Este es el
carácter que denota la función 'tubería'. Para combinar tres funciones junto con el símbolo de tubería tendríamos algo como lo siguiente;
comando1 | comando2 | comando3
Como sugiere el nombre, podemos pensar en la función de tubería como una representación de comandos vinculados por una tubería
donde el comando ejecuta una función que se genera en una tubería para fluir hacia el segundo comando y hacia la salida final
eventual. Para ayudar con la asociación visual, podría ser útil pensar en conexiones similares a las siguientes;
Tubería de un comando tras otro
Para demostrar con un ejemplo, podemos considerar un conjunto de comandos alineados de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 20
Ejemplo de tubería
Aquí tenemos el comando ls que enumera los contenidos del directorio /var/log con los listados ordenados por
tiempo. Esto luego se alimenta al comando principal que solo mostrará las primeras 10 de esas líneas. Luego
ingresamos esas 10 líneas en un comando grep que filtra el resultado para mostrar solo aquellas líneas que
tienen la palabra 'raíz' en ellas.
El comando como se ejecutaría desde la línea de comando sería el siguiente;
ls lt /var/registro | cabeza | raíz de grep
… y el resultado sería algo como lo siguiente;
pi@raspberrypi ~ $ls lt /var/log | cabeza | grep root rwr 1 root adm
133637 13 de septiembre 04:01 auth.log rwr 1 root adm 16794 13
de septiembre 04:01 syslog rwrwr 1 raíz utmp 292292 12 de
septiembre 18:58 lastlog rwrwr 1 raíz utmp 2688 12 de septiembre
18:58 wtmp
rwr 1 administrador raíz 1050 12 de septiembre 06:25
mensajes rwr 1 root adm 18986 12 de septiembre 06:25 syslog.1
rwr 1 administrador raíz 1357 11 de septiembre 06:25 syslog.2.gz
Machine Translated by Google
Conceptos de Linux 21
Estructura de directorios de Linux
Para un nuevo usuario de Linux, la estructura de archivos puede sentirse como algo arcano y en algunos casos
arbitrario. Por supuesto, este no es del todo el caso y, a pesar de algunas diferencias específicas de distribución,
existe una jerarquía de directorios y archivos bastante bien diseñada con una buena razón para estar donde están.
Con frecuencia nos sentimos cómodos con el concepto de navegar por esta estructura usando una interfaz gráfica
similar a la que se muestra a continuación, pero para operar de manera efectiva en la línea de comandos
necesitamos tener un conocimiento práctico de qué va a dónde.
Directorios de Linux
Los directorios que vamos a describir forman una jerarquía similar a la siguiente;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 22
Jerarquía de directorios
Para obtener una descripción concisa de las funciones del directorio, consulte la hoja de trucos. Alternativamente,
su función y descripciones son las siguientes;
El directorio / o 'raíz' contiene todos los demás archivos y directorios. Es importante tener en cuenta que este no
es el directorio de inicio de los usuarios raíz (aunque solía serlo hace muchos años). El directorio de inicio del
usuario raíz es /root. Solo el usuario raíz tiene privilegios de escritura para este directorio.
/papelera
El directorio /bin contiene ejecutables/comandos binarios esenciales comunes para uso de todos los usuarios. Por
ejemplo: los comandos cd, cp, ls, ping, ps. Estos son comandos que pueden ser utilizados tanto por el
administrador del sistema como por los usuarios, pero que son necesarios cuando no hay otros sistemas de
archivos montados.
/bota
El directorio /boot contiene los archivos necesarios para iniciar con éxito la computadora durante el proceso de
arranque. Como tal, el directorio /boot contiene información a la que se accede antes de que el kernel de Linux
comience a ejecutar los programas y procesos que permiten que funcione el sistema operativo.
/desarrollo
El directorio /dev contiene archivos de dispositivos que representan dispositivos físicos conectados a la
computadora, como discos duros, dispositivos de sonido y puertos de comunicación, así como dispositivos 'lógicos' como un
Machine Translated by Google
Conceptos de Linux 23
generador de números aleatorios y /dev/null que esencialmente descartará cualquier información que se le envíe.
Este directorio contiene una variedad de archivos que refuerza fuertemente el precepto de Linux de que Todo es un
archivo.
/etc
El directorio /etc contiene archivos de configuración que controlan el funcionamiento de los programas. También
contiene scripts que se utilizan para iniciar y cerrar programas individuales.
/etc/cron.d
Los directorios /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly contienen
scripts que el proceso crontab ejecuta periódicamente .
/etc/rc?.d
Los directorios /rc0.d, /rc1.d, /rc2.d, /rc3.d, /rc4.d, /rc5.d, /rc6.d, /rcS.d contienen los archivos necesarios
para controlar los servicios del sistema y configurar el modo de operación (nivel de ejecución) para la
computadora.
/hogar
Debido a que Linux es un sistema operativo que es un entorno 'multiusuario', cada usuario requiere un espacio para
almacenar información específica para ellos. Esto se hace a través del directorio /home . Por ejemplo, el usuario 'pi'
tendría /home/pi como su directorio de inicio.
/lib
El directorio /lib contiene archivos de biblioteca compartidos que admiten los archivos ejecutables ubicados en /bin
y /sbin. También hace que los módulos del kernel (controladores) sean responsables de darle a Linux una gran
versatilidad para agregar o eliminar funcionalidades según lo dicten las necesidades.
/perdido+encontrado
El directorio /lost+found contendrá datos potencialmente recuperables que podrían generarse si el sistema de
archivos se apaga incorrectamente debido a un bloqueo o falla de energía. Es poco probable que los datos
recuperados estén completos o en buen estado, pero en algunas circunstancias pueden contener información útil o
indicaciones sobre el motivo del apagado incorrecto.
/medios de comunicación
El directorio /media se utiliza como directorio para montar temporalmente dispositivos extraíbles (por ejemplo, /
media/cdrom o /media/cdrecorder). Este es un desarrollo relativamente nuevo para Linux y surge como resultado
de un grado de confusión histórica sobre dónde era mejor montar este tipo de dispositivos (/cdrom, /mnt o /mnt/
cdrom, por ejemplo).
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 24
/mnt
El directorio /mnt se utiliza como punto de montaje genérico para sistemas de archivos o dispositivos. El uso
reciente del directorio lo dirige hacia su uso como un punto de montaje temporal para los administradores del
sistema, pero hay un grado de variación histórica que ha resultado en diferentes distribuciones haciendo las cosas
de diferentes maneras (por ejemplo, Debian asigna /floppy y / cdrom como puntos de montaje mientras que Redhat
los coloca en /mnt/floppy y /mnt/cdrom respectivamente).
/optar
El directorio /opt se utiliza para la instalación de software opcional adicional o de terceros que no forma parte de la
instalación predeterminada. Cualquier aplicación instalada en esta área debe instalarse de tal manera que se ajuste
a una estructura razonable y no debe instalar archivos fuera del directorio /opt .
/proc
El directorio /proc contiene archivos que contienen información sobre procesos en ejecución y recursos del sistema.
Se puede describir como un pseudo sistema de archivos en el sentido de que contiene información del sistema en
tiempo de ejecución, pero no archivos 'reales' en el sentido normal de la palabra. Por ejemplo, el archivo /proc/
cpuinfo que contiene información sobre la CPU de la computadora se enumera con una longitud de 0 bytes y, sin
embargo, si aparece en la lista, producirá una descripción de la CPU en uso.
/raíz
El directorio /root es el directorio de inicio del administrador del sistema o del usuario 'root'. Esto podría verse como
un poco confuso, ya que todos los demás directorios de inicio de los usuarios están en el directorio /home y ya
existe un directorio denominado directorio 'raíz' (/). Sin embargo, tenga la seguridad de que hay una buena razón
para hacer esto (a veces, el directorio /home se puede montar en un sistema de archivos separado al que se debe
acceder como un recurso compartido remoto).
/sbin
El directorio /sbin es similar al directorio /bin en el sentido de que contiene ejecutables/comandos binarios, pero los
que se encuentran en /sbin son esenciales para el funcionamiento del sistema operativo y se identifican como
aquellos que el administrador del sistema usaría en manteniendo el sistema.
Ejemplos de estos comandos son fdisk, shutdown, ifconfig y modprobe.
/srv
El directorio /srv se reserva para proporcionar una ubicación para almacenar datos para servicios específicos. La
razón detrás del uso de este directorio es que los procesos o servicios que requieren una sola ubicación y jerarquía
de directorios para datos y secuencias de comandos pueden tener una ubicación uniforme en todos los sistemas.
Machine Translated by Google
Conceptos de Linux 25
/tmp
El directorio /tmp se reserva como una ubicación donde los programas o usuarios que requieren una ubicación
temporal para almacenar archivos o datos pueden hacerlo en el entendimiento de que cuando un sistema se
reinicia o apaga, esta ubicación se borra y el contenido se elimina.
/usr
El directorio /usr sirve como directorio donde se almacenan y comparten los programas de usuario y los datos.
Esta amplia gama potencial de archivos e información puede hacer que el directorio /usr sea bastante grande y
complejo, por lo que contiene varios subdirectorios que reflejan los del directorio raíz (/) para que la organización
sea más coherente.
/usr/bin
El directorio /usr/bin contiene archivos ejecutables binarios para los usuarios. La distinción entre /bin y /usr/
bin es que /bin contiene los comandos esenciales necesarios para operar el sistema incluso si no hay
ningún otro sistema de archivos montado y /usr/bin contiene los programas que los usuarios necesitarán
para realizar tareas normales. Por ejemplo; awk, curl, php, pitón. Si no puede encontrar un binario de
usuario en /bin, busque en /usr/bin.
/usr/lib
El directorio /usr/lib es el equivalente del directorio /lib en el sentido de que contiene archivos de biblioteca
compartidos que admiten los archivos ejecutables para usuarios ubicados en /usr/bin y /usr/sbin.
/usr/local
El directorio /usr/local contiene programas de usuarios que se instalan localmente desde el código fuente.
Se coloca aquí específicamente para evitar que se sobrescriba inadvertidamente si se actualiza el software del
sistema.
/usr/sbin
El directorio /usr/sbin contiene ejecutables binarios no esenciales que utiliza el administrador del sistema. Por
ejemplo , cron y useradd. Si no puede ubicar un sistema binario en /usr/sbin, intente con /sbin.
/var
El directorio /var contiene archivos de datos variables. Estos son archivos que se espera que crezcan en
circunstancias normales. Por ejemplo, archivos de registro o directorios de spool para colas de impresión.
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 26
/var/lib
El directorio /var/lib contiene información de estado dinámico que los programas suelen modificar mientras se ejecutan.
Esto se puede usar para conservar el estado de una aplicación entre reinicios o incluso para compartir información de
estado entre diferentes instancias de la misma aplicación.
/var/registro
El directorio /var/log contiene archivos de registro de una variedad de programas y servicios. Los archivos en /var/log a
menudo pueden crecer bastante y se debe tener cuidado para garantizar que el tamaño del directorio se administre
adecuadamente. Esto se puede hacer con el programa logrotate .
/var/carrete
El directorio /var/spool contiene lo que se denominan archivos 'spool' que contienen datos almacenados para su
procesamiento posterior. Por ejemplo, las impresoras que pondrán en cola los trabajos de impresión en un archivo de cola
para una eventual impresión y luego se eliminarán cuando el recurso (la impresora) esté disponible.
/var/tmp
El directorio /var/tmp es un almacén temporal de datos que deben mantenerse entre reinicios (a diferencia de /tmp).
Machine Translated by Google
Conceptos de Linux 27
Direccionamiento de nombre de ruta absoluto y relativo
Uno de los puntos fuertes de trabajar con archivos desde la línea de comandos en Linux es la flexibilidad y
variedad de opciones disponibles para nosotros como usuarios. Algunos pueden afirmar que demasiadas
opciones solo hacen que sea más difícil saber cuál es la forma correcta o incorrecta de realizar una acción, pero
otros (incluido yo mismo) propondremos que a menudo no existe una forma perfecta de realizar una tarea, solo
hay formas perfectas¹ .
Lo que debe recordarse es que la forma en que elegimos llevar a cabo una tarea debe adaptarse a la tarea y al
contexto. En ese sentido, hay muchas opciones disponibles en Linux y esto es especialmente cierto cuando se
trata del proceso de especificar ubicaciones de archivos.
Nombres de ruta
Un nombre de ruta representa una cadena de prueba que actúa como un puntero a un archivo o directorio. El
siguiente nombre de ruta apunta al archivo foo.txt que está dentro del directorio pi , que a su vez está dentro del
directorio home
/home/pi/foo.txt
El único carácter 'especial' o 'reservado' cuando se utiliza un nombre de ruta es la barra diagonal /. Este carácter
se utiliza únicamente para separar directorios y nombres de archivos, según corresponda.
Los directorios individuales y los nombres de archivos normalmente están restringidos a 255 caracteres con una
longitud total de una ruta restringida a 4096 caracteres. Por el bien del contexto, hay aproximadamente 1500
caracteres hasta este punto en este capítulo.
Direccionamiento de nombre de ruta absoluta
Un nombre de ruta absoluto siempre comenzará en el directorio raíz (/). Es una peculiaridad interesante que las
personas a menudo identifiquen el directorio raíz como la barra diagonal, cuando en realidad se refiere a un
directorio que no tiene nombre y que existe en el lado izquierdo de la marca / (recuerde que no se puede usar /
en nombres de archivos o directorios).
El siguiente es un nombre de ruta absoluto al archivo foo.txt que está dentro del directorio pi que está dentro del
directorio home que está en el directorio raíz.
/home/pi/foo.txt
¹ http://ed.ted.com/lessons/malcolmgladwellonspaghettisauce
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 28
Direccionamiento de nombre de ruta relativo
Un nombre de ruta relativo es aquel en el que la ubicación del archivo o directorio se toma en relación con el directorio
actual en el que se encuentra el usuario.
Por ejemplo, si estuviéramos en el directorio home/pi (el directorio de inicio de los usuarios 'pi') y quisiéramos listar (ls)
el archivo foo.txt , podríamos usar el direccionamiento absoluto para llegar al archivo escribiendo;
ls /home/pi/foo.txt
Sin embargo, dado que estamos en el directorio /home/pi, podríamos usar el direccionamiento relativo y simplemente
escribir;
ls foo.txt
Para usar el direccionamiento relativo de manera efectiva, debemos poder informarle a la computadora cuándo queremos
subir en la jerarquía del directorio (el movimiento hacia abajo se realiza simplemente escribiendo el nombre del
directorio). El ascenso a un directorio principal se logra mediante el uso de los caracteres .. (punto, punto).
Si nos imaginamos nuevamente en el directorio /home/pi y queremos listar el archivo bar.txt que se encuentra en el
directorio /home/raspberry , podemos teclear lo siguiente;
ls ../frambuesa/foo.txt
Aquí, los caracteres .. primero saltaron al directorio de inicio y luego fueron al directorio raspberry .
El atajo de 'casa'
El carácter de tilde ( ) se utiliza como atajo para designar el directorio de inicio de un usuario. Por lo tanto, suponiendo
que el usuario 'pi' tiene el directorio de inicio de /home/pi, pero el directorio en el que nosotros (como usuario 'pi')
estamos es el directorio /tmp , podemos listar el archivo foo.txt usando lo siguiente ruta relativa y el carácter de acceso
directo de inicio;
ls ~/foo.txt
Machine Translated by Google
Conceptos de Linux 29
Todo es un archivo en Linux
Una frase que a menudo surgirá en la conversación de Linux es esa;
todo es un archivo
Para alguien nuevo en Linux, esto suena como una especie de "broma" diseñada para asustar a los desprevenidos
y, a veces, puede actuar como una barrera para una comprensión más profunda de la filosofía detrás del enfoque
adoptado en el desarrollo de Linux.
La explicación detrás de la declaración es que Linux está diseñado para ser un sistema construido a partir de un
grupo de partes que interactúan y la forma en que esas partes pueden trabajar juntas es comunicarse usando un
método común. Ese método consiste en usar un archivo como bloque de construcción común y los datos en un
archivo como mecanismo de comunicación.
El truco para entender lo que significa 'Todo es un archivo' es ampliar nuestra comprensión de lo que puede ser
un archivo.
Archivos tradicionales
El concepto tradicional de un archivo es un objeto con un nombre específico en una ubicación específica con un
contenido particular. Por ejemplo, podríamos tener un archivo llamado foo.txt que se encuentra en el directorio /
home/pi/ y podría contener un par de líneas de texto similar al siguiente;
esta es la primera linea
Esta es la segunda línea
Directorios
Tan inusual como suena, un directorio también es un archivo. El aspecto especial de un directorio es que es un
archivo que contiene una lista de información sobre qué archivos (y/o subdirectorios) contiene.
Entonces, cuando queremos enumerar el contenido de un directorio usando el comando ls , lo que realmente
sucede es que el sistema operativo obtiene la información adecuada del archivo que representa el directorio.
Información del sistema
Sin embargo, los archivos también pueden ser conductos de información. El directorio /proc/ contiene archivos
que representan información del sistema y del proceso. Si queremos determinar información sobre el tipo de CPU
que está usando la computadora, el archivo cpuinfo en el directorio /proc/ puede listarlo. Al ejecutar el comando
'cat /proc/cpuinfo' podemos enumerar una gran cantidad de información sobre nuestra CPU (por cierto, el
siguiente es un subconjunto de esa información);
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 30
pi@raspberrypi ~ $ gato /proc/cpuinfo
procesador : 0
nombre del modelo : Procesador ARMv7 rev 5 (v7l)
BogoMIPS : 57,60
Características : medio pulgar fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idi\ vt vfpd32 lpae evtstrm
Implementador de CPU: 0x41
Arquitectura de la CPU: 7
variante de CPU : 0x0
parte de la CPU : 0xc07
revisión de la CPU : 5
Hardware : BCM2709
Revisión : a01041
De serie : 000000002a4ea712
Ahora, eso podría no significar mucho para nosotros en esta etapa, pero si estuviéramos escribiendo un programa que
necesitara un tipo particular de CPU para ejecutarse correctamente, podría verificar este archivo para asegurarse de
que pueda funcionar correctamente. Hay una amplia gama de archivos en el directorio /proc/ que representan una gran
cantidad de información sobre cómo está funcionando nuestro sistema.
Dispositivos
Cuando usamos diferentes dispositivos en un sistema operativo Linux estos también se representan como un archivo.
En el directorio /dev/ tenemos archivos que representan una variedad de dispositivos físicos que forman parte de
nuestra computadora. En sistemas informáticos más grandes con varios discos, podrían representarse como /dev/sda1
y /dev/sda2, de modo que cuando quisiéramos realizar una acción como formatear una unidad, usaríamos el comando
mkfs en el archivo /dev/sda1 .
El directorio /dev/ también contiene algunos archivos curiosos que se utilizan como herramientas para generar o
administrar datos. Por ejemplo , /dev/random es una interfaz para el dispositivo de números aleatorios del kernel. /dev/
zero representa un archivo que transmitirá constantemente ceros (si bien esto puede sonar extraño, imagine una
situación en la que desea escribir sobre un área del disco con datos para borrarlos). El más conocido de estos archivos
inusuales es probablemente /dev/null¹ . Esto actuará como un 'dispositivo nulo' que esencialmente descartará
cualquier información que se le envíe.
¹ https://en.wikipedia.org/wiki/Null_device
Machine Translated by Google
Conceptos de Linux 31
Archivos e inodos de Linux
Habiendo establecido ya que todo es un archivo en un sistema operativo Linux, nos encontramos en la situación en
la que los archivos de repente son un poco más interesantes y misteriosos, y es útil comprender mejor cómo se
representan los archivos en un sistema operativo Linux para que el el contexto de otras funciones se puede entender
mejor (pensando en enlaces).
Los archivos de Linux se pueden entender mejor pensando en ellos como descritos en tres partes;
• El nombre del archivo
• Un inodo
• Los datos
el nombre del archivo
Los nombres de archivos individuales normalmente están restringidos a 255 caracteres y pueden estar formados por
casi cualquier combinación de caracteres. El único carácter 'especial' o 'reservado' al asignar un nombre de archivo
es la barra diagonal (/). Este carácter se utiliza únicamente para separar directorios y nombres de archivos, según
corresponda.
El otro componente de un nombre de archivo es un número de inodo. Este es un número asignado por el sistema
operativo que actúa como un puntero a un inodo (Nodo de índice) que es un objeto que puede considerarse como
una entrada en una base de datos que almacena información específicamente sobre ese archivo.
Podemos enumerar los números de inodo asociados con los archivos usando la opción i al enumerar los archivos.
Por ejemplo;
ls i python_games/
La salida (reproducida en forma editada a continuación) muestra;
pi@raspberrypi ~ $ ls i python_games/ 45014 4row_arrow.png
63554 inkspillresetbutton.png 49906 4row_black.png 63556 inkspillsettingsbutton.png 54215
4row_red.png 63530 cat.png 63533 drawing.py 63544 gem6. png 63545 gem7.png 63546 gemgem.py
63553 inkspilllogo.png 63552 63559 partido0.wav
inkspill.py 63569 princesa.png 63488
RedSelector.png 63576 star_title.png
63578 tetrisb.mid
63579 tetrisc.mid
63522 Wood_Block_Tall.png 63582
gusano.py
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 32
Los números a la izquierda de los nombres de archivo son los números de inodo asociados.
El nombre del archivo y el inodo asociado están en el directorio en el que está contenido el archivo. Cada directorio (que en sí
mismo es solo un archivo) contiene una tabla de los archivos que contiene con los números de inodo asociados.
el inodo
Cada archivo tiene un inodo asociado ( nodo de índice). El inodo es análogo a una entrada de base de datos que describe un
rango de atributos del archivo. Estos atributos incluyen;
• El número de inodo único • Lista de
control de acceso (ACL) • Atributos
extendidos, como agregar solo o inmutabilidad • Ubicación del bloque de disco
• Número de bloques
• Hora de acceso, cambio y modificación de archivos •
Hora de borrado de archivos
• Número de generación de archivo
• Tamaño de
archivo • Tipo
de archivo
• Grupo • Número de enlaces
• Dueño
• Permisos
• Indicadores de estado
Bien puede preguntarse cuál es el punto de tener inodos numerados. Buena pregunta. Tienen una variedad de usos, incluido
el uso cuando hay archivos para eliminar con nombres de archivo complejos que no se pueden reproducir fácilmente en la
línea de comandos o permitir la vinculación.
Curiosamente, se debe asignar espacio para los inodos cuando se instala un sistema operativo. Dentro de cualquier sistema
de archivos, la cantidad máxima de inodos y, por lo tanto, la cantidad máxima de archivos, se establece cuando se crea el
sistema de archivos.
Por lo tanto, hay dos formas en las que un sistema de archivos puede quedarse sin espacio;
1. Puede consumir todo el espacio para agregar nuevos datos (es decir, quedarse sin espacio en el disco duro), o
2. Puede usar todos los inodos.
Quedarse sin inodos hará que una computadora se detenga porque el agotamiento de los inodos prohíbe la creación de
archivos adicionales. Incluso si existe suficiente espacio en el disco duro. Es particularmente fácil quedarse sin inodos si un
sistema de archivos contiene una gran cantidad de archivos muy pequeños.
Machine Translated by Google
Conceptos de Linux 33
Enlaces
Un enlace en un sistema de archivos de Linux proporciona un mecanismo para establecer una conexión entre archivos.
Si bien se pueden hacer comparaciones con los accesos directos en Windows, esto no es muy preciso ya que la
vinculación en Linux tiene mucha más utilidad.
Para obtener el beneficio completo de la descripción de los enlaces, debemos estar familiarizados con la discusión
anterior sobre archivos e inodos. Debemos recordar que un archivo Linux consta de tres partes;
1. El nombre del archivo y su número de inodo asociado
2. Un inodo que describe los atributos del archivo.
3. Los datos asociados al fichero.
El nombre del archivo y el número de inodo apuntan a un inodo que tiene toda la información sobre el archivo y, a su
vez, apunta a los datos almacenados en el disco duro.
Los enlaces se pueden identificar al listar archivos con ls l por una l que aparece como el primer carácter en el listado
del archivo y por la flecha (>) al final que ilustra el enlace. Por ejemplo, al ejecutar el siguiente comando de lista podemos
ver (como solo uno entre muchos archivos) que el archivo /etc/vtrgb es un enlace al archivo /etc/alternatives/vtrgb.
ls l /etc
Tenga en cuenta la l inicial y el signo de enlace para vtrgb en la salida.
drwxrxrx 2 raíz raíz 4096 17 de abril de 2014 vim
lrwxrwxrwx 1 raíz raíz 23 de julio de 10 07:45 vtrgb > /etc/alternatives/vtrgb
rwrr 1 raíz raíz 4812 8 de febrero de 2014
drwxrxrx 2 raíz raíz 4096 10 de julio 08:04 wildmidi
www.dbooks.org
Machine Translated by Google
Conceptos de Linux
34
Enlaces blandos (también conocidos como enlaces simbólicos, también conocidos como enlaces simbólicos)
Un enlace suave también se puede denominar enlace simbólico, pero probablemente se lo llame con más frecuencia
'enlace simbólico'. Un enlace simbólico tiene un nombre de archivo y un número de inodo que apunta a su propio
inodo, pero en el inodo hay una ruta que redirige a otro inodo que a su vez apunta a un bloque de datos.
Enlace suave
Debido a que los inodos están restringidos a la partición en la que se crean, un enlace simbólico permite redirigir a una
ruta que puede cruzar particiones.
Si editamos el archivo vinculado, se editará el archivo original. Si eliminamos el archivo vinculado, el archivo original
no se eliminará. Pero si borramos el archivo original sin borrar el enlace, nos quedaremos con un enlace huérfano.
Los enlaces suaves pueden vincular a directorios y archivos, pero si el archivo se mueve, el enlace ya no funcionará.
Machine Translated by Google
Conceptos de Linux 35
Enlaces duros
Un vínculo fijo es aquel en el que más de un nombre de archivo se vincula a un inodo.
Enlace duro
Esto significa que dos nombres de archivo comparten esencialmente el mismo inodo y bloque de datos, sin embargo, se
comportarán como archivos independientes. Por ejemplo, si luego eliminamos uno de los archivos, el enlace se rompe, pero
el inodo y el bloque de datos permanecerán hasta que se eliminen todos los nombres de archivo que enlazan con el inodo.
Los enlaces duros solo se vinculan a un archivo (sin directorios), no pueden abarcar particiones y aún se vincularán a un
archivo incluso si se mueve.
Enlaces comparados
enlaces duros
• Solo vinculará a un archivo (sin directorios) • No
vinculará a un archivo en un disco duro / partición diferente • Vinculará a un
archivo incluso cuando se mueva • Vincula a un inodo
y una ubicación física en el disco
Enlaces blandos (o enlaces simbólicos o symlinks)
• Se vinculará a directorios o archivos
• Se vinculará a un archivo o directorio en un disco duro/partición diferente • Los vínculos
permanecerán si se elimina el archivo original • Los vínculos
no se conectarán al archivo si se mueve
• Los enlaces se conectan a través de convenciones abstractas (por lo tanto, simbólicas), no ubicaciones físicas en el
disco. Tienen su propio inodo
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 36
Edición de archivos
Trabajar en Linux es un ejercicio para comprender los conceptos que utiliza Linux como base, como "Todo es un
archivo" y el uso de comodines, conductos y la estructura de directorios.
Mientras trabaja en la línea de comando, se dará cuenta muy rápidamente de que es necesario saber cómo editar
un archivo. Siendo Linux lo que es, hay muchas formas de editar los archivos.
Una excelente ilustración de esto es a través del excelente trabajo de dibujos animados de la tira cómica xkcd¹
(Compre sus cosas¹ , ¡es increíble!).
Programadores reales
Para una muestra de las posibles opciones disponibles, Wikipedia¹ nos respalda. Inevitablemente, donde hay
elección, hay preferencias y donde hay preferencias, hay sesgo. Todos tendrán una preferencia por un editor en
particular y no dejes que un sesgo en particular te influya para ir en una dirección particular sin considerar tus
opciones. Hablando desde mi experiencia personal, me animaron a usar 'vi' ya que representaba la preferencia
del grupo en el que estaba, pero debido a que llegué tarde a la línea de comando, luché durante mucho tiempo
para tratar de familiarizarme con ella. Sé que debería haberme esforzado más, pero fracasé. Durante un tiempo
deambulé por el desierto del editor tratando desesperadamente de aferrarme a la GUI donde podía usar 'gedit' o
'geany' y luego un día me presentaron a 'nano'.
Esto se ha convertido en mi preferencia y, por lo tanto, estoy sesgado hacia él. No confíes en mi palabra. Prueba
alternativas. Describiré 'nano' a continuación, pero tómelo como un camino posible y tenga en cuenta que cualquier
editor que funcione para usted será el correcto. El truco es simplemente encontrar uno que funcione para ti.
¹ http://xkcd.com/378/
¹ http://store.xkcd.com/
¹ https://en.wikipedia.org/wiki/List_of_text_editors
Machine Translated by Google
Conceptos de Linux 37
El editor nano
El editor nano se puede iniciar desde la línea de comando usando solo el comando y la /ruta/nombre del archivo.
nano foo.txt
Si el archivo requiere permisos de administrador, se puede ejecutar con 'sudo'.
sudo nano foo.txt
Cuando se abre nos presenta un espacio de trabajo y parte del archivo y algunos atajos comunes de uso en la
parte inferior de la consola;
Interfaz nana
Incluye algunos resaltados de sintaxis simples para formatos de archivo comunes;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 38
Resaltado de sintaxis nano
Esto se puede mejorar si se desea (cue Google).
Hay una variedad de atajos para facilitar la edición, pero los más simples son los siguientes;
• CTRLx Salir del editor. Si estamos en medio de la edición de un archivo, se nos preguntará si
queremos guardar nuestro trabajo
• CTRLr: leer un archivo en nuestro archivo de trabajo actual. Esto nos permite agregar texto de otro
archivo mientras trabajamos desde un archivo nuevo.
• CTRLk Cortar texto.
• CTRLu: texto sin cortar (o pegar). •
CTRLo: guarda el nombre del archivo y continúa
trabajando. • CTRLt Revisar la ortografía de
nuestro texto. • CTRLw Buscar el texto.
• CTRLa Ir al principio de la línea de trabajo actual. • CTRLe Ir al
final de la línea de trabajo actual. • CTRLg: obtener ayuda
con nano.
Machine Translated by Google
Conceptos de Linux 39
secuencias de comandos
Un script de shell es un archivo que contiene una serie de comandos. El proceso de secuencias de comandos es la
escritura de esos comandos en el archivo. El shell puede leer este archivo y actuar sobre los comandos como si
estuvieran escritos en el teclado.
Debido a que hay muchos comandos disponibles para usar, podemos darnos cuenta del poder real de la informática
y la reducción de tareas repetitivas mediante la automatización de procesos.
Piense en los scripts de shell como comandos de programa que están encadenados y que el sistema puede ejecutar
como un evento con script. Hacen uso de funciones como la sustitución de comandos donde podemos invocar un
comando, como la fecha, y usar su salida como parte de un esquema de nombres de archivos. Los scripts son
programas por derecho propio que utilizan funciones de programación como bucles, variables y sentencias if/then/
else. La belleza de las secuencias de comandos es que no tenemos que aprender otro lenguaje de programación
para crear secuencias de comandos de manera efectiva, simplemente usamos los comandos que usamos en la línea
de comandos.
Para escribir con éxito un guión para hacer algo, tenemos que hacer tres cosas;
1. Escriba un script (un archivo con una extensión '.sh') que use comandos comunes.
2. Establezca los permisos en el archivo para que se pueda ejecutar. 3.
Coloque el archivo en algún lugar donde el shell pueda localizarlo cuando se invoque.
Escribiendo nuestro Guión
El script en sí es solo un archivo de texto. Lo único elegante es que contiene comandos y lo haremos ejecutable.
Podemos comenzar con un ejemplo simple que demuestra hacer eco de un mensaje simple en la pantalla.
Comenzando en nuestro directorio de inicio (/home/pi) podemos usar el editor nano para crear nuestro script
ejecutando el siguiente comando;
nano di hola.sh
Esto abrirá el editor nano y podemos escribir algo como lo siguiente;
#!/bin/bash
# Guión de Hola Mundo
echo "¡Hola mundo!"
La primera línea del script es importante porque proporciona información al shell sobre qué programa se debe usar
para interpretar y ejecutar el script. La línea comienza con un 'shebang' (#!) y luego la ruta al programa (en este caso /
bin/bash).
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 40
La segunda línea es un comentario que colocaríamos en un script para decirnos a nosotros mismos oa otros que abren el archivo lo
que está pasando. Cualquier cosa que aparezca después de una marca # (excepto en la primera línea con 'shebang') será ignorada
por el script y se ingresará para tomar notas para el lector.
La última línea es el comando que ejecutaremos. En este caso es solo un comando, pero también puede ser cualquier número. El
comando en este caso es un comando de eco muy simple para imprimir las palabras '¡Hola mundo!' a la pantalla
Una vez terminado podemos cerrar y guardar el archivo (CTRLx para cerrar y decir 'y' para guardar);
Ese es nuestro guión escrito.
Hacer el script ejecutable
Si enumeramos las propiedades de nuestro archivo sayhello.sh con ls de la siguiente manera;
ls l digo hola.sh
… veremos los detalles del archivo algo así;
rwrr 1 pi pi 54 17 de febrero 17:18 sayhello.sh
Los permisos de Linux especifican qué puede hacer el usuario propietario, qué puede hacer un miembro del grupo propietario y qué
pueden hacer otros usuarios con el archivo. Para cualquier usuario, necesitamos tres bits para especificar permisos de acceso: el
primero para indicar acceso de lectura (r), el segundo para indicar acceso (w) y el tercero para indicar acceso de ejecución (x).
También tenemos tres niveles de propiedad: 'usuario', 'grupo' y 'otros', por lo que necesitamos un triplete (tres conjuntos de tres) para
cada uno, lo que da como resultado nueve bits.
El siguiente diagrama muestra cómo se puede representar esta agrupación de permisos en un sistema Linux donde el usuario, el
grupo y otros tenían permisos completos de lectura, escritura y ejecución;
Permisos de Linux como rwx
Los permisos de nuestro archivo sayhello.sh nos dicen que el usuario puede leer y escribir el archivo, los miembros del grupo y
cualquier otra persona puede leer el archivo. Lo que tenemos que hacer es hacerlo ejecutable usando el comando chmod
Machine Translated by Google
Conceptos de Linux 41
chmod 755 saluda.sh
Si comprobamos de nuevo con ls l sayhello.sh deberíamos ver algo similar a esto;
rwxrwxrx 1 pi pi 54 17 de febrero 17:18 sayhello.sh
Aquí todos tienen permisos de ejecución y el usuario 'pi' y el grupo 'pi' tienen permisos de lectura y escritura.
Coloque el script en algún lugar donde el shell pueda encontrarlo.
Actualmente estamos trabajando en el directorio de inicio 'pi' donde hemos guardado nuestro archivo. Este debería
ser el ejemplo más fácil de hacer que el script sea accesible y, como tal, deberíamos poder ejecutar el comando
directamente desde la línea de comandos de la siguiente manera:
./dihola.sh
La salida del comando debería verse así;
¡Hola Mundo!
La notación ./ delante del script designa la ruta al archivo que es nuestro directorio actual.
También podríamos haber proporcionado la ruta completa de la siguiente manera;
/home/pi/di hola.sh
(Dado que /home/pi/ es el directorio en el que se encuentra actualmente el archivo).
Eso funciona, pero en el mundo perfecto no necesitaríamos designar una ruta al script para ejecutarlo. Podemos
hacer que eso suceda colocando el script en uno de los directorios en la 'RUTA' de los usuarios.
PATH es una variable ambiental que le dice al shell en qué directorios buscar archivos ejecutables. No debe
confundirse con el término 'ruta' que se refiere a la dirección de un archivo o directorio en un sistema de archivos.
La RUTA de un usuario consta de una serie de rutas absolutas separadas por dos puntos. Cuando escribimos un
comando en la línea de comando que no se distribuye con el sistema operativo o que no incluye su ruta absoluta y
luego el shell busca a través de los directorios en PATH, que constituyen nuestra ruta de búsqueda, hasta que
encuentra un archivo ejecutable con ese nombre
Podemos verificar cuáles son las rutas disponibles haciendo eco de la variable PATH en la pantalla de esta manera;
www.dbooks.org
Machine Translated by Google
Conceptos de Linux 42
echo $RUTA
Esto luego informará PATH a la pantalla algo como lo siguiente
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Por lo tanto, podemos agregar nuestro script a cualquiera de esos directorios y funcionará como un comando normal.
Sin embargo, esto hará que esté disponible para todos los usuarios del sistema y si queremos que solo esté disponible
para nosotros como usuario actual, necesitaremos agregar una nueva ruta a PATH.
La buena noticia es que esto es fácil de hacer y en Debian Jessie todo lo que tenemos que hacer es crear un directorio
en nuestro directorio de inicio (si estamos conectados como el usuario 'pi', sería /home/pi ) llamado papelera. Podemos
colocar cualquier script que queramos que esté disponible para el usuario 'pi' allí y tendrá acceso a él. La razón por la
que tendrán acceso es que, si bien no aparece en PATH en este momento, cuando agregamos el directorio bin a
nuestro directorio de inicio, hay un script llamado .profile que se verifica cada vez que iniciamos nuestro shell bash.
Si .profile ve que tenemos un directorio bin en nuestro directorio de inicio, lo agrega a nuestra RUTA.
Entonces, si agregamos el directorio usando mkdir de la siguiente manera;
mkdir~/bin
… se nos configurará una nueva ruta en PATH la próxima vez que iniciemos nuestro shell.
No olvidemos que debemos mover nuestro archivo a nuestro nuevo directorio con mv de la siguiente manera;
mv ~/di hola.sh ~/bin/
Si abrimos una nueva terminal e iniciamos sesión como nuestro usuario (es 'pi' en el ejemplo) podemos ir a cualquier
parte (cd) en la estructura del directorio y simplemente ejecutar el comando;
hola.sh
… y obtener la respuesta;
¡Hola Mundo!
Esa es la finalización de nuestro primer ejemplo simple. El trabajo más avanzado con bucles, variables y sentencias if/
then/else tendrá que ser un ejercicio para el lector. Con suerte, eso es 'solo lo suficiente' para comenzar.
Machine Translated by Google
Comandos Linux
Administración de archivos
cd
El comando cd se usa para moverse en la estructura de directorios del sistema de archivos (cambiar directorio). Es
uno de los comandos fundamentales para navegar por la estructura de directorios de Linux.
cd [opciones] directorio: Se utiliza para cambiar el directorio actual.
Por ejemplo, cuando iniciamos sesión por primera vez en Raspberry Pi como usuario 'pi', nos encontraremos en el
directorio /home/pi . Si quisiéramos cambiar al directorio /home (subir un nivel) podríamos usar el comando;
cd /casa
Tómese un tiempo para familiarizarse con el concepto de moverse por la estructura de directorios desde la línea de
comandos, ya que es una habilidad importante para establecer desde el principio en Linux.
el comando cd
El comando cd será uno de los primeros comandos que usará alguien que comience con Linux. Se usa para moverse
en la estructura de directorios del sistema de archivos (por lo tanto, cd = cambiar directorio).
Solo tiene dos opciones y rara vez se usan. Los argumentos consisten en apuntar al directorio al que queremos ir y
estos pueden ser caminos absolutos o relativos.
El comando cd se puede usar sin opciones ni argumentos. En este caso nos devuelve a nuestro directorio de inicio
como se especifica en el archivo /etc/passwd .
Si usamos cd en cualquier directorio aleatorio (pruebe con cd /var) podemos ejecutar cd por sí mismo;
cd
… y en el caso de una instalación vainilla de Raspbian, cambiaremos al directorio /home/pi ;
www.dbooks.org
Machine Translated by Google
Comandos Linux 44
pi@raspberrypi ~ $ cd /var
pi@raspberrypi /var $ cd
pi@raspberrypi ~ $ pwd /
home/pi
En el ejemplo anterior, cambiamos a /var y luego ejecutamos el comando cd solo y luego ejecutamos el comando pwd que
nos mostró que el directorio de trabajo actual es /home/pi. Este es el directorio de inicio predeterminado de Raspbian para el
usuario pi.
Opciones
Como se mencionó, solo hay dos opciones disponibles para usar con el comando cd . Esta es P , que le indica a cd que use
la estructura de directorios físicos en lugar de seguir enlaces simbólicos y la opción L , que obliga a seguir los enlaces
simbólicos.
Para aquellos que comienzan con Linux, hay pocas posibilidades de usar cualquiera de estas dos opciones en el futuro
inmediato y sugiero que use su valiosa memoria para recordar otras cosas de Linux.
Argumentos
Como se mencionó anteriormente, el argumento predeterminado (si no se incluye ninguno) es volver al directorio de inicio de
los usuarios como se especifica en el archivo /etc/passwd .
Al especificar un directorio, podemos hacerlo mediante direccionamiento absoluto o relativo. Entonces, si comenzamos en el
directorio /home/pi , podríamos ir al directorio /home ejecutando;
cd /casa
… o usando direccionamiento relativo y podemos usar los símbolos .. para designar el directorio padre;
discos compactos ..
Una vez en el directorio /home , podemos cambiar al directorio /home/pi/Desktop usando el direccionamiento relativo de la
siguiente manera;
cd pi/Escritorio
También podemos usar el argumento para navegar al directorio anterior en el que estábamos.
Machine Translated by Google
Comandos Linux 45
Ejemplos
Cambie al directorio raíz (/) ;
discos compactos /
Pruébate
1. Después de haber cambiado del directorio /home/pi al directorio /home , ¿cuáles son las
cinco variaciones del uso del comando cd que llevarán al usuario pi al directorio /home/pi ?
2. Comenzando en /home/pi directorio y usando solo direccionamiento relativo, use cd para cambiar
en el directorio /var .
www.dbooks.org
Machine Translated by Google
Comandos Linux 46
chgrp
El comando chgrp se usa para cambiar la propiedad del grupo de un archivo o directorio. En este sentido, es muy similar
al comando chown , excepto que se usa para cambiar la membresía del grupo en lugar de la de los usuarios.
• chgrp [opciones] archivos de grupo: cambie la propiedad del grupo de uno o más archivos y directorios
Por ejemplo, el siguiente comando (que probablemente tenga el prefijo sudo) establece la propiedad del grupo para el
directorio /srv/shared . Los permisos de grupo en este directorio ahora se aplican a cualquier usuario en el grupo de
usuarios . En la mayoría de los casos, el comando chmod se usaría para garantizar que los permisos para el grupo en
ese directorio sean correctos.
usuarios chgrp /srv/compartido
Podemos verificar esto usando ls l:
pi@frambuesapi ~ $ ls l
4 totales
drwxrxrx 2 usuarios raíz 4096 18 de julio 21:24 compartido
En esta etapa, los miembros del grupo de usuarios pueden leer y examinar el contenido del directorio /srv/shared .
Si agregamos el permiso de escritura del grupo usando chmod g+w , cualquier usuario que sea miembro del grupo de
usuarios podrá escribir en este directorio.
Este proceso puede ser útil para crear un directorio en el que los usuarios habituales del sistema puedan compartir datos
libremente.
El comando
El nombre chgrp es simplemente una abreviatura de 'cambio de grupo'. Probablemente recordará que chown también
puede cambiar la propiedad del grupo, por lo que chgrp es realmente un medio más rápido para cambiar la propiedad del
grupo de un archivo o directorio si no necesitamos cambiar la propiedad del usuario.
Opciones
La opción más utilizada con chgrp es la opción R . Al igual que chown y chgrp, esto hace que chgrp cambie los permisos
de forma recursiva; es decir, al propio directorio de destino y todo su contenido.
Otra opción posible es reference. Esto cambia la propiedad del grupo objetivo a la misma que la del archivo de
referencia. Por ejemplo:
Machine Translated by Google
Comandos Linux 47
chgrp reference=archivo1.txt archivo2.txt
Argumentos
¡ Afortunadamente, chgrp es bastante simple! Simplemente asegúrese de que el nombre del grupo sea el primer
argumento y que los argumentos posteriores sean archivos y directorios que desee modificar.
chgrp nombre de grupo archivo1 archivo2 ...
Ejemplos
Muestre algunos ejemplos de uso y resultados (estos deben ser diferentes de los ejemplos utilizados
anteriormente y deben demostrar el uso del mundo real y las combinaciones de argumentos y opciones).
Pruébate
1. ¿Qué haría al ejecutar el comando chgrp root /file.txt ? ¿Quién puede acceder al archivo después
de ejecutar esto?
2. ¿Qué problemas de seguridad podrían resultar del uso de chgrp para otorgar a un grupo acceso
compartido a un directorio? ¿Cómo se podrían prevenir?
www.dbooks.org
Machine Translated by Google
Comandos Linux 48
chmod
El comando chmod nos permite establecer o modificar los permisos de un archivo. Debido a que Linux está diseñado como
un sistema multiusuario, normalmente hay varios usuarios diferentes con diferentes permisos para los archivos que pueden
leer/escribir o ejecutar. chmod nos permite limitar el acceso a usuarios autorizados para hacer cosas como editar archivos
web, mientras que los usuarios generales solo pueden leer los archivos.
• Archivos de modo chmod [opciones]: cambie los permisos de acceso de uno o más archivos y directorios
Por ejemplo, el siguiente comando (que probablemente tenga el prefijo sudo) establece los permisos para el directorio /var/
www para que el usuario pueda leer, escribir y cambiar en el directorio. Los propietarios de grupos también pueden leer,
escribir y cambiar en el directorio. Todos los demás pueden leer y cambiar en el directorio, pero no pueden crear ni eliminar
un archivo dentro de él;
chmod 775 /var/www
Esto podría permitir a los usuarios normales navegar por páginas web en un servidor, pero evitar que editen esas páginas
(lo que probablemente sea algo bueno).
El comando chmod
El comando chmod nos permite cambiar los permisos por los cuales el usuario puede hacer qué (leer, escribir o ejecutar) en
archivos y directorios. Lo hace cambiando el 'modo' (por lo tanto, chmod = modo de cambio de archivo ) del archivo donde
podemos asumir que 'modo' = permisos.
Cada archivo en la computadora tiene un conjunto asociado de permisos. Los permisos le dicen al sistema operativo qué se
puede hacer con ese archivo y quién lo puede hacer. Hay tres cosas que puede (o no puede) hacer con un archivo dado:
• leerlo, •
escribirlo (modificarlo) y •
ejecutarlo.
Los permisos de Linux especifican qué puede hacer el usuario propietario, qué pueden hacer los miembros del grupo
propietario y qué pueden hacer otros usuarios con el archivo. Para cualquier usuario, necesitamos tres bits para especificar
permisos de acceso: el primero para indicar acceso de lectura (r), el segundo para indicar acceso (w) y el tercero para
indicar acceso de ejecución (x).
También tenemos tres niveles de propiedad: 'usuario', 'grupo' y 'otros', por lo que necesitamos un triplete (tres conjuntos de
tres) para cada uno, lo que da como resultado nueve bits.
El siguiente diagrama muestra cómo se puede representar esta agrupación de permisos en un sistema Linux donde el
usuario, el grupo y otros tenían permisos completos de lectura, escritura y ejecución;
Machine Translated by Google
Comandos Linux 49
Permisos de Linux como rwx
Por lo general, en Linux (cuando ejecuta el comando ls l ) también hay otro bit que
lidera este patrón de 9 bits, pero lo ignoraremos mientras tanto.
Si tuviéramos un archivo con permisos más complejos donde el usuario pudiera leer, escribir y ejecutar, el
grupo pudiera leer y escribir, pero todos los demás usuarios solo pudieran leer, se vería de la siguiente manera;
Permisos de Linux un poco más complejos
Esta descripción de permisos es factible, pero debemos tener en cuenta que los permisos también se
representan como valores de 3 bits (donde cada bit es un '1' o un '0' (donde un '1' es sí puede, o '0' es no, no
puedes)) o como el valor octal equivalente.
Permisos de Linux como simbólico, 3 bit y octal.
El rango completo de valores posibles para estas combinaciones de permisos es el siguiente;
www.dbooks.org
Machine Translated by Google
Comandos Linux 50
Permiso Octal simbólico de 3 bits
leer, escribir y ejecutar rwx 111 7
Lee y escribe rw 110 6
leer y ejecutar rw 101 5
Otra cosa interesante a tener en cuenta es que los permisos tienen una inclinación diferente para los directorios.
• read determina si un usuario puede ver el contenido del directorio, es decir, ejecutar ls en él. • escribir
determina si un usuario puede crear nuevos archivos o borrar archivos en el directorio. (¡Tenga en cuenta que esto significa
esencialmente que un usuario con acceso de escritura a un directorio puede eliminar archivos en el directorio incluso si
no tiene permisos de escritura para el archivo! Así que tenga cuidado). • ejecutar determina si el usuario puede cd
en el directorio.
También vale la pena señalar en este punto que solo el propietario (o root a través de sudo) de un archivo puede
usar chmod para modificar los permisos de un archivo.
Podemos verificar los permisos de los archivos usando el comando ls l que listará los archivos en un formato largo de la
siguiente manera;
ls l /tmp/foo.txt
Este comando enumerará los detalles del archivo foo.txt que se encuentra en el directorio /tmp de la siguiente manera
pi@raspberrypi ~ $ ls l /tmp rwxrwr 1 pi pi
group 20 10 de julio 13:14 foo.txt
Los permisos sobre el archivo, el usuario y el propietario del grupo se pueden encontrar de la siguiente manera;
Detalles del archivo
A partir de esta información podemos ver que el usuario del archivo ('pi') tiene permisos para leer, escribir y ejecutar el archivo.
El propietario del grupo ("pigroup") puede leer y escribir en el archivo y todos los demás usuarios pueden leer el archivo.
Machine Translated by Google
Comandos Linux 51
Opciones
La opción principal que vale la pena recordar es la opción R que aplicará permisos recursivamente en los
archivos en el directorio especificado y sus subdirectorios.
El siguiente comando cambiará los permisos para todos los archivos en el directorio /srv/foo y en todos los
directorios que se encuentran debajo de él;
chmod R 764 /srv/foo
Argumentos
Simplistamente (en otras palabras, puede ser más complicado, pero lo estamos simplificando) hay dos formas
principales en que se usa chmod . En cualquiera de los modos simbólicos, donde los permisos se cambian
mediante símbolos asociados con lectura, escritura y ejecución, así como símbolos para el usuario (u), el
propietario del grupo (g), otros (o) y todos los usuarios (a). O en modo numérico donde usamos los valores
octales para combinaciones de permisos.
Modo simbólico
En modo simbólico podemos cambiar los permisos de un archivo con la siguiente sintaxis:
• chmod [quién][op][permisos] nombre de archivo
Donde quien puede ser el usuario (u), el dueño del grupo (g) y/u otros (o). El operador (op) es + para agregar
un permiso, para quitar un permiso o = para establecer permisos explícitamente. Los permisos en sí son
legibles (r), escribibles (w) o ejecutables (x).
Por ejemplo, el siguiente comando agrega permisos ejecutables (x) al usuario (u) para el archivo /tmp/foo.txt;
chmod u+x /tmp/foo.txt
Este comando elimina los permisos de escritura (w) y ejecución (x) del propietario del grupo (g) y todos los
demás (o) para el mismo archivo;
chmod gowx /tmp/foo.txt
Con suerte, notará que puede combinar los campos 'quién' y 'permisos' para
permitir múltiples valores.
www.dbooks.org
Machine Translated by Google
Comandos Linux 52
Tenga en cuenta que eliminar el permiso de ejecución de un directorio evitará que pueda enumerar su contenido (aunque la raíz
anulará esto). Si elimina accidentalmente el permiso de ejecución de un directorio, puede usar el argumento +X para indicarle a
chmod que solo aplique el permiso de ejecución a los directorios.
chmod R u+X /inicio/pi/*
Modo numérico
En modo numérico, podemos establecer explícitamente los permisos usando los valores octales, por lo que esta forma de comando
es bastante común.
Por ejemplo, el siguiente comando cambiará los permisos en el archivo foo.txt para que el usuario pueda leerlo, escribirlo y
ejecutarlo, el propietario del grupo pueda leerlo y escribirlo y todos los demás puedan leerlo;
chmod 764 /tmp/foo.txt
Ejemplos
Para cambiar los permisos en su directorio de inicio para eliminar los permisos de lectura y ejecución del propietario del grupo y
todos los demás usuarios;
chmod gorx ~
Para hacer que un script sea ejecutable por el usuario;
chmod u+x foo.sh
Windows marca todos los archivos como ejecutables de forma predeterminada. Si copia un archivo o directorio desde un sistema
Windows (o incluso un disco con formato de Windows) a su sistema Linux, lo ideal es eliminar los permisos de ejecución
innecesarios de todos los archivos copiados, a menos que necesite conservarlos específicamente.
¡Tenga en cuenta que todavía lo necesitamos en todos los directorios para que podamos acceder a sus contenidos! Así es
como podemos lograr esto en un solo comando:
chmod R ax+X ~/copiado_desde_windows
Machine Translated by Google
Comandos Linux 53
Esto le indica a chmod que elimine el permiso de ejecución para cada archivo y directorio, y luego vuelva a
configurar inmediatamente la ejecución si está trabajando en un directorio.
Pruébate
1. Evite que todos ejecuten el script /tmp/foo.sh.
2. ¿Qué hace el siguiente comando? chmod u=rwx,g=rx,o=r file.txt 3. Mientras
cambia los permisos en algunos archivos, accidentalmente elimina el bit de ejecución de todo su
directorio de inicio. ¿Cuál podría ser una forma rápida de solucionar esto?
www.dbooks.org
Machine Translated by Google
Comandos Linux 54
Chon
El comando chown cambia la propiedad del usuario y/o grupo de los archivos dados. Debido a que Linux está
diseñado como un sistema multiusuario, normalmente hay varios usuarios diferentes (no necesariamente personas
reales, sino demonios u otros programas que pueden ejecutarse como su propio usuario) responsables de
mantener límites de permisos claros que separan los servicios para evitar la corrupción o mantener la seguridad. o
privacidad. Esto nos permite limitar el acceso a usuarios autorizados para hacer cosas como editar archivos web.
• chown [opciones] archivos de nuevo propietario: cambiar la propiedad de uno o más archivos y directorios
Por ejemplo, si queremos que el usuario wwwdata sea el propietario del directorio www (en el directorio /var ) y
queremos pasar la propiedad del grupo de ese directorio al grupo wwwdata, ejecutaríamos el siguiente comando;
chown wwwdatos:wwwdatos /var/www
Es muy probable que necesitemos prefijar el comando con sudo para ejecutarlo como root, según el usuario que
éramos cuando lo ejecutamos.
El comando chown
El comando chown cambia la propiedad del usuario y/o grupo de los archivos dados (por lo tanto, chown = cambiar
propietario). Se utiliza para ayudar a especificar exactamente quién o qué grupo puede acceder a ciertos archivos.
Hay varias opciones diferentes, pero solo una que podría considerarse lo suficientemente importante como para
tratar de recordar. También hay varias formas diferentes de asignar la propiedad dependiendo de si estamos
tratando de asignar permisos de un solo usuario y/o grupo. Para obtener más información sobre la modificación de
permisos, consulte chmod.
Opciones
La opción principal que vale la pena recordar es la opción R que aplicará permisos recursivamente en los archivos
en el directorio especificado y sus subdirectorios.
El siguiente comando cambiará el propietario al usuario 'apache' para el directorio /var/www y todos los directorios
que se encuentran debajo de él;
chown R apache /var/www
Machine Translated by Google
Comandos Linux 55
Argumentos
El objeto al que se le ha cambiado la propiedad puede ser un archivo o un directorio y su contenido.
Una de las cosas inteligentes sobre la asignación de permisos usando chown es la forma en que la propiedad del
usuario y del grupo se puede aplicar en el mismo comando (si se desea).
Si solo se proporciona un nombre de usuario, ese usuario se convierte en el propietario de cada archivo determinado y el grupo de
archivos no cambia.
chown apache /var/www
Si el propietario va seguido de dos puntos y un nombre de grupo (sin espacios entre ellos), la propiedad del grupo
de los archivos también cambia. En el siguiente ejemplo, el usuario apache y el grupo apachegroup reciben la
propiedad de los archivos en el directorio /var/www ;
chown apache:grupoapache /var/www
Si al nombre de usuario le siguen dos puntos pero no el nombre del grupo, ese usuario se convierte en el propietario
de los archivos y el grupo de los archivos se cambia al grupo de inicio de sesión inicial de ese usuario. Entonces, si
el grupo de inicio de sesión inicial de los usuarios de apache fuera apachegroup , el siguiente comando lograría lo
mismo que el ejemplo anterior;
chown apache: /var/www
Si se dan los dos puntos y el grupo, pero se omite el propietario, solo se cambia el grupo de archivos.
chown :apachegroup /var/www
En realidad , se puede usar un punto (.) en lugar de dos puntos (:) para separar al usuario
del grupo al ejecutar el comando. Además, el ID de usuario numérico (UID) y/o el ID de
grupo (GID) se pueden utilizar en lugar de los nombres de usuario y grupo.
Ejemplos
Para cambiar la propiedad del archivo /home/pi/foo.txt al UID 3456 y la propiedad del grupo al GID 4321.
www.dbooks.org
Machine Translated by Google
Comandos Linux 56
chown 3456:4321 /home/pi/foo.txtt
Pruébate
1. ¿Qué ha ido terriblemente mal si ejecuta este comando?
chown usuario: grupo / var / ftp
2. ¿Qué comando ejecutaría para cambiar la propiedad del grupo de los archivos en el
directorio /tmp/junk a los propietarios de basura del grupo, pero no al directorio en sí?
Machine Translated by Google
Comandos Linux 57
c.p.
El comando cp se usa para copiar archivos o directorios. Es uno de los comandos básicos de Linux que permite
la gestión de archivos desde la línea de comandos.
• cp [opciones] origen destino: Copiar archivos y directorios
Por ejemplo: para hacer una copia del archivo foo.txt y llamarlo foo2.txt ingresaríamos lo siguiente;
cp foo.txt foo2.txt
Esto supone que estamos en el mismo directorio que el archivo foo.txt, pero incluso si no lo estuviéramos,
podríamos nombrar explícitamente el archivo con la estructura del directorio y, por lo tanto, no solo hacer una
copia del archivo, sino colocarlo en algún lugar. diferente;
cp /home/pi/foo.txt /home/pi/stuff/foo2.txt
El comando cp
El comando cp se usa para copiar archivos y directorios (cp es una forma abreviada de la palabra copiar).
Cualquier copia es independiente de los originales y existe por derecho propio. Si bien cp puede copiar directorios,
por defecto copiará archivos. Si le decimos a cp que copie un archivo cuando ese archivo ya existe en el destino,
el archivo anterior se sobrescribirá. Sin embargo, el propietario, el grupo y los permisos del nuevo archivo copiado
serán los mismos que los del archivo con el mismo nombre que reemplazó.
El acceso y la hora del archivo de origen y la hora de modificación del nuevo archivo se establecen en el momento
en que se realizó la copia.
El conjunto normal de comodines y opciones de direccionamiento están disponibles para que el proceso sea más
flexible y extensible.
Opciones
Si bien la funcionalidad básica del comando cp se explica por sí misma, hay varias opciones que amplían esa
funcionalidad.
• r (también funciona con R) nos permite copiar directorios y sus contenidos de forma recursiva. En otra
palabras podemos copiar el directorio, su archivo y subdirectorios hasta el infinito.
• p conserva el modo, la propiedad y las marcas de tiempo de los archivos
copiados • u actualiza los archivos copiados copiándolos solo cuando el archivo de origen es más reciente que el
archivo de destino o cuando falta el archivo de destino
www.dbooks.org
Machine Translated by Google
Comandos Linux 58
Por ejemplo, para copiar el directorio 'directorio1' y todo su contenido en términos de archivos y
subdirectorios contenidos en 'directorio2', podemos ejecutar el siguiente comando;
cp r directorio1/ directorio2/
Ejemplos
Para copiar todos los archivos del directorio1 al directorio2;
cp directorio1/* directorio2/
Para copiar todos los archivos y subdirectorios del directorio1 al directorio2;
cp r directorio1/* directorio2/
Para copiar los archivos foo.txt y bar.txt al directorio foobar;
cp foo.txt bar.txt foobar/
Para copiar todos los archivos 'txt' del directorio de inicio de los usuarios a un directorio llamado copia de seguridad;
cp ~/*.txt copia de seguridad/
Pruébate
1. ¿Qué comando se puede usar para copiar todos los archivos 'txt' del directorio de inicio de los
usuarios al directorio /home/pi/backup pero solo si los archivos que se copian son más nuevos que
los archivos en /home/pi/ directorio de respaldo ?
2. ¿Qué caracteres no se pueden usar al nombrar directorios o archivos?
Machine Translated by Google
Comandos Linux 59
encontrar
El comando de búsqueda es una herramienta extremadamente potente y flexible para localizar archivos según criterios
coincidentes. Debido a que siempre se requerirá una gran variedad de archivos para crear un sistema, es esencial
comprender una utilidad como find .
• encontrar [punto de inicio] [criterios de búsqueda] [término de búsqueda]: buscar archivos
Es importante dar el salto conceptual cuando se usa find, ya que encontrar un archivo o archivos no se trata solo de
buscar un nombre. Un archivo puede ser descrito y buscado por una variedad de propiedades que incluyen nombre,
ubicación, permisos, usuario, hora/fecha de modificación y tamaño (y probablemente más).
Entonces, si bien al principio el comando de búsqueda puede parecer un poco arcano, la lógica detrás de su uso es
sólida y una vez que lo dominamos, se convierte en una herramienta muy poderosa.
Un ejemplo simple podría aparecer como sigue;
encontrar /home/pi nombre archivo faltante.txt
Aquí estamos usando el punto de inicio del directorio de inicio de los usuarios 'pi' (/home/pi), el criterio de búsqueda es
el nombre del archivo (name) y el término de búsqueda es un archivo llamado archivofaltante.txt.
El resultado informado es el siguiente;
/home/pi/foodir/missingfile.txt
Aquí podemos ver que hay un archivo llamadomisingfile.txt en el directorio /home/pi/foodir.
La búsqueda se realizó con el punto de inicio del directorio /home/pi y verificó ese directorio y todos los directorios
debajo de ese, que incluían /home/pi/foodir.
El comando de búsqueda
find es un comando para buscar que es bastante 'antiguo'. Hay otros comandos que se han introducido para hacer un
trabajo similar, como localizar y mlocate , pero su adopción no ha sido universal y, como resultado, no se puede confiar
en que estén disponibles en todas las distribuciones. Sin embargo, es muy inusual encontrar una versión de Linux (o
Unix) que no admita find, por lo que para poder aprender un comando que debería ser fácilmente transportable, find
tiene una ventaja.
Como se mencionó en la descripción inicial anterior, es importante dar un salto conceptual al usar find , ya que el
proceso de búsqueda se trata de combinar tres cosas;
1. El punto de inicio de la búsqueda 2.
El tipo de criterio o propiedad que vamos a evaluar en nuestra búsqueda 3. El valor específico de los
criterios contra los que queremos buscar.
www.dbooks.org
Machine Translated by Google
Comandos Linux 60
Luego, una vez que nos sintamos cómodos con el funcionamiento de la búsqueda según los criterios, podemos encadenarlos para que nuestras
búsquedas sean más refinadas.
Los argumentos numéricos a continuación se pueden especificar como;
• +n : para mayor que n, • n : para
menor que n, • n : para
exactamente n.
También podemos emplear comodines para ayudar a hacer coincidir los nombres.
• name patrón: el nombre del archivo que coincide con el patrón del patrón • iname patrón: como
nombre, pero la coincidencia no distingue entre mayúsculas y minúsculas • mmin n: los datos
del archivo se modificaron por última vez hace n minutos • mtime n: los datos del archivo
se modificó por última vez hace n *24 horas • archivo más nuevo : el archivo se modificó más
recientemente que el archivo • amin n: se accedió al archivo por última vez hace n minutos.
• atime n : el archivo fue accedido por última vez hace n *24 horas • user
uname : el archivo es propiedad del usuario uname • group gname : el archivo
pertenece al grupo gname • executable : compara archivos que son
ejecutables y directorios que se pueden buscar • type c : el archivo es de
tipo c:
– b bloque (con búfer) especial – c carácter
(sin búfer) especial – d directorio – p canalización
con nombre (FIFO)
– f archivo normal – l enlace
simbólico – s socket
• size n[cwbkMG] : el archivo usa n unidades de espacio (redondeando hacia arriba). Los siguientes sufijos pueden
ser usado:
– b para bloques de 512 bytes (este es el valor predeterminado si no se usa sufijo) – c para
bytes – w para
palabras de dos bytes – k para
kilobytes (unidades de 1024 bytes)
– M para Megabytes (unidades de 1048576 bytes)
– G para Gigabytes (unidades de 1073741824 bytes)
• Modo perm : Los archivos tienen un conjunto específico de permisos con un modo diferente dependiendo de cómo queramos acceder a
ellos – modo Los bits de permiso del archivo
son exactamente el modo – modo Todos los modos de bits de permiso
están configurados para el archivo. – /mode Se establece cualquiera de los modos de bits
de permiso para el archivo.
Machine Translated by Google
Comandos Linux 61
Ejemplos de uso
Insensible a mayúsculas y minúsculas (iname)
Para buscar por nombre y hacer que la búsqueda no distinga entre mayúsculas y minúsculas, usamos iname.
encontrar /home/pi iname archivo faltante.txt
El resultado informado es el siguiente;
/home/pi/foodir/missingfile.txt /home/pi/
foodir/MissingFile.txt
Modificado hace minutos u horas (mmin o mtime)
Para buscar archivos que hayan sido modificados hace algunos minutos usaríamos mmin.
encontrar /inicio/pi mmin 10
El resultado informado es el siguiente;
/home/pi/foodir /
home/pi/foodir/MissingFile.txt
El archivo MissingFile.txt y el directorio en el que se encuentra /home/pi/foodir se modificaron hace menos de 10 minutos.
Recuerde que 10 significa archivos de hace menos de 10 minutos, +10 significaría hace
más de 10 minutos y 10 significaría hace 10 minutos.
Si estuviéramos usando mtime, 10 significaría hace menos de 10 días y +10 significaría hace más
de 10 días.
Modificado más recientemente que otro archivo (más reciente)
Podemos buscar archivos que hayan sido modificados más recientemente que un archivo específico usando newer.
Creé el archivomisingfile.txt hace un par de días, y desde entonces he realizado algunos cambios. Entonces, ¿qué
archivos han cambiado en mi directorio de inicio desde que modifiqué ese archivo?
encontrar /home/pi archivo faltante más nuevo.txt
El resultado informado es el siguiente;
www.dbooks.org
Machine Translated by Google
Comandos Linux 62
/home/pi /
home/pi/.xsessionerrors /home/
pi/.bash_history /home/pi/.vnc /
home/pi/.vnc/
raspberrypi:1.log /home/pi/.vnc/raspberrypi:
1.pid /home/pi/.Xauthority /home/pi/foodir /
home/pi/foodir/MissingFile.txt
Podemos ver algunos archivos que han estado cuidando la experiencia de usuario del usuario 'pi' y también
podemos ver que el archivo MissingFile.txt es más nuevo que el archivo perdido.txt.
Por nombre de usuario o grupo (usuario o grupo)
Podemos buscar por usuario utilizando el criterio user . En el siguiente ejemplo, buscaremos los archivos que
pertenecen al usuario 'root' en el directorio /home/pi.
encontrar /home/pi usuario raíz
La salida a la pantalla es;
/home/pi/foodir/rootsfile.txt
Si revisamos los archivos en el directorio /home/pi/foodir usando ls l vemos lo siguiente;
rwrr 1 pi rwr pi 0 31 de enero 10:08 anotherfoo.txt pi 0 20
r 1 pi rwxrwr 1 de febrero 19:22 archivo perdido.txt pi 0 21 de
pi rwxrxrx 1 pi febrero 13:28 Archivo perdido.txt pi 0 21 de
febrero 13:29 runme.sh
rwrr 1 raíz raíz 0 21 de febrero 20:45 archivo de raíces.txt
Efectivamente, está el archivo rootsfile.txt que es propiedad de root, podemos realizar la misma búsqueda y
obtener el mismo resultado (al menos en este directorio usando el criterio de búsqueda group .
Buscar archivos ejecutables (ejecutable)
Podemos buscar archivos ejecutables usando el criterio ejecutable . En este caso buscamos archivos que
hayan sido configurados como ejecutables en sus permisos;
encontrar /home/pi/foodir ejecutable
La salida a la pantalla en este caso es;
Machine Translated by Google
Comandos Linux 63
/home/pi/foodir/runme.sh /home/
pi/foodir/MissingFile.txt
Si revisamos los archivos en el directorio /home/pi/foodir usando ls l vemos lo siguiente;
rwrr 1 pi rwr pi 0 31 de enero 10:08 anotherfoo.txt pi 0 20
r 1 pi rwxrwr 1 de febrero 19:22 archivo perdido.txt pi 0 21 de
pi rwxrxrx 1 pi febrero 13:28 Archivo perdido.txt pi 0 21 de
febrero 13:29 runme.sh
rwrr 1 raíz raíz 0 21 de febrero 20:45 archivo de raíces.txt
Efectivamente, los archivos runme.sh y MissingFile.txt son ejecutables.
Por el tipo de archivo (tipo)
Los archivos individuales pueden ser uno de una gama bastante amplia de tipos. Podemos usar el tipo como nuestro criterio de
búsqueda usando type. Los rangos de tipos que se pueden buscar incluyen;
• b bloque (con búfer) especial • c
carácter (sin búfer) especial • d directorio • p
canalización con
nombre (FIFO) • f archivo
normal • l enlace
simbólico • s socket
Entonces, si buscamos usando el directorio, escriba d de la siguiente manera;
busque /home/pi/ escriba d
Todos los directorios se muestran en la pantalla de la siguiente manera;
/inicio/pi/ /
inicio/pi/.vnc /
inicio/pi/foodir /inicio/
pi/.ssh /inicio/pi/
bin
Por el tamaño del archivo (tamaño)
Buscar archivos por tamaño con size implica incluir un sufijo al valor para indicar el tipo de unidad involucrada. La gama de
unidades son;
• b para bloques de 512 bytes (este es el valor predeterminado si no se usa sufijo)
www.dbooks.org
Machine Translated by Google
Comandos Linux 64
• c para bytes •
w para palabras de dos bytes
• k para Kilobytes (unidades de 1024 bytes) • M
para Megabytes (unidades de 1048576 bytes) • G
para Gigabytes (unidades de 1073741824 bytes)
Si quisiéramos buscar archivos de más de 1 Megabyte usaríamos;
encontrar /home/pi/ tamaño +1M
Esos archivos se mostrarían en la pantalla de la siguiente manera;
/home/pi/master.zip.2 /home/
pi/alpha.zip /home/pi/
master.zip.1 /home/pi/
master.zip.4 /home/pi/
master.zip.3
Una verificación muy desaliñada para ver qué tamaño tienen esos archivos con ls l *zip* nos muestra lo siguiente;
rwrr 1 pi pi 3204673 8 de febrero 07:35 alpha.zip rwrr 1 pi
pi 116 10 de febrero 17:14 master.zip rwrr 1 pi pi 3204673 7 de
febrero 09:10 master.zip.1 rwrr 1 pi pi 3204673 8 de febrero 07:29
master.zip.2 rwrr 1 pi pi 3204673 8 de febrero 07:39 master.zip.3
rwrr 1 pi pi 3204673 10 de febrero 17:20 master.zip.4 rwrr 1 pi
pi 295696 10 de febrero 17 :47 test2.zip rwrr 1 pi pi
116 10 de febrero 17:19 prueba.zip
Efectivamente, los archivos devueltos por la búsqueda tenían más de 1 Megabyte y había otros de menor tamaño que no
se devolvieron.
Por los permisos del Archivo (perm)
La búsqueda de archivos por permiso usando perm se puede lograr de una de tres maneras
• mode Los bits de permiso del archivo están exactamente
en modo • mode Todos los bits de permiso están configurados para el
archivo. • /mode Se establece cualquier modo de bits de permiso para el archivo.
Al igual que chmod, find comprende los permisos especificados en formato simbólico o numérico (octal).
Para repetir nuestra búsqueda anterior donde buscamos archivos ejecutables, podríamos ejecutar lo siguiente usando el
modo simbólico y buscando cualquiera de los bits de permiso establecidos en ejecutable;
Machine Translated by Google
Comandos Linux sesenta y cinco
encontrar /home/pi/foodir perm /a=x
El resultado de esto podría verse así;
/home/pi/foodir/runme.sh
Quizá queramos localizar cualquier archivo con los permisos 764 en octal (rwxrwr en simbólico):
encontrar /inicio/pi perm 0764
Que en este caso nos muestra;
/home/pi/foodir/MissingFile.txt
Ya que 'ls ls /home/pi/foodir/MissingFile.txt nos muestra lo siguiente
0 rwxrwr 1 pi pi 0 21 de febrero 13:28 MissingFile.txt
Encadenamiento de criterios de
búsqueda El comando de búsqueda comienza realmente a flexionar sus músculos cuando se combinan los criterios de búsqueda.
Por ejemplo podríamos buscar todos los archivos pertenecientes al usuario 'pi' y que estuvieran por encima de 1 Megabyte de la
siguiente manera;
encontrar /home/pi usuario pi tamaño +1M
O tal vez reduciendo una ventana de tamaño para archivos por encima de 500 Kilobytes y por debajo de 1 Megabyte;
encontrar /home/pi tamaño +500k tamaño 1M
Evitar los mensajes de 'Permiso denegado' Al ejecutar una
búsqueda en una parte más grande del sistema de archivos (por ejemplo, comenzando en el directorio raíz), habrá una gran
cantidad de directorios que el usuario que realiza la búsqueda puede no tener permisos para ver. Como resultado, los comentarios
del comando de búsqueda incluirán una gran cantidad de mensajes que nos informarán que se nos negó el permiso para buscar
en esos directorios. Una solución a esto es usar el criterio print para redirigir cualquier mensaje de error a 'dev/null' (que es como
decir 'vete').
www.dbooks.org
Machine Translated by Google
Comandos Linux 66
La siguiente es una búsqueda que devolverá cualquier archivo de más de 1 Megabyte de todo el sistema de
archivos (comenzando en la raíz (/). Y cuando se produce un error (como permiso denegado), imprime ese
error en /dev/null;
encontrar / usuario pi tamaño +1M imprimir 2>/dev/null
Pruébate
1. ¿Por qué usaríamos find en lugar de los comandos de búsqueda alternativos de Linux?
2. Elabore una búsqueda para buscar archivos en el directorio de inicio de los usuarios actuales (sin
usar el direccionamiento absoluto) y busque archivos que se crearon hace más de 20 minutos pero
menos de 36 horas.
3. Si no especificamos un punto de búsqueda, ¿cuál es el predeterminado?
Machine Translated by Google
Comandos Linux 67
gzip
gzip es una herramienta para comprimir y descomprimir un archivo (o varios archivos) utilizando el formato gzip.
Por sí mismo , gzip solo puede comprimir un archivo a la vez, por lo que si es necesario comprimir varios archivos,
normalmente se usa tar para combinar los archivos en un solo archivo. Ese archivo de almacenamiento se puede comprimir
con gzip. Puede ser una acción útil comprimir archivos al transferirlos o almacenarlos para ahorrar ancho de banda o
espacio.
• gzip [opciones] nombre de archivo: comprimir o expandir archivos
En su caso de uso más simple, solo necesitamos usar el comando gzip y el nombre del archivo de la siguiente manera;
archivos gzip.txt
Por defecto, esto tomará el archivo files.txt y lo comprimirá y reemplazará el archivo original con uno llamado file.txt.gz.
Podemos comprobar la compresión comparando la salida del comando ls l archivos.txt antes de comprimir…..
rwrr 1 pi pi 398 8 de febrero 08:04 archivos.txt
Con eso de después de la compresión;
rwrr 1 pi pi 146 8 de febrero 08:04 archivos.txt.gz
Antes el tamaño del archivo era de 398 bytes y después de 146 bytes.
La cantidad de compresión dependerá de una variedad de factores, uno de los cuales será el tipo de
archivo que se comprime. Algunos archivos están comprimidos por diseño (piense en archivos *.jpg
o *.png) y estos no tendrán el mismo tipo de relación de compresión.
La compresión siempre se realiza, incluso si el archivo comprimido es un poco más grande que el
original. La expansión teórica en el peor de los casos es unos pocos bytes adicionales, pero en
realidad el número real de bloques de disco utilizados casi nunca aumenta.
El comando gzip
El comando gzip reduce el tamaño de los archivos nombrados usando el algoritmo de codificación LempelZiv (este es el
mismo algoritmo usado en zip y PKZIP). Cuando se realiza la compresión, cada archivo es reemplazado por uno con el
mismo nombre y extensión .gz , manteniendo los mismos modos de propiedad, acceso y tiempos de modificación.
www.dbooks.org
Machine Translated by Google
Comandos Linux 68
Si el nombre del archivo comprimido es demasiado largo para su sistema de archivos, gzip intentará truncar las partes del
nombre del archivo que tengan más de 3 caracteres.
Los archivos comprimidos se pueden restaurar a su forma original usando gzip d o gunzip. Si el nombre original
guardado en el archivo comprimido no es adecuado para el sistema de archivos en el que se descomprime, se
construye un nuevo nombre a partir del original para que sea legal.
gunzip toma una lista de archivos en su línea de comando y reemplaza cada archivo cuyo nombre
termina con .gz, gz, .z, z, _z o .Z. También reconoce las extensiones especiales .tgz y .taz como
abreviaturas de .tar.gz y .tar.Z respectivamente. Al comprimir, gzip usa la extensión .tgz si es
necesario en lugar de truncar un archivo con una extensión .tar .
Opciones
Las opciones que son las más comunes y posiblemente las más útiles incluyen:.
• d : descomprime un archivo comprimido. •
l : enumera los detalles de un proceso de descompresión
Descomprimir
Para descomprimir un archivo gzip podemos usar el comando gzip con la opción d de la siguiente manera;
gzip d archivos.txt.gz
O podemos usar el comando gunzip que es el equivalente de gzip d así;
archivos gunzip.txt.gz
Lista de detalles de descompresión
Para tener una idea de qué tan bien ha funcionado la compresión, podemos usar la opción l al descomprimir e
imprimirá el tamaño comprimido, el tamaño sin comprimir, la relación de compresión y el nombre del archivo
descomprimido. El comando se vería así;
gzip dl archivos.txt.gz
Y la salida se vería así;
Machine Translated by Google
Comandos Linux 69
comprimido relación sin comprimir uncompressed_name
146 398 70.4% archivos.txt
Pruébate
1. ¿Comprimirá el comando gzip file1.txt file2.txt ambos archivos en uno solo? En caso
afirmativo, ¿cómo se llamará? Si es "no", ¿cuál será el resultado?
www.dbooks.org
Machine Translated by Google
Comandos Linux 70
en
El comando ln se usa para hacer enlaces entre archivos. Esto nos permite tener un solo archivo o directorio al que se hace
referencia con diferentes nombres.
• ln [opciones] originalfile linkfile : crea vínculos entre archivos o directorios • ln [opciones]
originalfile : crea un vínculo al archivo original en el directorio actual
El comando ln creará un enlace fijo de forma predeterminada y un enlace flexible (enlace simbólico) mediante la opción s .
Por ejemplo, para crear un enlace duro en la carpeta /home/pi/foobar/ al archivo foo.txt que está en /home/pi/ podríamos usar;
ln /home/pi/foo.txt /home/pi/foobar/
El directorio de destino del nuevo vínculo debe existir para que el comando se ejecute correctamente.
Una vez que se crea el enlace, si tuviéramos que editar el archivo desde cualquier ubicación, será el mismo archivo que se
está cambiando.
El comando ln
El comando ln se usa para hacer enlaces entre archivos (por lo tanto, ln = enlace). De forma predeterminada, los enlaces
serán 'duros', lo que significa que los enlaces apuntan al mismo inodo y, por lo tanto, apuntan a los mismos datos en el disco
duro. Al usar la opción s , se puede crear un enlace suave (también conocido como enlace simbólico o enlace simbólico).
Un enlace flexible tiene su propio inodo y puede abarcar particiones.
Esto nos permite tener un solo archivo de directorio al que se hace referencia con diferentes nombres.
enlaces duros
• Solo vinculará a un archivo (sin directorios) • No
vinculará a un archivo en un disco duro / partición diferente • Vinculará a un
archivo incluso cuando se mueva • Vincula a un inodo
y una ubicación física en el disco
Enlaces blandos (o enlaces simbólicos o symlinks)
• Vinculará a directorios o archivos •
Vinculará a un archivo o directorio en un disco duro/partición diferente • Los vínculos
permanecerán si se elimina el archivo original • Los vínculos
no se conectarán al archivo si se mueve • Los vínculos se
conectan a través de resumen ( por lo tanto simbólicas) convenciones, no ubicaciones físicas en el
disco. Tienen su propio inodo
Machine Translated by Google
Comandos Linux 71
Opciones
Hay varias opciones diferentes, pero la principal que se usará más es la opción s para crear un enlace suave.
Si repetimos nuestro ejemplo anterior donde queríamos crear un enlace en la carpeta /home/pi/foobar/ al
archivo foo.txt que está en /home/pi/, al incluir la opción s podemos hacer que el enlace suave en su lugar;
ln s /home/pi/foo.txt /home/pi/foobar/
Si luego enumeramos el contenido del directorio foobar , veremos lo siguiente;
pi@raspberrypi ~/foobar $ ls foobar/ l
total 0
lrwxrwxrwx 1 pi pi 16 ago 16 01:30 foo.txt > /home/pi/foo.txt
Los descriptores de lectura/escritura/ejecución de los permisos están precedidos por una l (de vínculo) y hay
una flecha estilizada (>) que vincula los archivos.
Pruébate
1. ¿Puede el usuario 'raíz' crear un enlace físico para un directorio?
2. ¿Qué comando se usaría para crear enlaces para múltiples archivos 'txt' al mismo tiempo?
www.dbooks.org
Machine Translated by Google
Comandos Linux 72
ls
El comando ls enumera el contenido de un directorio y puede mostrar las propiedades de los objetos que enumera.
Es uno de los comandos fundamentales para saber qué archivos están dónde y las propiedades de esos archivos.
• ls [opciones] directorio: muestra los archivos en un directorio en particular
Por ejemplo: Si ejecutamos el comando ls con la opción l para mostrar las propiedades de los listados en formato
largo y con el argumento /var para que enumere el contenido del directorio /var …
ls l /var
… pudimos ver lo siguiente;
pi@frambuesapi ~ $ ls l /var
total 102440
drwxrxrx 2 raíz raíz 4096 7 de marzo 06:25 copias de seguridad
drwxrxrx 12 raíz raíz 4096 20 de febrero 08:33 caché
drwxrxrx 43 raíz raíz 4096 20 de febrero 08:33 lib
drwxrwsrx 2 raíz uucp 4096 11 de enero 00:02 local
lrwxrwxrwx 1 raíz raíz 9 15 de febrero 11:23 bloquear > /ejecutar/bloquear
raíz drwxrxrx 11 raíz 4096 7 de julio 06:25 registro
drwxrwsrx 2 raíz correo 4096 15 de febrero 11:23 correo
drwxrxrx 2 raíz raíz 4096 15 de febrero 11:23 opt
lrwxrwxrwx 1 raíz raíz 4 15 de febrero 11:23 ejecutar > /ejecutar
drwxrxrx 4 raíz raíz 4096 15 de febrero 11:26 carrete
rw 1 raíz raíz 104857600 16 de febrero 14:03 intercambiar
drwxrwxrwt 2 raíz raíz 4096 11 de enero 00:02 tmp
drwxrwxrx 2 wwwdatos wwwdatos 4096 20 de febrero 08:21 www
¿Cuál es la información en el formato de lista larga?
• La primera columna brindará información detallada sobre el permiso del
archivo, • La segunda columna le informará sobre la cantidad de enlaces
al archivo, • Las columnas tercera y cuarta están asociadas con el propietario y
el grupo del archivo, • La quinta columna mostrará el tamaño de el
archivo en bytes, • la sexta columna mostrará la hora y fecha reciente en que se modificó el
archivo, • y la última y séptima columna es el nombre real del archivo/directorio/enlace.
Machine Translated by Google
Comandos Linux 73
El comando ls
El comando ls será uno de los primeros comandos que usará alguien que comience con Linux.
Se utiliza para enumerar el contenido de un directorio (por lo tanto, ls = lista). Tiene una gran cantidad de opciones
para mostrar los listados y sus propiedades de diferentes maneras. Los argumentos utilizados normalmente son el
nombre del directorio o archivo del que queremos mostrar el contenido.
De forma predeterminada, el comando ls mostrará el contenido del directorio actual en el que se encuentra el
usuario y solo los nombres de los archivos que ve en el directorio. Entonces, si ejecutamos el comando ls solo
desde el directorio de inicio de los usuarios de pi (donde estaríamos después de iniciar Raspberry Pi), este es el
comando que usaríamos;
ls
… y deberíamos ver lo siguiente;
pi@frambuesapi ~ $ ls
python_games de escritorio
Esto muestra dos directorios (Desktop y python_games) que están en el directorio de inicio de pi, pero no hay
detalles sobre los directorios en sí. Para obtener más información necesitamos incluir algunas opciones.
Opciones
Hay una gran cantidad de opciones disponibles para usar con el comando ls . Para obtener una lista completa,
escriba man ls en la línea de comando. Algunos de los más utilizados son;
• l nos da una lista larga (como se explicó anteriormente)
• a nos muestra TODOS los archivos en el directorio, incluidos los archivos
ocultos • s nos muestra el tamaño de los archivos (en bloques,
no en bytes) • h muestra el tamaño en "formato legible por humanos" (es decir: 4K, 16M, 1G, etc.). (debe usarse en
junto con la opción s). • S ordena
por tamaño de archivo •
t ordena por hora de modificación •
r invierte el orden al ordenar
Una combinación útil de opciones podría ser una lista larga (l) que muestre todos (a) los archivos con el tamaño
de archivo informado en tamaño de bloque legible por humanos (h) (s).
lslátigo
… producirá algo como lo siguiente;
www.dbooks.org
Machine Translated by Google
Comandos Linux 74
pi@raspberrypi ~ $ls lash
total 84k
4.0K drwxrxrx 13 pi pi 4.0K 7 de mayo 11:46 .
4.0K drwxrxrx 3 raíz raíz 4.0K 7 de mayo 10:20 ..
4.0K rwrr 1 pi pi 4.0K rw 69 7 de mayo 11:46 .asoundrc
1 pi pi 4.0K rwrr 1 pi pi 3.2K 7 854 8 de julio 12:55 .bash_history
de mayo 10:20 . bashrc 4.0K drwxrxrx 4 pi pi 4.0K 7 de mayo 11:46 .cache
4.0K drwxrxrx 7 pi pi 4.0K 7 de mayo 11:46 .config 4.0K drwxrxrx 2 pi
pi 4.0 K 7 de mayo 11:46 Desktop 4.0K drwxrxrx 2 pi pi 4.0K 7 de mayo
11:46 .fontconfig 4.0K drwxrxrx 2 pi pi 4.0K 7 de mayo
11:46 .gstreamer0.10 4.0K drwx 3 pi pi 4.0K 7 de mayo 11:46 .local 4.0K
rwrr 1 pi pi 4.0K drwxrwxrx 2 pi pi 4.0K 27 de enero 21:34 python_games 4.0K
drwxrxrx 3 pi pi 4.0K 7 de mayo 11:46 .themes
675 7 de mayo 10:20 .perfil
El tamaño de los archivos informados cuando se utiliza la opción de lectura humana se designa
con las siguientes letras respectivas;
• K = Kilobyte •
M = Megabyte • G
= Gigabyte • T =
Terabyte • P =
Petabyte • E =
Exabyte • Z =
Zettabyte • Y =
Yottabyte
Argumentos
El argumento predeterminado (si no se incluye ninguno) es enumerar el contenido del directorio en el que se encuentra
actualmente el usuario. De lo contrario, podemos especificar el directorio para enumerar. Esto puede parecer una tarea
simple, pero hay algunos trucos que pueden hacer que usar ls sea realmente versátil.
El ejemplo más simple de usar un directorio específico para un argumento es especificar la ubicación con
la dirección completa. Por ejemplo, si quisiéramos listar el contenido del directorio /var (y no importa desde
qué directorio ejecutemos este comando) simplemente escribimos;
ls /var
… producirá lo siguiente;
Machine Translated by Google
Comandos Linux 75
pi@raspberrypi ~ $ ls /var copias
de seguridad caché lib bloqueo local registro correo opt ejecutar spool swap tmp www
También podemos usar algunos de los caracteres de direccionamiento relativos para abreviar nuestra lista.
Podemos enumerar el directorio de inicio usando la tilde (ls ) y el directorio principal usando dos puntos (ls ..).
El asterisco (*) se puede utilizar como comodín para enumerar archivos con nombres similares. Por ejemplo, para listar todos
los archivos png en un directorio podemos usar ls *.png.
Si solo queremos conocer los detalles de un archivo específico, podemos usar su nombre explícitamente. Por
ejemplo, si quisiéramos conocer los detalles del archivo de intercambio en /var, usaríamos el siguiente comando;
ls l /var/intercambiar
… que producirá lo siguiente;
pi@raspberrypi ~ $ ls l /var/swap rw 1
raíz raíz 104857600 7 de mayo 11:29 /var/swap
Ejemplos
Enumere todos los archivos de configuración (.conf) en el directorio /etc ;
ls /etc/*.conf
… que producirá lo siguiente;
pi@raspberrypi ~ $ ls /etc/*.conf /etc/
adduser.conf /etc/ca /etc/host.conf /etc/ntp.conf /etc/
certificates.conf /etc/idmapd.conf /etc/debconf.conf /etc/ pam.conf /etc/
deluser.conf /etc/ /etc/insserv.conf /etc/ resolv.conf /etc/
dhcpcd.conf /etc/ ld.so.conf /etc/ resolvconf.conf
fuse.conf /etc/gai.conf / libaudit.conf /etc/rsyslog.conf /etc/logrotate.conf /
etc/gssapi_mech.conf etc/sysctl.conf /etc/mke2fs.conf
/etc/ts.conf
/etc/nsswitch.conf /etc/ucf.conf
Pruébate
1. Enumere los archivos ordenados por la hora en que se modificaron por última vez en orden inverso (los archivos modificados más
recientemente son los últimos).
www.dbooks.org
Machine Translated by Google
Comandos Linux 76
2. Busque los permisos del archivo /etc/passwd.
3. Enumere todos los archivos en el directorio /etc en formato largo y ordenados por extensión. (tendrá que leer la página de
manual de ls).
4. Enumere los archivos en el directorio /etc de mayor a menor y guárdelo en /tmp/my
archivo files.txt (no es fácil para un principiante y puede requerir un poco de búsqueda en Google).
Machine Translated by Google
Comandos Linux 77
mkdir
El comando mkdir crea directorios. Es uno de los comandos fundamentales de gestión de archivos en Linux.
• directorio mkdir [opciones]: crear un directorio
El comando mkdir se usa para crear directorios o carpetas. Es un comando bastante simple con algunas opciones
de funcionalidad adicional para permitir que se establezcan rutas y permisos al crear.
En su forma más simple, el siguiente comando creará un directorio llamado foobar en el directorio de trabajo actual;
mkdir foobar
Podemos verificar la creación enumerando los archivos usando ls con la opción l de la siguiente manera;
lsl
Que debería mostrar algo como lo siguiente;
pi@frambuesapi ~ $ ls l
total 68
drwxrxrx 2 pi pi 4096 20 de febrero 08:07 Escritorio drwxr
xrx 2 pi pi 4096 16 de agosto 03:47 foobar rwrr 1 pi pi
drwxrwxrx 2 pi pi 4096 5 ago 16 01:27 foo.txt
Ene 27 2015 python_games
Los descriptores de lectura/escritura/ejecución para los permisos de los directorios van precedidos de una d (de
directorio) y en algunos terminales el color del texto que muestra el directorio será diferente al de otros tipos de
archivos (no olvidemos que mientras llamamos directorio a un directorio debido a su función, es realmente un tipo
de archivo).
El comando 'mkdir'
El comando mkdir se usa para crear directorios que se usan como contenedores para archivos y subdirectorios.
Los directorios creados por mkdir se crean automáticamente con dos directorios ocultos, uno que representa el
directorio recién creado (y se muestra como un solo punto (.)) y el otro que representa su directorio principal (y
representado por dos puntos (..)). Estos directorios ocultos se pueden ver usando el comando ls con la opción a
(ls a).
Los directorios se pueden eliminar con los comandos rm y rmdir .
www.dbooks.org
Machine Translated by Google
Comandos Linux 78
Opciones
El comando mkdir tiene una pequeña cantidad de opciones y las dos más probables de usar en cualquier cosa
que se acerque a una base regular serían;
• p crea los directorios principales especificados para un nuevo directorio si aún no existen • m controla
el modo de permiso de los nuevos directorios (de la misma manera que chmod)
Por ejemplo para crear los directorios anidados foo/bar/foobar en el directorio de trabajo actual ejecutaríamos
lo siguiente;
mkdir p foo/bar/foobar
Sin la opción p necesitaríamos crear cada capa por separado.
Para crear un directorio con un conjunto específico de permisos de lectura, escritura y ejecución, podemos usar
la opción m con los mismos argumentos de modo que se usan con el comando chmod . Por ejemplo, el
siguiente comando creará el directorio foobar donde el propietario tiene permisos de lectura y escritura, el grupo
tiene permiso de lectura y otros usuarios no tienen permisos, se usaría lo siguiente;
mkdir m 640 foobar
Si posteriormente comprobamos esos permisos con ls l veremos lo siguiente;
pi@frambuesapi ~ $ ls l
total 68
drwr 2 pi pi 4096 16 de agosto 05:36 foobar
Argumentos
El conjunto normal de opciones de direccionamiento está disponible para que el proceso de creación de los
directorios correctos sea más flexible y extensible.
Pruébate
1. ¿Cómo usaríamos el comando mkdir para crear varios directorios al mismo tiempo?
2. ¿Qué directorios se crean automáticamente al usar mkdir?
Machine Translated by Google
Comandos Linux 79
m.v.
El comando mv se usa para cambiar el nombre y mover archivos o directorios. Es uno de los comandos
básicos de Linux que permite la gestión de archivos desde la línea de comandos.
• mv [opciones] origen destino: Mover y/o renombrar archivos y directorios
Por ejemplo: para renombrar el archivo foo.txt y llamarlo foo2.txt ingresaríamos lo siguiente;
mv foo.txt foo2.txt
Esto supone que estamos en el mismo directorio que el archivo foo.txt, pero incluso si no lo estuviéramos,
podríamos nombrar explícitamente el archivo con la estructura del directorio y, por lo tanto, no solo cambiar el
nombre del archivo, sino moverlo a un lugar diferente;
mv /home/pi/foo.txt /home/pi/stuff/foo2.txt
Para mover el archivo sin cambiarle el nombre, simplemente omitiríamos el nuevo nombre en el destino como
entonces;
mv /home/pi/foo.txt /home/pi/cosas/
El comando mv
El comando mv se usa para mover o renombrar archivos y directorios (mv es una forma abreviada de la palabra
mover). Este es un comando similar al comando cp (copiar), pero no crea un duplicado de los archivos sobre
los que está actuando.
Si queremos mover varios archivos, podemos ponerlos en la misma línea separados por espacios.
El conjunto normal de comodines y opciones de direccionamiento están disponibles para que el proceso sea
más flexible y extensible.
Opciones
Si bien hay algunas opciones disponibles para el comando mv , las más utilizadas serían u e i.
• u Esto actualiza los archivos movidos moviendo solo el archivo cuando el archivo de origen es más
nuevo que el archivo de destino o cuando el archivo de destino no
existe. • i Inicia un modo interactivo en el que se nos pide confirmación siempre que el movimiento
sobrescriba un objetivo existente.
www.dbooks.org
Machine Translated by Google
Comandos Linux 80
Ejemplos
Para mover todos los archivos del directorio 1 al directorio 2 (el directorio 2 debe existir inicialmente);
mv directorio1/* directorio2/
Para cambiar el nombre de un directorio de directorio1 a directorio2 (el directorio2 no debe existir aún);
mv directorio1/directorio2/
Para mover los archivos foo.txt y bar.txt al directorio foobar;
mv foo.txt bar.txt foobar/
Para mover todos los archivos 'txt' del directorio de inicio de los usuarios a un directorio llamado copia de seguridad , pero
solo si el archivo que se está moviendo es más nuevo que el archivo de destino;
mv u ~/*.txt copia de seguridad/
Pruébate
1. ¿Cómo podemos mover un archivo a una nueva ubicación cuando ese acto podría sobrescribir uno ya
archivo existente?
2. ¿Qué caracteres no se pueden usar al nombrar directorios o archivos?
Machine Translated by Google
Comandos Linux 81
personas con discapacidad
El comando pwd nos permite determinar en qué directorio nos encontramos actualmente. La flexibilidad de
trabajar en Linux significa que a menudo no queda claro exactamente en qué directorio estamos trabajando.
Como resultado, el comando pwd se convierte en una forma sencilla de confirmar el funcionamiento actual .
directorio que ayuda a garantizar que estamos operando en los archivos correctos.
• pwd : imprime el directorio de trabajo actual
El comando pwd es relativamente único en el sentido de que generalmente se ejecuta solo sin opciones ni
argumentos;
personas con discapacidad
imprimirá el directorio de trabajo actual en la línea de comando;
/inicio/pi
Es un comando simple para hacer una función simple (pero útil).
El comando pwd
El comando pwd es la abreviatura de imprimir directorio de trabajo . y hace precisamente eso. A menudo se
toma como la abreviatura del directorio de trabajo actual y, si bien es una descripción igualmente buena, el
nombre deriva del mundo de Unix, donde la salida de la computadora era comúnmente en papel.
La simplicidad del comando refleja la filosofía Unix de pequeños comandos especializados que son modulares.
Es un testimonio de la veracidad de la afirmación de que pwd sigue siendo uno de los comandos más simples
y útiles.
Si bien tiene un par de opciones, rara vez se usan, si es que se usan alguna vez, y el comando se sostiene
por sí solo de forma aislada.
Pruébate
1. ¿Qué directorio informará pwd si ejecuta el comando cd ?
www.dbooks.org
Machine Translated by Google
Comandos Linux 82
rm
El comando rm se usa para eliminar archivos o directorios. Este es un comando básico de administración de
archivos de Linux que todos los usuarios de Linux deben entender.
• rm [opciones] archivo: Eliminar archivos o directorios
Por ejemplo, si queremos eliminar el archivo foo.txt , usaríamos el comando de la siguiente manera;
rm foo.txt
El comando rm
El comando rm se usa para eliminar (por lo tanto, rm = eliminar) archivos. Cualquier acto que involucre la
eliminación de archivos debe tratarse con cierto grado de precaución y el comando rm cae en la categoría de 'tratar
con precaución'. Esto es especialmente cierto si se usan comodines o direccionamiento relativo complejo.
No eliminará los directorios de forma predeterminada, aunque se puede indicar que lo haga a través de la opción
r (que se explica más adelante). El comando devolverá un mensaje de error si un archivo no existe o si el usuario
no tiene los permisos adecuados para eliminarlo. Los archivos que se encuentran en directorios protegidos contra
escritura no se pueden eliminar, incluso si esos archivos no están protegidos contra escritura (están protegidos por
el directorio).
Si un archivo a eliminar es un enlace simbólico, el enlace se eliminará, pero el archivo o directorio al que hace
referencia ese enlace no se eliminará.
Lo crea o no, a veces es posible recuperar el contenido de un archivo que ha sido
eliminado usando rm. Si nuestro objetivo al eliminar el archivo es asegurarnos de que
no se pueda recuperar (presumiblemente por razones de seguridad), se debe usar
otra opción. El comando triturar sería un comienzo, explore sus opciones en este caso
según el nivel de seguridad que necesite.
Opciones
Hay una pequeña cantidad de opciones disponibles para usar con rm. Lo siguiente seria lo mas
común;
• r nos permite eliminar directorios y su contenido de forma recursiva • f nos
permite forzar la eliminación de archivos independientemente del estado de protección contra
escritura • i le dice al rm commend que nos solicite de forma interactiva la confirmación de cada eliminación
Entonces, lo siguiente eliminará el directorio foobar y todo su contenido;
Machine Translated by Google
Comandos Linux 83
rm r foobar/
Para eliminar todos los archivos txt en el directorio actual independientemente de su estado de protección contra escritura
(y sin pedirnos que nos digan que está sucediendo);
rm f *.txt
En serio. ¡Tenga en cuenta lo que está haciendo si usa las opciones r o f y
tenga el doble de cuidado si las usa juntas!
Para adoptar un enfoque cuidadoso y tener un aviso para la eliminación de cada archivo, podemos usar la opción i . El
siguiente ejemplo buscará cada archivo txt y nos preguntará si queremos eliminarlo;
rm i *.txt
La salida se parecerá a lo siguiente;
pi@raspberrypi ~ $ rm i *.txt rm:
¿eliminar el archivo normal ̀bar.txt'? y rm:
eliminar el archivo normal ̀foo.txt'? y
No podemos usar las opciones f y i simultáneamente. Cualquiera que haya sido el último en el comando tiene efecto.
El comando rm admite el parámetro (dos guiones consecutivos) que actúa como un delimitador que indica el final de
cualquier opción. Esto se usa cuando el nombre de un archivo o directorio comienza con un guión. Por ejemplo, lo
siguiente elimina un directorio llamado directory1;
rm r directorio1
Argumentos
El conjunto normal de comodines y opciones de direccionamiento están disponibles para que el proceso de encontrar los
archivos correctos sea más flexible y extensible.
Para eliminar más de un archivo simplemente podemos separarlos con un espacio de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 84
rm archivo1 archivo2 archivo3
Pruébate
1. ¿La opción f eliminará con éxito un archivo protegido contra escritura en un directorio protegido contra escritura?
Justifica tu respuesta.
2. ¿Cuáles son las implicaciones de ejecutar el siguiente comando?
rm si *.png
Machine Translated by Google
Comandos Linux 85
rmdir
El comando rmdir se usa para eliminar directorios vacíos. Este es un comando básico de administración de archivos
de Linux que todos los usuarios de Linux deben entender.
• directorio rmdir [opciones]: eliminar directorios vacíos
Por ejemplo, si queremos eliminar el directorio foobar , usaríamos el comando de la siguiente manera;
rmdir foobar
El comando rmdir
El comando rmdir se usa para eliminar directorios vacíos (por lo tanto, rmdir = eliminar directorio). Puede parecer
algo inusual poder eliminar solo directorios vacíos, pero esto actúa como una medida de seguridad que se puede
usar para evitar la pérdida involuntaria de archivos que podría resultar al intentar eliminar un directorio cuando no
estaba vacío.
No existe una opción equivalente a rm que permita la eliminación recursiva de directorios, pero existe una variación
que permitirá la eliminación de directorios principales si se vacían posteriormente (más adelante).
En Linux, los directorios no son contenedores de archivos reales. En cambio, son archivos que tienen la apariencia
de contener archivos porque almacenan un conjunto de estructuras de datos que describen archivos y subdirectorios
que están asignados al 'directorio'. Por lo tanto, eliminar un directorio tiene el potencial de perder una gran cantidad
de datos y la restricción de solo eliminar directorios vacíos es comprensible.
Opciones
La única opción potencialmente común utilizada con el comando rmdir es la opción p que elimina los directorios
especificados explícitamente si se vacían. Por ejemplo, el siguiente comando eliminará el directorio 3, luego el
directorio 2 y luego el directorio 1 , ya que cada eliminación deja su padre vacío;
rmdir p directorio1/directorio2/directorio3/
Argumentos
El conjunto normal de comodines y opciones de direccionamiento están disponibles para hacer que el proceso de
encontrar los directorios correctos sea más flexible y extensible.
Para eliminar más de un directorio, simplemente podemos separarlos con un espacio de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 86
rmdir directorio1 directorio2 directorio3
Pruébate
1. ¿Qué comando se puede usar para eliminar un directorio que contiene archivos?
2. ¿Por qué el comando rmdir no permite eliminar directorios con contenido?
Machine Translated by Google
Comandos Linux 87
alquitrán
El comando tar está diseñado para facilitar la creación de un archivo de archivos al combinar una variedad de archivos y
directorios en un solo archivo y brindar la capacidad de extraer estos archivos nuevamente. Si bien tar no incluye la
compresión como parte de su función básica, está disponible a través de una opción. tar es un programa útil para archivar
datos y, como tal, forma un comando importante para el buen mantenimiento de archivos y sistemas.
• tar [opciones] nombre de archivo [archivo(s)]: archivar o extraer archivos
tar es conocido como un comando que tiene una plétora de opciones y flexibilidad. Tanto es así que puede parecer un poco
arcano y (me atrevo a decirlo) 'demasiado flexible'. Esto ha sido bien ilustrado en el excelente trabajo de dibujos animados
de la tira cómica xkcd¹ (¡Compra sus cosas² , es increíble!).
Sudo cortesía xkcd
Sin embargo, el hecho de que tenga muchas opciones no significa que deba ser difícil de usar para un conjunto estándar
de tareas y, en su forma más básica, es la creación de un archivo de archivos de la siguiente manera;
tar cvf foobar.tar foo.txt bar.txt
Aquí estamos creando un archivo en un archivo llamado foobar.tar de los archivos foo.txt y bar.txt.
Las opciones utilizadas nos permiten;
• c : crea un archivo nuevo • v :
enumera detalladamente los archivos que se procesan. •
f : especifique el siguiente nombre como el nombre del archivo comprimido
La salida del comando es el eco de los archivos que se colocan en el archivo;
¹ https://xkcd.com/149/
² http://store.xkcd.com/
www.dbooks.org
Machine Translated by Google
Comandos Linux 88
foo.txt
barra.txt
El resultado adicional es la creación del archivo que contiene nuestro archivo foobar.tar.
Para llevar el ejemplo a su conclusión lógica, nos gustaría extraer los archivos del archivo de la siguiente manera;
tar xvf foobar.tar
Las opciones utilizadas nos permiten;
• x : extrae un archivo • v :
enumera detalladamente los archivos que se procesan.
• f : especifique el siguiente nombre como el nombre del archivo comprimido
La salida del comando es el eco de los archivos que se extraen del archivo;
foo.txt
barra.txt
El comando alquitrán
tape archive, o tar para abreviar, es un comando para convertir archivos y directorios en un solo archivo de datos. Si bien
originalmente se escribió para leer y escribir desde dispositivos secuenciales como unidades de cinta, en la actualidad se
usa más comúnmente como una herramienta de archivo de archivos. En este sentido, puede considerarse similar a
herramientas de archivo como WinZip o 7zip. El archivo resultante creado como resultado del uso del comando tar se
denomina comúnmente 'tarball'.
Tenga en cuenta que tar no proporciona ninguna compresión, por lo que para reducir el tamaño de un tarball necesitamos
usar una utilidad de compresión externa como gzip. Si bien este es el más común, se puede usar cualquier otro tipo de
compresión. Estos modificadores son el equivalente a canalizar el archivo creado a través de gzip.
Una ventaja de usar tar sobre otras herramientas de archivado, como zip, es que tar está diseñado para preservar las
características del sistema de archivos de Unix, como permisos de usuarios y grupos, fechas de acceso y modificación, y
estructuras de directorios.
Otra ventaja de usar tar para archivos comprimidos es el hecho de que cualquier compresión se aplica al tarball en su
totalidad, en lugar de archivos individuales dentro del archivo, como es el caso de los archivos zip. Esto permite una
compresión más eficiente ya que el proceso puede aprovechar la redundancia de datos en varios archivos.
Machine Translated by Google
Comandos Linux 89
Opciones
• c : crea un nuevo archivo tar. •
x : extrae un archivo tar. • f :
Trabajar en un archivo.
• z : utilice la compresión o descompresión Gzip al crear o extraer. • t : muestra el
contenido de un archivo tar.
Si bien ya hemos visto c, x, v y f en acción en los ejemplos anteriores, vale la pena
señalar que es necesario que la opción f sea la opción final en la secuencia de
opciones; de lo contrario, el comando no podrá especificar el nombre del archivo
comprimido y puede usar la siguiente opción en la secuencia como nombre.
El programa tar no comprime los archivos, pero puede incorporar la compresión gzip a través de la opción z
de la siguiente manera;
tar cvzf foobar.tar foo.txt bar.txt
Si queremos encender el contenido de un tarball sin desarchivarlo, podemos usar la opción t de la siguiente
manera;
tar tf foobar.tar
Cuando se usa tar para distribuir archivos a otros, se considera una buena etiqueta hacer que el tarball se
extraiga en un directorio con el mismo nombre que el propio archivo tar. Esto evita que el destinatario tenga
un lío de archivos en sus manos cuando extrae el archivo. Piense en ello de la misma manera que le da a
sus amigos un juego de libros. Prefieren que les entregues una caja que tirar una pila de libros sueltos en el
suelo.
Por ejemplo, si desea distribuir los archivos en el directorio foodir , crearíamos un tarball desde el directorio
que contiene estos archivos, en lugar de los archivos en sí:
tar cf foodir.tar foodir
Recuerde que tar funciona recursivamente de forma predeterminada, por lo que no es necesario que especifiquemos todos los archivos
debajo de este directorio nosotros mismos.
Pruébate
1. ¿Necesita incluir la opción z al descomprimir un archivo tar ?
2. Ingrese un comando tar válido en el primer intento. Sin googlear. Tienes 10 segundos.
www.dbooks.org
Machine Translated by Google
Comandos Linux 90
Acceso al contenido del archivo
gato
El comando cat es un comando realmente versátil que normalmente se usa para llevar a cabo tres funciones
diferentes. Puede mostrar un archivo en la pantalla, combinar diferentes archivos (concatenarlos ) o crear nuevos
archivos. Este es otro comando central que es inmensamente útil para aprender cuando se trabaja con Linux desde
la línea de comandos. Es simple, flexible y versátil.
• cat [opciones] nombre de archivo nombre de archivo: Muestra, combina o crea nuevos archivos.
Por ejemplo: Para mostrar el archivo foo.txt en la pantalla usaríamos;
comida de gato.txt
Para mostrar los archivos foo.txt y bar.txt en la pantalla uno tras otro usaríamos;
gato foo.txt bar.txt
O para combinar los archivos foo.txt y bar.txt en un nuevo archivo llamado foobar.txt usando el símbolo de
redirección >;
gato foo.txt bar.txt > foobar.txt
El comando del gato
El comando cat es una herramienta vital para usar en la línea de comandos de Linux porque, en última instancia,
Linux es un sistema operativo controlado por archivos. Sin una interfaz gráfica de usuario, debe haber un mecanismo
mediante el cual la creación y manipulación de archivos de texto se pueda lograr fácilmente. El comando cat es uno
de los comandos que hace esto posible. El nombre 'gato' es la abreviatura de 'catenar' o 'concatenar' (cualquiera
de los dos parece ser aceptable, pero 'concatenar' parece ser más utilizado), es decir, para conectar cosas en una
serie. Este es ciertamente uno de sus usos comunes, pero una mejor descripción general sería decir que el
comando cat está acostumbrado a;
• Mostrar archivos de texto en la línea de
comando • Unir un archivo de texto al final de otro archivo de texto,
combinándolos • Copiar archivos de texto en un nuevo documento
Machine Translated by Google
Comandos Linux 91
Opciones
La única opción que tiene algún grado de uso con cat es la opción n que numera las líneas de salida.
Argumentos y Ejemplos
Para mostrar texto
Por ejemplo, para mostrar un archivo de texto (foo.txt) en la pantalla podemos usar el siguiente comando;
comida de gato.txt
La salida sería;
pi@raspberrypi ~ $ gato foo.txt
Esta línea es el contenido de foo.txt
Como podemos ver, el contenido del archivo 'foo.txt' se envía a la pantalla (tenga cuidado, si el archivo es lo
suficientemente grande, simplemente volcará el contenido en una larga cascada de texto).
Para unir más de un archivo
Podríamos mostrar fácilmente dos archivos uno tras otro (concatenados) de la siguiente manera;
gato foo.txt bar.txt
La salida sería;
pi@raspberrypi ~ $ cat foo.txt bar.txt Esta línea es
el contenido de foo.txt
Esta línea es el contenido de bar.txt
Para crear un nuevo archivo
En lugar de enviar el archivo a la pantalla, podemos especificar que cat envíe nuestro archivo a un archivo nuevo
(renombrado) de la siguiente manera;
gato foo.txt > nuevofoo.txt
www.dbooks.org
Machine Translated by Google
Comandos Linux 92
Esto podría pensarse en un equivalente a una acción de copia de archivo y utiliza el símbolo de redirección >.
>> y > se denominan símbolos de adición. Se utilizan para agregar la salida a un archivo y no a la pantalla. > eliminará un
archivo si ya existe y creará un nuevo archivo, por lo que, por seguridad, es recomendable usar >> siempre que sea posible
para escribir la salida en un archivo nuevo sin sobrescribir o eliminar un archivo existente.
Llevando el proceso un paso más allá, podemos tomar nuestros dos archivos originales y combinarlos en un solo
archivo con;
gato foo.txt bar.txt > foobar.txt
Luego podemos verificar los resultados de nuestra combinación usando cat en el nuevo archivo de la siguiente manera;
gato foobar.txt
Y la salida sería;
pi@raspberrypi ~ $ gato foobar.txt
Esta línea es el contenido de foo.txt
Esta línea es el contenido de bar.txt
Entonces podríamos usar cat para agregar un archivo a un archivo ya existente usando el operador de redirección
>>;
gato nuevofoo.txt >> foobar.txt
Aquí usamos el operador de redirección >> para agregar el contenido del archivo newfoo.txt al archivo ya existente
foobar.txt.
El contenido del archivo resultante sería;
pi@raspberrypi ~ $ gato foobar.txt
Esta línea es el contenido de foo.txt
Esta línea es el contenido de bar.txt
Y esto es newfoo.txt
Finalmente, podemos usar cat para crear un archivo desde cero. En este escenario, si usamos cat sin un archivo
fuente y redirigimos a un archivo nuevo (aquí llamado newfile.txt). Tomará la entrada de la línea de comando para
agregar al archivo hasta que se presione CONTROLd.
Machine Translated by Google
Comandos Linux 93
gato >> nuevoarchivo.txt
solo sigue escribiendo
e ingresando información hasta...
¡presionamos ctrld para terminar y el archivo se escribe!
El contenido del archivo resultante sería;
pi@raspberrypi ~ $ cat newfile.txt
Simplemente siga
escribiendo e ingresando información hasta
que... presionemos ctrld para terminar y el archivo se escriba.
Pruébate
1. ¿Cuál es el redirector más seguro de usar?
2. Cree un nuevo archivo usando cat e ingrese algunas líneas de texto para darle algo de contenido.
3. Copie ese archivo usando cat a un nuevo archivo.
4. Combine el archivo original y la copia en un nuevo archivo.
5. Muestre ese nuevo archivo en la pantalla.
www.dbooks.org
Machine Translated by Google
Comandos Linux 94
cortar
El comando de corte se usa para 'cortar' secciones de cada línea de un archivo o archivos. Puede realizar el corte en
función del byte, el carácter o la posición del campo en una fila. Cuando se usa la posición del campo, el separador
predeterminado es una pestaña, pero esto se puede especificar como una alternativa usando las opciones. Este comando
nos permitirá filtrar archivos de texto fácilmente en situaciones donde las alternativas serían la edición manual.
• cortar [opciones] archivo: 'cortar' secciones de cada línea de un archivo o archivos.
Por ejemplo, supongamos que tenemos un archivo llamado cutme.txt con los siguientes contenidos;
Es importante tener en cuenta que cada línea tiene cada palabra separada por un carácter de tabulación, no por un
espacio o espacios.
Usando el comando de corte de la siguiente manera, podemos cortar el tercer campo de cada línea donde un campo es
cualquier número de caracteres entre delimitadores;
cortar f 3 cortarme.txt
… y los resultados son los siguientes;
tres
tres
toru
En el comando anterior, hemos utilizado la opción f que especifica qué 'campo' numérico se debe cortar entre los
delimitadores de tabulación (predeterminados).
El comando de corte
El comando de corte no es de uso diario, pero cuando se trata de la manipulación de información en un archivo o incluso
un flujo de datos de entrada de STDIN, puede ser invaluable. Es uno de los comandos que se pueden usar para filtrar
información de manera eficiente.
Su utilidad se demuestra por la capacidad de 'cortar' información basada en un esquema flexible para especificar una
posición, carácter(es) o campos para cortar y la capacidad de especificar los delimitadores que se utilizarán para
Usando nuestro archivo de muestra cutme.txt de arriba, podemos especificar cortar los campos del 2 al 4 de la siguiente
manera;
Machine Translated by Google
Comandos Linux 95
cortar f 24 cortarme.txt
… y los resultados son los siguientes;
dos tres cuatro
dos tres cuatro
rua toru que
Recordando que el comando ha asumido el uso de tabuladores como delimitador por defecto.
Opciones
Hay algunas opciones diferentes de uso, pero las más utilizadas son las siguientes:
• c corte basado en el número de caracteres
• b corta según el número de bytes • f corta
según el número de campos que se delimitan • d usa un carácter específico
como delimitador
Cortar cada línea en función de la posición del carácter o del byte puede considerarse casi lo mismo y, para la mayoría
de los propósitos, puede considerarse así. La diferencia es que, en la mayoría de los casos, un carácter tiene una longitud
de un solo byte, pero para algunos juegos de caracteres internacionales, los caracteres requieren más de un byte para
codificarlos. Entonces, aunque en la gran mayoría de los casos, se puede considerar que el uso de c o b tiene el mismo
resultado, siempre tenga en cuenta la diferencia entre los dos y use la opción que mejor se adapte a la tarea.
Para nuestro próximo conjunto de ejemplos, supongamos que tenemos un archivo llamado cutme2.txt con los siguientes
contenidos;
uno dos tres CUATRO CINCO
uno:dos:tres:cuatro:cinco
tahi:rua:toru:wha:rima
Obviamente, en este archivo de ejemplo, hemos reemplazado las pestañas con dos puntos (:) que se pueden usar como
delimitadores.
Usando la opción c para cortar el carácter, podríamos seleccionar el rango de caracteres del segundo al sexto de la
siguiente manera;
cortar c 26 cortarme2.txt
… que produciría una salida de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 96
ne: tw
no: hacer
hola:r
Podemos incluir más de una sección de una fila para recortar separando las secciones con una coma. Por ejemplo, si
quisiéramos seleccionar el rango de caracteres del segundo al sexto y del octavo al décimo (omitiendo el noveno)
podríamos hacerlo de la siguiente manera;
cortar c 26,89 cortarme2.txt
… que produciría una salida de la siguiente manera;
peso neto
no: hacer: t
ahi:ra:
Además, podemos usar el comando para cortar cada carácter desde una posición específica hasta el final de la fila
omitiendo el número 'a'. Por ejemplo, podríamos seleccionar el rango de caracteres desde el segundo carácter hasta el
final de la fila de la siguiente manera;
cortar c 2 cortarme2.txt
… o podríamos cortar todos los caracteres desde el comienzo de la fila hasta el segundo carácter de la siguiente manera;
cortar c 2 cortarme2.txt
Para establecer un delimitador que no sea la pestaña predeterminada, usamos la opción d . El siguiente ejemplo recorta
el segundo campo utilizando dos puntos como delimitador;
cortar f 2 d : cortarme2.txt
La salida aparecerá de la siguiente manera;
Machine Translated by Google
Comandos Linux 97
dos
dos
rua
El delimitador en el comando se puede encapsular con comillas o marcas de voz según la
siguiente lista de comandos equivalentes, pero el delimitador solo puede ser un solo carácter;
cortar f 2 d : cortarme2.txt
cortar f 2 d ':' cortarme2.txt
cortar f 2 d ":" cortarme2.txt
Pruébate
1. Muestre dos formas diferentes de usar el comando de corte que cortará cada carácter
desde el comienzo de una fila hasta el cuarto carácter y desde el sexto carácter hasta el
final de la fila.
www.dbooks.org
Machine Translated by Google
Comandos Linux 98
diferencia
El comando diff se usa para comparar dos archivos o directorios e informar cuáles son las diferencias entre
ellos. Es una situación común encontrarnos preguntándonos cuál es la diferencia entre dos archivos o
directorios casi idénticos y este comando determinará esas diferencias.
• diff [opciones] de archivo a archivo: muestra las diferencias entre dos archivos
Por ejemplo, supongamos que tenemos dos directorios, 'dir1' y 'dir2'. Cada uno de estos directorios contiene
tres archivos. 'dir1' contiene 'file_a.txt', 'file_b.txt' y 'file_c.txt'. 'dir2' contiene 'file_a.txt', 'file_b.txt' y 'file_d.txt'.
Para este ejemplo simple, podemos ver que la diferencia entre los dos directorios es que solo 'dir1' contiene
'file_c.txt' y solo dir2 contiene 'file_d.txt'. Podemos ilustrar esto un poco mejor de la siguiente manera;
│ ├──
dir1 │ ├── archivo_a.txt
│ ├── archivo_b.txt │
└──
archivo_c.txt └── dir2
├──
archivo_a.txt ├──
archivo_b.txt
└── archivo_d.t xt
Usando el comando diff de la siguiente manera, podemos comparar los directorios 'dir1' y 'dir2';
diferencia q dir1 dir2
… y los resultados son los siguientes;
pi@raspberrypi ~ $ diff q dir1 dir2 Los archivos dir1/
file_a.txt y dir2/file_a.txt difieren
Los archivos dir1/file_b.txt y dir2/file_b.txt difieren Solo en dir1: file_c.txt
Solo en dir2: file_d.txt
El informe en este caso está en una forma bastante razonable, descriptiva y legible por humanos. Nos dice que
no solo hay archivos diferentes en cada directorio, sino que donde hay archivos con el mismo nombre, nos
avisa que son diferentes entre sí.
En el comando anterior, usamos la opción q que omite las diferencias individuales entre los archivos que tienen
el mismo nombre, pero diferentes contenidos (de lo contrario, los resultados del comando pueden haber sido
bastante confusos).
Machine Translated by Google
Comandos Linux 99
El comando diferencial
Llegan momentos en nuestra vida informática en los que hemos realizado cambios en archivos o directorios y en el proceso de
mover cosas o instalar diferentes componentes perdemos la noción de los cambios que hemos realizado. Esto puede ocurrir en
la programación, la administración del sistema, la instalación de aplicaciones o la gestión de usuarios, pero sea cual sea la
causa, nos vemos en la necesidad de comparar dos cosas, ya sean archivos o directorios, para intentar ver cuáles son las
diferencias entre ellas. Aquí es donde entra el comando diff .
Comparar dos objetos complejos desde la línea de comandos puede resultar difícil. Si hay diferencias sustanciales, entonces
usar una interfaz de texto sin formato para obtener un buen contexto para los cambios podría ser un desafío. Sin embargo, si los
cambios que se buscan son pequeños o necesitamos realizar muchas comparaciones, entonces poder comparar archivos en la
línea de comandos es un método rápido una vez que nos acostumbramos.
En su forma más pura, diff analiza dos archivos e imprime las líneas que son diferentes. Podemos pensar en la salida a la pantalla
como una dirección sobre cómo hacer los cambios para que una cosa sea idéntica a la otra.
En el caso más simple, diff compara el contenido de los dos archivos fromfile y tofile.
Si tanto el archivo de origen como el archivo de destino son directorios, diff compara los archivos correspondientes en ambos
directorios, en orden alfabético. Esta comparación no es recursiva a menos que se dé la opción r .
Como ejemplo de una comparación de archivos, podemos considerar los dos archivos 'file_a.txt' y 'file_b.txt' como se muestra a
continuación;
file_a.txt file_b.txt
El Raspberry Pi es una máquina poderosa La Raspberry Pi es una máquina maravillosa
Leanpub tiene una gran variedad de Leanpub tiene una gran variedad de
libros d3.js es increíble para la libros d3.js es increíble para la
visualización Linux es una maravilla de colaboración visualización Linux es una maravilla de colaboración
Las diferencias entre los archivos se encuentran en la primera línea, donde describimos la Raspberry Pi como una máquina
poderosa o maravillosa.
Luego podemos ejecutar el comando diff en esos dos archivos como en el ejemplo a continuación;
diferencia archivo_a.txt archivo_b.txt
Esto producirá una salida de la siguiente manera;
pi@raspberrypi ~/dir1 $ diferencia archivo_a.txt archivo_b.txt
1c1
< La Raspberry Pi es una máquina poderosa
> La Raspberry Pi es una máquina maravillosa
La primera línea de la salida que dice 1c1 nos dice que la línea 1 ('1c1') del archivo from necesita
www.dbooks.org
Machine Translated by Google
Comandos Linux 100
cambiarse para que coincida con la línea 1 ('1c1') del archivo to. Si cualquiera de los archivos tuviera un rango de líneas,
se designarían como algo así como 2,4 , lo que indicaría que las líneas afectadas fueron de 2 a 4.
La salida restante son las diferentes líneas. Para mostrar qué líneas provienen de qué archivo, cada una tiene como
prefijo un símbolo de mayor que (<) para mostrar que la línea es del archivo de origen o un signo de menor que (>) para
mostrar que la línea es de el aarchivo. Los guiones entre líneas () simplemente están ahí para separar las líneas de
los diferentes archivos.
Opciones
Hay muchas opciones diferentes para su uso, pero las más utilizadas son las siguientes;
• q Informe solo cuando los archivos difieren, no las diferencias reales (según el primer ejemplo) •
c Formatea la salida con más contexto • i ignora las
diferencias en caso de que • r compare
recursivamente los subdirectorios.
Debido a que el proceso de comparar las diferencias en archivos y directorios es algo difícil de hacer de una manera
simple con texto, existe una opción alternativa para proporcionar un grado adicional de contexto. Esta es la opción c .
Si usamos esta opción en los mismos dos archivos que probamos anteriormente (diff c archivo_a.txt archivo_ b.txt)
veremos algo similar a esto;
pi@raspberrypi ~/dir1 $ diferencia c archivo_a.txt archivo_b.txt ***
archivo_a.txt 20150918 21:10:27.608873625 +0000 archivo_b.txt
20150918 21:29:26.269130682 +0000
***************
*** 1,4 **** !
Raspberry Pi es una máquina poderosa Leanpub
tiene una gran variedad de libros d3.js es
increíble para la visualización
Linux es una maravilla de colaboración
\ Sin nueva línea al final del archivo
1,4 !
Raspberry Pi es una máquina maravillosa Leanpub
tiene una gran variedad de libros d3.js es
increíble para la visualización
Linux es una maravilla de colaboración
\ Sin nueva línea al final del archivo
Las primeras dos líneas de salida nos brindan algunos detalles de fecha/hora de modificación sobre nuestro archivo de
origen (precedido por tres asteriscos (***)) y nuestro archivo de destino (precedido por tres guiones ().
Luego hay un separador compuesto por una fila de asteriscos antes de una línea con los números 1,4 entre algunos
asteriscos. Esto nos dice que las siguientes líneas son una lista de las líneas 1 a 4 del archivo de origen. Asimismo, la
siguiente sección con el número 1,4 entre guiones nos dice que las siguientes líneas son un listado de las líneas 1 a 4
del archivo to.
Machine Translated by Google
Comandos Linux 101
Pruébate
1. Clasifique la facilidad de comprensión de la salida al ejecutar el comando diff usando el
método predeterminado sin opciones, la opción c y q.
www.dbooks.org
Machine Translated by Google
Comandos Linux 102
grep
El comando grep se usa para buscar texto de archivos o entradas canalizadas para líneas que contengan
una coincidencia con un patrón dado. Es uno de los comandos más potentes y versátiles de Linux y el
dominio del comando grep es sinónimo de una buena comprensión de la interfaz de línea de comandos.
• grep [opciones] patrón [archivo]: buscar texto y combinar patrones
Por ejemplo, el siguiente comando buscará el texto “cpus” en el archivo /var/log/dmesg;
grep cpus /var/log/dmesg
El resultado del comando será similar al siguiente;
pi@raspberrypi ~ $ grep cpus /var/log/dmesg [ 0.000000]
[bcm2709_smp_init_cpus] ingrese (8620>f3003010) [ 0.000000]
[bcm2709_smp_init_cpus] ncores=4 [ 0.053615]
[bcm2709_smp_pre pare_cpus] entrar
Cabe señalar que cada una de las líneas anteriores presenta el texto "cpus".
El comando grep
El comando grep se usa para buscar pruebas en archivos o entradas canalizadas para líneas que contengan una
coincidencia con un patrón dado. Cuando encuentra una coincidencia, copia la línea en la que se encuentra la
coincidencia en la salida estándar (de forma predeterminada), o cualquier otro tipo de salida que haya solicitado con
opciones. El patrón puede ser un solo carácter, un grupo de caracteres, una sola palabra o una oración.
El nombre grep deriva del comando utilizado con el editor de texto de Unix/Linux 'ed' para realizar una
función de búsqueda similar. El comando toma la forma g/re/p, lo que significa buscar globalmente
coincidencias con la expresión regular (es decir, re) e imprimir las líneas que se encuentran en la pantalla.
Aunque grep anticipa la coincidencia en el texto, puede coincidir con caracteres arbitrarios en una línea. Su
única limitación en la cantidad de información que puede buscar es la memoria disponible.
Expresiones regulares
La parte de grep es un indicador del uso de expresiones regulares para hacer coincidir patrones durante la
búsqueda. Esto significa que, además de poder buscar patrones literales (como nuestro texto de CPU del
ejemplo inicial), podemos usar un esquema que permite una gran flexibilidad en las coincidencias devueltas.
Por ejemplo, si quisiéramos buscar ocurrencias del texto 'CPU' donde podría haber un número del 0 al 3
después, podríamos usar el siguiente comando
Machine Translated by Google
Comandos Linux 103
grep CPU[03] /var/log/dmesg
… lo que resultará en;
pi@raspberrypi ~ $ grep CPU[03] /var/log/dmesg [0.053503]
CPU0: actualizar cpu_capacity 1024 [0.053577] CPU0:
subproceso 1, cpu 0, socket 15, mpidr 80000f00 [0.113791] CPU1: Booted
secundario procesador [ 0.113851] CPU1: actualizar
cpu_capacity 1024 [ 0.113860] CPU1: hilo 1, cpu 1, socket
15, mpidr 80000f01 [ 0.133710] CPU2: Procesador secundario arrancado [ 0.133746]
CPU2: actualizar cpu_capacity 1024 [ 0.133755] CPU2 : hilo
1 , cpu 2, socket 15, mpidr 80000f02 [ 0.153750] CPU3:
Procesador secundario arrancado [ 0.153788] CPU3: actualizar cpu_capacity 1024
[ 0.153797] CPU3: subproceso 1, cpu 3, socket 15, mpidr
80000f03
Aquí , grep ha usado los caracteres de texto 'CPU' como 'literales' que deberían aparecer exactamente como se indica y los corchetes
denotan una expresión regular que permitiría cualquier número en el rango
0 a 3.
Tubería
Debido a que el comando grep puede actuar como un filtro, se emplea comúnmente como un mecanismo para aceptar una entrada
de un comando y generar una salida que ha sido alterada por ese filtro. Esa conexión de mando se realiza mediante tuberías que se
designan con el | personaje.
Como sugiere el nombre, podemos pensar en la función de tubería como una representación de comandos vinculados por una tubería
donde el comando ejecuta una función que se genera en una tubería para fluir hacia el segundo comando y hacia la salida final
eventual.
Para demostrar con un ejemplo, podemos considerar un conjunto de comandos vinculados de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 104
Ejemplo de tubería
Aquí tenemos el comando ls que enumera los contenidos del directorio /var/log con los listados ordenados por
tiempo. Esto luego se alimenta al comando principal que solo mostrará las primeras 10 de esas líneas. Luego
ingresamos esas 10 líneas en un comando grep que filtra el resultado para mostrar solo aquellas líneas que tienen
la palabra 'raíz' en ellas.
El comando como se ejecutaría desde la línea de comando sería el siguiente;
ls lt /var/registro | cabeza | raíz de grep
… y el resultado sería algo como lo siguiente;
pi@raspberrypi ~ $ls lt /var/log | cabeza | grep root rwr 1 root adm
133637 13 de septiembre 04:01 auth.log rwr 1 root adm 16794 13
de septiembre 04:01 syslog rwrwr 1 raíz utmp 292292 12 de
septiembre 18:58 lastlog rwrwr 1 raíz utmp 2688 12 de septiembre
18:58 wtmp
rwr 1 administrador raíz 1050 12 de septiembre 06:25
mensajes rwr 1 root adm 18986 12 de septiembre 06:25 syslog.1
rwr 1 administrador raíz 1357 11 de septiembre 06:25 syslog.2.gz
Opciones
Hay una gran cantidad de opciones disponibles para usar con el comando grep . Para obtener una lista completa,
escriba man grep en la línea de comando. Algunos de los más utilizados son;
• c Imprime un recuento de líneas coincidentes para cada archivo
de entrada • E Interpreta el patrón como una expresión regular extendida
• n Prefija cada línea de salida con el número de línea dentro de su archivo de entrada
Machine Translated by Google
Comandos Linux 105
• i Hace que la búsqueda no distinga entre mayúsculas y minúsculas (por lo que las letras pueden ser mayúsculas
o minúsculas) • o Muestra solo la parte de una línea coincidente que coincide con el patrón
Si quisiéramos averiguar cuántas líneas en la entrada que estamos probando tienen instancias del patrón que
estamos tratando de hacer coincidir, podemos usar la opción c .
Por ejemplo, si quisiéramos averiguar cuántas veces aparece el texto 'CPU2' en el archivo /var/lod/dmesg,
ejecutaríamos el siguiente comando;
grep c CPU2 /var/log/dmesg
… y el resultado sería algo como lo siguiente;
pi@raspberrypi ~ $ grep c CPU2 /var/log/dmesg 3
Por lo tanto, podemos estar seguros de que el número de líneas donde aparece 'CPU2' es 3.
El shell bash donde podríamos estar ejecutando nuestro comando grep considera los siguientes caracteres como
'especiales'; ?, +, {, |, ( y ). Como tal, cuando se usan en una expresión regular, deben tratarse de manera
ligeramente diferente para permitir que se procesen correctamente. Hay dos maneras de lograr esto. Ya sea para
ejecutar el comando grep como egrep o usar la opción E , las cuales permiten el uso de expresiones regulares
extendidas.
Si intentamos ejecutar un comando grep sin la opción E, obtendremos un error que básicamente nos dice que el
comando no reconoce parte de nuestro comando. Por ejemplo el siguiente comando
…
grep (CPU1)|(CPU2) /var/log/dmesg
… dará como resultado un error similar al siguiente;
pi@raspberrypi ~ $ grep (CPU1)|(CPU2) /var/log/dmesg bash: error
de sintaxis cerca del token inesperado ̀('
Pero si usamos la opción E y luego ponemos nuestro patrón de búsqueda entre comillas (ya sean marcas de voz
o comillas simples) aprovecharemos los caracteres especiales y ejecutaremos el comando correctamente. Por
ejemplo, el siguiente comando busca instancias de CPU1 o CPU2 en el archivo '/var/log/dmesg';
www.dbooks.org
Machine Translated by Google
Comandos Linux 106
grep E "(CPU1)|(CPU2)" /var/log/dmesg
La salida se verá un poco como la siguiente;
pi@raspberrypi ~ $ grep E "(CPU1)|(CPU2)" /var/log/dmesg [ 0.113791]
CPU1: Procesador secundario arrancado [ 0.113851] CPU1:
actualizar cpu_capacity 1024 [ 0.113860] CPU1: subproceso
1, cpu 1 , socket 15, mpidr 80000f01 [ 0.133710] CPU2: Procesador secundario
arrancado [ 0.133746] CPU2: actualizar cpu_capacity 1024
[ 0.133755] CPU2: subproceso 1, cpu 2, socket 15, mpidr
80000f02
Como alternativa, podríamos 'escapar' de los caracteres especiales colocando un carácter de 'barra negra' delante
de ellos de esta manera;
grep E \(CPU1\)\|\(CPU2\) /var/log/dmesg
O, alternativamente, podríamos usar el comando 'egrep para cualquiera de las opciones;
egrep \(CPU1\)\|\(CPU2\) /var/log/dmesg
… o …
egrep "(CPU1)|(CPU2)" /var/log/dmesg
Si queremos saber de qué línea numérica proviene la salida devuelta, podemos usar la opción n .
El siguiente comando enumerará el número de la línea del archivo /var/log/dmesg que coincide con el patrón CPU2;
grep n CPU2 /var/log/dmesg
Como resultado, la salida debería ser similar a la siguiente;
Machine Translated by Google
Comandos Linux 107
pi@raspberrypi ~ $ grep n CPU2 /var/log/dmesg 65:[ 67:[ 68:[
0.133710] CPU2: Procesador secundario arrancado 0.133746]
CPU2: actualizar cpu_capacity 1024 0.133755] CPU2:
subproceso 1, cpu 2, socket 15, mpidr 80000f02
La última opción que consideraremos devolverá las partes de la línea coincidente que coincida con el
patrón proporcionado. Entonces, por ejemplo, si buscamos el rango de números de CPU con el patrón
CPU[04] en el archivo /var/log/dmesg usando el siguiente comando;
grep o CPU[04] /var/log/dmesg
… obtendremos una lista de coincidencias similar a la siguiente;
pi@raspberrypi ~ $ grep o CPU[04] /var/log/dmesg
CPU0
CPU0
CPU1
CPU1
CPU1
CPU2
CPU2
CPU2
CPU3
CPU3
CPU3
Pruébate
1. Elabore un comando grep que devuelva las coincidencias y los números de línea para todas las instancias de 'usb'
en /var/log/dmesg 2.
Elabore un comando grep que devolverá todos los números de 'idVendor'.
www.dbooks.org
Machine Translated by Google
Comandos Linux 108
cabeza
El comando head está diseñado para imprimir la primera parte de un archivo en la pantalla. Por defecto imprimirá las
primeras 10 líneas. Es un programa muy útil para verificar rápidamente el inicio de un archivo.
• head [opciones] nombre(s) de archivo: muestra la primera parte de un archivo específico.
Por ejemplo, si queremos enumerar las primeras 10 líneas del archivo /var/log/dmesg, podemos hacerlo de la siguiente
manera;
cabeza /var/log/dmesg
Esto dará como resultado una salida similar a la siguiente;
pi@raspberrypi ~ $ head /var/log/dmesg
[ 0.000000] Arrancando Linux en CPU física 0xf00 [ 0.000000]
Inicializando cgroup subsys cpu [ 0.000000] Inicializando
cgroup subsys cpuacct [ 0.000000] Linux versión 3.18.7v7+
(dc4@dc4 XPS139333) (gcc versión 4.8 [ 0.000000] CPU: Procesador ARMv7 [410fc075] revisión
5 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT caché de datos sin aliasing, VIPT aliasing
[ 0.000000] Modelo de máquina: Raspberry Pi 2 Modelo B [ 0.000000] cma: Reservado 8
MiB en 0x3a800000 [ 0.000000] Política de memoria: Data cache
writealloc [ 0.000000] En el nodo 0 totalpages: 241664
El mando de la cabeza
El comando head está diseñado para llevar a cabo la simple tarea de leer las primeras líneas de un archivo y
presentarlas a una salida (por defecto, la pantalla). El número predeterminado de líneas que imprimirá el comando es
10, pero eso se puede cambiar usando la opción de guión () .
Se complementa con el comando tail que imprimirá las últimas líneas de un archivo.
Opciones
Hay un pequeño número de opciones disponibles para la cabeza. Hay dos que se usan más comúnmente que otros;
• c[num] imprime el primer número de bytes del archivo (donde 8 bytes es un carácter) • n[num] imprime el
primer número de líneas del archivo
A primera vista, la opción c puede parecer un poco inusual, pero lo que hace es proporcionar un método muy exacto
para imprimir un número específico de letras de un archivo. Por ejemplo, si quisiéramos imprimir los primeros 50
caracteres del archivo /var/log/dmesg, usaríamos lo siguiente;
Machine Translated by Google
Comandos Linux 109
cabeza c50 /var/log/dmesg
La salida posterior se vería de la siguiente manera;
pi@raspberrypi ~ $ head c41 /var/log/dmesg [ 0.000000]
Arrancando Linux en físico pi@raspberrypi ~ $
Podemos ver que el mensaje de la consola en realidad se ha colocado en los extremos del texto impreso y
que el texto devuelto tiene 41 caracteres.
Con la opción n , hay un atajo con encabezado donde podemos omitir la n y automáticamente asumirá que
si ponemos un guión y un número queremos que se devuelva ese número de líneas.
Por lo tanto, un comando como el siguiente imprimirá las primeras 5 líneas del archivo /var/log/dmesg ;
cabeza 5 /var/log/dmesg
Con un resultado que queda de la siguiente manera;
pi@raspberrypi ~ $ head 5 /var/log/dmesg [ 0.000000]
Arrancando Linux en CPU física 0xf00 [ 0.000000] Inicializando
cgroup subsys cpu [ 0.000000] Inicializando cgroup subsys
cpuacct [ 0.000000] Linux versión 3.18.7v7+ (dc4@ dc4
XPS139333) (gcc versión 4.8 [ 0.000000] CPU: Procesador ARMv7 [410fc075] revisión 5 (ARMv7),
cr=10c5387d pi@raspberrypi ~ $
Para las opciones c o n , podemos especificar un multiplicador adyacente al número num que aumentará
el número de caracteres o líneas devueltos. Por ejemplo , b = 512, kB = 1000, K = 1024, MB = 1000x1000,
M = 1024x1024, GB = 1000x1000x1000, G = 1024x1024x1024, etc. para T, P, E, Z e Y.
Por lo tanto, el siguiente ejemplo imprimirá los primeros 5000 caracteres del archivo /var/log/dmesg .
cabeza c5kB /var/log/dmesg
www.dbooks.org
Machine Translated by Google
Comandos Linux 110
Argumentos
Si queremos mostrar el inicio de más de un archivo, simplemente podemos enumerar sus nombres de
archivo uno tras otro. Por ejemplo, para listar las primeras 5 líneas de los archivos dmesg y syslog (ambos
están en /var/log) podemos usar el siguiente comando;
cabeza 5 dmesg syslog
Los resultados se verán un poco como los siguientes;
pi@raspberrypi /var/log $ cabeza 5 dmesg syslog ==> dmesg
<== [ [ [ [ [
0.000000] Arrancando Linux en CPU física 0xf00 0.000000]
Inicializando cgroup subsys cpu 0.000000] Inicializando
cgroup subsys cpuacct 0.000000] Linux versión 3.18.7v7+
(dc4@dc4XPS139333) (gcc versión 4.8 0.000000] CPU: Procesador ARMv7 [410fc075 ] revisión
5 (ARMv7), cr=10c5387d
==> registro del sistema <==
28 de agosto 06:25:03 raspberrypi rsyslogd: [software de origen="rsyslogd"]
28 de agosto 06:39:01 raspberrypi /USR/SBIN/CRON[1490]: (raíz) CMD
28 de agosto 07:00:01 raspberrypi /USR/SBIN/CRON[1505]: (pi) CMD (/usr/bin/php)
28 de agosto 07:00:41 raspberrypi /USR/SBIN/CRON[1504]: (CRON) información
28 de agosto 07:09:01 raspberrypi /USR/SBIN/CRON[1516]: (raíz) CMD (/maxlifetime) pi@raspberrypi /
var/log $
¡Podemos ver que al comienzo de cada archivo se imprime el nombre del archivo y de hecho hay 5 líneas
de texto cada uno!
Pruébate
1. ¿Cuál es la diferencia entre los siguientes comandos head 5 foo.txt, head n5
foo.txt y cabeza 5 foo.txt?
Machine Translated by Google
Comandos Linux 111
menos
El comando less se usa para mostrar archivos de texto en la pantalla una página a la vez. Este es un comando
útil que hasta cierto punto ha reemplazado al comando more en el sentido de que proporciona una
funcionalidad similar pero ampliada (¿entendido? menos es más).
• Menos [opciones] nombre de archivo: Mostrar archivos de texto
Por ejemplo, para mostrar la primera página en el archivo de texto var/log/dmesg que contiene el texto 'cpu_
capacity' podríamos usar el siguiente comando;
menos +/"capacidad_cpu" /var/log/dmesg
Esto produciría una salida similar a la siguiente;
0.053503] CPU0: actualice cpu_capacity 1024
0.053577] CPU0: subproceso 1, cpu 0, socket 15, mpidr 80000f00 0.053615]
[bcm2709_smp_prepare_cpus] ingrese 0.053779]
Configuración del mapa de identidad estático para 0x536c78 0x5 36cd0 0.113483]
[bcm2709_boot_secondary] cpu:1 iniciado ( 0) 17 0.113791] CPU1:
Procesador secundario arrancado 0.113799]
[bcm2709_secondary_init] ingrese cpu:1 0.113851] CPU1:
actualice cpu_capacity 1024 0.113860] CPU1:
subproceso 1, cpu 1, socket 15, mpidr 80000f01 0.1334 51]
[bcm2709_boot_secundario] CPU:2 iniciado (0) 18 0.133710] CPU2:
Procesador secundario arrancado 0.133716]
[bcm2709_secondary_init] ingrese cpu:2 0.133746] CPU2:
actualice cpu_capacity 1024 0.133755] CPU2:
subproceso 1, cpu 2, socket 15, mpidr 80000f02 0.153 508]
[bcm2709_boot_secundario] CPU :3 iniciado (0) 17 0.153750] CPU3:
Procesador secundario arrancado 0.153757]
[bcm2709_secondary_init] ingrese cpu:3 0.153788] CPU3:
actualice cpu_capacity 1024 0.153797] CPU3:
subproceso 1, cpu 3, socket 15, mpidr 80000f03 0. 153891] criado 4 CPU
0.154012] SMP: Total de 4
procesadores activados (153.60 BogoMIPS).
0.154045] CPU: todas las CPU se iniciaron en modo SVC.
0.155051] devtmpfs: inicializado
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ /var/log/dmesg
Si bien el comando anterior es idéntico al comando inicial invocado en el ejemplo más , la salida difiere en
que el texto buscado se resalta en el texto de salida (aunque esto no se muestra en la página impresa anterior).
www.dbooks.org
Machine Translated by Google
Comandos Linux 112
La otra gran diferencia está en la interacción de la página mientras se muestra. Donde más es un 'localizador' en el sentido de que
está diseñado desde el principio para trabajar con un archivo una página a la vez, si usamos las teclas de flecha hacia arriba y
hacia abajo nos encontraremos capaces de desplazarnos hacia arriba y hacia abajo en el archivo en la pantalla. De hecho, si
algunas de nuestras líneas son lo suficientemente largas, podemos presionar las teclas de flecha hacia la derecha o hacia la
izquierda para movernos hacia la izquierda y hacia la derecha en el contenido del archivo.
Cuanto menos mando
Podría decirse que el comando less es mejor conocido por el hecho de que es un método mejorado para ver un
archivo en comparación con el comando more . La mejora más notable es la capacidad de desplazarse hacia
adelante y hacia atrás por el archivo, aunque hay una gran variedad de características adicionales además de las
que se encuentran en más. A pesar de lo que podría parecer razones obvias para usar el comando más moderno y
con más funciones, todavía hay distribuciones de Linux que incluirán una sobre la otra (en lugar de ambas) como el
tamaño más pequeño de más sobre menos (aproximadamente 2000 líneas de código comparado con 27.000 líneas
respectivamente) hace más atractivo para sistemas integrados más ligeros o similares.
El comando less se usa para mostrar archivos de texto de una página a la vez y, como tal, puede considerarse un
miembro de la familia de 'buscapersonas'. Es un programa diseñado para emular y mejorar en más y, como tal, si
conoce los conceptos básicos de más , conocerá los conceptos básicos de menos. El nombre es un guiño a la frase
"menos es más".
La función principal que proporciona less es mostrar tanto texto como quepa en una pantalla a la vez y, posteriormente,
avanzar y retroceder en el archivo. El archivo también puede desplazarse una línea a la vez usando las teclas de
flecha hacia arriba y hacia abajo.
Comandos
less incluye una gran cantidad de comandos que nos permitirán controlar la navegación a través de un archivo de
texto. Para los siguientes comandos, donde vemos [k], k representa un número (opcional) que escribimos como
argumento antes del comando (el siguiente es un subconjunto que muestra solo los comandos de uso común, hay
MUCHOS más ).
• h o H : Ayuda. Muestre un resumen de estos comandos. Si olvida todos los demás comandos,
recuerda este
• [k] <espacio> o f : muestra las siguientes k líneas de texto [predeterminado = tamaño de pantalla actual] •
[k] b : muestra las k líneas de texto anteriores [predeterminado = tamaño de pantalla actual] • [k] z :
Mostrar las siguientes k líneas de texto [predeterminado = tamaño de pantalla actual = k] •
flecha hacia abajo: Desplazarse hacia abajo en el archivo una línea a la vez
• flecha arriba : Desplazarse hacia arriba en el archivo una
línea a la vez • [k] <return> : Mostrar las siguientes k líneas de texto
[predeterminado = 1] • q o Q :
Salir de más • F : Desplazarse hacia adelante hasta el final del file (equivalente
a tail f) • [k] b o <ctrl>B : salta hacia atrás k pantallas completas de texto
[predeterminado = 1] • = : muestra el archivo actual, las líneas mostradas, la posición del byte y el
porcentaje mostrados • [k] / <patrón>: busca hacia adelante la késima aparición del patrón
[predeterminado = 1] • [k] ?<patrón>: busca hacia atrás la késima aparición del patrón [predeterminado = 1]
Machine Translated by Google
Comandos Linux 113
• [k] n : busca hacia adelante la késima aparición del último patrón [predeterminado
= 1] • [k] N : busca hacia atrás la késima aparición del último patrón [predeterminado
= 1] • &<patrón>: busca y muestra solo las líneas coincidentes del patrón •
[k] g o < : Ir a la primera línea del archivo (o línea k)
• [k] G o > : Ir a la última línea del archivo (o línea
k) • [k] p o % : Ir a comienzo del archivo (o k por ciento en el archivo)
Por ejemplo, ejecutar el siguiente comando comenzará a buscar en el archivo /var/log/dmesg
menos /var/log/dmesg
Mientras se muestra el archivo a mitad de camino, presionar el carácter = mostrará una variedad de información
sobre el archivo similar a la siguiente;
[ 0.000000] Zona normal: 780799 páginas, lote LIFO: 31 [ 0.000000] ACPI: PM
Timer IO Port: 0x408 [ 0.000000] ACPI: Dirección APIC local
0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00]
habilitado ) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] habilitado) [ 0.000000]
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] habilitado) [ 0.000000] ACPI: LAPIC (acpi_id[0x04]
lapic_id[0x03] habilitado) /var/log/dmesg líneas 117139/938 byte 9130/64465 14% (presione
RETURN)
Aquí podemos ver el nombre del archivo /var/log/dmesg, las líneas que se muestran 117139, el número total
de líneas 938, la posición del byte en el archivo en relación con el número total de bytes 9130/64465 y el
porcentaje a través del archivo 14%.
Mientras se muestra el archivo a mitad de camino, presionar el carácter & seguido de un patrón en el que
queremos buscar mostrará solo líneas con el patrón coincidente. Entonces, si presionamos &cpu, se desplegará
algo similar a lo siguiente;
0.053615] [bcm2709_smp_prepare_cpus] ingrese 0.113483]
[bcm2709_boot_secondary] cpu:1 iniciado (0) 17 0.113799]
[bcm2709_secondary_init] ingrese cpu:1 0.113851] CPU1:
actualice cpu_capacity 1024 0.1138 60] CPU1: subproceso
1, CPU 1, zócalo 15, mpidr 80000f01 0.133451] [bcm2709_boot_secondary] cpu:2
iniciado (0) 18 0.133716] [bcm2709_secondary_init] ingrese cpu:2 0.133746]
CPU2: actualice cpu_capacity 1024 0.133755] CPU2: subproceso
1, cpu 2, socket 15 , mpidr 80000f02 0.153508]
[bcm2709_boot_secundario ] cpu:3 iniciado (0) 17 0.153757] [bcm2709_secondary_init]
ingrese cpu:3
[ [ [ [ [ [ [ [ [ [ [
www.dbooks.org
Machine Translated by Google
Comandos Linux 114
0.153788] CPU3: actualice cpu_capacity 1024 0.153797]
[ [ CPU3: subproceso 1, cpu 3, zócalo 15, mpidr 80000f03
& :
En el ejemplo en vivo, se resalta cada instancia de la CPU patrón.
Opciones
Hay varias opciones disponibles para usar con el comando less . Algunos de los más utilizados son;
• I ignorará mayúsculas y minúsculas en búsquedas que no contengan
mayúsculas. • Ignoraré mayúsculas y
minúsculas en todas las búsquedas. • s comprimirá varias
líneas en blanco en una sola • p cadena especifica una cadena que se buscará en
el archivo. • +num comenzará a mostrar el archivo en el número de línea
num • N mostrará los números de línea al lado de las líneas
Por ejemplo, podemos decirle al comando que busque el texto 'cpu' al ejecutar el comando less de la siguiente manera;
menos p cpu /var/log/dmesg
La salida presentará la primera instancia de la cadena 'cpu' y la resaltará junto con cualquier otra instancia en la pantalla de
la siguiente manera;
0.000000] Zona normal: 241664 páginas, lote LIFO: 31 0.000000]
[bcm2709_smp_init_cpus] ingrese (8620>f3003010) 0.000000]
[bcm2709_smp_init_cpus] ncores=4 0.000000] PERCPU:
integrado 11 páginas/cpu @ba05d000 s12864 r8192 d24000 0.000000] pcpu asignación:
s12864 r8192 d24000 u45056 asignación=11*4096 0.000000] asignación pcpu: [0] 0
[0] 1 [0] 2 [0] 3
[ [ [ [ [ [ /var/log/dmesg
Para tener una idea más clara de los números de línea en un archivo mostrado, podemos usar el comando menos con la
opción N de la siguiente manera;
menos N /var/log/dmesg
La salida mostrará un archivo similar al siguiente;
Machine Translated by Google
Comandos Linux 115
12 0.000000] Zona normal: 1888 páginas utilizadas para memmap
[ 13 0.000000] Zona normal: 0 páginas reservadas
[ 14 0.000000] Zona normal: 241664 páginas, lote LIFO: 31 0.000000]
[ 15 [bcm2709_smp_init_cpus] ingrese (8620>f3003010) 0.000000 ]
[ 16 [bcm2709_smp_init_cpus] ncores=4 0.000000]
[ 17 PERCPU: 11 páginas/cpu integradas @ba05d000 s12864
[ /var/log/dmesg
Pruébate
1. Mostrar una página al azar. Presione h para mostrar la pantalla de ayuda y cuente la cantidad de
comandos y opciones disponibles con menos. Vea si puede adivinar cuántos hay para cada
primero.
2. ¿Qué tres formas podrían usarse para buscar y mostrar una cadena de texto en particular?
www.dbooks.org
Machine Translated by Google
Comandos Linux 116
más
El comando more se usa para mostrar archivos de texto en la pantalla una página a la vez. Este es un comando útil que hasta cierto
punto ha sido reemplazado por el comando less que proporciona una funcionalidad similar pero ampliada.
• más [opciones] nombre de archivo: Mostrar archivos de texto
Por ejemplo, para mostrar la primera página en el archivo de texto var/log/dmesg que contiene el texto 'cpu_capacity' podríamos
usar el siguiente comando;
más +/"capacidad_cpu" /var/log/dmesg
Esto produciría una salida similar a la siguiente;
0.004116] CPU: Probando la coherencia del búfer de escritura: ok
0.004231] ftrace: asignación de 19969 entradas en 59 páginas 0.053503]
CPU0: actualizar cpu_capacity 1024 0.053577] CPU0:
subproceso 1, cpu 0, socket 15, mpidr 80000f00 0.05361 5]
[bcm2709_smp_prepare_cpus] ingrese 0.053779 ]
Configuración del mapa de identidad estático para 0x536c78 0x536cd0 0.113483]
[bcm2709_boot_secondary] cpu:1 iniciado (0) 17 0.113791] CPU1: Procesador
secundario arrancado 0.113799] [bcm2709_secondary_init]
ingrese cpu:1 0.113851] CPU1: actualización c capacidad_pu
1024 0.113860] CPU1: hilo 1, cpu 1, socket 15, mpidr
80000f01 0.133451] [bcm2709_boot_secondary] cpu:2 iniciado (0) 18 0.133710]
CPU2: Procesador secundario arrancado 0.133716] [bcm2709_secondary_init]
ingrese cpu:2 0.133746] CPU2: actualizar cpu _capacidad
1024 0.133755] CPU2: hilo 1, cpu 2, socket 15, mpidr 80000f02
0.153508] [bcm2709_boot_secondary] cpu:3 iniciado (0)
17 0.153750] CPU3: Procesador secundario iniciado 0.153757]
[bcm2709_secondary_init] ingrese cpu:3 0.153788] CPU3: actualizar
cpu_capacity 1024 0.153797] CPU3: subproceso 1, cpu 3,
socket 15, mpidr 80000f03 0.153891] Trajo 4 CPU 0.154012]
SMP: Total de 4 procesadores activados (153.60
BogoMIPS).
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [
Más(35%)
Tenga en cuenta que el porcentaje que se muestra en la parte inferior de la pantalla es una indicación de qué tan avanzado está el
contenido del archivo que se muestra.
Machine Translated by Google
Comandos Linux 117
Cuanto más comando
El comando more se usa para mostrar archivos de texto de una página a la vez y, como tal, puede considerarse un
miembro de la familia de 'buscapersonas'. Es un programa bastante maduro y, como tal, ha habido mejoras que se han
identificado como deseables y posteriormente incluidas en el programa less (en un inteligente guiño a la frase "menos es
más"). más solo se moverá hacia adelante a través de un archivo (menos también se moverá hacia atrás).
La función principal que proporciona more es mostrar todo el texto que quepa en una pantalla a la vez y luego pasar a la
siguiente página cuando se presiona la barra espaciadora o avanzar una línea a la vez cuando se presiona la tecla de
retorno.
Comandos
more incluye una serie de comandos que nos permitirán controlar la navegación a través de un archivo de texto.
Esto significa que mientras estamos mostrando nuestro archivo, podemos controlar cómo se desplaza (cuántas líneas a
la vez, por ejemplo) o qué texto buscar. Para los siguientes comandos, donde vemos [k], k representa un número
(opcional) que escribimos como argumento antes del comando (el siguiente es un subconjunto que muestra solo los
comandos de uso común).
• h o ? : Ayuda. Muestre un resumen de estos comandos. Si olvida todos los demás comandos,
recuerda este
• [k] <espacio>: muestra las siguientes k líneas de texto [predeterminado = tamaño de pantalla
actual] • [k] z : muestra las siguientes k líneas de texto [predeterminado = tamaño
de pantalla actual] • [k] <retorno>: muestra siguientes k líneas de texto
[predeterminado = 1] • [k] d o <ctrl>D : Desplazar k líneas [tamaño de
desplazamiento actual,
inicialmente 11] • q o Q : Salir de más • [k] s : Saltar k líneas
hacia adelante de texto [predeterminado = 1] • [k] f : Saltar hacia
adelante k pantallas completas de texto [predeterminado = 1] • [k] b o <ctrl>B : Saltar
hacia atrás k pantallas completas de texto
[predeterminado = 1] • = : Pantalla número de línea actual • [k] /<expresión regular> : Buscar la késima aparición
de la expresión regular [predeterminado = 1] • [k] n : Buscar la késima aparición de la última
expresión regular [predeterminado = 1] • v :
Iniciar / usr/bin/vi en la línea
actual • <ctrl>L : Redibujar pantalla • [k] :n : Ir al
késimo archivo siguiente [predeterminado = 1] • [k] :p : Ir
al késimo archivo anterior [predeterminado = 1] • :f : muestra el nombre del archivo actual y el número de línea
• . : Repetir el comando anterior
Para explicar más, si ejecutamos el siguiente comando para comenzar a buscar en nuestro archivo...
más /var/log/dmesg
… y luego (durante la visualización del archivo) presione 6z, la pantalla mostrará las siguientes 6 líneas del archivo.
www.dbooks.org
Machine Translated by Google
Comandos Linux 118
Opciones
Hay varias opciones disponibles para usar con el comando more . Algunos de los más utilizados son;
• num establecerá el número de líneas a las que corresponde el tamaño de la pantalla.
• s comprimirá varias líneas en blanco en una sola •
+/"cadena" especifica una cadena que se buscará en el archivo. • +num
comenzará a mostrar el archivo en el número de línea num
Por ejemplo, si establecemos el número de líneas de la pantalla en 3 usando la opción num de la siguiente manera;
más 3 /var/log/dmesg
La salida supondrá que la pantalla tiene 3 líneas de profundidad y, por lo tanto, mostrará 3 líneas por cada página
adicional que se muestre con la barra <space>. La primera 'página mostrada será similar a la siguiente;
pi@raspberrypi ~ $ más 3 /var/log/dmesg [ 0.000000]
Arrancando Linux en CPU física 0xf00 [ 0.000000] Inicializando
cgroup subsys cpu [ 0.000000] Inicializando cgroup subsys
cpuacct Más(1%)
Pruébate
1. ¿Qué comando se usaría para mostrar la primera instancia del texto 'hola mundo' de un
archivo y luego mostrar 5 líneas a la vez cada vez que se presiona la barra espaciadora?
2. ¿Cuál es el comando alternativo (más moderno) que se usa comúnmente en lugar de más?
3. Use más para listar el archivo /var/log/dmesg. Presione la tecla s para avanzar un número aleatorio de líneas.
use un comando para encontrar la línea que se muestra, luego salga del comando y ejecútelo nuevamente,
pero con una opción que lo lleve directamente al mismo número de línea aleatorio.
Machine Translated by Google
Comandos Linux 119
cola
El comando tail está diseñado para imprimir la última parte de un archivo en la pantalla. Por defecto imprimirá
las últimas 10 líneas. Es un programa muy útil para verificar rápidamente el final de un archivo.
• tail [opciones] nombre(s) de archivo: muestra la última parte de un archivo específico.
Por ejemplo, si queremos listar las últimas 10 líneas del archivo /var/log/dmesg, podemos hacerlo de la siguiente
manera;
cola /var/log/dmesg
Esto dará como resultado una salida similar a la siguiente;
pi@raspberrypi /var/log $ tail /var/log/dmesg [ 4.723858]
EXT4fs (mmcblk0p2): sistema de archivos montado con modo de datos ordenados. [4.735464] VFS:
raíz montada (sistema de archivos ext4) de solo lectura en el dispositivo 179:2. [ 4.745366]
devtmpfs: montado [ 4.750800] Liberando
memoria del kernel no utilizada: 396K (80767000 807ca000) [ 5.896875] udevd[175]:
versión inicial 175 [ 8.192851] EXT4fs (mmcblk0p2): re
montado. Opciones: (nulo) [8.447207] EXT4fs (mmcblk0p2): remontado.
Opciones: (nulo) [ 11.411899] aleatorio: se inicializa el grupo sin bloqueo
[ 12.843008] smsc95xx 11.1:1.0 eth0: el hardware no es capaz de
realizar operaciones remotas [ 14.455026] smsc95xx 11.1:1.0 eth0: conexión, 100 Mbps, full
dúplex, lpa
El comando de la cola
El comando tail está diseñado para llevar a cabo la simple tarea de leer las últimas líneas de un archivo y
presentarlas en una salida (por defecto, la pantalla). El número predeterminado de líneas que imprimirá el
comando es 10, pero eso se puede cambiar usando la opción de guión (n) .
Se complementa con el comando principal que imprimirá las primeras líneas de un archivo.
Opciones
Hay un pequeño número de opciones disponibles para la cola. Hay tres que se usan más comúnmente que otros;
• c[num] imprime el último número de bytes del archivo (donde 8 bytes es un carácter) • n[num]
imprime el último número de líneas del archivo • f imprime las
últimas 10 líneas del archivo y si se agregan nuevas líneas, también las generará
A primera vista, la opción c puede parecer un poco inusual, pero lo que hace es proporcionar un método muy
exacto para imprimir un número específico de letras de un archivo. Por ejemplo, si quisiéramos imprimir los
últimos 50 caracteres del archivo /var/log/dmesg, usaríamos lo siguiente;
www.dbooks.org
Machine Translated by Google
Comandos Linux 120
cola c50 /var/log/dmesg
La salida posterior se vería de la siguiente manera;
pi@raspberrypi /var/log $ tail c50 /var/log/dmesg 0 eth0: enlace,
100 Mbps, dúplex completo, lpa 0xC5E1
Podemos ver que el texto devuelto tiene 41 caracteres.
Con la opción n podemos imprimir un número específico de líneas. Entonces, lo siguiente imprimirá las
últimas 5 líneas del archivo /var/log/dmesg ;
cola n5 /var/log/dmesg
Con un resultado que queda de la siguiente manera;
pi@raspberrypi /var/log $ tail n5 /var/log/dmesg [ [ [ 11.411899]
8.192851] EXT4fs (mmcblk0p2): remontado. Opciones: (nulo)
8.447207] EXT4fs (mmcblk0p2): remontado. Opciones: (nulo)
aleatorio: el grupo sin bloqueo se inicializa [ 12.843008] smsc95xx
11.1:1.0 eth0: el hardware no es capaz de controlar remotamente [ 14.455026] smsc95xx
11.1:1.0 eth0: enlace, 100 Mbps, dúplex completo, lpa
Para las opciones c o n , podemos especificar un multiplicador adyacente al número num que aumentará el
número de caracteres o líneas devueltos. Por ejemplo , b = 512, kB = 1000, K = 1024, MB = 1000x1000, M =
1024x1024, GB = 1000x1000x1000, G = 1024x1024x1024, etc. para T, P, E, Z e Y.
Por lo tanto, el siguiente ejemplo imprimirá los últimos 5000 caracteres del archivo /var/log/dmesg .
cola c5kB /var/log/dmesg
La opción f para la cola proporciona una poderosa herramienta para monitorear en tiempo real la actividad en
un archivo cambiante. Usando f en un archivo, mantendrá una vigilancia en el archivo y si se agregan líneas
adicionales al archivo, se imprimirán en la pantalla.
Machine Translated by Google
Comandos Linux 121
Argumentos
Si queremos mostrar el final de más de un archivo, simplemente podemos enumerar sus nombres de archivo
uno tras otro. Por ejemplo, para listar las últimas 5 líneas de los archivos dmesg y syslog (ambos están en /var/
log) podemos usar el siguiente comando;
cola n5 dmesg syslog
Los resultados se verán un poco como los siguientes;
pi@raspberrypi /var/log $ tail n5 dmesg syslog ==> dmesg
<== [ [ [ 11.411899]
8.192851] EXT4fs (mmcblk0p2): remontado. Opciones: (nulo)
8.447207] EXT4fs (mmcblk0p2): remontado. Opciones: (nulo)
aleatorio: se inicializa el grupo sin bloqueo [ 12.843008] smsc95xx
11.1:1.0 eth0: el hardware no es capaz de [ 14.455026] smsc95xx 11.1:1.0 eth0: enlace, 100
Mbps, dúplex completo, lpa
==> registro del sistema <==
29 de agosto 02:17:01 raspberrypi /USR/SBIN/CRON[2856]: (raíz) CMD (piezas de ejecución)
29 de agosto 02:39:02 raspberrypi /USR/SBIN/CRON[2870]: (raíz) CMD (maxlifetime)
29 de agosto 03:00:01 raspberrypi /USR/SBIN/CRON[2900]: (pi) CMD (/usr/bin/php)
29 de agosto 03:00:39 raspberrypi /USR/SBIN/CRON[2899]: (CRON) información (sin MTA)
29 de agosto 03:09:01 raspberrypi /USR/SBIN/CRON[2917]: (raíz) CMD (sesión limpia)
¡Podemos ver que al comienzo de cada archivo enumerado se imprime el nombre del archivo y de hecho hay 5
líneas de texto cada uno!
Pruébate
1. ¿Por qué los multiplicadores K y kB son diferentes?
www.dbooks.org
Machine Translated by Google
Comandos Linux 122
Sistemas de archivos
fdisco
fdisk es un comando diseñado para administrar particiones de disco. Esto quiere decir que nos permite ver,
crear, redimensionar, borrar, cambiar, copiar y mover particiones en un disco duro.
Comencemos esto con un poco de advertencia. fdisk es un comando que reorganizará su
almacenamiento y, como tal, conlleva un riesgo significativo si se realiza incorrectamente.
fdisk requerirá que lo ejecute un usuario con permisos de administrador y por una buena razón.
¡No cree, elimine ni modifique particiones a menos que sepa lo que está haciendo! el uso
incorrecto de fdisk puede provocar la pérdida de datos o destruir el sistema.
Si bien describiremos algunas de las funciones de fdisk aquí, restringiremos la descripción para permitir una
comprensión de lo que fdisk puede mostrarnos y si desea cambiar sus particiones, le recomiendo que busque
asesoramiento específico antes de hacerlo.
• fdisk [opciones] [dispositivo]: manipula las tablas de particiones.
La única combinación de comando/opción que veremos en profundidad incorpora la opción l para listar las
tablas de particiones del disco.
sudo fdisk l
El programa presentará entonces la información que tiene sobre las particiones existentes;
Disco /dev/mmcblk0: 7,4 GiB, 7948206080 bytes, 15523840 sectores Unidades: sectores de 1 *
512 = 512 bytes Tamaño del sector (lógico/físico): 512
bytes / 512 bytes Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes Tipo de
etiqueta de disco: dos
Identificador de disco: 0xa3a4d77a
Disco /dev/sda: 29,5 GiB, 31614566400 bytes, 61747200 sectores Unidades: sectores de 1 *
512 = 512 bytes Tamaño del sector (lógico/físico): 512
bytes / 512 bytes Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes Tipo de
etiqueta de disco: dos
Machine Translated by Google
Comandos Linux 123
Identificador de disco: 0xb1832c48
La información anterior muestra que tenemos dos dispositivos de almacenamiento diferentes conectados al
sistema. /dev/mmcblk0 y /dev/sda. Se presenta una gran cantidad de información sobre los discos en sí,
además de información sobre cómo están particionados.
Podemos ver que el dispositivo (disco) /dev/mmcblk0 tiene dos particiones configuradas. Se nos dice que el
disco tiene 7,4 GiB de almacenamiento (la 'i' en GiB es una indicación de que el tamaño de almacenamiento
se informa utilizando factores de 1024 en lugar de 1000 (que sería un GB). No entre en pánico, esto es
normal .). La información sobre sectores es una forma de representar la capacidad de almacenamiento y es
una especie de remanente de cuando el almacenamiento siempre era un disco giratorio de algo (hasta hace
poco también estaríamos hablando de cilindros y bloques).
Se informa que /dev/mmcblk0 está dividido en dos particiones (/dev/mmcblk0p1 y /dev/mm cblk0p2). El
almacenamiento asignado a cada partición se asigna a sectores específicos que corresponden a un tamaño
particular. El Id de la partición corresponde a los indicadores del sistema o 'tipos' para las particiones. El tipo
también está representado por un nombre legible por humanos. Los diversos tipos incluyen (pero no se limitan
a);
www.dbooks.org
Machine Translated by Google
Comandos Linux 124
Sí, hay conservadoramente una gran cantidad de tipos métricos allí. Para nuestra descripción general muy simplista de fdisk, no
deberíamos preocuparnos demasiado por la variedad. Hay bastantes tipos especializados y algunos semihistóricos allí, por lo
que en la forma de pensar 'Just Enough' podemos esperar ver algunos Tipo '7', 'b' y 'c' en medios extraíbles y '82' / ' 83' para
almacenamiento estándar (esté preparado para cierta flexibilidad allí).
El comando fdisk
Los discos duros (o más comúnmente hoy en día con una amplia gama de opciones disponibles, dispositivos de 'almacenamiento')
se pueden dividir en uno o más discos lógicos llamados particiones. Estas divisiones se describen en la 'tabla de particiones' que
se encuentra en el sector 0 de un disco. La tabla enumera información sobre el inicio y el final de cada partición, información
sobre su tipo y si está marcada como de arranque o no. el comando fdisk nos permite editar la tabla de particiones y, como tal,
tiene el potencial de afectar significativamente el funcionamiento del medio de almacenamiento. Como resultado, el comando
fdisk solo lo puede ejecutar un usuario con privilegios de administrador y corremos el riesgo de perder datos en el disco si
ejecutamos el comando incorrectamente.
Las particiones pueden tener diferentes tamaños y diferentes particiones pueden tener diferentes sistemas de archivos, por lo
que un solo disco se puede usar para muchos propósitos. Los discos duros tradicionales tienen una estructura definida por los
términos de cilindros, cabezales y sectores. Las unidades modernas utilizan el direccionamiento de bloques lógicos (LBA), lo que
hace que esta estructura sea en gran medida irrelevante; sin embargo, la unidad de asignación estándar para fines de partición
suele ser el cilindro.
Linux necesita un mínimo de una partición para admitir su sistema de archivos raíz. También puede aprovechar los archivos de
intercambio y/o las particiones de intercambio, pero como una partición de intercambio es más eficiente, generalmente tendremos
una segunda partición de Linux dedicada para el intercambio.
En el hardware compatible con Intel, el sistema básico de entrada/ salida (BIOS) que arranca la computadora a menudo solo
puede acceder a los primeros 1024 cilindros del disco. Como resultado, a menudo puede haber una tercera partición de unos
pocos MB (generalmente montada en /boot), para almacenar la imagen del kernel y algunos archivos auxiliares utilizados durante
el arranque.
fdisk nos permite ver, crear, redimensionar, borrar, cambiar, copiar y mover particiones en un disco duro.
Es una herramienta esencial para crear espacio para nuevas particiones, organizar espacio para nuevas unidades, reorganizar
unidades antiguas y copiar o mover datos a nuevos discos. Si bien fdisk puede manipular la tabla de particiones, esto no hace
que el espacio esté disponible para su uso. Para hacer esto, debemos formatear la partición con un sistema de archivos específico
usando mkfs.
Como ya se describió en el ejemplo original, podemos ver los detalles de nuestra partición con la opción l .
Ir más allá de la madriguera del conejo de la manipulación de particiones es algo que dudo en describir porque puede dar la
impresión de que es una tarea trivial que cualquiera debería intentar. No es algo que deba evitarse, pero es algo que debemos
aprender y practicar en un entorno seguro antes de intentarlo por primera vez. Esto se puede hacer de forma controlada usando
los comandos interactivos pero sin guardar los cambios.
Una vez que hayamos identificado el dispositivo que queremos particionar, podemos iniciar fdisk como una utilidad interactiva
controlada por comandos con el comando fdisk y el dispositivo;
Machine Translated by Google
Comandos Linux 125
sudo fdisk /dev/sda
La respuesta es un mensaje de bienvenida y una advertencia;
Bienvenido a fdisk (utillinux 2.25.2).
Los cambios permanecerán solo en la memoria, hasta que decida escribirlos.
Tenga cuidado antes de usar el comando de escritura.
Comando (m para ayuda):
Debemos tener en cuenta que podemos hacer muchos cambios potenciales usando los comandos
de fdisk , pero estos no se vuelven operativos hasta que los guardamos usando 'w'. Esta es una
buena manera de practicar el uso de los comandos sin preocuparse por cómo pueden afectar el
almacenamiento (siempre y cuando no promulguemos los cambios).
Presionando 'm' se mostrará el rango de posibles comandos;
Ayuda:
DOS (MBR)
a alternar una bandera de arranque b
editar la etiqueta de disco BSD anidada
c alternar la bandera de compatibilidad con DOS
Genérico
d eliminar una partición l enumerar
los tipos de partición conocidos n agregar una
nueva partición p imprimir la tabla
de particiones t cambiar un tipo de partición
v verificar la tabla de particiones
Varios
m imprimir este menú u
cambiar las unidades de visualización/entrada
x funcionalidad adicional (solo para expertos)
Guardar la salida
w escribe la tabla en el disco y sale
q salir sin guardar los cambios
Crear una nueva etiqueta
www.dbooks.org
Machine Translated by Google
Comandos Linux 126
g crear una nueva tabla de particiones GPT vacía
G crear una nueva tabla de particiones SGI (IRIX) vacía o crear una
nueva tabla de particiones DOS vacía s crear una nueva tabla
de particiones Sun vacía
Para agregar una nueva partición, presionaríamos 'n', que preguntará qué tipo de partición queremos configurar;
Tipo de partición p
primaria (0 primaria, 0 extendida, 4 libres) e extendida
(contenedor para particiones lógicas)
Seleccione (predeterminado p):
La tabla de particiones se encuentra en el registro de arranque maestro (MBR) de un disco. El
MBR es el primer sector del disco, por lo que la tabla de particiones es bastante pequeña. Esto
limita el número de particiones primarias en un disco a cuatro. Cuando se requieren más de
cuatro particiones (lo cual es bastante normal), una de las particiones primarias debe convertirse
en una partición extendida. Una partición extendida es un contenedor para una o más particiones
lógicas. De esta forma, puede tener más de cuatro particiones en una unidad utilizando el diseño MBR.
Suponiendo (en este caso) que agregaremos una partición primaria, podemos ingresar 'p' y se nos pregunta
qué número de partición queremos crear;
Número de partición (14, predeterminado 1):
Luego se nos pregunta de dónde debe partir el primer sector de nuestra partición;
Primer sector (204861747199, predeterminado 2048):
Luego se nos pregunta cuál será el último sector;
Último sector, +sectores o +tamaño{K,M,G,T,P} (204861747199, predeterminado 61747199):
Una vez completado, fdisk nos dirá los detalles de la partición que ha configurado;
Creó una nueva partición 1 de tipo 'Linux' y de tamaño 29,5 GiB.
Si este fuera nuestro resultado deseado, podríamos escribir los cambios y la configuración se almacenaría en
la tabla de particiones. Nuevamente, esto es algo que debe estudiarse y comprenderse antes de intentarlo de
verdad.
Pruébate
1. ¿Cuántas particiones primarias se pueden crear en un dispositivo?
2. ¿Qué 'tipo' de partición es 83?
3. ¿Cómo puede practicar el uso del comando fdisk sin implementar los cambios?
Machine Translated by Google
Comandos Linux 127
mkfs
El comando mkfs se usa para crear un sistema de archivos en una partición de Linux. Es el proceso de aplicar formato de
alto nivel a una partición de manera que se configure un sistema de archivos en particular y el almacenamiento esté listo
para su uso. Este es un paso importante para agregar almacenamiento, pero conlleva cierto grado de precaución que debe
acompañar a cualquier comando que realice cambios en el almacenamiento. El uso incorrecto podría resultar en la pérdida
de datos. Como era de esperar con este tipo de comando necesitaríamos ser un usuario administrativo para ejecutarlo.
• dispositivo mkfs [opciones]: formatear una partición con un sistema de archivos
La indicación de uso anterior está ligeramente simplificada con respecto a la que se muestra en las páginas man , pero
representa los escenarios de uso esperados para 'Just Enough'.
Habiendo identificado o creado una partición usando fdisk , podemos crear una partición formateada de la siguiente manera
(asumiendo que la partición que queremos formatear es /dev/sda1 y usará el sistema de archivos predeterminado 'ext2');
sudo mkfs /dev/sda1
En nuestro caso de uso, ya tenemos una partición formateada en /dev/sda1 y recibimos la siguiente notificación;
mke2fs 1.42.12 (29 de agosto de
2014) /dev/sda1 contiene un sistema de archivos vfat etiquetado como 'SP UFD U2'
¿Procede de todas maneras? (s, n)
¡Una vez que superemos este punto, realizaremos algunos cambios serios en nuestro almacenamiento!
Habiendo hecho la debida deliberación, si decidimos continuar y presionar 'y', el proceso comienza imprimiendo los detalles
del sistema de archivos y luego escribiendo las tablas de inodos;
Creando un sistema de archivos con 7718388 bloques 4k y 1933312 inodos
UUID del sistema de archivos: 5d930bad3024476b86734b450855f537
Copias de seguridad de superbloques almacenadas en bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Asignación de tablas de grupo: hecho
Escritura de tablas de inodos: 177/236
Una vez completado, comenzará a escribir la información del superbloque y del sistema de archivos;
www.dbooks.org
Machine Translated by Google
Comandos Linux 128
Escribir superbloques e información de contabilidad del sistema de archivos: 10/236
Tenga cuidado, esta salida a veces puede parecer que se ha congelado. Ciertamente hay informes de ello en línea y lo he
visto yo mismo. Sin embargo, tenga un poco de paciencia (quizás 10 minutos más o menos) y debería completarse.
Una vez completado todo lo que queda es montar la partición y podemos usar el almacenamiento recién formateado.
El comando mkfs
Los sistemas de archivos se utilizan para controlar cómo se almacenan los datos en nuestras unidades y particiones, qué
otra información se adjunta a los datos en sí y cómo se controla el acceso a los datos. Los sistemas de archivos se mejoran
todo el tiempo para incluir más funcionalidad y eficiencia.
El comando mkfs se usa para formatear particiones como un tipo de sistema de archivos particular. El comando es la
abreviatura de make file system. El comando mkfs es en realidad una interfaz para varios comandos específicos del
sistema de archivos. No todos los comandos para todos los sistemas de archivos son compatibles con todas las
distribuciones. Podemos encontrar qué sistemas de archivos están disponibles en nuestro sistema revisando nuestro
directorio /sbin usando ls de la siguiente manera;
ls /sbin/mk* l
Esto debería mostrar algo similar a lo siguiente;
lrwxrwxrwx 1 raíz raíz 8 de noviembre de 2014 /sbin/mkdosfs > mkfs.fat
rwxrxrx 1 raíz raíz 100688 2 de marzo de 2015 /sbin/mke2fs rwxrxrx 1
raíz raíz 9704 5 de abril de 2015 /sbin/mkfs rwxrxrx 1 raíz raíz 22084 5
de abril de 2015 /sbin/ mkfs.bfs rwxrxrx 1 raíz raíz 30316 5 de abril de 2015 /
sbin/mkfs.cramfs
lrwxrwxrwx 1 raíz raíz 6 de marzo de 2015 /sbin/mkfs.ext2 > mke2fs 6 de
lrwxrwxrwx 1 raíz raíz marzo de 2015 /sbin/mkfs.ext3 > mke2fs
lrwxrwxrwx 1 raíz raíz 2 de marzo de 2015 /sbin/mkfs.ext4 > mke2fs 2 de
lrwxrwxrwx 1 raíz raíz marzo de 2015 /sbin/mkfs.ext4dev > mke2fs rwxrxrx 1
root root 30648 21 de noviembre de 2014 /sbin/mkfs.fat
rwxrxrx 1 raíz raíz 30364 5 de abril de 2015 /sbin/mkfs.minix
lrwxrwxrwx 1 raíz raíz 8 de noviembre de 2014 /sbin/mkfs.msdos > mkfs.fat
lrwxrwxrwx 1 raíz raíz 8 21 de noviembre de 2014 /sbin/mkfs.vfat > mkfs.fat
rwxrxrx 1 raíz raíz 17912 24 de enero 11:30 /sbin/mkhomedir_helper rwxrxrx 1 raíz
raíz 55164 5 de abril de 2015 /sbin/ mkswap
Aquí podemos ver que hay una gama de diferentes tipos de sistemas de archivos admitidos y, en algunos casos, hay
enlaces establecidos para garantizar que un comando específico se dirija a un programa apropiado.
Machine Translated by Google
Comandos Linux 129
Por lo tanto, la opción principal que debemos tener en cuenta al usar mkfs es la opción t que nos permite especificar el 'tipo'
del sistema de archivos.
Si bien el uso predeterminado de mkfs implementará el sistema de archivos ext2, podemos especificar otros de la siguiente
manera;
• etx3 : sudo mkfs t ext3 dispositivo •
etx4 : sudo mkfs t ext4 dispositivo •
msdos : sudo mkfs t msdos dispositivo
• bfs : sudo mkfs t bfs dispositivo
Algunos puntos de interés rápidos sobre los tres reproductores principales del sistema de archivos que se utilizan en Linux;
• ext2 :
– puede manejar hasta 4 TB –
la función de superbloque aumenta el rendimiento del sistema de archivos
– ext2 reserva el 5 % del espacio en disco para root
– ext2 es popular en USB y otros dispositivos de estado sólido porque no tiene una función de registro en diario,
por lo que generalmente hace menos lecturas y escribe en la unidad extendiendo la vida útil del dispositivo.
• ext3 :
– proporciona todas las funciones de ext 2 pero incluye registro en diario y compatibilidad con versiones
anteriores – puede actualizar ext2 a ext3 sin pérdida de datos.
– la función de diario acelera el sistema para recuperar el estado después de un corte de energía o
montaje incorrecto, desmontaje, etc.
• ext4:
– admite sistemas de archivos más grandes, verificación más rápida, marcas de tiempo de nanosegundos y verificación
del diario a través de sumas de verificación.
– Compatible hacia atrás y adelante con las versiones 2 y 3 – Sellado de tiempo
más rápido – Comprobación
más rápida del sistema de archivos –
Registro de sumas de
comprobación – Asignación automática de espacio para evitar la fragmentación
Pruébate
1. ¿Cómo puede averiguar qué sistemas de archivos son compatibles con su sistema operativo?
2. ¿Cuál es el sistema de archivos predeterminado que se usa con mkfs?
www.dbooks.org
Machine Translated by Google
Comandos Linux 130
montar
Una vez que un dispositivo de almacenamiento (CD Rom, disco duro, memoria USB, etc.) se ha particionado para su uso, necesitamos
usar el comando de montaje para montarlo en un sistema de archivos, hacerlo accesible y adjuntarlo a una estructura de directorio
existente. El comando rara vez se requiere para los sistemas basados en GUI que automatizan el proceso, pero para configurar
manualmente los sistemas de archivos o solucionar problemas, es muy útil comprender el comando de montaje .
• Montar [opciones] escriba el directorio del dispositivo: monte el almacenamiento en el sistema de archivos
Por ejemplo, después de conectar una memoria USB, podemos ejecutar los siguientes comandos para montar el almacenamiento;
sudo mkdir /mnt/usbdata
sudo mount /dev/sda1 /mnt/usbdata
El proceso se ha desarrollado en dos pasos.
1. Primero creamos un directorio vacío usando mkdir llamado usbdata que nos da un lugar para
montar el almacenamiento
2. Luego montamos el almacenamiento que se representa como un dispositivo en /dev/sda1 en nuestro nuevo directorio (/mnt/
usbdata).
Desde aquí podemos acceder al directorio con un CD y utilizar el almacenamiento a nuestro gusto.
Cosas a tener en cuenta:
Esto no es almacenamiento persistente. En otras palabras, no volverá a aparecer automáticamente si la computadora se apaga y se reinicia (o
se reinicia). Este es un ejemplo bastante simple y hay una amplia gama de diferentes tipos de almacenamiento que se pueden montar en una
amplia gama de
maneras.
El comando de montaje
El comando de montaje es uno de esos que cuando comienza a usarlo con confianza de manera regular, probablemente se sienta
bastante cómodo administrando Linux.
El sistema de archivos de Linux es una jerarquía de directorios que se utiliza para organizar nuestros archivos en un orden lógico
similar al siguiente;
Machine Translated by Google
Comandos Linux 131
Jerarquía de directorios
Cuando montamos nuestro nuevo almacenamiento, creamos un directorio para asociarlo con su punto de montaje.
La convención nos obliga a poner esto en el directorio '/mnt', pero podemos enlazar a esa posición desde otro punto si
queremos. De esta forma podemos hacer que el almacenamiento aparezca de una forma muy flexible.
Para montar nuevo almacenamiento debemos saber qué tipo de almacenamiento es, dónde se presenta al sistema operativo
como dispositivo y dónde lo vamos a montar.
Hay una larga lista de tipos de almacenamiento que pueden admitirse. Estos se pueden encontrar en la página del manual de
montaje . Podrían incluir; adfs, affs, autofs, btrfs, cifs, coda, coherente, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs,
hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs,
ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs o xiafs. El rango depende del soporte para el tipo en el kernel de Linux que se está
ejecutando (en otras palabras, varía).
Tenga en cuenta que no estamos decidiendo qué tipo usar cuando implementamos el comando de montaje .
El tipo lo establece la configuración del medio de almacenamiento.
El ejemplo que usamos anteriormente en esta sección no especificaba un tipo. La buena noticia es que el montaje a menudo
puede detectar automáticamente el tipo, lo que nos facilita la vida. Algunos de los más comunes y con mayor probabilidad de
ser detectados automáticamente son;
• ext4: este es probablemente el tipo de sistema de archivos de Linux más común y reciente •
ext3: el tipo de sistema de archivos de Linux anterior más común • ntfs: un
sistema de archivos de Windows común para discos duros externos más grandes • vfat: un
sistema de archivos de Windows común para discos duros externos más pequeños
Si un tipo de sistema de archivos no se detecta automáticamente, esto podría deberse a;
• No tener herramientas de sistema de archivos instaladas para el sistema de archivos elegido. Por ejemplo, para montar
unidades ntfs en versiones anteriores de Ubuntu, habríamos tenido que instalar el paquete ntfs3g .
www.dbooks.org
Machine Translated by Google
Comandos Linux 132
• Puede que hayamos seleccionado la partición
equivocada. • La partición de almacenamiento puede estar corrupta o sin formato.
Cuando se introduce un nuevo almacenamiento en la computadora, debería aparecer en el directorio /dev . Para los no
iniciados, no será inmediatamente obvio qué dispositivo usar, ya que habrá bastantes allí.
Es más probable que las unidades extraíbles y las unidades de disco duro estándar se representen como "discos SCSI",
que se abrevia como "sd". El primer dispositivo que cumpla con los criterios de 'disco SCSI' se designará como 'sda', el
segundo como 'sdb' y así sucesivamente. La unidad debe particionarse para su uso como parte del proceso de formateo y,
como tal, tendrá al menos una partición. Esta primera partición se designa con un valor numérico por lo que nuestro
dispositivo podría ser 'sda1'. Las particiones adicionales serían 'sda2', 'sda3'
etc.
Sería posible enumerar (ls) el contenido del directorio /dev antes de agregar el almacenamiento y después de agregarlo, lo
que podría indicar el nombre del dispositivo, pero un método mucho más confiable es usar el comando fdisk para enumerar
las particiones disponibles. Esto lo podemos hacer con el siguiente comando;
sudo fdisk l
La salida puede ser relativamente larga según el almacenamiento instalado, pero aquí podemos ver la información
resultante al conectar una memoria USB de 32 GB (solo se muestra la información de la memoria USB);
Disco /dev/sda: 29,5 GiB, 31614566400 bytes, 61747200 sectores Unidades:
sectores de 1 * 512 = 512 bytes Tamaño del sector
(lógico/físico): 512 bytes / 512 bytes Tamaño de E/S (mínimo/óptimo):
512 bytes / 512 bytes Tipo de etiqueta de disco: dos
Identificador de disco: 0xc3072e18
Efectivamente, podemos ver el identificador /dev/sda1 que es específico para el dispositivo.
El último paso antes del montaje es crear un punto de montaje para el almacenamiento. Hacemos esto simplemente
creando un directorio vacío. Por convención, el directorio /mnt se usa para montar dispositivos de almacenamiento como
CDROM y unidades USB, y la ubicación final del punto de montaje deberá dejarse a las necesidades de los usuarios.
Mirando de nuevo nuestro ejemplo anterior;
Machine Translated by Google
Comandos Linux 133
sudo mkdir /mnt/usbdata
sudo mount /dev/sda1 /mnt/usbdata
Creamos un directorio que servirá como punto de montaje de salida en el directorio /mnt llamado usbdata. Luego le
indicamos a la computadora que monte el dispositivo en /dev/sda1 en el directorio /mnt/usbdata.
El comando no especifica un tipo y, por lo tanto, usaremos el predeterminado.
Una vez hecho esto podemos navegar hasta el directorio para explorarlo. También podemos confirmar su existencia
usando el comando de montaje por sí solo. Si solo ejecutamos el comando mount de la siguiente manera;
montar
Se nos presentará una lista de monturas presentes en el sistema. La respuesta que es específica para nuestra unidad
montada recientemente será similar a la siguiente;
/dev/sda1 en /mnt/tipo de datos vfat
Esto nos dice el dispositivo, el punto de montaje y el tipo (vfat). Puede haber información adicional que describa cómo
se configura el almacenamiento montado. Si bien es interesante, nos negaremos a explorar esto ya que el libro se
llama 'Just Enough Linux', no 'In Depth Linux'.
Ninguna descripción del comando de montaje podría dejar de mencionar el archivo /etc/fstab . fstab significa tabla de
sistema de archivos y el archivo fstab contiene la información que automatiza el proceso de montaje de particiones.
Por lo general, este archivo contendrá entradas para dispositivos internos, como CDROM o recursos compartidos de
red. Los que tienen la expectativa de montarse en el maletero. Sin embargo, puede contener información que describa
cómo se debe realizar un montaje, pero especifique 'noauto' para evitar que ocurra automáticamente en el arranque.
Esto permite el uso del comando de montaje con la opción a que montará todos los sistemas de archivos
especificados en fstab. (suponiendo que exista el punto de montaje del directorio).
montar a
Pruébate
1. Si conectó dos unidades USB externas, ¿cuáles podrían ser las designaciones probables de sus dispositivos?
y donde se puede comprobar esto?
2. Si utiliza el comando de montaje para montar una unidad, ¿aparecerá montada de nuevo después de un
¿reiniciar?
www.dbooks.org
Machine Translated by Google
Comandos Linux 134
desmontar
Una vez que se ha montado un dispositivo de almacenamiento (CD Rom, disco duro, memoria USB, etc.), necesitamos
usar el comando umount para desmontarlo de un sistema de archivos. Desmontar un sistema de archivos de forma
limpia es una buena práctica y posiblemente podría reducir la posibilidad de que los datos no se guarden correctamente
en el almacenamiento si un proceso no se ha completado. Normalmente, el comando solo sería necesario después de
montar una unidad mediante mount.
• umount [opciones] dispositivo y/o directorio: desmontar el almacenamiento del sistema de archivos
Por ejemplo, después de conectar una memoria USB y montarla desde el dispositivo /dev/sda1 en /mnt/usbdata,
podemos ejecutar el siguiente comando para desmontar el almacenamiento;
sudo umount /mnt/usbdata
El comando desmontar
El comando umount se usa para desmontar manualmente sistemas de archivos en sistemas operativos Linux.
Este es el proceso inverso al realizado con el comando de montaje .
Si recordamos el comando de montaje , especificamos el tipo de almacenamiento, el nombre del dispositivo (en el
directorio /dev ) y dónde queríamos montarlo.
Un uso típico podría ser el siguiente;
sudo mkdir /mnt/usbdata
sudo mount /dev/sda1 /mnt/usbdata
Aquí hemos creado un directorio que servirá como punto de montaje en el directorio /mnt llamado usbdata. Luego le
indicamos a la computadora que monte el dispositivo en /dev/sda1 en /mnt/usbdata.
No hemos proporcionado un tipo ya que, por lo general, la montura puede resolverlo automáticamente por nosotros.
Desmontar un sistema de archivos puede ser sustancialmente más fácil ya que el proceso de montar un dispositivo ha
hecho el trabajo duro en términos de especificar los detalles de configuración. Eso significa que solo necesitamos
proporcionar el nombre del dispositivo (/dev/sda1 en este caso) o el punto de montaje (/mnt/usbdata). Podemos ejecutar
el comando con esta pequeña información, ya que tanto el nombre del dispositivo como el punto de montaje son
exclusivos del almacenamiento montado.
Por lo tanto, los tres comandos siguientes son equivalentes entre sí;
sudo umount /dev/sda1
sudo umount /mnt/usbdata
Machine Translated by Google
Comandos Linux 135
sudo umount /dev/sda1 /mnt/usbdata
Los sistemas de archivos montados se desmontan automáticamente cuando una computadora se apaga de manera
normal. Sin embargo, hay ocasiones en las que es necesario desmontar un sistema de archivos individual mientras la
computadora aún está en funcionamiento. Un ejemplo típico es cuando se extrae un dispositivo externo, como una
memoria USB. Si eliminamos este tipo de almacenamiento antes de que el sistema de archivos se desmonte
correctamente, es posible que los datos escritos recientemente en él no se guarden correctamente.
Desmontar un sistema de archivos a veces puede provocar que se presenten errores en la pantalla. El informe más
común es que el sistema de archivos está ocupado. Esto sería una indicación de que actualmente está siendo utilizado
por algún proceso. Esto podría ocurrir si un archivo que estaba en el sistema de archivos estaba abierto o incluso algo
tan simple como una ventana en una GUI de escritorio que muestra los archivos que se muestran. Esto se puede
remediar cerrando cualquier archivo o ventana abierta.
Pruébate
1. ¿Permanecerá en su lugar el directorio en el que se montó el sistema de archivos si el sistema de archivos está
¿desmontado?
www.dbooks.org
Machine Translated by Google
Comandos Linux 136
Información del sistema
fecha
El comando de fecha se puede usar para mostrar la fecha/hora en que está configurada la computadora o para
configurar la fecha/hora del sistema. Este comando puede ser útil simplemente para indicar la fecha o la hora o para
un propósito más serio para establecer la configuración del sistema.
• fecha [opciones] +formato: mostrar o establecer la fecha / hora
El uso más simple del comando de fecha se encuentra ejecutando el comando por sí mismo;
fecha
Esto dará como resultado algo como lo siguiente:
sábado 23 de enero 15:26:14 NZDT 2016
En el fondo, el comando de fecha tiene un modelo de uso simple, pero va acompañado de algunas opciones de
formato considerables.
El comando de fecha
El comando de fecha se llama así debido a su asociación con la fecha y la hora. Como tal, su uso se centra en un par
de funciones principales. La primera es que se puede invocar para informar la hora. Esto se puede formatear de una
manera especificada por el usuario. La segunda función importante es permitir al usuario configurar la fecha/hora del
sistema.
Asociado con el informe y la fecha / hora de configuración está el formato de cada uno en el comando.
El formato de visualización puede verse afectado por el uso del símbolo más (+) y luego algunas instrucciones de
formato en forma de una cadena de opciones. Por ejemplo, para imprimir solo el mes actual usando su nombre
completo, podemos usar el control de formato %B de la siguiente manera;
fecha +"%B"
Esto dará como resultado algo como lo siguiente:
Enero
Estas opciones de visualización se pueden combinar para crear un contexto significativo. Por ejemplo;
Machine Translated by Google
Comandos Linux 137
fecha +"Esta es la semana %U de %Y"
Mostrará el texto "Esta es la semana " seguido del número de la semana del año y luego el "" y luego el año completo. Similar a
“
texto de lo siguiente;
Esta es la semana 04 de 2016
La lista de controles de formato es la siguiente;
• %% un % literal
• El nombre abreviado del día de la semana de %a localidad (p. ej.,
Sun) • El nombre completo del día de la semana de %A
localidad (p. ej., domingo) • El nombre abreviado del mes de %b
localidad (p. ej., enero) • El nombre completo del mes de %B
localidad (p. ej., enero) • % c fecha y hora del entorno local (p. ej., jueves 3 de
marzo 23:05:25 2005) • siglo %C ; como %Y, excepto que omite los dos
últimos dígitos (p. ej., 20) • %d día
del mes (p. ej., 01) • %D fecha; igual
que %m/%d/%y • %e día del mes, relleno con espacios; igual
que %_d • %F fecha completa; igual que
%Y%m%d • %g últimos dos dígitos del año del número de semana ISO
(ver %G) • %G año del número de semana ISO (ver %V); normalmente útil solo con %V
• %h igual que %b
• %H hora (00..23) • %I
hora (01..12) • %j día
del año (001..366) • %k hora,
espacio rellenado ( 0..23); igual que %_H • %l hora, relleno
con espacio ( 1..12); igual que %_I • %m mes (01..12) • %M
minuto (00..59) • %n una
nueva línea • %N
nanosegundos
(000000000..999999999) • %p equivalente local de AM o
PM; en blanco si no se conoce • %P como %p, pero en minúsculas • %r hora del reloj
de 12 horas de la localidad (p. ej.,
11:11:04 p. m.) • %R hora y minuto de 24 horas; igual que %H:%M •
%s segundos desde 19700101 00:00:00 UTC
• %S segundo (00..60) •
%t una pestaña
• %T tiempo; igual que %H:%M:%S
www.dbooks.org
Machine Translated by Google
Comandos Linux 138
• %u día de la semana (1..7); 1 es lunes • %U
número de semana del año, con el domingo como primer día de la semana (00..53) •
%V Número de semana ISO, con el lunes como primer día de la semana (01..53) •
%w día de la semana (0..6); 0 es domingo •
%W número de semana del año, con el lunes como primer día de la semana (00..53) •
Representación de fecha de %x localidad (p. ej., 31/12/99) •
Representación de hora de %X localidad (p. ej., 23: 13:48) •
%y últimos dos dígitos del año (00..99) • %Y
año • %z
+hhmm zona horaria numérica (p. ej., 0400) • %:z
+hh:mm zona horaria numérica (p. ej., 04:00) • %::z
+hh:mm:ss zona horaria numérica (p. ej., 04:00:00) • %:::z zona
horaria numérica con : con la precisión necesaria (p. ej., 04, + 05:30) • %Z abreviatura de zona
horaria alfabética (p. ej., EDT)
Debido a que la acción predeterminada de la fecha es rellenar los campos numéricos con ceros, también tenemos un rango
de banderas opcionales que pueden seguir al signo % para modificar los controles de formato. Esas banderas opcionales
son;
• (guión) no rellenar el campo _ (guion
•
bajo) rellenar con espacios • 0 (cero)
rellenar con ceros
•
ˆ use mayúsculas si es posible #
• use mayúsculas si es posible
Por ejemplo, en la salida anterior, el número de semana del año se devolvió como 04. Si quisiéramos eliminar cualquier
cero inicial en esa cifra, podríamos usar el comando de la siguiente manera;
fecha +"Esta es la semana %U de %Y"
Que mostrará lo siguiente;
Esta es la semana 4 de 2016
Opciones
Si bien hay algunas opciones disponibles, la opción más útil cuando se usa la fecha es;
• d muestra la hora especificada por una cadena adjunta • s establece
la hora
• u establece o imprime la hora universal coordinada (UTC)
Machine Translated by Google
Comandos Linux 139
De forma predeterminada, el uso de la fecha sin opciones informará sobre la hora actual. Sin embargo, la
opción d nos permite solicitar que la computadora muestre una fecha especificada por una cadena definida
por el usuario. Por ejemplo, para mostrar la fecha del cuatro de julio de 2001, podríamos ingresar el comando;
fecha d "4 DE JULIO DE 2001"
Que mostrará lo siguiente;
miércoles 4 de julio 00:00:00 NZST 2001
Podríamos ser perdonados por pensar que este es un buen truco, pero a menos que realmente quisiéramos
saber que el 4 de julio de 2001 era miércoles, tenía poca utilidad. Sin embargo, la cadena definida por el
usuario puede incluir más descripciones legibles por humanos que podrían ser útiles. Por ejemplo, podríamos
ingresar cualquiera de las siguientes cadenas y obtener una salida válida;
fecha d "ahora"
fecha d "el próximo jueves"
fecha d "ayer"
fecha d "año pasado"
fecha d "hace 4 días"
fecha d "hoy 1 año" fecha d
"ayer 1 año"
La configuración de la hora se realiza con la opción s . Debido a que esta es una función que puede tener
consecuencias de gran alcance para el sistema en su conjunto, está restringida a aquellos con privilegios de
administrador. Por lo tanto, debemos anteponer el comando de fecha con sudo o ejecutar el comando como
usuario raíz.
El siguiente comando establecerá la fecha y hora del 24 de enero de 2016 a las 7:12;
fecha sudo s "24 de enero de 2016 07:12:00"
Hay bastante flexibilidad en el formato de la hora que se especifica, pero debido a que el comando puede ser
lo suficientemente inteligente como para ajustar algunas cosas y no otras o para tomar el comando en su valor
nominal literal, es mejor ser tan preciso como sea posible.
El tiempo universal coordinado (que se abrevia como UTC) es el estándar de tiempo principal por el cual el
mundo regula los relojes y el tiempo. Anteriormente se conocía como hora media de Greenwich (GMT) y,
aunque se considera que UTC es intercambiable con GMT, la comunidad científica ya no la define con
precisión. Del mismo modo, la hora 'zulú' es una descripción de GMT que utiliza la representación fonética de
'Z'. El uso de UTC es común en los círculos militares y de aviación, ya que representa un punto de referencia
común para el tiempo a escala global.
www.dbooks.org
Machine Translated by Google
Comandos Linux 140
También es posible mostrar la hora UTC usando la opción u . (Aunque también se puede configurar
usando esta opción, esto no sería algo que probablemente debería hacer alguien que lea un libro llamado
'Just Enough Linux').
Pruébate
1. Dar formato a un comando de fecha para informar la fecha y la hora mostrando el nombre completo
del día de la semana, el número de la semana en el año (sin ceros a la izquierda) y el año en el
formato "Domingo de la semana 4 de 2016"
2. Use el comando de fecha para informar el tiempo Zulu en segundos desde la época de Unix (usted
probablemente necesite buscar esto en Google para averiguar qué es).
Machine Translated by Google
Comandos Linux 141
d.f.
El comando df se usa para informar la cantidad de espacio libre disponible en los sistemas de archivos. Este es un comando
vital para conocer los recursos disponibles en un sistema y uno de los comandos de 'ir a' para solucionar problemas de
sistemas donde el volumen de almacenamiento puede ser limitado.
• Archivo df [opciones]: muestra la cantidad de espacio libre en los sistemas de archivos.
Por ejemplo, usar el comando df solo (sin ninguna opción) podría producir algo como lo siguiente;
d.f.
Produce…
archivos /dev/ 7549084 1055236 6159348 15% /
La primera columna muestra el nombre de la partición del disco tal como aparece en el directorio /dev . Las siguientes
columnas muestran el espacio total, los bloques asignados y los bloques disponibles. La columna de capacidad indica la
cantidad utilizada como porcentaje de la capacidad total del sistema de archivos.
La última columna muestra el punto de montaje del sistema de archivos. Este es el directorio donde se monta el sistema de
archivos dentro del árbol del sistema de archivos . Tenga en cuenta que la partición raíz siempre mostrará un punto de
montaje de /.
El comando DF
El comando df lleva el nombre de la abreviatura de las palabras 'disk free' y lleva a cabo esta función exacta al informar la
cantidad de espacio utilizado y disponible en los sistemas de archivos montados .
Es una perogrullada de la informática que las necesidades de almacenamiento aumentan para adaptarse al espacio
disponible, por lo que vale la pena tener un conjunto de herramientas disponibles que puedan determinar la cantidad de
volumen que tenemos en cualquier pieza particular de almacenamiento conectado. Solo por esta razón, se recomienda
encarecidamente tener un buen conocimiento práctico de df y su antiguo compañero du .
Si bien hay varias opciones disponibles, la opción más útil cuando se usa df es h , que informará el espacio en un formato
legible por humanos para que...
www.dbooks.org
Machine Translated by Google
Comandos Linux 142
dfh
… Producirá …
Sistema de Tamaño utilizado % de uso disponible Montado en
archivos /dev/root 7.2G 1.1G 5.9G 15% /
devtmpfs 459M 0 459M 0% /desv.
tmpfs 463M 0 463M 0% /desv/shm
tmpfs 463M 6.3M 457M 2% /ejecutar tmpfs 5.0M 4.0K 5.0M
1% /ejecutar/bloquear 0 463M 0% /sys/fs/cgroup tmpfs /dev/
463M mmcblk0p1 60M 20M 41M 34% /
arranque
Aquí podemos ver que los tamaños de los sistemas de archivos se informan en kilobytes (K), megabytes
(M) y gigabytes (G).
También podemos ser específicos al informar el espacio libre en un dispositivo en particular proporcionando
la ruta al directorio en el comando;
df /
… Producirá …
archivos /dev/root 7549084 1055592 6158992 15% /
También podemos determinar el espacio disponible en un sistema de archivos especificando un directorio
en particular y el comando informará el espacio restante en el dispositivo que contiene el directorio en
particular;
df /casa
… por lo tanto producirá …
archivos /dev/root 7549084 1055592 6158992 15% /
Tenga en cuenta que los valores devueltos para este comando son los mismos que para df /. Eso es
porque el directorio / y /home existen en el mismo dispositivo montado (/dev/root)
Machine Translated by Google
Comandos Linux 143
df obtiene la mayor parte de su información del superbloque de un sistema de archivos (que es un registro de las
características de un sistema de archivos) y, como resultado, toma esta información al pie de la letra y no incluye
archivos abiertos en el disco, pero incluirá archivos abiertos en la memoria y archivos de datos/índice utilizados
para la gestión de datos. Como resultado, no se puede confiar en que df muestre una indicación totalmente precisa
del espacio libre.
Pruébate
1. ¿Cuál sería un valor de espacio disponible dado como 659348 (usando el comando df estándar )
sería si se usara el modificador h ?
www.dbooks.org
Machine Translated by Google
Comandos Linux 144
du
El comando du se usa para informar la cantidad de espacio utilizado por archivos y directorios. Este es un comando
vital para conocer los recursos disponibles en un sistema y uno de los comandos de 'ir a' para solucionar problemas
de sistemas donde el volumen de almacenamiento puede ser limitado.
• archivo du [opciones]: muestra la cantidad de espacio utilizado en archivos y directorios
Por ejemplo, usando el comando du para examinar el espacio usado en el directorio /var/log y sus subdirectorios de
la siguiente manera...
du /var/registro
… produce …
12 /var/log/fsck /var/
4 log/ntpstats /var/log/
48 apt /var/log/
4 samba /var/log
2932
La primera columna muestra el número de bloques de disco utilizados en cada directorio (recordando por supuesto
que /var/log es el directorio más bajo y los demás son subdirectorios del mismo). La segunda columna es el directorio
sobre el que se informa.
el comando du
El comando du lleva el nombre de la abreviatura de las palabras " uso del disco" e informa los tamaños de directorios,
árboles de directorios y archivos.
Es una perogrullada de la informática que las necesidades de almacenamiento aumentan para adaptarse al espacio
disponible, por lo que vale la pena tener un conjunto de herramientas disponibles que puedan determinar la cantidad
de volumen que tenemos en cualquier pieza particular de almacenamiento conectado. Solo por esta razón, se
recomienda encarecidamente tener un buen conocimiento práctico de du y su antiguo compañero df .
Si bien hay varias opciones disponibles, la opción más útil cuando se usa du son;
• h proporciona un formato de volumen legible por humanos
• s proporciona un total resumido del uso del disco •
time incluye la hora de la última modificación en la salida
Ingresando el mismo comando que ejecutamos para el directorio /var/log , pero con la opción h se nos presenta un
reporte diferente de los tamaños de los directorios;
Machine Translated by Google
Comandos Linux 145
du h /var/registro
… produce …
12K /var/log/fsck /var/
4.0K log/ntpstats /var/log/apt /
48K var/log/samba /
4.0K var/log
3,1 millones
Aquí podemos ver que los tamaños de los directorios se informan como kilobytes (K), megabytes (M).
También se pueden representar como gigabytes (G), terabytes (T), petabytes (P), exabytes (E), zettabytes
(Z) y yottabytes (Y).
A modo ilustrativo, parece poco probable que los yottabytes se utilicen comúnmente
en el futuro inmediato dado que equivalen a 1 000 000 000 000 000 000 000 000
bytes. Aunque me sentiría cómodo estando equivocado en este punto.
Producir una lectura resumida del disco utilizado con la opción s nos permite devolver solo una lectura
específica. Por ejemplo;
du s /var/log
… produce …
3152 /var/registro
Dado que este comando es enormemente útil para encontrar fallas, también es útil para obtener una
indicación de la hora de la última modificación de un directorio. Esto ayuda porque si tenemos un proceso
que está escribiendo en un directorio y llenándolo, a veces el directorio más grande no será la escena
del crimen, pero sí lo será el directorio más reciente. Esta comprobación se puede realizar con la opción time ;
df tiempo /var/registro
… Producirá …
www.dbooks.org
Machine Translated by Google
Comandos Linux 146
pi@raspberrypi:~ $ du time /var/log
12 20151122 07:51 /var/log/fsck /var/
4 20151102 17:31 log/ntpstats /var/log/
48 20160116 16:41 apt /var/log/
4 20150308 01:13 samba /var/log
3152 20160123 07:52
Una restricción de du es que los tamaños de directorios y archivos que informa no son números exactos y son
solo aproximaciones. Sin embargo, esto no resta valor a su función de determinar dónde podrían estar
ocurriendo los problemas. La otra restricción es que du solo se puede usar para estimar el espacio utilizado
para directorios y archivos para los que el usuario tiene permiso de lectura. Es posible que en algunos casos
necesitemos usar sudo o ser un usuario con privilegios de administrador del sistema para ejecutar el comando
con éxito (en algunos casos).
Pruébate
1. ¿Qué opciones se utilizarían con du para devolver una indicación resumida del espacio utilizado con
la hora de modificación mostrada?
Machine Translated by Google
Comandos Linux 147
gratis
El comando free muestra la cantidad total de memoria física y de intercambio libre y utilizada en el sistema, así como
los búferes utilizados por el kernel y la memoria compartida. De la misma manera que df y du pueden informar cómo se
utiliza el espacio de almacenamiento en los medios de almacenamiento físicos, el comando free puede mostrar cómo
se utiliza la memoria (ram). Este es otro comando útil para solucionar problemas y comprender el rendimiento del
sistema.
• libre [opciones]: muestra información sobre la memoria libre y utilizada en el sistema
Por ejemplo, si escribimos el comando de la siguiente manera, veremos una interesante variedad de información;
gratis
… produce …
Esto muestra la cantidad total de memoria física y de intercambio libre y utilizada en el sistema, así como los búferes
utilizados por el kernel. La fila etiquetada como 'Mem' también muestra la cantidad de memoria asignada a los búferes,
cachés y cuánta memoria se comparte.
La salida del comando libre puede malinterpretarse fácilmente, ya que no es inmediatamente obvio sobre qué 'actividad'
de la memoria se informa, por lo que es útil tomarse un poco de tiempo para obtener una buena base en los términos
para formar una mejor comprensión.
El comando libre
El comando free se llama así por su capacidad para informar sobre la cantidad de memoria libre disponible en un
sistema. Pero lo que debería ser obvio del resultado del ejemplo anterior es que la memoria se usa de muchas maneras
diferentes.
En primer lugar, seamos claros a qué nos referimos cuando hablamos de memoria. Específicamente, esta es la memoria
utilizada cuando la computadora está ejecutando aplicaciones/sistema operativo y, en general, procesa datos. Se ocupa
principalmente de la asignación de memoria de acceso aleatorio (RAM) en contraposición a la memoria en forma de
discos duros o similares que almacenarán información de manera persistente.
Sin embargo, incluye algo de memoria que existirá en los discos duros para complementar la memoria RAM.
www.dbooks.org
Machine Translated by Google
Comandos Linux 148
Memoria RAM
Para comprender mejor la salida, debemos considerarla línea por línea y examinar las diversas combinaciones de filas y
columnas.
Memoria
La línea Mem se refiere a la memoria física disponible en el sistema
Búferes/caché
Un búfer, también llamado memoria intermedia, generalmente se define como una parte de la memoria que se reserva
como un lugar de almacenamiento temporal para los datos que se envían o reciben desde un dispositivo externo, como
un disco duro, un teclado, una impresora o una red. El caché es una ubicación de memoria para almacenar datos de uso
frecuente para un acceso más rápido. Los datos de caché se pueden usar varias veces, mientras que la memoria
intermedia se usa solo una vez. Y ambos son almacenes temporales para su procesamiento de datos.
Esta línea es especialmente relevante con respecto a las aplicaciones, ya que los datos a los que se accede desde los
archivos pasan por la memoria caché. Por lo tanto, el caché puede acelerar el acceso a los datos al reducir el requisito
de leer/escribir desde/hacia el disco duro u otro almacenamiento (dado que el acceso a los discos duros y similares es
más lento que la RAM).
Intercambio
El intercambio se refiere a la memoria que se ha asignado en un disco duro o almacenamiento similar para ayudar al
sistema a hacer frente a situaciones en las que se ha quedado sin RAM. El uso de espacio de intercambio puede ser una
indicación de que un sistema podría requerir más recursos, aunque a veces esta necesidad puede ser extremadamente
infrecuente y el uso podría considerarse una compensación aceptable para agregar más RAM que podría no usarse con
mucha frecuencia.
Tenga en cuenta que cuando se usa la memoria de intercambio, la cantidad que se muestra como
libre aumentará, pero incluso cuando termine, la cantidad 'usada' seguirá mostrando ese valor más
alto (ya que el espacio al que se refiere la memoria técnicamente ha sido utilizado ). Esto puede
ser confuso y posiblemente podría llevarnos a pensar que hay un uso constante de la memoria de
intercambio cuando en realidad fue momentáneo.
Total
La columna total se refiere a la cantidad total de memoria disponible en la RAM o en el disco duro (o similar) como
memoria compartida.
Usado
Machine Translated by Google
Comandos Linux 149
La columna 'usado' es potencialmente la más confusa. Esta es una combinación de memoria en uso para aplicaciones y otra
memoria utilizada 'temporalmente' (búfer + caché) que está disponible si es necesario. Entonces, mientras la memoria se
usa para el área de búfer / caché, gran parte de esta memoria está disponible si una aplicación lo requiere. La memoria
utilizada 'temporalmente' se toma prestada si está disponible para ayudar a mejorar el rendimiento; de lo contrario, el sistema
tendría que leer del disco con más frecuencia. Gran parte de este tipo de memoria se muestra en la columna "en caché".
Gratis
Esta es memoria libre lista para ser utilizada cuando sea necesario.
Compartido
La memoria compartida es un método de comunicación entre procesos mediante el cual varios procesos comparten una sola
porción de memoria para comunicarse. La columna compartida enumera la cantidad de memoria compartida entre esos
múltiples procesos. A menudo aparece como obsoleto, pero la columna de memoria compartida representa el valor de
MemShared (en los núcleos de la serie 2.4) o el valor de Shmem (en los núcleos de la serie 2.6 y posteriores) tomados del
archivo /proc/meminfo. El valor es cero si el núcleo no exporta ninguna de las entradas.
tampones
La columna de búferes muestra la cantidad de memoria utilizada por la memoria caché del búfer del kernel. La memoria
caché del búfer se utiliza para acelerar las operaciones del disco, al permitir que las lecturas y escrituras del disco se realicen
directamente desde la memoria. El tamaño de la memoria caché del búfer aumentará o disminuirá a medida que cambie el
uso de la memoria en el sistema. Esta memoria se reclama si las aplicaciones la necesitan.
en caché
La columna de caché nos dice cuántas páginas de memoria ha almacenado el núcleo para un acceso más rápido más tarde.
Dado que la memoria utilizada para los búferes y la caché se puede recuperar fácilmente para que la usen las aplicaciones,
la fila /+ búferes/caché proporciona una indicación de la memoria que realmente usan las aplicaciones (la columna utilizada )
o disponible para las aplicaciones (la columna libre ). La suma de la memoria utilizada por los búferes y la caché que se
informa en la fila Mem se resta de la memoria utilizada total y se suma a la memoria libre total para dar los valores usados y
libres en las dos cifras de la fila /+ búferes/caché .
Cálculo de búferes usados/memoria en caché
www.dbooks.org
Machine Translated by Google
Comandos Linux 150
Cálculo de búferes libres/memoria en caché
Opciones
Si bien hay varias opciones disponibles, la opción más útil cuando se usa gratis es h , que informará el espacio
en un formato legible por humanos para que...
libre h
… Producirá …
Aquí podemos ver que los tamaños de la cantidad de memoria libre se informan en megabytes (M). También se
pueden representar como bytes (B), kilobytes (K), gigabytes (G) y terabytes (T).
libre informará que hay un poco menos de memoria en una computadora que el total real. Esto se debe
principalmente a que el kernel siempre permanece en la memoria principal mientras la computadora está en
funcionamiento y, por lo tanto, la memoria que ocupa nunca se puede liberar. También puede haber regiones
de memoria que se reservan para otros fines, según la arquitectura específica del sistema.
Pruébate
1. La cantidad total de intercambio usado es alta con muy poco libre. ¿Es esto malo? ¿Qué pasaría si vieras
exactamente la misma figura 24 horas después de notarlo por primera vez?
2. ¿La memoria 'compartida' es relevante hoy en día?
Machine Translated by Google
Comandos Linux 151
Procesos
crontab
El comando crontab le da al usuario la capacidad de programar tareas para que se ejecuten en un momento específico o con
un intervalo específico. Si desea ir más allá del uso de Linux desde una interfaz gráfica de usuario, lo más probable es que
desee programar una tarea para que se ejecute en un momento o intervalo determinado. Incluso el simple hecho de aprender
sobre esto podría darle ideas de lo que podría hacer.
• crontab [u usuario] [l | r | e]: programe una tarea para que se ejecute en un momento o intervalo determinado
Por ejemplo, puede programar una secuencia de comandos para que se ejecute todos los días para llevar a cabo un proceso de copia de
seguridad en medio de la noche. o capturar algunos datos cada hora para almacenarlos en una base de datos.
El comando crontab
El comando crontab es una concatenación de 'tabla cron' porque utiliza el programador de trabajos cron para ejecutar tareas
que se almacenan en una especie de 'tabla' en el archivo crontab de los usuarios. cron lleva el nombre de 'Khronos', la
personificación griega del tiempo.
Si bien cada usuario que configura un trabajo para que se ejecute con crontab crea un archivo crontab, el archivo no está
diseñado para ser editado a mano. Se encuentra en diferentes ubicaciones en diferentes tipos de distribuciones de Linux y el
mecanismo más confiable para editarlo es ejecutar el comando crontab e . Cada usuario tiene su propio archivo crontab y el
usuario root puede editar el archivo crontab de otro usuario. Esto sería
Sea la situación en la que usaríamos la opción u , pero honestamente, una vez que lleguemos a esa etapa, probablemente
se puede asumir que sabemos bastante sobre Linux.
Solo hay tres opciones principales que se usan con crontab.
Opciones
La primera opción que debemos examinar es la opción l que nos permite listar el archivo crontab;
crontabl
Una vez ejecutado, mostrará una lista del contenido del archivo crontab directamente en la pantalla. La salida se verá algo
así como;
www.dbooks.org
Machine Translated by Google
Comandos Linux 152
# Edite este archivo para introducir tareas que ejecutará cron.
#
# Cada tarea a ejecutar debe definirse a través de una sola línea # indicando con diferentes campos
cuándo se ejecutará la tarea
# y qué comando ejecutar para la tarea
#
# Para definir el tiempo, puede proporcionar valores concretos para # minuto (m), hora (h), día
del mes (dom), mes (mon), # y día de la semana (dow) o use '*' en estos campos (para
'cualquiera').# # Tenga en cuenta que las tareas se iniciarán según el sistema del cron
# La noción de daemon de tiempo y zonas horarias.
#
# La salida de los trabajos crontab (incluidos los errores) se envía por # correo electrónico al usuario al que
pertenece el archivo crontab (a menos que se redirija).
#
# Por ejemplo, puede ejecutar una copia de seguridad de todas sus cuentas de usuario # a las 5 am cada
semana con: # 0 5 * * 1 tar zcf /var/backups/
home.tgz /home/
#
# Para obtener más información, consulte las páginas de manual de crontab(5) y cron(8)
#
# mh dom mon dow comando
*/10 * * * * /usr/bin/php /home/pi/scrapebooks.php
Aquí podemos ver que la parte principal del archivo (de hecho, todo excepto la línea final) son comentarios que explican
cómo incluir una entrada en el archivo crontab.
La entrada en este caso está especificada para ejecutarse cada 10 minutos y, cuando lo haga, ejecutará el script PHP
scrapebooks.php (explicaremos cómo se codifica esto más adelante en la sección de ejemplos).
Si queremos eliminar el crontab actual podemos usar la opción r . Probablemente no sea algo que haríamos regularmente,
ya que sería más probable editar el contenido en lugar de simplemente eliminarlo al por mayor.
Por último, existe la opción de editar el archivo crontab que se inicia con e. Esta es la opción principal que se usaría y la
que cubriremos en detalle en los ejemplos a continuación.
Ejemplos
Como ejemplo, considere que deseamos ejecutar un script de Python todos los días a las 6 am. El siguiente comando nos
permitirá editar el crontab;
crontab e
Una vez ejecutado, se abrirá crontab en el editor predeterminado de su sistema (lo más probable es que sea 'vi', 'vim' o
'nano'). El archivo se verá de la siguiente manera;
Machine Translated by Google
Comandos Linux 153
# Edite este archivo para introducir tareas que ejecutará cron.
#
# Cada tarea a ejecutar debe definirse a través de una sola línea # indicando con diferentes campos
cuándo se ejecutará la tarea
# y qué comando ejecutar para la tarea
#
# Para definir el tiempo, puede proporcionar valores concretos para # minuto (m), hora (h), día
del mes (dom), mes (mon), # y día de la semana (dow) o use '*' en estos campos (para
'cualquiera').# # Tenga en cuenta que las tareas se iniciarán según el sistema del cron
# La noción de daemon de tiempo y zonas horarias.
#
# La salida de los trabajos crontab (incluidos los errores) se envía por # correo electrónico al usuario al que
pertenece el archivo crontab (a menos que se redirija).
#
# Por ejemplo, puede ejecutar una copia de seguridad de todas sus cuentas de usuario # a las 5 am cada
semana con: # 0 5 * * 1 tar zcf /var/backups/
home.tgz /home/
#
# Para obtener más información, consulte las páginas de manual de crontab(5) y cron(8)
#
# mh dom mon dow comando
Como se indicó anteriormente, el archivo predeterminado obviamente incluye alguna explicación de cómo formatear una
entrada en el crontab. En nuestro caso, deseamos agregar una entrada que le indique al script que comience a las 6
horas y 0 minutos cada día. El crontab acepta seis piezas de información que permitirán realizar esa acción. cada una de
esas piezas está separada por un espacio.
1. Un número (o rango de números), m, que representa el minuto de la hora (valores válidos
059);
2. Un número (o rango de números), h, que representa la hora del día (valores válidos 023); 3. Un número (o rango
de números), dom, que representa el día del mes (valores válidos
031);
4. Un número (o lista, o rango), o nombre (o lista de nombres), mon, que representa el mes del año (valores válidos
112 o EneDic); 5. Un número (o lista, o rango),
o nombre (o lista de nombres), dow, que representa el día de la semana (valores válidos 06 o DomSat); y 6.
comando, que es el comando a ejecutar,
exactamente como aparecería en el comando
línea.
Por lo tanto, el diseño es el siguiente;
www.dbooks.org
Machine Translated by Google
Comandos Linux 154
Permisos de Linux como rwx
Suponiendo que queremos ejecutar un script de Python llamado 'm_temp.py' que estaba en el directorio de inicio 'pi', la
línea que querríamos agregar sería la siguiente;
0 6 * * * /usr/bin/python /home/pi/m_temp.py
Entonces, en el minuto 0, hora 6, todos los días del mes (donde el asterisco indica "todo"), todos los meses, todos los días
de la semana, ejecutamos el comando /usr/bin/python /home/pi/m_temp.py ( lo cual, si estuviéramos en la línea de comando
en el directorio de inicio de pi, lo ejecutaríamos como python m_temp.py, pero dado que no podemos garantizar dónde
estaremos cuando ejecutemos el script, proporcionamos la ruta completa al comando python y la secuencia de comandos
m_temp.py .
Si quisiéramos ejecutar el comando dos veces al día (6 a. m. y 6 p. m. (1800 horas)), podemos proporcionar un valor
separado por comas en el campo de horas (h) de la siguiente manera;
0 6,18 * * * /usr/bin/python /home/pi/m_temp.py
Si quisiéramos ejecutar el comando a las 6 a.m. pero solo entre semana (de lunes a viernes), podemos proporcionar un
rango en el campo dow de la siguiente manera (recordando que 0 = domingo);
0 6 * * 15 /usr/bin/python /home/pi/m_temp.py
Si queremos ejecutar el mismo comando cada 2 horas, podemos usar la notación */2 , de modo que nuestra línea en el
crontab se vería de la siguiente manera;
0 */2 * * * /usr/bin/python /home/pi/m_temp.py
Es importante tener en cuenta que debemos incluir el 0 al principio (en lugar del *) para que no se ejecute cada minuto
cada 2 horas (cada minuto en otras palabras)
Pruébate
1. ¿Cómo podría configurar un trabajo programado en crontab que se ejecutara cada segundo?
2. Cree una línea crontab para ejecutar un comando el 20 de julio de cada año a los 2 minutos
medianoche.
Machine Translated by Google
Comandos Linux 155
matar
El comando kill nos permite terminar un proceso enviándole una señal. Puede enviar diferentes señales
dependiendo de cuán difícil sea detener el proceso. Se basa en conocer el número de identificación del
proceso (PID) del proceso. El comando kill es una herramienta administrativa importante para garantizar que
un sistema funcione correctamente.
• matar [opciones] PID(s): envía una señal para terminar un proceso o procesos por PID
Suponiendo que ya hemos establecido que el PID que deseamos terminar es el 798, todo lo que debemos
hacer es ejecutar el siguiente comando;
matar 798
No hay retroalimentación en la línea de comandos para indicar el éxito o el fracaso, pero esto se puede lograr
usando un comando separado como ps.
El comando 'matar'
El objetivo declarado del comando de matar está justo ahí en el nombre. El objetivo es matar un proceso para
detener su ejecución. Esto podría deberse a que debe apagarse de manera ordenada como una función
natural de lo que sea que esté realizando la computadora, o podría ser necesario para intentar detener un
programa que no responde. En este sentido, es muy similar al comando killall que matará un proceso basado
en el comando de origen que lo ejecutó.
Uno de los grandes malentendidos con los comandos kill y killall es que su función no es simplemente
desconectar un proceso. Su trabajo es enviar una señal a un proceso pidiéndole que se apague. A veces, un
proceso se resiste a la instrucción y es necesario enviar una señal más seria. El comando matar puede
manejar eso.
Uno de los aspectos más importantes del uso del comando kill es que necesitaremos determinar el número
de identificación del proceso (PID) del proceso que se terminará antes de ejecutar el comando kill . Para ello
un par de buenas opciones son los comandos ps y/o top . Cualquiera de estos se puede usar con sus diversas
opciones para determinar el PID apropiado y armado con eso, podemos ver el uso de matar.
Como se mencionó, la función del comando kill es enviar una señal a un proceso. El rango de posibles
señales que se pueden enviar se puede encontrar ejecutando el comando kill con la opción l (solo para
mayor claridad, es una L minúscula , no el número 1). Por lo tanto, podemos ejecutar el comando de la
siguiente manera;
matar l
… lo que dará como resultado la siguiente lista de posibles señales;
www.dbooks.org
Machine Translated by Google
Comandos Linux 156
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX14 51) SIGRTMAX13 52) SIGRTMAX\
12
53) SIGRTMAX11 54) SIGRTMAX10 55) SIGRTMAX9 56) SIGRTMAX8 57) SIGRTMAX7
58) SIGRTMAX6 59) SIGRTMAX5 60) SIGRTMAX4 61) SIGRTMAX3 62) SIGRTMAX2
63) SIGRTMAX1 64) SIGRTMAX
De forma predeterminada (sin especificar una señal), el comando de eliminación utilizará la señal
15 'SIGTERM'. Si un proceso resiste este esfuerzo por cerrarlo, es una práctica común recurrir a la
señal 9 que es 'SIGKILL'. Esto se lograría de la siguiente manera (asumiendo que ya habíamos
establecido que el PID que queríamos terminar era 798);
matar 9 798
Es una situación inusual encontrar un proceso que no se puede terminar con un comando
kill 9 . La única vez que esto no debería ser efectivo es si el proceso realiza una solicitud
al núcleo del sistema operativo (el núcleo). Incluso entonces, cuando haya completado la
solicitud, debería morir.
Si queremos terminar más de un proceso, simplemente podemos separarlos con un espacio de la siguiente
manera;
matar 798 1234 666 999
Pruébate
1. ¿Qué señal debe usarse primero al ejecutar el comando de eliminación , 9 o 15?
Machine Translated by Google
Comandos Linux 157
Mátalos a todos
El comando killall nos permite terminar un proceso o procesos enviándole una señal. Puede enviar diferentes
señales dependiendo de cuán difícil sea detener el proceso. Es extremadamente similar al comando kill en
su función, pero no se basa en conocer el número de identificación del proceso (PID) del proceso. En su
lugar, puede usar el nombre del comando del proceso de origen y, como resultado, cuando se ejecuta,
puede terminar todos los procesos iniciados con ese comando. El comando killall es una herramienta
administrativa importante para garantizar que un sistema funcione correctamente.
• nombre del comando killall [opciones]: envía una señal para terminar un proceso o procesos
nombre
Suponiendo que ya tenemos un proceso llamado top ejecutándose, todo lo que tenemos que hacer es
ejecutar el siguiente comando;
top asesino
No hay retroalimentación en la línea de comandos para indicar el éxito o el fracaso, pero esto se puede
lograr usando un comando separado como ps.
El comando 'matar'
El objetivo declarado del comando killall está en el nombre. El objetivo es matar todos los procesos con un
nombre específico para detener su ejecución. Eso podría deberse a que deben apagarse de manera
ordenada como una función natural de lo que sea que esté realizando la computadora, o podría ser
necesario para tratar de detener los programas que no responden.
Uno de los grandes malentendidos con los comandos kill y killall es que su función no es simplemente
desconectar un proceso. Su trabajo es enviar una señal a un proceso o procesos pidiéndoles que se
apaguen. A veces, un proceso se resiste a la instrucción y es necesario enviar una señal más seria. El
comando killall puede manejar eso.
Puede parecer obvio, pero uno de los aspectos más importantes del uso del comando killall es que
necesitaremos determinar el nombre del proceso que se terminará antes de ejecutar el comando. Para ello
un par de buenas opciones son los comandos ps y/o top . Cualquiera de estos se puede usar con sus
diversas opciones para determinar el nombre apropiado y armado con eso, podemos ver el uso de killall.
Como se mencionó, la función del comando killall es enviar una señal a un proceso. El rango de posibles
señales que se pueden enviar se puede encontrar ejecutando el comando killall con la opción l (solo para
mayor claridad, es una L minúscula , no el número 1). Por lo tanto, podemos ejecutar el comando de la
siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 158
matar todo l
… lo que dará como resultado la siguiente lista de posibles señales;
HUP INT SALIR ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 TUBO ALARMA TÉRMINO
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR S\
YS
NO USADO
De forma predeterminada (sin especificar una señal), el comando de eliminación utilizará la señal 'SIGTERM'.
Debemos notar en esta etapa que esta señal no está en la lista de señales enumeradas al emitir el comando
killall con la opción l . Esto se debe a que las señales enumeradas allí no tienen las letras 'SIG' delante de
ellas. Entonces si quisiéramos enviar una señal 'SIGKILL' , tendríamos que ejecutar el comando con la opción
s y el nombre completo de la señal así (asumiendo que ya habíamos establecido que el proceso top era el
que queríamos para terminar);
killall s SIGKILL parte superior
Es una situación inusual encontrar procesos que no se pueden terminar con un comando
killall s SIGKILL . La única vez que esto no debería ser efectivo es si los procesos
realizan una solicitud al núcleo del sistema operativo (el kernel). Incluso entonces,
cuando hayan completado la solicitud, deberían morir.
Si queremos terminar más de un proceso con nombre, simplemente podemos separarlos con un espacio de la
siguiente manera;
matar todo superior nano
Esto debería terminar los procesos top y nano.
Pruébate
1. ¿Cuáles son las diferencias entre el comando kill y el comando killall ?
Machine Translated by Google
Comandos Linux 159
PD
El comando ps muestra una instantánea de los procesos en ejecución. Al igual que el comando top , el
comando ps informará sobre procesos con características asociadas y existe una amplia gama de formas
diferentes en las que se pueden presentar. Sin embargo, donde top se actualizará continuamente, ps
proporciona un informe fijo. Este es otro comando útil para solucionar problemas y comprender el
funcionamiento del sistema.
• ps [opciones]: muestra una instantánea de los procesos actuales
Para ver una lista de procesos en ejecución podemos ejecutar el siguiente comando;
psaux | menos
En realidad, son dos comandos en los que la salida de ps se canaliza al comando less para que la larga lista
resultante pueda examinarse una página a la vez. La primera página de la salida se verá un poco así;
El resultado muestra una sensación similar al comando superior en el sentido de que vemos una lista de
procesos y alguna información sobre ellos, pero la información presentada aquí es ligeramente diferente.
Las opciones utilizadas con el comando le indicaron que enumerara los procesos de todos los usuarios (a),
proporcionara algunos detalles sobre los procesos (u) e incluyera procesos que no tienen un terminal de
control (x). Este es un comando muy común para administrar un sistema Linux.
El comando ps
El comando ps está destinado a informar el estado del proceso de los procesos que se están ejecutando actualmente.
Si se ejecuta sin opciones, devuelve solo cuatro datos sobre al menos los dos procesos que se ejecutarán.
El shell y el ps se ordenan a sí mismos.
www.dbooks.org
Machine Translated by Google
Comandos Linux 160
PD
… produce …
PID TTY HORA CMD
788 puntos/0 00:00:01 golpe
1642 puntos/0 00:00:00 p.d.
Aquí podemos ver lo siguiente;
• El ID de proceso del proceso (788) • El
TIPO de terminal o el nombre del terminal en el que el usuario inició sesión (pts/0) • El TIEMPO
total de CPU que el proceso ha utilizado desde que comenzó (00:00.01) • El Comando
que se utilizó para iniciar el proceso (bash)
Obviamente, esta cantidad de información es un poco limitada, por lo que el comando ps se usa normalmente con
una combinación de opciones.
Opciones
Si bien hay varias opciones disponibles, se usan con mayor frecuencia en combinación y se canalizan a less o grep
para controlar la información devuelta. Las opciones más utilizadas son;
• a : enumera los procesos de todos los
usuarios • u : muestra los resultados en un formato
orientado al usuario • x : incluye procesos sin terminales de
control • e : incluye todos los procesos que se están ejecutando
actualmente • f : hace una lista completa de detalles de los procesos
Revisando el ejemplo inicial que mostramos anteriormente;
psaux | menos
Con la salida (abreviada);
Machine Translated by Google
Comandos Linux 161
Cuando se hace en la terminal, la opción a asegurará que se enumeren todos los procesos (aunque menos controlarán
su liberación). La opción x incluye aquellos procesos que no tienen terminales de control y la opción u ha presentado la
información en un formato más detallado. Las distintas columnas en el formato más detallado corresponden a;
• USUARIO : El usuario bajo el cual se ejecuta el proceso. •
%CPU : el porcentaje de tiempo que el proceso ha utilizado la CPU desde que se inició el proceso. • %MEM :
el porcentaje de memoria real utilizada por este proceso. • VSZ : El tamaño
(en kilobytes) del proceso en la memoria virtual. • RSS : El tamaño de memoria
real del proceso (en kilobytes). • STAT : El estado del proceso. • INICIO :
Cuando se inició el proceso. • TIEMPO : El
tiempo que el proceso ha estado ejecutándose •
COMANDO : El comando que inició el proceso
La columna STAT incluye un conjunto de códigos para describir el estado de los procesos. Estos se pueden interpretar
con los siguientes caracteres;
• D suspensión ininterrumpida (generalmente
IO) • R en ejecución o ejecutable (en cola de
ejecución) • S suspensión interrumpible (esperando que se complete un
evento) • T detenido, ya sea por una señal de control de trabajo o porque se está
rastreando • W paginación ( no es válido desde el kernel
2.6.xx) • X inactivo (nunca debe verse)
• Z proceso difunto (“zombie”), terminado pero no cosechado por su padre • < alta prioridad
(no agradable para otros usuarios) • N bajo prioridad
(agradable para otros usuarios) • L tiene
páginas bloqueadas en la memoria (para E/S personalizadas y en tiempo real) • s
es un líder de sesión
• l es de subprocesos múltiples
• + está en el grupo de procesos de primer plano
La otra combinación de opciones comúnmente utilizada es la siguiente;
www.dbooks.org
Machine Translated by Google
Comandos Linux 162
psef | menos
Con la salida (ligeramente editada para mayor claridad);
Aquí incluimos todos los procesos en ejecución con la opción e y f para mostrar detalles adicionales. Además de esto,
hemos canalizado la salida a grep , que solo devuelve líneas que incluyen 'pi' en ellas (con la idea de que estamos
buscando procesos asociados con el usuario 'pi'. Hay una pequeña mosca en este ungüento en el forma que la línea
superior que normalmente se incluye con la opción f forma los encabezados de columna para cada columna Entonces,
para explicar las columnas, la siguiente es la salida (resumida) con los encabezados de columna incluidos;
Las columnas se relacionan con;
• UID : ID de
usuario • PID : ID de
proceso • PPID : ID de proceso
principal. • C : utilización del procesador. (el valor entero del porcentaje de uso durante la vida útil del
proceso)
• STIME : la hora de inicio del proceso • TTY :
tty de control (terminal). • TIME : tiempo
de CPU acumulado, formato '[DD]HH:MM:SS' • CMD : el comando que
se ha ejecutado
Machine Translated by Google
Comandos Linux 163
Pruébate
1. ¿Es mejor canalizar la salida de ps a less o grep?
2. ¿Cuál de las opciones f o u muestra el uso de memoria?
www.dbooks.org
Machine Translated by Google
Comandos Linux 164
arriba
El comando superior se usa para mostrar un resumen en tiempo real de la información del sistema y los procesos que se ejecutan
en la computadora. top es interactivo y puede controlarse y configurarse mientras está en funcionamiento para ayudar a determinar
diferentes aspectos del funcionamiento del sistema. Este es un comando extremadamente útil para realizar un seguimiento de las
demandas cambiantes en el sistema y los cambios a medida que los procesos llevan a cabo sus tareas.
• arriba [opciones]: sistema de visualización e información del proceso en tiempo real
Por ejemplo, simplemente ejecutando top desde la línea de comando de la siguiente manera;
arriba
… producirá una salida que se parece a esto;
superior 08:50:22 hasta 2:41, 1 usuario, promedio de carga: 0,00, 0,01, 0,05 Tareas: 86 en total, 1
en ejecución, 85 en reposo, 0 detenido, 0 zombi %Cpu(s): 0,1 us, 0,2 sy , 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi,
0.1 si, 0.0 st
Memoria KiB: 948108 en total, 139600 usados, 808508 gratis, KiB Swap: 14908 tampones
102396 en total, 0 usados, 102396 gratis. 82084 memoria caché
La parte superior de la línea superior muestra una salida que nos dice cuánto tiempo ha estado funcionando el sistema para cuántos
usuarios hay y cuál es nuestra carga. La segunda línea muestra un resumen de tareas o
Machine Translated by Google
Comandos Linux 165
procesos. La tercera línea da una indicación del estado de las CPU. Las líneas cuarta y quinta muestran una
indicación del uso de la memoria similar a la notificada con el comando libre . Debajo hay una tabla que
muestra los procesos, sus propiedades y estados.
La información que se muestra se actualizará a intervalos regulares (los valores predeterminados pueden variar, pero
aproximadamente cada 3 segundos). El comando superior se puede detener presionando q (para salir).
El comando superior
El comando superior es uno de los comandos más utilizados para monitorear el rendimiento del sistema
principalmente debido a la amplia gama de parámetros que se pueden ver y las opciones disponibles para
configurar la información visualizada. Se llama 'superior' ya que es útil para identificar a los principales
usuarios (procesos) de recursos en un sistema.
Deberíamos comenzar con una descripción de los diversos parámetros mostrados en la vista predeterminada
y luego trabajar con los comandos interactivos disponibles.
la primera línea
La primera línea de nuestro ejemplo se ve así;
arriba 08:50:22 hasta 2:41, 1 usuario, promedio de carga: 0.00, 0.01, 0.05
La información presentada aquí (en orden) es;
• La hora actual (08:50:22) • La
cantidad de tiempo que el sistema ha estado 'activo' (operando) (2 horas y 41 minutos) • El
número de usuarios conectados (1) • La
carga promedio en el sistema en el último minuto (0,00), cinco minutos (0,01) y 15
minutos (0.05)
la segunda linea
La segunda línea de nuestro ejemplo se ve así;
Tareas: 86 en total, 1 corriendo, 85 durmiendo, 0 detenido, 0 zombi
La información presentada aquí (en orden) es;
• La cantidad total de procesos que se han iniciado en el sistema (86) • La cantidad
de procesos en ejecución (1) • La cantidad
de procesos inactivos (85) • La cantidad de
procesos zombie (0)
Un proceso zombie es un proceso que ha completado la ejecución pero aún tiene una entrada
en la tabla de procesos: es un proceso en el 'estado Terminado'. Tener un proceso zombie no
es necesariamente algo malo. Por lo general, aparece porque el proceso principal aún puede
necesitar leer el estado de salida del proceso secundario zombi/difunto
www.dbooks.org
Machine Translated by Google
Comandos Linux 166
la 3ra línea
La tercera línea de nuestro ejemplo se ve así;
%Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
La información presentada aquí (en orden) es;
• El porcentaje de CPU asignado a los procesos de usuario (0,1) • El
porcentaje de CPU asignado a los procesos del sistema (0,2) • El
porcentaje de procesos de CPU con una actualización prioritaria (agradable) (0,0) • El
porcentaje de CPU no utilizado (inactivo) (99,7) • El
porcentaje de procesos de CPU en espera de operaciones de E/S (0,0) • El
porcentaje de CPU que atiende interrupciones de hardware (0,0) • El
porcentaje de CPU que atiende interrupciones de software (0,1) • El
porcentaje de CPU robado por el hipervisor para otras tareas (0.0)
Las líneas 4 y 5
Las líneas cuarta y quinta de nuestro ejemplo se ven así;
total, 0 usados, 102396 gratis. 82084 memoria caché
La cuarta fila muestra cómo se utiliza la memoria física (RAM) y la quinta fila muestra el mismo tipo de utilización
para la memoria de intercambio.
Memoria
La línea Mem se refiere a la memoria física disponible en el sistema. Específicamente, esta es la memoria utilizada
cuando la computadora está ejecutando aplicaciones/sistema operativo y, en general, procesa datos. Es la
asignación de memoria de acceso aleatorio (RAM) a diferencia de la memoria en forma de discos duros o similar
que almacenará información de manera persistente.
Intercambio
El intercambio se refiere a la memoria que se ha asignado en un disco duro o almacenamiento similar para ayudar
al sistema a hacer frente a situaciones en las que se ha quedado sin RAM. El uso de espacio de intercambio puede
ser una indicación de que un sistema podría requerir más recursos, aunque a veces esta necesidad puede ser
extremadamente infrecuente y el uso podría considerarse una compensación aceptable para agregar más RAM
que podría no usarse con mucha frecuencia.
Tenga en cuenta que cuando se usa la memoria de intercambio, la cantidad que se muestra como
usada aumentará, pero incluso cuando termine, la cantidad 'usada' seguirá mostrando ese valor más
alto (ya que el espacio al que se refiere la memoria técnicamente se ha usado ). Esto puede ser
confuso y posiblemente podría llevarnos a pensar que hay un uso constante de la memoria de
intercambio cuando en realidad fue momentáneo.
Machine Translated by Google
Comandos Linux 167
Búferes/caché
Un búfer, también llamado memoria intermedia, generalmente se define como una parte de la memoria que se reserva
como un lugar de almacenamiento temporal para los datos que se envían o reciben desde un dispositivo externo, como
un disco duro, un teclado, una impresora o una red. El caché es una ubicación de memoria para almacenar datos de uso
frecuente para un acceso más rápido. Los datos de caché se pueden usar varias veces, mientras que la memoria
intermedia se usa solo una vez. Y ambos son almacenes temporales para su procesamiento de datos.
Las filas cuarta y quinta muestran sus respectivas propiedades de;
• Memoria total disponible •
Cantidad de memoria utilizada •
Cantidad de memoria libre •
Cantidad de memoria utilizada como búfer de memoria para almacenamiento temporal (14908) •
Cantidad de memoria utilizada como caché de memoria para datos de uso frecuente (82084)
La tabla de procesos
La tabla de procesos de nuestro ejemplo se parece un poco a la siguiente (ligeramente truncada);
Esta tabla muestra las siguientes propiedades de los procesos;
• El ID de proceso del proceso (1231) • El
USUARIO que es el propietario del proceso (pi) • La
PRIoridad del proceso (20) • El valor NIce
del proceso (0) • La memoria VIRtual
utilizada por el proceso (5092) • La memoria física (o
RESIDENTE) utilizada del proceso (2480) • La memoria COMPARTIDA que utiliza el
proceso (2148) • El estado del proceso (S=dormido R=ejecutando
Z=zombie) (R) • El porcentaje de CPU usado por el proceso (0.7) • El porcentaje
de MEMORIA de acceso aleatorio usado por el proceso (0.3) • El
TIEMPO total de CPU que el proceso ha usado desde que comenzó (0:00.15) • El
COMANDO que se usó para comenzar el proceso (arriba)
Comandos interactivos
Una vez que se ejecuta, además de 'q' para salir, el comando más útil es 'h' para mostrar la pantalla de ayuda.
Esto luego mostrará los comandos disponibles para arriba;
www.dbooks.org
Machine Translated by Google
Comandos Linux 168
Ayuda para comandos interactivos procpsng versión 3.3.9 Ventana 1:Def: modo
acumulativo desactivado. Sistema: Retraso 3.0 segundos; Modo seguro Desactivado.
Z,B,E,e Global: colores 'Z'; 'B' en negrita; Resumen 'E'/'e'/escala de memoria de tareas l,t,m
Alternar resumen: 'l' load avg; 't' estadísticas de tarea/cpu; información de la memoria 'm'
0,1,2,3,I Alternar: '0' ceros; '1/2/3' cpus o vistas de nodo numa; 'I' Modo Irix f,F,X
Campos: 'f'/'F' agregar/eliminar/ordenar/clasificar; 'X' aumenta el ancho fijo
L,&,<,> . Ubicar: 'L'/'&' buscar/de nuevo; Mover columna de clasificación: '<'/'>' izquierda/derecha R,H,V,J .
Alternar: Ordenar 'R'; Roscas 'H'; vista al bosque en 'V'; 'J' Num justifica c,i,S,j . Alternar: 'c' Cmd nombre/
línea; 'i' inactivo; Tiempo 'S'; 'j' Str justificar
x,y . Alternar resaltados: campo de clasificación 'x'; 'y' ejecutando tareas. Alternar:
'z' color/monocromo; 'b' negrita/reversa (solo si 'x' o 'y') z,bu,U,o,O . Filtrar por: 'u'/'U' efectivo/
cualquier usuario; 'o'/'O' otros criterios n,#,^O . Establecer: 'n'/'#' tareas máximas mostradas; Mostrar:
Ctrl+'O' otro(s) filtro(s)
C,... . Alternar el mensaje de coordenadas de desplazamiento para: arriba, abajo, izquierda, derecha, inicio, final
k, r Manipular tareas: 'k' matar; 'r' renice
d o s Establecer intervalo de actualización
W,Y Escribir el archivo de configuración 'W'; Inspeccionar otra salida 'Y'
q Abandonar
(los comandos que se muestran con '.' requieren una ventana de visualización de tareas visible)
Presione 'h' o '?' para obtener ayuda con Windows,
escriba 'q' o <Esc> para continuar
¿Hay muchas opciones allí? Sí hay. No vamos a trabajar con ellos ya que creo que podría haber otro libro
que los describa a todos. Sin embargo, puede valer la pena mencionar uno que no está allí. ¡'A' alternará
otra pantalla que muestra aún más información! Sí. top es el regalo que sigue dando. Esto mostrará algo
que se parece un poco a esto;
2:Trabajo 17:26:58 hasta 11:18, 1 usuario, promedio de carga: 0,00, 0,01, 0,05 Tareas: 88 en
total, 1 en ejecución, 87 en reposo, 0 detenido, 0 zombi %Cpu(s): 0,4 us, 0.6 sy, 0.0 ni, 99.0 id, 0.0
wa, 0.0 hi, 0.0 si, 0.0 st
Memoria KiB: 948108 en total, 140676 usados, 807432 gratis, KiB Swap: 15740 tampones
102396 en total, 0 usados, 102396 gratis. Memoria caché 82108
Comandos Linux 169
Sí... Hay aún más información y parámetros para explicar. Pero no ahora. Mientras tanto,
disfrute de la maravilla que es la pantalla superior inicial y busque el próximo libro 'Just
Enough top'.
Pruébate
1. ¿En qué está ordenada la tabla de procesos en la parte superior ?
www.dbooks.org
Machine Translated by Google
Comandos Linux 170
Red
rizo
El comando curl está diseñado para enviar o recibir archivos hacia o desde un servidor remoto. Funciona
con una variedad de protocolos y se ejecuta de forma no interactiva. Tiene una función similar a wget pero
admite una gama más amplia de protocolos y tiene una mayor variedad de opciones de uso. Sin embargo,
no admite descargas recursivas.
• curl [opciones] [URL]: descargar o cargar archivos a servidores remotos.
Usando un ejemplo de descarga de un archivo de la web, solo es necesario usar la opción O y proporcionar
la URL del archivo que se requiere y comenzará la descarga;
enrollamiento O https://d3js.org/preview.png
El programa luego se conectará al servidor remoto y comenzará a descargar el archivo preview.png;
Descargar Subir Gasto total Velocidad izquierda
100 288k 100 288k 0 0 148k 0 0:00:01 0:00:01 :: 148k
Hay una pantalla de progreso de actualización mientras continúa la descarga y luego el programa finaliza y
nos queda una indicación de las estadísticas involucradas en la descarga.
El archivo se descarga en el directorio de trabajo actual.
El comando de rizo
curl es una utilidad que nos permite descargar y subir archivos a través de una red. Si bien es similar en
función a wget, hay suficientes diferencias para permitir que ambos coexistan. Para el 95% de las tareas de
descarga realizadas por un usuario normal, cualquier opción será suficiente. El nombre se originó a partir
de la frase "Ver URL" , donde la fonética "Ver" se reemplazó con el carácter 'c'. El motivo del nombre es
inherente al uso del programa. Sin ninguna opción, curl hará eco del contenido de una página web en la
consola. Solo comienza a poder escribir archivos en el almacenamiento con el uso de opciones.
curl es conocido por tener una gama extremadamente amplia de opciones y flexibilidad de uso. No todos
estos van a ser útiles para alguien que solo quiere mover un archivo, pero cuando nos enfrentamos a una
tarea de carga/descarga más compleja, curl es una opción viable.
La gama de protocolos compatibles es amplia e incluye DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,
IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET y
TFTP . Los diferentes protocolos utilizados están especificados por la URL que pasamos como parte
Machine Translated by Google
Comandos Linux 171
del comando Utiliza estos protocolos en el sentido de que si pudiera pegar una URL en un navegador y luego descargar
un archivo, el mismo archivo podría descargarse desde la línea de comando usando curl. curl no es la única utilidad de
descarga de archivos que se usa comúnmente en Linux. wget también se usa ampliamente para funciones similares. Sin
embargo, ambos programas tienen diferentes fortalezas y, en el caso de curl , esa fortaleza respalda una gama más
amplia de protocolos y opciones/flexibilidad. También hay otras diferencias, pero estas serían las principales.
Existe una amplia gama de opciones que se pueden utilizar para garantizar que las descargas se configuren correctamente.
Examinaremos algunos de los ejemplos más básicos a continuación.
• limitrate : limita la velocidad de descarga / tasa de descarga. • o : descarga
y almacena con un nombre de archivo diferente
• u : especifica la autenticación de nombre de usuario y contraseña
Tasa de limitar el ancho de banda
Habrá momentos en los que estaremos en algún lugar donde el ancho de banda sea limitado o queramos priorizar el
ancho de banda de alguna manera. Podemos restringir la velocidad de descarga con la opción limitrate de la siguiente
manera;
curl O limitrate 5k https://d3js.org/preview.png
Aquí hemos limitado la velocidad de descarga a 5 kilobytes por segundo. La cantidad puede expresarse en bytes, kilobytes
con el sufijo k o megabytes con el sufijo m .
% Total % Recibido % Xferd Promedio Velocidad Tiempo Tiempo Tiempo Actual
Descargar Subir Gasto total Velocidad izquierda
100 288k 100 288k 0 0 5142 0 0:00:57 0:00:57 :: 5425
La tarifa asignada es la velocidad promedio experimentada durante la transferencia. curl puede usar velocidades mayores
en ráfagas, pero con el tiempo se aproxima a la tasa dada. En el ejemplo de salida anterior, la velocidad de descarga
general estuvo justo por encima de la velocidad deseada a 5142 bps.
Cambiar el nombre del archivo descargado
Si intentamos descargar un archivo con el mismo nombre en el directorio de trabajo, sobrescribirá el archivo
correspondiente. Sin embargo, podemos darle al archivo un nombre diferente cuando lo descargamos usando la opción
o (esa es una 'o' minúscula por cierto). Por ejemplo para guardar el archivo con el nombre newpreview.png haríamos lo
siguiente;
curl o nueva vista previa.png https://d3js.org/preview.png
Descargar varios archivos
Podemos descargar varios archivos simplemente incluyéndolos uno tras otro en el comando de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 172
curl O https://d3js.org/forkme.png O https://d3js.org/preview.png
Si bien eso es bueno, puede comenzar a ser un poco confuso si se incluye una gran cantidad de URL.
La salida proporciona una pantalla de progreso y luego un resumen de las transferencias de la siguiente manera;
Descargar Subir Gasto total Velocidad izquierda
100 9267 100 9267 0 0 930 0 0:00:09 0:00:09 :: 2103
100 288k 100 288k 0 0 36503 0 0:00:08 0:00:08 :: 47431
Descargar archivos que requieren un nombre de usuario y contraseña Los
ejemplos mostrados hasta ahora se pueden descargar sin proporcionar ningún tipo de autenticación (sin usuario/contraseña).
Sin embargo, esto será un requisito para algunas descargas.
Para incluir un nombre de usuario y contraseña en el comando incluimos la opción u . Por ejemplo, si necesitáramos usar
el nombre de usuario 'adam' y la contraseña '1234', hay un par de formas en las que podemos proceder. Podríamos formar
o mandar de la siguiente manera;
curl u adam:1234 ftp://website.org/file.zip
Usted puede estar pensando para sí mismo "¿Es esto seguro?". A lo que la respuesta probablemente debería ser "No".
Está un paso por encima del acceso anónimo, pero no mucho más. Este no es un método por el cual las cosas que deben
permanecer privadas deben protegerse, pero proporciona un método para restringir el anonimato.
acceso.
Alternativamente (siempre y cuando no se ejecute como parte de un script), simplemente podemos incluir el nombre de
usuario de la siguiente manera y curl solicitará una contraseña;
curl u adam ftp://website.org/file.zip
Todavía no debemos pretender que esto es completamente seguro, ya que si bien hemos evitado poner la contraseña en
el historial de comandos (es decir, podríamos encontrarla comprando flechas hacia arriba), todavía hay problemas que
resolver en numerosos y en algunos casos. a esotérico para mencionar. En caso de duda, manténgase alejado de Internet.
Pruébate
1. Cree un comando curl que descargue un archivo con un nombre diferente, limitando la descarga
tasa de 10 kilobytes por segundo.
2. Una vez realizada la pregunta 1 anterior, ¿dónde encontramos la salida de las descargas?
¿progreso?
Machine Translated by Google
Comandos Linux 173
anfitrión
El comando host se usa para determinar la dirección IP de una computadora a partir de su nombre de host o
viceversa. El comando host es fácil de usar y proporciona una herramienta útil para comprender los detalles de una
red.
• servidor host [opciones]: verifica la dirección IP de una computadora a partir de su nombre de host o viceversa
viceversa
El ejemplo más simple emplea solo el comando y un nombre de host similar al siguiente;
anfitrión nasa.org
Esto producirá el(los) servidor(es) cuyas direcciones IP se resuelven a partir del nombre de host dado;
nasa.org tiene la dirección 173.244.177.114
El comando anfitrión
El comando host se nombró porque está buscando efectivamente información sobre un 'host' donde el término se
refiere a un servidor en red que está conectado y al que se hace referencia mediante una dirección IP y un nombre
de dominio.
Podríamos preguntarnos por qué necesitamos poder llevar a cabo esta función, pero la respuesta simple a esto es
que Internet es un lugar complicado y las redes son cosas complicadas. Para poder ir a lugares en Internet,
confiamos en un Sistema de Nombres de Dominio (DNS) que puede garantizar que cuando nos referimos a un
servidor en Internet por su nombre, puede encontrar la dirección IP correcta a la que deben ir los datos. Entonces,
cuando descubrimos que tenemos problemas para resolver la dirección correcta de un servidor, necesitamos tener
un mecanismo mediante el cual podamos probar la configuración de DNS para asegurarnos de que todo esté
configurado como debe ser.
Opciones
Existe una amplia gama de opciones que se pueden mostrar fácilmente ejecutando el comando de host sin opciones
ni nombres de host;
• a es equivalente a v t ANY • c
especifica la clase de consulta para datos que no
son IN • C compara registros SOA en servidores de nombres
autorizados • d es
equivalente a v • l enumera todos los hosts en un
dominio, usando AXFR • i
Búsquedas inversas de IP6.INT • N cambia el número de puntos permitidos antes de realizar la búsqueda raíz
www.dbooks.org
Machine Translated by Google
Comandos Linux 174
• r deshabilita el procesamiento recursivo
• R especifica el número de reintentos para paquetes UDP •
s una respuesta SERVFAIL debe detener la consulta • t
especifica el tipo de consulta • T
habilita el modo TCP/IP • v
habilita la salida detallada • w
especifica esperar eternamente una respuesta • W
especifica cuánto tiempo esperar una respuesta • 4
usar solo el transporte de consultas IPv4 •
6 usar solo el transporte de consultas IPv6
• m establece el indicador de depuración de memoria (rastreo|registro|uso)
Esta es una gran lista y para los administradores e ingenieros de redes, brindan una gran cantidad de funciones de prueba.
Para los simples mortales, sugeriría que el requisito es comprender el comando sin usar opciones y quizás la opción t .
La opción t nos permite ser selectivos en cuanto al tipo de registros DNS que recibimos. Hay varios tipos de recursos
diferentes que se pueden especificar;
• una dirección IP IPv4
• aaa Dirección IP IPv6 •
cname registro de nombre canónico (Alias) • mx
nombres de host del servidor de intercambio de
correo electrónico • ns nombre (DNS)
nombres de servidor • ptr puntero a un
nombre canónico • soa Información autorizada sobre una zona DNS
• registro de texto txt
Por ejemplo, para mostrar solo los servidores de correo de google.com podríamos ejecutar lo siguiente;
anfitrión t mx google.com
Esto informará los servidores responsables de administrar el correo electrónico para google.com;
El correo de google.com es manejado por 40 alt3.aspmx.l.google.com. El
correo de google.com es manejado por 20 alt1.aspmx.l.google.com. El correo
de google.com está a cargo de 10 aspmx.l.google.com. El correo de
google.com es manejado por 50 alt4.aspmx.l.google.com. El correo de
google.com es manejado por 30 alt2.aspmx.l.google.com.
Machine Translated by Google
Comandos Linux 175
Pruébate
1. ¿Qué sucedería si ingresara la URL www.google.com en un navegador si no hubiera
un servicio de DNS disponible?
2. Está ejecutando el comando host nasa.org o host 173.244.177.114 denominado como
búsqueda 'inversa'?
www.dbooks.org
Machine Translated by Google
Comandos Linux 176
ifconfig
El comando ifconfig se puede utilizar para ver la configuración o para configurar una interfaz de red.
La creación de redes es una función fundamental de las computadoras modernas. ifconfig nos permite
configurar las interfaces de red para permitir esa conexión.
• ifconfig [argumentos] [interfaz]
• ifconfig [argumentos] interfaz [opciones]
Usado sin 'interfaz' declarada, ifconfig mostrará información sobre todas las interfaces de red
operativas. Por ejemplo correr;
ifconfig
… produce algo similar a lo siguiente en una Raspberry Pi simple.
eth0 Enlace encapsulado: Ethernet HWaddr 76:12:45:56:47:53
UP BROADCAST MULTICAST MTU:1500 Métrica:1
Paquetes RX:0 errores:0 descartados:0 desbordamientos:0 marco:0
Paquetes TX:0 errores:0 descartados:0 desbordamientos:0 portadora:0
colisiones:0 txqueuelen:1000 Bytes
RX:0 (0.0 B) Bytes TX : 0 (0,0 B)
hola Enlace encapsulado: bucle invertido local
dirección inet: 127.0.0.1 Máscara: 255.0.0.0
UP LOOPBACK EJECUTANDO MTU:65536 Métrica:1
Paquetes RX:0 errores:0 descartados:0 desbordamientos:0 marco:0
Paquetes TX:0 errores:0 descartados:0 desbordamientos:0 portadora:0
colisiones:0 txqueuelen:0 Bytes
RX:0 (0.0 B) Bytes TX : 0 (0,0 B)
wlan0 Enlace encapsulado:Ethernet HWaddr 09:87:65:54:43:32
dirección inet: 10.1.1.8 Bcast: 10.1.1.255 Máscara: 255.255.255.0
UP BROADCAST EJECUTANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX: 3978 errores: 0 descartados: 898 desbordamientos: 0 marco:
0 Paquetes TX: 347 errores: 0 descartados: 0 desbordamientos: 0
operador: 0 colisiones: 0 txqueuelen:
1000 Bytes RX: 859773 (839.6 KiB) Bytes TX : 39625 (38,6 KiB)
El resultado anterior se divide en tres secciones; eth0, lo y wlan0.
Machine Translated by Google
Comandos Linux 177
• eth0 es la primera interfaz Ethernet y en nuestro caso representa el puerto de red RJ45 en la Raspberry Pi (en
este caso específico en un modelo B+). Si tuviéramos más de una interfaz Ethernet, se llamarían eth1, eth2, etc.
• lo es la interfaz de bucle invertido. Esta es una interfaz de red especial que el sistema usa para comunicarse
consigo mismo. Puede notar que tiene asignada la dirección IP 127.0.0.1.
Esto se describe como la designación del 'localhost'.
• wlan0 es el nombre de la primera interfaz de red inalámbrica en la computadora. Esto refleja una interfaz
inalámbrica (si está instalada). Cualquier interfaz inalámbrica adicional se llamaría wlan1, wlan2, etc.
El comando ifconfig
El comando ifconfig se usa para leer y administrar la configuración de la interfaz de red de un servidor (por lo tanto,
ifconfig = configuración de interfaz ).
Podemos usar el comando ifconfig para mostrar la información de configuración de red actual, configurar una dirección
IP, una máscara de red o una dirección de transmisión en una interfaz de red, crear un alias para la interfaz de red,
configurar direcciones de hardware y habilitar o deshabilitar interfaces de red.
ifconfig ha quedado 'obsoleto' en algunas distribuciones de Linux, lo que significa que el software ha
sido reemplazado y, donde sea práctico, se ha utilizado una alternativa. Aunque está obsoleto, el
comando todavía está disponible, aunque su uso puede generar mensajes de advertencia que
recomiendan prácticas alternativas, y la obsolescencia puede indicar que la función se eliminará en
el futuro. Las características están obsoletas en lugar de eliminarse inmediatamente para proporcionar
compatibilidad con versiones anteriores. En el caso de ifconfig, la alternativa (que discutiremos en
una sección aparte) es ip.
Para ver los detalles de una interfaz específica, podemos especificar esa interfaz como argumento;
ifconfig eth0
Lo que producirá algo similar a lo siguiente;
eth0 Enlace encap:Ethernet HWaddr b8:27:eb:2c:bc:62
dirección inet: 10.1.1.8 Bcast: 10.1.1.255 Máscara: 255.255.255.0
UP BROADCAST EJECUTANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX: 119833 errores: 0 descartados: 0 desbordamientos: 0 marco:
0 Paquetes TX: 8279 errores: 0 descartados: 0 desbordados: 0 operador: 0
colisiones: 0 txqueuelen: 1000 Bytes
de RX: 8895891 (8,4 MiB) Bytes de TX : 879127 (858,5 KiB)
Los detalles de configuración que se muestran arriba se pueden interpretar de la siguiente manera;
• Link encap:Ethernet : esto nos dice que la interfaz es un dispositivo relacionado con Ethernet.
www.dbooks.org
Machine Translated by Google
Comandos Linux 178
• HWaddr b8:27:eb:2c:bc:62 : esta es la dirección de hardware o dirección de control de acceso
a medios (MAC) que es única para cada tarjeta Ethernet. Algo así como un número de
serie. • inet addr:10.1.1.8 : indica la dirección IP de la interfaz.
• Bcast:10.1.1.255 : indica la dirección de transmisión de las
interfaces • Mask:255.255.255.0 : es la máscara de red para esa
interfaz. • ARRIBA : indica que se han cargado los módulos del kernel para la interfaz
Ethernet. • BROADCAST : nos dice que el dispositivo Ethernet admite la transmisión (utilizado
para obtener la
dirección IP a través de DHCP). • EN EJECUCIÓN : nos permite saber
que la interfaz está lista para aceptar datos. • MULTICAST : indica que la
interfaz Ethernet admite multidifusión. • MTU:1500 : la abreviatura de Unidad de transmisión
máxima es el tamaño
de cada paquete recibido por la tarjeta Ethernet. • Métrica: 1 : el valor de la métrica de una
interfaz decide la prioridad del dispositivo (para designar cuál de más de un
dispositivo debe usarse para enrutar paquetes). • Paquetes RX: 119833 errores: 0 descartados:
0 overruns: 0 marco: 0 y paquetes TX: 8279 er rs: 0 descartados: 0 overruns: 0 carrier: 0
Muestra el número total de paquetes recibidos y transmitidos con sus respectivos errores,
número de paquetes caídos y overruns respectivamente.
• colisiones: 0 : muestra el número de paquetes que colisionan al atravesar el
red.
• txqueuelen:1000 Nos dice la longitud de la cola de transmisión del dispositivo.
• Bytes RX: 8895891 (8,4 MiB) y bytes TX: 879127 (858,5 KiB) : indica la cantidad total de datos
que han pasado a través de la interfaz Ethernet en transmisión y recepción.
Opciones
La opción principal que se usaría con ifconfig es a , que mostrará todas las interfaces en las
interfaces disponibles (las que están 'activas' (activas) y 'inactivas' (apagadas). El uso predeterminado
del comando ifconfig sin ningún argumento u opción mostrará solo las interfaces activas.
ifconfig a
Argumentos
Podemos deshabilitar una interfaz (bajarla) especificando el nombre de la interfaz y usando el sufijo 'abajo' de
la siguiente manera;
ifconfig eth0 abajo
O podemos activarlo (abrirlo) especificando el nombre de la interfaz y usando el sufijo 'arriba' de la
siguiente manera;
Machine Translated by Google
Comandos Linux 179
ifconfig eth0 arriba
Para asignar una dirección IP a una interfaz específica, podemos especificar el nombre de la interfaz y usar la
dirección IP como sufijo;
ifconfig eth0 10.1.1.8
Para agregar una máscara de red a una interfaz específica, podemos especificar el nombre de la interfaz y usar el argumento
de máscara de red seguido del valor de máscara de red;
ifconfig eth0 máscara de red 255.255.255.0
Para asignar una dirección IP y una máscara de red al mismo tiempo podemos combinar los argumentos en el
mismo comando;
ifconfig eth0 10.1.1.8 máscara de red 255.255.255.0
Pruébate
1. Enumere todas las interfaces de red en su servidor.
2. ¿Por qué podría ser una mala idea rechazar una interfaz de red mientras se trabaja en un servidor?
remotamente?
3. Muestre la información sobre una interfaz específica, bájela, vuelva a mostrar la información y luego
súbala. ¿Qué diferencias ves?
www.dbooks.org
Machine Translated by Google
Comandos Linux 180
ip
El comando ip es un comando de configuración de red relativamente reciente que está interviniendo para
reemplazar el comando ifconfig que ha quedado obsoleto (pero aún es ampliamente compatible). Al igual
que ifconfig, se puede usar para ver la configuración o para configurar una interfaz de red, pero tiene una
variedad importante de funciones adicionales que se pueden implementar usando su arquitectura de
comando flexible. La creación de redes es una función fundamental de las computadoras modernas. ip nos
permite configurar interfaces de red para permitir esa conexión.
• subcomando de objeto ip [opciones] [parámetros]: herramienta de configuración de red
Para mostrar la información sobre todas las interfaces de red operativas en el sistema actual, podemos
ejecutar el comando de la siguiente manera;
Mostrar dirección IP
… produce algo similar a lo siguiente en una Raspberry Pi simple.
1: lo: <LOOPBACK,UP,LOWER_UP>
mtu 65536 qdisc noqueue state DESCONOCIDO grupo predeterminado
enlace/bucle invertido 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet
127.0.0.1/ 8 host de ámbito lo valid_lft
para siempre preferido_lft para siempre
inet6 :: host de alcance 1/128
válido_lft para siempre preferido_lft para siempre
2: eth0: <DIFUSIÓN, MULTIDIFUSIÓN, ARRIBA, INFERIOR_ARRIBA>
mtu 1500 qdisc pfifo_fast state UP grupo predeterminado qlen 1000
link/ether b8:45:e6:8c:9c:61 brd ff:ff:ff:ff:ff:ff inet 10.1.1.33/24 brd
10.1.1.255 alcance global eth0 valid_lft foreverferred_lft forever inet6
fa80::1627:9266 :d35e:705f/64 enlace de alcance
valid_lft para siempre preferido_lft para siempre
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500 qdisc mq state UP group default qlen 1000
enlace/éter 83:2f:62:e4:d4:64 brd ff:ff:ff:ff:ff:ff inet 192.168.1.199/24
brd 192.168.1.255 alcance global wlan0
valid_lft para siempre preferido_lft para siempre inet6
fe80::44cc:e626:be2b:62a4/64 enlace de alcance válido_lft
para siempre preferido_lft para siempre
El resultado anterior se divide en tres secciones; lo, eth0 y wlan0.
• lo es la interfaz de bucle invertido. Esta es una interfaz de red especial que el sistema usa para
comunicarse consigo mismo. Podemos ver que tiene asignada la dirección IP 127.0.0.1. Esto se
describe como la designación del 'localhost'.
Machine Translated by Google
Comandos Linux 181
• eth0 es la primera interfaz Ethernet y en nuestro caso representa el puerto de red RJ45 en la Raspberry
Pi (en este caso específico en un modelo B+). Si tuviéramos más de una interfaz Ethernet, se llamarían
eth1, eth2, etc.
• wlan0 es el nombre de la primera interfaz de red inalámbrica en la computadora. Esto refleja un adaptador
USB inalámbrico (si está instalado). Cualquier interfaz inalámbrica adicional se llamaría wlan1, wlan2,
etc.
Hay una cantidad considerable de información empaquetada en la respuesta al comando. No lo explicaremos
todo, pero las partes que podrían considerarse importantes desde un punto de vista básico podrían serlo;
• ARRIBA : indica que se han cargado los módulos del kernel para la interfaz Ethernet. •
LOWER_UP nos dice el estado del enlace Ethernet. En este contexto, es una indicación de que está
conectado (el cable está enchufado o el sistema inalámbrico está configurado correctamente) y puede
ver un dispositivo en el otro extremo de la conexión.
• BROADCAST : nos dice que el dispositivo Ethernet admite la transmisión (utilizado para obtener la
dirección IP a través
de DHCP). • MULTICAST : indica que la interfaz Ethernet admite multidifusión. • mtu
1500 : la abreviatura de unidad de transmisión máxima es el tamaño máximo de los paquetes utilizados
por la tarjeta Ethernet. •
El enlace/ether es la dirección de hardware o la dirección de control de acceso a medios (MAC) que es
única para cada tarjeta Ethernet. Algo así como un número de serie. En el caso de eth0 se informa
como b8:45:e6:8c:9c:61.
• La sección inet nos muestra la dirección IP de nuestra interfaz combinada con la máscara de red en lo
que se conoce como notación CIDR. En el caso de eth0 con 10.1.1.33/24 esto nos dice que es la
dirección 10.1.1.33 con una máscara de red 255.255.255.0. • en la
misma línea que la sección inet , brd denota la dirección de transmisión de las interfaces como
10.1.1.255
Una alternativa a especificar una máscara de red en el formato '255.255.255.0' es usar un sistema
llamado Enrutamiento entre dominios sin clase o CIDR. El concepto es que puede agregar una
especificación en la propia dirección IP que indica la cantidad de bits significativos que componen
la máscara de red.
Por ejemplo, podríamos designar la dirección IP 10.1.1.33 como asociada con la máscara de red
255.255.255.0 usando la notación CIDR de 10.1.1.33/24. Esto significa que los primeros 24 bits
de la dirección IP proporcionada se consideran significativos para el enrutamiento de la red.
El uso de la notación CIDR nos permite hacer algunas cosas muy inteligentes para organizar
nuestra red, pero al mismo tiempo puede tener el efecto de asustar a la gente al presentar un
tema bastante complejo cuando todo lo que quieren hacer es poner en marcha su red :) .
Entonces, por el bien de esta explicación, podemos suponer que si quisiéramos especificar una
dirección IP y una máscara de red, podría lograrse especificando cada uno por separado (dirección
IP = 10.1.1.33 y máscara de red = 255.255.255.0) o en formato CIDR (10.1.1.33/24)
Cabe señalar que el comando ip tiene una variedad de opciones de abreviatura para sus objetos, comandos y
parámetros. Esto significa que el ejemplo anterior podría llevarse a cabo fácilmente con;
www.dbooks.org
Machine Translated by Google
Comandos Linux 182
Mostrar dirección IP
… o incluso más agresivamente …
ip como
el comando ip
El comando ifconfig ha quedado obsoleto y su función ha sido reemplazada por varios comandos diferentes. Uno de esos comandos
es ip. Ha sido nombrado como resultado de su asociación con el enrutamiento de red y la subsiguiente asociación con el protocolo
de Internet , que es el principal protocolo de comunicaciones en el conjunto de protocolos de Internet para retransmitir datagramas
a través de los límites de la red.
El comando ip está diseñado para ser lo suficientemente flexible como para realizar una amplia gama de tareas de red. Obtiene esta
flexibilidad a través del diseño de la sintaxis que emplea donde puede combinar un objeto, un subcomando y parámetros.
Por ejemplo, objetos a los que se puede aplicar para incluir;
• dirección : una dirección de protocolo (IP o IPv6) en un dispositivo. •
enlace : un dispositivo de red. •
maddress : una dirección de multidifusión. •
mroute : una entrada de caché de enrutamiento de
multidifusión. • ruta : una entrada de la
tabla de enrutamiento. • regla : una regla en la base de
datos de políticas de enrutamiento. • túnel : un túnel sobre IP.
Los subcomandos que se solicitan incluyen (sus acciones son relativamente autoexplicativas);
• añadir
• cambiar
• borrar
• al ras
• obtener
• mostrar
• guardar
• establecer
• actualizar
Machine Translated by Google
Comandos Linux 183
Y los parámetros que se pueden configurar incluyen;
• dev interface_name : una interfaz de red (la palabra clave dev suele ser opcional) • up : para
encender algo • down : para
apagar algo • primario : para
establecer una prioridad en el número 1 •
secundario : para establecer una prioridad en el
número 2 • type : un tipo de
ruta • via : una puerta de enlace a
la que enrutar • default : una ruta predeterminada
Por lo tanto, ip puede usar esta combinación de objetos, subcomandos y parámetros para formar una especie de
"lenguaje" flexible a partir de su combinación.
Ejemplos de uso
Los siguientes comandos son una simple instantánea de las posibles combinaciones, pero sirven para reforzar
las posibilidades y proporcionar una referencia para algún uso común.
Algunos de los siguientes ejemplos requerirán privilegios de administrador y es posible que
deba agregarles el prefijo sudo para ejecutarlos correctamente.
Para mostrar una interfaz de red específica (wlan0);
Mostrar dirección IP wlan0
Esto mostrará los detalles de la interfaz wlan0 en la pantalla;
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500 qdisc mq state UP group default qlen 1000
enlace/éter 80:1f:02:f4:54:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.199/24 brd 192.168.1.255 alcance global wlan0
valid_lft para siempre preferido_lft para siempre inet6
fe80::257f:586d:65c3:b83b/64 enlace de ámbito valid_lft para
siempre preferido_lft para siempre
Deshabilitar la interfaz wlan0 (bajarla) y luego mostrar los detalles;
enlace ip configurado wlan0 inactivo
Mostrar dirección IP wlan0
www.dbooks.org
Machine Translated by Google
Comandos Linux 184
3: wlan0: <TRANSMISIÓN, MULTITRANSMISIÓN>
mtu 1500 qdisc mq estado ABAJO grupo predeterminado qlen 1000
enlace/éter 80:1f:02:f4:54:68 brd ff:ff:ff:ff:ff:ff
Para habilitar la interfaz wlan0 (para subirla) y luego mostrar los detalles;
enlace ip configurar wlan0
mostrar dirección ip wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500 qdisc mq state UP group default qlen 1000
enlace/éter 80:1f:02:f4:54:68 brd ff:ff:ff:ff:ff:ff
inet6 fe80::257f:586d:65c3:b83b/64 alcance enlace tentativo valid_lft para
siempre preferido_lft para siempre
Para reemplazar una dirección IP y una máscara de red en formato CIDR, debemos realizar dos pasos
para lograr nuestro objetivo. En primer lugar, debemos agregar nuestra nueva dirección, que agregará
una nueva dirección a la interfaz como dirección secundaria y luego debemos eliminar la dirección original.
Esto puede parecer un paso demasiado, y se ha hecho la pregunta "¿Por qué no usar los subcomandos
de reemplazar o cambiar ?". Son preguntas válidas y la respuesta que creo que es la más lógica es que
ya podría haber más de una dirección para la interfaz, en cuyo caso, ¿cuál sería reemplazada/cambiada?
Cualquiera que sea el caso para reemplazar una dirección y una máscara de red en una interfaz, primero
debemos agregar una nueva (y aquí también la hacemos eco en la pantalla para ver la dirección
secundaria resultante);
dirección IP agregar 192.168.1.198/24 dev wlan0
dirección IP mostrar wlan0
Machine Translated by Google
Comandos Linux 185
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500 qdisc mq state UP group default qlen 1000
enlace/éter 80:1f:02:f4:54:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.199/24 brd 192.168.1.255 alcance global wlan0
valid_lft para siempre lft_preferido para siempre inet
192.168.1.198/24 alcance secundario global wlan0 lft válido para
siempre lft_preferido para siempre inet6
fe80::257f:586d:65c3:b83b/64 enlace de alcance lft válido
para siempre lft_preferido para siempre
… Luego quitamos el original y mostramos los detalles de la interfaz;
eliminar dirección IP 192.168.1.199/24 dev wlan0
mostrar dirección IP wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP>
mtu 1500 qdisc mq state UP group default qlen 1000
enlace/éter 80:1f:02:f4:54:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.198/24 alcance global wlan0
valid_lft para siempre prefered_lft para siempre inet6
fe80::257f:586d:65c3:b83b/64 enlace de alcance valid_lft
para siempre prefered_lft para siempre
El comando ip es un comando muy poderoso con una amplia gama de opciones y una sintaxis flexible.
Hay elementos en el comando que se enfocan más directamente en los usuarios avanzados, pero hay
usos que un principiante encontrará esenciales.
Pruébate
1. Muestre cómo se puede usar el subcomando replace para cambiar la dirección de una red
interfaz.
www.dbooks.org
Machine Translated by Google
Comandos Linux 186
netstat
El comando netstat nos permite mostrar información de conexión de red, incluido el tráfico entrante y
saliente y una variedad de estadísticas de interfaz de red. Es una herramienta de uso común para
administrar y solucionar problemas de conexión de red y es una gran fuente de información sobre cómo
nuestra computadora está conectada con el mundo exterior.
• netstat [opciones]: herramienta de monitoreo de conexión de red
La clave para usar netstat está en el uso de las opciones para controlar la salida. Hay mucha información
que se puede mostrar usando el comando y comprender las opciones es importante para filtrar los datos
que nos interesan o para mostrar el tipo de información que queremos. En el siguiente ejemplo, usando la
opción a , mostraremos todas las conexiones a Internet y los sockets de dominio que están asociados con
las conexiones de red que hemos configurado (esta es una versión abreviada para ahorrar papel);
netstata
Conexiones a Internet activas (servidores y establecidas)
Proto RecvQ SendQ Dirección local Dirección externa tcp tcp tcp tcp tcp6 udp Estado
udp 0 0 *:5901 *:* ESCUCHAR
0 0 *:56800 *:*
0 0 192.168.1.199:ntp udp 0
10.1.1.33:ntp udp *:*
0 0 *:ntp 0 [::]:mdns udp6 Activo
localhost:ntp udp *:*
0
Sockets de dominio
UNIX (servidores y *:*
establecidos) 0 *:*
0 [::]:*
Comandos Linux 187
Obviamente, esto es mucha información (y la he reducido a la mitad para reproducirla aquí).
La clave es saber cómo analizar la información que estamos buscando.
La salida se divide en dos partes. En primer lugar las conexiones a Internet a las que se refieren las respectivas columnas;
• Proto : el nombre del protocolo •
RecvQ : el recuento de bytes no copiados por el programa de usuario conectado a este socket • SendQ : el
recuento de bytes no reconocidos por el host remoto • Dirección local : dirección y número
de puerto del extremo local del zócalo. • Dirección Extranjera : Dirección y número de puerto del
extremo remoto del socket. • Estado : El estado del socket. Normalmente, este puede ser uno de varios
valores: – ESTABLECIDO : El socket tiene una conexión establecida.
– SYN_SENT : el socket está intentando activamente establecer una conexión.
– SYN_RECV : Se ha recibido una solicitud de conexión de la red.
– FIN_WAIT1 : el socket está cerrado y la conexión se está cerrando.
– FIN_WAIT2 : la conexión está cerrada y el socket está esperando un apagado del
extremo remoto.
– TIME_WAIT : el socket está esperando después de cerrar para manejar los paquetes que aún están en la red.
– CERRAR : El zócalo no está siendo utilizado.
– CLOSE_WAIT : el extremo remoto se ha apagado, esperando que se cierre el socket.
– LAST_ACK : el extremo remoto se ha apagado y el socket está cerrado. Esperando reconocimiento.
– LISTEN : El socket está escuchando las conexiones entrantes. Estos conectores no se incluyen en la salida a
menos que especifiquemos la opción –escuchar (l) o –todos (a).
– CIERRE : Ambos sockets están cerrados pero todavía no tenemos todos nuestros datos enviados.
– DESCONOCIDO : El estado del socket es desconocido.
En segundo lugar, los sockets de dominio activos a los que se refieren las columnas;
• Proto : El protocolo (usualmente Unix) usado por el socket. • RefCnt : el
recuento de referencia (es decir, los procesos adjuntos a través de este socket) • Banderas :
la bandera que normalmente se muestra es ACC (rara vez también W para datos de espera o N para sin espacio). ACC
se usa en sockets no conectados si sus procesos correspondientes están esperando una solicitud de conexión.
• Tipo : Hay varios tipos de acceso a socket, incluidos;
– DGRAM : el socket se utiliza en el modo Datagram (sin conexión).
– STREAM : Este es un socket de flujo (conexión).
– RAW : el zócalo se utiliza como un zócalo sin formato.
– RDM : este sirve mensajes entregados de manera confiable.
www.dbooks.org
Machine Translated by Google
Comandos Linux 188
– SEQPACKET: Este es un socket de paquete secuencial.
– PAQUETE : socket de acceso de interfaz sin formato.
– DESCONOCIDO : para tipos desconocidos o
futuros • Estado : este campo contendrá una de las siguientes palabras clave;
– FREE : el socket no está asignado –
LISTENING : el socket está escuchando una solicitud de conexión. (solo se incluye en la salida si
especificamos la opción l o a) .
– CONECTANDO : El enchufe está a punto de establecer una conexión.
– CONECTADO : La toma está conectada.
– DESCONECTANDO : La toma se está desconectando.
– (vacío) : El enchufe no está conectado a otro. • INode : el número
de inodo único. • Path : este es el nombre de
la ruta por la cual los procesos correspondientes se adjuntaron al socket.
Como ya hemos observado, hay mucha información aquí y la clave es comprender los métodos de uso de netstat
para filtrar y descubrir esa información. Ejemplos de esto siguen.
El comando netstat
netstat es un comando que se puede usar para monitorear una variedad de información sobre el subsistema de red
de Linux. El tipo de información que se muestra está controlado por la primera opción, de la siguiente manera:
• (ninguno): de forma predeterminada, netstat muestra una lista de sockets
abiertos. • a : muestra las conexiones a Internet y los sockets de dominio asociados con la red
conexiones
• i : muestra una tabla de todas las interfaces de red. •
M : muestra una lista de conexiones enmascaradas. • s :
Mostrar estadísticas de resumen para cada protocolo.
Al mostrar las conexiones a Internet y los sockets de dominio con la opción a , podemos modificar aún más la
información devuelta especificando el protocolo con t para TCP y u para conexiones UDP. Por lo tanto, el siguiente
comando con las opciones at mostrará todas las conexiones a Internet y los sockets de dominio que usan el
protocolo TCP de la siguiente manera;
netstat en
Machine Translated by Google
Comandos Linux 189
Conexiones a Internet activas (servidores y establecidas)
Proto RecvQ SendQ Dirección local Dirección extranjera tcp 0 *:5901 *:* tcp tcp tcp Estado
tcp tcp6 0 ESCUCHAR
De la misma manera podemos mostrar un resumen de las estadísticas de red solo para el protocolo UDP con el siguiente comando;
netstatsu
UDP:
738 paquetes recibidos 0 paquetes
a puerto desconocido recibidos. 0 errores de recepción de
paquetes 617 paquetes enviados
IgnoredMulti: 9610
UdpLite:
IpExt:
Paquetes InMcast: 159
OutMcastPaquetes: 22
InBcastPkts: 9610
En octetos: 3576306
OutOctets: 543235
InMcastOctetos: 17183
OutMcastOctetos: 5198
InBcastOctetos: 1712994
InNoECTPkts: 17471
Cuando queramos mostrar un resumen de las interfaces de red podemos usar la opción i de la siguiente manera;
netstat i
… para producir una salida de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 190
Iface MTU Met RXOK RXERR RXDRP RXOVR TXOK TXERR TXDRP TXOVR Flg
eth0 1500 0 18296 0 0 0 3222 0 0 0 BMRU
hola 65536 0 0 0 0 0 0 0 0 0 LRU
wifi0 1500 0 6561 0 1 0 108 0 0 0 BMRU
Pero para obtener un informe extenso sobre las interfaces, podemos combinar la opción i con e de la siguiente manera;
netstat es decir
… para producir;
Tabla de interfaz del núcleo
eth0 Enlace encap:Ethernet HWaddr bd:37:a1:8c:8c:22
dirección inet: 10.1.1.33 Bcast: 10.1.1.255 Máscara: 255.255.255.0
dirección inet6: feb0::1627:9566:445e:907f/64 Alcance: Enlace
UP BROADCAST EJECUTANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX: 18412 errores: 0 descartados: 0 desbordamientos: 0 marco:
0 Paquetes TX: 3296 errores: 0 descartados: 0 desbordados: 0 operador: 0
colisiones: 0 txqueuelen: 1000 Bytes
RX: 2265470 (2,1 MiB) Bytes TX: 688861 (672,7 KiB)
hola Enlace encapsulado: bucle invertido local
dirección inet: 127.0.0.1 Máscara: 255.0.0.0
dirección inet6: ::1/128 Ámbito:Host
UP LOOPBACK EJECUTANDO MTU:65536 Métrica:1
Paquetes RX:0 errores:0 descartados:0 desbordamientos:0 marco:0
Paquetes TX:0 errores:0 descartados:0 desbordamientos:0 portadora:0
colisiones:0 txqueuelen:0 Bytes
RX:0 (0.0 B) Bytes TX:0 (0,0 B)
wlan0 Enlace encap:Ethernet HWaddr 45:12:05:54:27:88
dirección inet: 192.168.1.199 Bcast: 192.168.1.255 Máscara: 255.255.255.0
dirección inet6: fe80::2c3c:7626:232b:67a8/64 Alcance: Enlace
UP BROADCAST EJECUTANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX: 6576 errores: 0 descartados: 1 desbordamientos: 0 trama: 0
Paquetes TX: 108 errores: 0 descartados: 0 desbordamientos: 0 operador:
0 colisiones: 0 txqueuelen: 1000 Bytes
RX: 2208189 (2,1 MiB) Bytes TX: 16428 (16,0 KiB)
También vale la pena mencionar que para un comando como este con una salida relativamente detallada, canalizar el
comando a grep sería un mecanismo eficiente para reducir la salida si es necesario. Por ejemplo para mostrar las
direcciones de hardware para las interfaces podríamos ejecutar el siguiente comando;
Machine Translated by Google
Comandos Linux 191
netstat es decir | grep HWaddr
… que produciría;
eth0 Enlace encap:Ethernet HWaddr bd:37:a1:8c:8c:22
wlan0 Enlace encap:Ethernet HWaddr 45:12:05:54:27:88
Pruébate
1. ¿Cuáles serían las opciones a utilizar para mostrar un resumen de las estadísticas para el TCP?
protocolo.
www.dbooks.org
Machine Translated by Google
Comandos Linux 192
silbido
El comando ping nos permite verificar la conexión de red entre la computadora local y un servidor remoto. Lo hace
enviando una solicitud al servidor remoto para responder a un mensaje (algo así como una solicitud de lectura en un
correo electrónico). Esto nos permite probar la conectividad de la red con el servidor remoto y ver si el servidor está
funcionando. El comando ping es una herramienta de solución de problemas de red simple y de uso común.
• ping [opciones] servidor remoto: comprueba la conexión a un servidor remoto.
Para verificar la conexión al servidor en CNN, por ejemplo, podemos simplemente ejecutar el siguiente comando
(suponiendo que tenemos una conexión a Internet);
hacer ping a cnn.com
Lo cual devolverá algo como lo siguiente;
PING cnn.com (157.166.226.25) 56(84) bytes de datos. 64 bytes de
www.cnn.com (157.166.226.25): icmp_seq=1 ttl=111 time=265 ms 64 bytes de www.cnn.com (157.166.226.25):
icmp_seq=2 ttl=111 time=257 ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=3 ttl=111 time=257
ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=4 ttl=111 time=258 ms 64 bytes de www. .cnn.com
(157.166.226.25): icmp_seq=5 ttl=111 tiempo=257 ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=6
ttl=111 tiempo=257 ms
^C
Estadísticas de ping de cnn.com 14
paquetes transmitidos, 13 recibidos, 7% de pérdida de paquetes, tiempo 13016ms rtt min/avg/max/
mdev = 257.199/267.169/351.320/24.502 ms
Lo primero que debe tener en cuenta es que, de forma predeterminada, el comando ping seguirá ejecutándose. Cuando
queramos detenerlo, debemos presionar CTRLc para que se detenga.
La información presentada es extremadamente útil y nos dice que la dirección IP de www.cnn.com es 157.166.226.25 y
que el tiempo que se tarda en enviar y devolver un mensaje de ping es de unos 250 milisegundos.
Machine Translated by Google
Comandos Linux 193
Aparte, el comando ping es uno de esos comandos que me ha ilustrado muy bien la necesidad de
escribir un libro que tenga un lenguaje más simple para explicar las cosas.
Por ejemplo, la siguiente es la descripción del comando ping de las páginas man ;
“ping utiliza el datagrama ECHO_REQUEST obligatorio del protocolo ICMP para
obtener un ICMP ECHO_RESPONSE de un host o puerta de enlace. Los datagramas
ECHO_ REQUEST ('pings') tienen un encabezado IP e ICMP, seguido de una
estructura temporal y luego un número arbitrario de bytes de 'relleno' que se usan
para completar el paquete".
No me malinterpretes. Es una excelente descripción y no estoy sugiriendo que se cambie, pero no
es del todo amigable para un nuevo usuario.
El comando ping
El comando ping es una herramienta de verificación de red/conectividad muy simple que es uno de los
comandos "ir a" predeterminados para los administradores de sistemas. Quizás se pregunte cómo surgió el
nombre. Es una reminiscencia de la técnica de localización por eco utilizada por delfines, ballenas y
murciélagos para enviar un sonido y juzgar su entorno por el eco devuelto. En el mundo dramatizado del
submarinista, un ping es el sonido emitido por un submarino de la misma manera para juzgar la distancia y
dirección a un objeto. Se ilustró de la mejor manera en el libro de Tom Clancy y la película posterior "La caza
del Octubre Rojo²¹" , donde el comandante del submarino hace la solicitud de "Solo un ping".
Solo un ping
Funciona enviando un mensaje llamado 'Solicitud de eco' a una ubicación de red específica (que
especificamos como parte del comando). Cuando (o si) el servidor recibe la solicitud, envía una 'Respuesta
de eco' al originador que incluye la carga útil exacta recibida en la solicitud. El comando continuará enviando
y (con suerte) recibiendo estos ecos hasta que el comando complete el número requerido de intentos o el
usuario detenga el comando (con CTRLc). Una vez completado, el comando resume el esfuerzo.
²¹https://en.wikipedia.org/wiki/The_Hunt_for_Red_October
www.dbooks.org
Machine Translated by Google
Comandos Linux 194
Del ejemplo usado arriba podemos ver la salida de la siguiente manera;
PING cnn.com (157.166.226.25) 56(84) bytes de datos. 64 bytes de
www.cnn.com (157.166.226.25): icmp_seq=1 ttl=111 time=265 ms 64 bytes de www.cnn.com (157.166.226.25):
icmp_seq=2 ttl=111 time=257 ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=3 ttl=111 time=257
ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=4 ttl=111 time=258 ms 64 bytes de www. .cnn.com
(157.166.226.25): icmp_seq=5 ttl=111 tiempo=257 ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=6
ttl=111 tiempo=257 ms
^C
Estadísticas de ping de cnn.com 14
paquetes transmitidos, 13 recibidos, 7% de pérdida de paquetes, tiempo 13016ms rtt min/avg/max/
mdev = 257.199/267.169/351.320/24.502 ms
Podemos ver en los pings devueltos que la dirección IP del servidor designado como 'www.cnn.com' es
'157.166.226.25' La resolución de la dirección IP sería posible mediante DNS, pero usando una dirección IP
directa está perfectamente bien). La columna icmp_seq= nos dice la secuencia de las respuestas devueltas y
ttl indica por cuántos enrutadores IP puede pasar el paquete antes de desecharlo. El tiempo proporciona el
viaje de regreso medido de la solicitud y la respuesta.
El resumen al finalizar nos dice cuántos paquetes se enviaron y cuántos se recibieron de vuelta.
Esto forma un porcentaje de paquetes perdidos que se establece durante el tiempo especificado. La línea final
proporciona un mínimo, un máximo promedio y una desviación estándar de la media.
Opciones
Hay algunas opciones diferentes de uso, pero las más útiles son las siguientes;
• c solo hacer ping a la conexión un cierto número (recuento) de veces •
i cambio el intervalo de tiempo entre pings
Es realmente útil tener ping ejecutándose continuamente para que podamos realizar cambios en la red
mientras observamos los resultados, pero también es útil ejecutar el comando durante un período de tiempo limitado.
Aquí es donde entra la opción c . Esto simplemente restringirá la cantidad de pings que se envían y luego
cesará y resumirá el esfuerzo. Esto se puede utilizar de la siguiente manera;
ping c 4 cnn.com
Lo cual devolverá algo como lo siguiente;
Machine Translated by Google
Comandos Linux 195
PING cnn.com (157.166.226.25) 56(84) bytes de datos. 64 bytes de
www.cnn.com (157.166.226.25): icmp_seq=1 ttl=111 time=266 ms 64 bytes de www.cnn.com
(157.166.226.25): icmp_seq=2 ttl=111 time=263 ms 64 bytes de www.cnn.com (157.166.226.25):
icmp_seq=3 ttl=111 time=288 ms 64 bytes de www.cnn.com (157.166.226.25): icmp_seq=4 ttl=111
time=280 ms
Estadísticas de ping de cnn.com 4
paquetes transmitidos, 4 recibidos, 0% de pérdida de paquetes, tiempo 3003ms rtt
min/avg/max/mdev = 263.283/274.586/288.637/10.386 ms
A veces puede ser conveniente establecer nuestro propio intervalo de tiempo entre pings. Esto se puede
lograr con la opción i que nos permitirá variar el tiempo de repetición. El valor predeterminado es 1
segundo, sin embargo, el valor no se puede establecer por debajo de 0,2 segundos sin hacerlo como superusuario.
Curiosamente, existe una opción para inundar la red con pings (modo de inundación) para probar la infraestructura
de la red. Sin embargo, esto sería algo que generalmente se deja para investigar cuidadosamente cuando
realmente lo necesita.
Pruébate
1. ¿Cómo sabe el comando ping a un nombre de servidor cómo devolver una dirección IP?
2. ¿Qué significa 'ttl'?
www.dbooks.org
Machine Translated by Google
Comandos Linux 196
scp
El comando scp se usa para copiar archivos de forma segura mediante una conexión ssh entre dos computadoras.
El proceso de copia es muy flexible y se puede realizar desde una máquina local a una máquina remota o viceversa.
También se puede usar para copiar de una computadora remota a otra computadora remota. El comando scp es fácil de
usar y es una herramienta vital para transferir archivos entre computadoras que están conectadas en una red.
• scp [opciones] usuario1@hostorigen:directorio/nombre de archivo usuario2@hostdestino:directorio/nombre de archivo:
copia segura de archivos entre computadoras.
Por ejemplo, si tuviéramos un archivo llamado 'foo.txt' en nuestro directorio actual (fuente) y quisiéramos transferirlo al
directorio de inicio del usuario 'pi' en la computadora de destino con la dirección IP 10.1.1.33, podríamos ejecuta el
siguiente comando;
scp foo.txt [email protected]:~/
Si nunca antes hemos intentado iniciar sesión de forma segura (o archivos scp ) en esa computadora, se nos presenta
una advertencia que nos pregunta si estamos seguros y si esta es realmente la computadora a la que pretendemos
conectarnos;
No se puede establecer la autenticidad del host '10.1.1.33 (10.1.1.33)'.
La huella dactilar de la clave ECDSA es 35:2c:ea:8e:b2:87:19:0a:40:b2:bb:81:22:01:e3:02.
¿Está seguro de que desea continuar conectándose (sí/no)? Sí
Suponiendo que esto sea correcto, podemos responder con 'y' y el proceso continuará y pedirá la contraseña para el
usuario 'pi';
Advertencia: se agregó permanentemente '10.1.1.33' (ECDSA) a la lista de hosts conocidos. contraseña
de [email protected]:
Dado que hemos confirmado que este es el host correcto, se agrega a una lista maestra de hosts conocidos para que no
se nos pregunte si lo sabemos en el futuro. Luego se nos solicita la contraseña de los usuarios 'pi' en el host de destino.
Una vez ingresado, se realiza la transferencia y se nos presentan los detalles del proceso;
En este punto, el host remoto tiene una copia del archivo 'foo.txt' en el directorio de inicio del usuario 'pi'.
Como no especificamos el nombre del archivo en la computadora de destino, el nombre siguió siendo el
mismo.
El comando que usamos en el ejemplo empleó algunos atajos y se basó en los valores predeterminados para acortar la
cantidad que necesitábamos escribir, pero también podríamos haber escrito el comando completo especificando toda la
información como tal;
Machine Translated by Google
Comandos Linux 197
scp [email protected]:/inicio/pi/foo.txt [email protected]:/inicio/pi/foo.txt
La próxima vez que realicemos un scp (o ssh) a la misma máquina (desde la misma máquina local) no se nos
preguntará si estamos seguros de la conexión y se nos dirigirá directamente a la solicitud de contraseña.
el comando scp
El comando scp está diseñado para proporcionar al usuario un mecanismo para copiar archivos de forma
segura entre computadoras. Existen mecanismos alternativos para copiar archivos, pero scp fue diseñado para
garantizar que se mantenga la seguridad de la información a medida que se transfiere.
Uno de los temas que prevalece cada vez más en los tiempos modernos es la necesidad de brindar seguridad a los datos.
Si bien en muchos casos parece aceptable tener transparencia al copiar archivos, las situaciones en las que se
garantiza la privacidad y/o la seguridad (registros médicos, legales o financieros) exigen una mayor protección
contra el uso indebido. Sin entrar en la mecánica del mismo (esto sería un libro en sí mismo), el comando scp
proporciona una conexión entre el usuario y un host remoto que tiene un alto grado de seguridad contra alguien
que intercepta la información que se transmite. Proporciona esta seguridad al utilizar el comando ssh como
línea de base para la conexión, por lo que también sería útil comprender este comando.
La mejor manera de ilustrar la utilidad de scp es proporcionar ejemplos de uso común. Por lo tanto,
demostraremos los comandos scp para copiar un archivo (/home/pi/foo.txt) en las siguientes circunstancias;
• De un host remoto a un host local
• De un host local a un host remoto
• De un host remoto a otro
Supondremos una configuración similar a la que se muestra a continuación con dos hosts remotos ('remote1' y
'remote2') y un host local llamado 'local'. Asimismo, supondremos que el usuario 'pi' tiene cuentas en las tres
máquinas.
Los hosts conectados para scp
De un host remoto a un host local
www.dbooks.org
Machine Translated by Google
Comandos Linux 198
scp pi@remoto1:/inicio/pi/foo.txt pi@local:/inicio/pi/foo.txt
De un host local a un host remoto
scp pi@local:/inicio/pi/foo.txt pi@remoto1:/inicio/pi/foo.txt
De un host remoto (remote1) a un host remoto (remote2)
scp pi@remoto1:/inicio/pi/foo.txt pi@remoto2:/inicio/pi/foo.txt
Podemos copiar varios archivos a la vez separándolos con un espacio. El siguiente comando copia foo.txt y bar.txt del
directorio actual (local) al directorio /home/pi en el
servidor remoto1
scp foo.txt bar.txt pi@remote1:/home/pi/
Podemos copiar varios archivos del mismo tipo usando comodines. El siguiente comando copia todos los archivos
que terminan en .txt desde el directorio actual (local) al directorio /home/pi en el servidor
remoto1
scp *.txt pi@remoto1:/inicio/pi/
Opciones
Hay algunas opciones que se pueden usar con scp. Los siguientes son particularmente útiles;
• r copiará recursivamente archivos/directorios •
p conservará las propiedades del archivo
Para copiar directorios necesitamos emplear la opción r que copiará directorios recursivamente.
La palabra 'recursivamente' nos dice que el comando buscará en un directorio y también
copiará cualquier subdirectorio de ese directorio y cualquier subdirectorio de ese subdirectorio
hasta el infinito…. (por lo que obtendrá todos los archivos y subdirectorios en el directorio
especificado.
Machine Translated by Google
Comandos Linux 199
Entonces, para copiar el directorio foodir desde una máquina remota a nuestro directorio local (actual)
scp r pi@remote1:/home/pi/foodir.
Observe que en el comando anterior hemos usado el símbolo de punto (.) para decirle al comando que use la
ubicación del directorio actual en la máquina local.
Cuando copiamos un archivo, no transferimos las propiedades del archivo con él. Para conservar el tiempo de
modificación, el tiempo de acceso y los modos del archivo de origen, debemos incluir la opción p .
Pruébate
1. ¿Cuántos niveles de subdirectorios admite la opción r ?
2. ¿El comando scp admite el uso de comodines?
3. ¿Se podría usar el comando scp para copiar archivos entre diferentes directorios en el mismo
¿computadora remota?
4. ¿Se podría usar el comando scp para copiar archivos entre diferentes usuarios en el mismo control remoto?
¿computadora?
www.dbooks.org
Machine Translated by Google
Comandos Linux 200
sftp
El comando sftp se usa para iniciar un programa interactivo diseñado para proporcionar una forma segura de
transferir archivos entre dos computadoras. El comando se basa en una conexión ssh . La característica que
distingue a sftp de scp es su capacidad para proporcionar una opción interactiva para mover archivos entre dos
hosts. El comando sftp es un reemplazo seguro del comando ftp y es una herramienta útil para transferir archivos
de forma interactiva entre computadoras que están conectadas a una red.
• sftp [opciones] [usuario@]nombrehost[:directorio]: copia interactiva de archivos entre computadoras
de forma segura
Para iniciar el programa, podemos hacerlo simplemente usando el nombre de usuario y host que queremos en el
host remoto. El ejemplo que usaremos es muy simple y asume que lo ejecutamos como el usuario 'pi' y que hay
una cuenta para el usuario 'pi' en la computadora remota;
ftp 10.1.1.33
Si nunca antes hemos intentado sftp, ssh o scp a esa computadora, se nos presenta una advertencia que nos
pregunta si estamos seguros y si esta es realmente la computadora a la que intentamos conectarnos;
No se puede establecer la autenticidad del host '10.1.1.33 (10.1.1.33)'.
La huella dactilar de la clave ECDSA es 35:2c:ea:8e:b2:87:19:0a:40:b2:bb:81:22:01:e3:02.
¿Está seguro de que desea continuar conectándose (sí/no)? Sí
Suponiendo que esto sea correcto, podemos responder con 'y' y el proceso continuará y pedirá la contraseña
para el usuario 'pi';
Advertencia: se agregó permanentemente '10.1.1.33' (ECDSA) a la lista de hosts conocidos.
contraseña de [email protected]:
Dado que hemos confirmado que este es el host correcto, se agrega a una lista maestra de hosts conocidos para
que no se nos pregunte si lo sabemos en el futuro. Luego se nos solicita la contraseña de los usuarios 'pi' en el
host de destino. Una vez ingresado, se realiza la conexión, se inicia la sesión interactiva y se nos presenta un
símbolo del sistema sftp ;
Conectado a 10.1.1.33
sftp>
El símbolo del sistema nos permite navegar de forma interactiva por la estructura del directorio utilizando
comandos comunes como pwd, cd y ls.
Así que desde aquí podemos listar el contenido del directorio en el que estamos usando el comando ls ;
Machine Translated by Google
Comandos Linux 201
sftp>ls
Escritorio dir1
dir2 barra.txt
foo.txt Foobar
gastronomia temperatura
Puede que no sea obvio de inmediato, pero estamos en el directorio de inicio de usuarios 'pi' en 10.1.1.33.
Suponiendo que estamos interesados en recuperar el archivo 'foo.txt', podemos usar el comando get para recuperarlo y
volver a copiarlo en nuestro directorio de trabajo local (el directorio donde primero ejecutamos el comando sftp );
sftp> get foo.txt
Recuperando /home/pi/foo.txt a foo.txt /home/pi/
foo.txt 100% 129 0.1KB/s 00:00
Habiendo completado lo que queríamos hacer, ahora podemos salir del programa sftp interactivo usando el comando
bye ;
sftp>adiós
pi@raspberrypi:~ $
La próxima vez que realicemos un sftp, scp o ssh a la misma máquina (desde la misma máquina local) no se nos
preguntará si estamos seguros de la conexión y se nos dirigirá directamente a la solicitud de contraseña.
El ejemplo que usamos supuso comenzar como el usuario 'pi', tener una cuenta para el usuario 'pi' en el host remoto y
querer comenzar en el directorio de inicio de los usuarios 'pi'. Por supuesto, este no siempre será el caso y podríamos
haber ejecutado el comando con instrucciones más explícitas sobre el usuario para iniciar sesión y el directorio al que ir
de la siguiente manera;
sftp [email protected]:/inicio/pi
el comando scp
El Protocolo de Transferencia de Archivos (FTP) fue un protocolo ampliamente utilizado para transferir archivos entre
computadoras. Sin embargo, con un énfasis cada vez mayor en la seguridad y debido a que FTP envía información de
autenticación y contenido de archivos a través de la red sin cifrar, se reconoció que se necesitaba una mejor manera de
realizar el mismo trabajo. El comando sftp fue desarrollado para proporcionar una alternativa segura a FTP. Como tal,
mitiga las preocupaciones de seguridad al proporcionar la transferencia de datos a través de un canal totalmente
encriptado.
sftp es un protocolo de transferencia de archivos que implementa todas las operaciones que se encuentran en FTP e
incluye algunas que scp no maneja, como cambiar el nombre y eliminar archivos remotos.
www.dbooks.org
Machine Translated by Google
Comandos Linux 202
Como se muestra en el ejemplo anterior, una vez que se inicia el programa, se controla mediante una variedad de comandos
que permiten la navegación a través de la estructura de directorios y el movimiento de los archivos. La lista de comandos
disponibles se puede encontrar escribiendo ayuda o ? en el símbolo del sistema de sftp . La lista de comandos disponibles
se muestra a continuación;
Comandos disponibles:
• bye : salir de sftp •
cd path: cambiar el directorio remoto a 'path' • chgrp grp
path: cambiar el grupo del archivo 'path' a 'grp' • chmod mode path:
cambiar los permisos del archivo 'path' a 'mode' • chown propia ruta: cambia el
propietario del archivo 'ruta' a 'propio' • df [hi] [ruta]: muestra estadísticas
para el directorio actual o el sistema de archivos que contiene 'ruta' • exit : sale de sftp • obtiene [Ppr] remoto
[local] : Descargar
archivo • reget remoto [local] : Reanudar archivo de
descarga • reput [local] remoto : Reanudar archivo de carga
• ayuda : Muestra este texto de ayuda • ruta lcd : Cambia
el directorio local a 'ruta' • lls [lsoptions
[ruta] ] : muestra la lista del directorio local • lmkdir ruta :
crea el directorio local • ln [s] ruta antigua nueva ruta : vincula el archivo
remoto (s para enlace simbólico) • lpwd :
imprime el directorio de trabajo local • ls [1afhlnrSt] [ruta] : muestra el control
remoto lista de directorios • lumask umask :
establecer umask local en 'umask' • mkdir ruta : crear directorio remoto •
progreso : alternar la visualización del medidor de
progreso • poner [Ppr] local [remoto] : cargar
archivo • pwd : mostrar directorio de trabajo remoto • salir :
Salir de sftp • renombrar oldpath newpath :
Renombrar archivo remoto • rm path : Eliminar archivo
remoto • rmdir path :
Eliminar directorio remoto • symlink oldpath newpath : Symlink
archivo remoto • version : Mostrar
versión sftp • !command : Ejecutar 'comando' en
shell local
• ! : Escape al caparazón local
• ? : sinónimo de ayuda
No es difícil usar estos comandos para asegurarse de que puede navegar y mover archivos correctamente en el servidor
remoto, pero cuando necesitamos realizar funciones en la computadora local, el ! El comando es muy útil para volver al
shell local donde podemos ejecutar comandos normales y luego podemos escribir exit para volver a la sesión de sftp .
Machine Translated by Google
Comandos Linux 203
Pruébate
1. ¿Cuál es la principal ventaja de usar sftp sobre ftp?
2. ¿Cuál es la principal ventaja de usar sftp sobre scp?
www.dbooks.org
Machine Translated by Google
Comandos Linux 204
ssh
El comando ssh se usa para acceder de forma segura a una máquina remota para que un usuario pueda iniciar sesión y ejecutar
comandos. A pesar de su importancia, el comando ssh es simple de usar y es una herramienta vital para administrar las
computadoras que están conectadas en una red. En situaciones en las que una computadora funciona 'sin cabeza' (sin pantalla ni
teclado), es especialmente útil.
• servidor ssh [opciones] [nombre de inicio de sesión]: acceda de forma segura a un equipo remoto.
Por ejemplo, operando como el usuario 'pi' queremos iniciar sesión en la computadora en la dirección de red
10.1.1.33
Iniciamos el proceso ejecutando el comando;
ssh 10.1.1.33
Si nunca antes hemos intentado iniciar sesión de forma segura en esa computadora, se nos presenta una advertencia que nos
pregunta si estamos seguros y si esta es realmente la computadora en la que pretendemos iniciar sesión;
No se puede establecer la autenticidad del host '10.1.1.33 (10.1.1.33)'.
La huella dactilar de la clave ECDSA es 35:2c:ea:8e:b2:87:19:0a:40:b2:bb:81:22:01:e3:02.
¿Está seguro de que desea continuar conectándose (sí/no)? Sí
Suponiendo que esto sea correcto, podemos responder con 'y' y el proceso continuará y solicitará la contraseña para el usuario
'pi' (dado que ejecutamos el comando como 'pi', la acción predeterminada es asumir que estamos intentando para iniciar sesión
en la computadora remota como el usuario 'pi');
Advertencia: se agregó permanentemente '10.1.1.33' (ECDSA) a la lista de hosts conocidos.
contraseña de [email protected]:
Dado que hemos confirmado que este es el host correcto, se agrega a una lista maestra de hosts conocidos para que no se nos
pregunte si lo sabemos en el futuro. Luego se nos solicita la contraseña de usuario 'pi' en el host remoto. Una vez que ingresamos,
iniciamos sesión y se nos presentan algunos detalles de la máquina a la que nos estamos conectando;
Machine Translated by Google
Comandos Linux 205
Linux raspberrypi 3.18.11v7+ #781 SMP PREEMPT martes 21 de abril 18:07:59 BST 2015 a\
rmv7l
Los programas incluidos con el sistema Debian GNU/Linux son software libre; los términos de distribución exactos
para cada programa se describen en los archivos individuales en /usr/share/doc/*/copyright.
Debian GNU/Linux viene SIN GARANTÍA EN ABSOLUTO, en la medida permitida por la ley aplicable.
Último inicio de sesión: dom 10 de enero a las 18:36:26 de 2016 desde 10.1.1.100
En este punto, iniciamos sesión en la computadora en 10.1.1.33 y podemos ejecutar comandos como el usuario
'pi' en esa máquina.
Para cerrar esta conexión simplemente podemos presionar la combinación de teclas CTRLd y la conexión se
cerrará con el siguiente mensaje;
pi@raspberrypi ~ $ cerrar sesión
Conexión a 10.1.1.33 cerrada.
La próxima vez que iniciemos sesión en la misma máquina, no se nos preguntará si estamos seguros de la
conexión y se nos dirigirá directamente a la solicitud de contraseña.
El comando ssh
El comando ssh está diseñado para proporcionar a un usuario acceso seguro a un shell en una computadora
remota. Hay varias formas diferentes en que los usuarios pueden interactuar con las computadoras en red, pero
una de las funciones clave que debe habilitarse es la capacidad de ejecutar comandos como si estuviera
sentado en una terminal con un teclado conectado directamente a la máquina.
A menudo, esto no es posible porque la computadora está ubicada en otra habitación o incluso en otro país.
A veces, la máquina no tiene un teclado o un monitor conectado y se encuentra en un estante o en un estante.
A veces, el servidor será una máquina virtual sin hardware "real" en absoluto. Para estos casos, todavía
queremos poder conectarnos a la máquina de alguna manera y ejecutar comandos.
Hay diferentes comandos y programas que proporcionarán este acceso remoto, pero uno de los temas que
prevalece cada vez más es la necesidad de proporcionar una conexión segura entre el host remoto y el usuario.
Esto se debe a que el control de esas máquinas remotas debe limitarse a aquellos que están autorizados para
realizar trabajos en las máquinas para la operación segura de las funciones que están realizando (piense en el
control remoto de un suministro de electricidad o computadoras de control de tráfico).
Sin entrar en la mecánica del mismo (esto sería un libro en sí mismo), el comando ssh proporciona una conexión
entre el usuario y un host remoto que tiene un alto grado de seguridad contra alguien que intercepta la
información que se transmite.
El ejemplo anterior demostró la conexión a un servidor remoto como el usuario actualmente conectado. Sin
embargo, si quisiéramos iniciar sesión como un usuario diferente (llamemos al usuario 'newpi') ejecutaríamos el
comando de la siguiente manera;
www.dbooks.org
Machine Translated by Google
Comandos Linux 206
Los dos ejemplos hasta ahora han usado direcciones IP para designar el nombre del host, sin embargo, si el
host remoto tuviera un nombre designado 'pinode', el mismo comando podría ingresarse de la siguiente manera;
ssh nuevopi@pinode
Hay una gran cantidad de usos que hace posible el comando ssh, pero para un nuevo usuario, la conclusión
debe ser que el acceso entre dos servidores se puede realizar fácilmente y la información que se transfiere se
puede hacer de manera segura usando el comando ssh .
Pruébate
1. ¿Cuáles son las dos funciones principales del comando ssh ?
Machine Translated by Google
Comandos Linux 207
trazar ruta
El comando traceroute se utiliza para determinar la ruta que siguen los paquetes IP que se originan en nuestro
sistema para llegar a un host de destino. Una red grande incluirá enrutadores para dirigir paquetes de un destino a
otro. traceroute nos permitirá ver el camino que toman los paquetes como un rastro de migas de pan. traceroute
es un programa de diagnóstico de red que ha sido desarrollado para solucionar problemas donde las conexiones
están rotas o para identificar enrutadores y/o dispositivos en la ruta de la red.
• traceroute [opciones] hostname: rastrea la ruta que toman los paquetes al host de la red
En su forma más simple, traceroute solo requiere el comando y el nombre o la dirección IP del host de destino;
rastrear ruta 8.8.8.8
La dirección IP 8.8.8.8 es la dirección del sistema de nombres de dominio (DNS) público de Google.
La información devuelta muestra una lista de los diferentes 'saltos' que dieron los paquetes para llegar al
servidor 8.8.8.8.
traceroute a 8.8.8.8 (8.8.8.8), 30 saltos máx., paquetes de 60 bytes 1 10.1.1.201
(10.1.1.201) 8,421 ms 8,243 ms 8,140 ms 2 jetstream.xtra.co.nz (125.239.10.1)
41,724 ms 42,742 Sra. 43.633ms
3 * * *
4 ae810.gateway.net.nz (122.56.116.5) 57.666 ms 58.964 ms 59.604 ms 5 ae52.gateway.net.nz
(210.55.202.213) 60.572 ms 61.427 ms 63.133 ms 6 xe709.gateway .net.nz (202.50.232.182)
87.727 ms 76.504 ms 76.583 ms 7 ae210.gateway.net.nz (202.50.232.246) 77.858 ms 75.211 ms
75.970 ms 8 google.gateway.net.nz (202.50.237 .198) 78.081 ms 77.741 ms 79.743 ms 9 72.14.237.11
(72.14.237.11) 81.398 ms 81.768 ms 82.599 ms 10 216.239.41.81 (216.239.41.81) 82.984 ms 83.978
ms 75. 562 ms 11 googlepublicdnsa.google.com (8.8. 8.8) 76.806ms 76.423ms
75.224ms
Cada línea muestra el tiempo de vida (también conocido como TTL o el 'límite de salto') que se incrementa a
medida que avanza la ruta, la dirección IP y, si está disponible, el nombre de host del enrutador que encuentra
junto con el tiempo de ida y vuelta (RTT ) para ese enrutador en particular. Hay tres RTT por enrutador, ya que
traceroute envía tres paquetes por enrutador.
La tercera posición muestra tres asteriscos (* * *) que nos indican que no se pudo devolver una lectura en particular.
Esto podría deberse a varias razones, pero en este caso podemos ver que la omisión no impidió que los paquetes
completaran su viaje.
www.dbooks.org
Machine Translated by Google
Comandos Linux 208
El comando rastrear ruta
El programa traceroute se llama así porque intenta rastrear la ruta de los paquetes a medida que fluyen a través
de una red.
Algunas redes, e Internet en particular, son combinaciones grandes y complejas de hardware de red, conectadas
entre sí mediante puertas de enlace, enrutadores y conmutadores. Rastrear la ruta de nuestros paquetes de red
(o encontrar la puerta de enlace que está dejando caer nuestro tráfico) puede ser difícil. traceroute usa un campo
de 'tiempo de vida' en el protocolo IP para intentar generar una respuesta ICMP TIME_EXCEEDED desde cada
puerta de enlace en la cadena a un host remoto.
En nuestros entornos de red modernos, a veces es posible que traceroute no funcione como se esperaba. Esto se
debe al uso generalizado de cortafuegos. Algunos cortafuegos filtrarán los puertos UDP 'poco probables', o incluso
las respuestas ICMP TIME_EXCEEDED. Para evitar esto, se pueden usar algunos métodos adicionales de
traceroute .
Cada uno de ellos funciona de forma ligeramente diferente. Pero el concepto general detrás de cada uno de ellos es el mismo.
Todos ellos utilizan el valor TTL.
• U : el método predeterminado que utiliza
UDP. • I : Utiliza ICMP ECHO para las
sondas. • T : utiliza TCP SYN para las sondas
Es posible que ejecutar traceroute con las opciones I o T requiera permisos sudo .
En cuyo caso, el comando se vería así;
sudo I traceroute 8.8.8.8
Pruébate
1. ¿Qué tipo de problemas puede resaltar traceroute ?
2. ¿Qué podría intentar si parece que la prueba predeterminada de traceroute no funciona en algún momento?
Machine Translated by Google
Comandos Linux 209
wget
El comando wget (o quizás una mejor descripción es 'utilidad') es un programa diseñado para facilitar la
descarga de archivos de Internet usando la línea de comandos. Es compatible con los protocolos HTTP,
HTTPS y FTP y está diseñado para ser robusto para realizar su trabajo incluso en una conexión de red que es
lenta o inestable. Tiene una función similar a curl para recuperar archivos, pero existen algunas diferencias
clave entre los dos, siendo la principal para wget que es capaz de descargar archivos de forma recursiva
(donde los recursos están vinculados desde páginas web).
• wget [opciones] [URL]: descarga o carga archivos de la web de forma no interactiva.
En su ejemplo más simple de uso solo es necesario proporcionar la URL del archivo que se requiere y
comenzará la descarga;
wget https://github.com/mbostock/d3/archive/master.zip
El programa luego se conectará al servidor remoto, confirmará los detalles del archivo y comenzará a
descargar el archivo;
20160207 09:08:47 https://github.com/mbostock/d3/archive/master.zip Resolviendo github.com
(github.com)... 192.30.252.131 Conectando a github. com (github.com)|
192.30.252.131|:443... conectado.
Solicitud HTTP enviada, esperando respuesta... 302 Ubicación
encontrada: https://codeload.github.com/mbostock/d3/zip/master [siguiente] 20160207 09:09:07
https:/ /codeload.github.com/mbostock/d3/zip/master Resolviendo codeload.github.com
(codeload.github.com)... 192.30.252.161 Conectando a codeload.github.com |
192.30.252.161|:443... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: sin especificar [aplicación/zip]
Guardando en: 'master.zip.1
A medida que avanza el proceso de descarga, una animación de texto simple informa sobre el progreso con
una indicación de la cantidad descargada y la tasa
Una vez completada, se informará la descarga exitosa acompañada de algunas estadísticas de la transferencia;
20160207 09:10:27 (50,3 KB/s) 'master.zip.1' guardado [3204673]
El archivo se descarga en el directorio de trabajo actual.
www.dbooks.org
Machine Translated by Google
Comandos Linux 210
El comando wget
wget es una utilidad que existe un poco fuera del alcance de un comando puro en el sentido de que es un programa de
código abierto que se ha compilado para funcionar en una variedad de sistemas operativos. El nombre es una derivación
de web get donde la función del programa es 'obtener' archivos de la red mundial.
Lo hace a través de la compatibilidad con los protocolos HTTP, HTTPS y FTP, de modo que si pudiera pegar una URL en
un navegador y luego descargar un archivo, el mismo archivo podría descargarse desde la línea de comando usando
wget . wget no es la única utilidad de descarga de archivos que se usa comúnmente en Linux. curl también se usa
ampliamente para funciones similares. Sin embargo, ambos programas tienen diferentes fortalezas y, en el caso de wget ,
esa fortaleza es compatible con la descarga recursiva, donde se puede descargar un sitio web completo manteniendo su
estructura de directorios y enlaces. También hay otras diferencias, pero esta sería la principal.
Existe una amplia gama de opciones que se pueden utilizar para garantizar que las descargas se configuren correctamente.
Examinaremos algunos de los ejemplos más básicos a continuación y luego revisaremos la función recursiva de wget.
• limitrate : limita la velocidad de descarga / tasa de descarga. • O :
descarga y almacena con un nombre de archivo diferente • b :
descarga en segundo plano • i : descarga
múltiples archivos/URL • ftpuser y ftp
password : Descarga FTP usando wget con nombre de usuario y contraseña
autenticación
Tasa de limitar el ancho de banda
Habrá momentos en los que estaremos en algún lugar donde el ancho de banda sea limitado o queramos priorizar el
ancho de banda de alguna manera. Podemos restringir la velocidad de descarga con la opción limitrate de la siguiente
manera;
wget limitrate=20k https://github.com/mbostock/d3/archive/master.zip
Aquí hemos limitado la velocidad de descarga a 20 kilobytes por segundo. La cantidad puede expresarse en bytes,
kilobytes con el sufijo k o megabytes con el sufijo m .
Cambiar el nombre del archivo descargado
Si intentamos descargar un archivo con el mismo nombre en el directorio de trabajo, se guardará con un sufijo numérico
incremental (es decir, .1, .2 , etc.). Sin embargo, podemos darle al archivo un nombre diferente cuando lo descargamos
usando la opción O (esa es una 'o' mayúscula por cierto). Por ejemplo para guardar el archivo con el nombre alpha.zip
haríamos lo siguiente;
Machine Translated by Google
Comandos Linux 211
wget O alfa.zip https://github.com/mbostock/d3/archive/master.zip
Descargar en segundo plano
Debido a que la descarga de un archivo puede llevar un tiempo considerable, podemos indicarle al proceso que se
ejecute en segundo plano, lo que liberará al terminal para que siga funcionando. Esto se logra con la opción b de la
siguiente manera;
wget b https://github.com/mbostock/d3/archive/master.zip
Mientras continúa la descarga, el progreso que normalmente se reflejaría en la pantalla se pasa al archivo wgetlog que
estará en el directorio de trabajo. Podemos verificar este archivo para determinar el progreso según sea necesario.
Descargar varios archivos
Si bien podemos descargar varios archivos simplemente incluyéndolos uno tras otro en el comando de la siguiente
manera;
wget https://website.org/file1.zip https://website.org/file2.zip
Si bien eso es bueno, puede comenzar a ser un poco confuso si se incluye una gran cantidad de URL.
Para facilitar las cosas, podemos crear un archivo de texto con las URL/nombres de los archivos que queremos
descargar y luego especificamos el archivo con la opción i .
Por ejemplo, si tenemos un archivo llamado archivos.txt en el directorio de trabajo actual que tiene los siguientes
contenidos;
https://github.com/d3/d3dispatch/blob/master/src/dispatch.js https://github.com/d3/
d3selection/blob/master/src/select.js https:// github.com/d3/d3dsv/blob/master/
src/csv.js https://github.com/d3/d3scale/blob/master/src/time.js
https://github.com/ d3/d3color/blob/master/src/color.js https://github.com/
d3/d3axis/blob/master/src/axis.js https://github.com/d3/d3 tiempo/blob/
maestro/src/intervalo.js
Entonces podemos ejecutar el comando...
wget i archivos.txt
www.dbooks.org
Machine Translated by Google
Comandos Linux 212
… y trabajará a través de cada archivo y lo descargará.
Descargar archivos que requieren un nombre de usuario y contraseña
Los ejemplos mostrados hasta ahora se han podido descargar sin proporcionar ningún tipo de autenticación (sin
usuario/contraseña). Sin embargo, esto será un requisito para algunas descargas.
Para incluir un nombre de usuario y una contraseña en el comando, incluimos las opciones ftpuser y ftp
password . Por ejemplo si necesitáramos usar el nombre de usuario 'adam' y la contraseña '1234' formaríamos o
mandaríamos de la siguiente manera;
wget ftpuser=adam ftppassword=1234 ftp://website.org/file.zip
Usted puede estar pensando para sí mismo "¿Es esto seguro?". A lo que la respuesta probablemente debería ser
"No". Está un paso por encima del acceso anónimo, pero no mucho más. Este no es un método por el cual las cosas
que deben permanecer privadas deben protegerse, pero proporciona un método para restringir el anonimato.
acceso.
Descargar archivos recursivamente
Una de las características principales de wget es su capacidad para descargar una gran estructura de directorios
compleja que existe en muchos niveles. El mejor ejemplo de esto sería la estructura de archivos y directorios que
existen para conformar un sitio web. Si bien existe una amplia gama de opciones que se pueden pasar para que el
proceso funcione correctamente en una amplia variedad de situaciones, aún es posible usar un conjunto bastante
genérico para comenzar.
Por ejemplo, para descargar los contenidos del sitio web en dnoob.runkite.com podemos ejecutar el siguiente
comando;
wget e robots=off r np c nc http://dnoob.runkite.com/
Las opciones utilizadas aquí hacen lo siguiente;
• e robots=off : la opción de ejecución nos permite ejecutar un comando separado y en este caso es el comando
robots=off el que le dice al sitio web que estamos visitando que debe ignorar el hecho de que estamos
ejecutando un comando que actúa como un robot y nos permite descargar los archivos.
• r : la opción recursiva habilita la descarga recursiva. • np : la opción
sin padres asegura que una recuperación recursiva solo funcione en páginas que
están debajo del directorio especificado.
• c : la opción continuar asegura que cualquier archivo descargado parcialmente continúe desde el
lugar que dejó.
• nc : la opción noclobber garantiza que los archivos duplicados no se anulen
Una vez ingresado, el programa mostrará una lista continua del progreso y un resumen que nos indica cuántos
archivos y el tiempo que tomó al final. El resultado final es un directorio llamado
Machine Translated by Google
Comandos Linux 213
dnoob.runkite.com en el directorio de trabajo que tiene todo el sitio web, incluidas todas las páginas vinculadas
y los archivos que contiene. Si examinamos la estructura del directorio, se parecerá un poco a lo siguiente;
dnoob.runkite.com/ ├──
activos │ ├──
css │ │ └──
screen.css?v=bb61fe2 │ ├── fuentes │ │ ├──
icons.svg │ │ └ ──
iconos.woff │ │ │ ├── contenido
│ imágenes │ └── 2015 │ ├──
└──
js
├── index.js?v=bb61fe2
└──
jquery.fitvids.js?v=bb61fe2
09 │ │ ├──
└──
BplusandB2.png │ │
├── piblog01.png │ │
│ └── 10 │ ├── placa02.
png │ ├── terminal.png │ ├── todoesunarchivoen
linux │ └── index.html ├── favicon.ico ├──
└──
index.html ├── RPiAlpha1.png
linuxfilesand inodes │ └──
index.html ├── public │ jquery.min.js?v=bb61fe2
├── expresionesregularesenlinux │ └──
└──
wheezyraspbianarchivo.png
index.html ├── un │ └── index. html
└──
└──
bienvenido a raspbiandebianwheezy └── index.html
El uso de wget para la descarga recursiva debe usarse de manera adecuada. Se consideraría de mala
educación saquear un sitio web por cualquier otra razón que no sea una buena razón. En caso de duda,
comuníquese con la persona responsable de un sitio o un repositorio solo para asegurarse de que no haya
una forma más simple de realizar su tarea si se trata de algo 'raro'.
Pruébate
1. Cree un comando wget que descargue un archivo con un nombre diferente, limitando la descarga
www.dbooks.org
Machine Translated by Google
Comandos Linux 214
velocidad a 10 kilobytes por segundo y que opera en segundo plano.
2. Una vez realizada la pregunta 1 anterior, ¿dónde encontramos la salida de las descargas?
¿progreso?
Machine Translated by Google
Comandos Linux 215
Misceláneas
aptget
El comando aptget es un programa que se utiliza con las distribuciones de Linux basadas en Debian para instalar,
eliminar o actualizar paquetes de software. Es una herramienta vital para instalar y administrar software y debe usarse
regularmente para garantizar que el software esté actualizado y que se cumplan los requisitos de parches de seguridad.
Hay una gran cantidad de usos para aptget, pero consideraremos los conceptos básicos que nos permitirán salir
adelante. Estos incluirán;
• Actualización de la base de datos de aplicaciones disponibles (aptget update) •
Actualización de las aplicaciones en el sistema (aptget upgrade) • Instalación
de una aplicación (aptget install *packagename*) • Desinstalación de una
aplicación (apt obtener eliminar *nombrepaquete*)
El comando aptget
La parte apt de aptget significa ' herramienta de empaquetado avanzada '. El programa es un proceso para administrar
paquetes de software instalados en máquinas Linux, o más específicamente en máquinas Linux basadas en Debian²²
(ya que aquellas basadas en 'redhat²³' generalmente usan su rpm ( administración de paquetes red hat (o más
recientemente, la ' administración de paquetes rpm ') )) Como Raspbian se basa en Debian, los ejemplos que
usaremos se basan en aptget.
APT simplifica el proceso de administración de software en sistemas informáticos similares a Unix al automatizar la
recuperación, configuración e instalación de paquetes de software. Históricamente, este fue un proceso mejor descrito
como "infierno de dependencia", donde los requisitos para diferentes paquetes podrían significar que una instalación
manual de una aplicación de software simple podría llevar al usuario a un sumidero de desesperación.
En el uso común de aptget, agregaremos el prefijo sudo al comando para darnos los permisos apropiados;
aptobtener actualización
sudo aptobtener actualización
Esto volverá a sincronizar nuestra lista local de archivos de paquetes, actualizando la información sobre paquetes
nuevos y modificados recientemente. Si se planea una actualización de aptget (ver a continuación), siempre se debe
realizar primero una actualización de aptget .
Una vez que se ejecuta el comando, la computadora se adentrará en Internet para obtener las listas de paquetes
actuales y descargarlos para que veamos aparecer una lista de fuentes de software similar a la siguiente;
²²https://www.debian.org/
²³http://www.redhat.com/
www.dbooks.org
Machine Translated by Google
Comandos Linux 216
pi@raspberrypi ~ $ sudo aptget update Presione
http://raspberrypi.collabora.com wheezy Release.gpg Obtenga: 1 http://
mirrordirector.raspbian.org wheezy Release.gpg [490 B]
Obtener: 2 http://archive.raspberrypi.org wheezy Release.gpg [473 B]
Presione http://raspberrypi.collabora.com Wheezy Release Get:3
http://mirrordirector.raspbian.org Wheezy Release [14.4 kB]
Obtener:4 http://archive.raspberrypi.org Wheezy Versión [17,6 kB]
Pulse http://raspberrypi.collabora.com Paquetes wheezy/rpi armhf Obtenga: 5 http://
mirrordirector.raspbian.org Paquetes wheezy/main armhf [6,904 kB]
Obtener: 6 paquetes http://archive.raspberrypi.org wheezy/main armhf [130 kB]
Ign http://raspberrypi.collabora.com wheezy/rpi Translationen Ign http://
mirrordirector.raspbian.org wheezy/contrib Translationen Ign http://mirrordirector.raspbian.org
wheezy/main Translationen Ign http ://mirrordirector.raspbian.org wheezy/nonfree
Translationen Ign http://mirrordirector.raspbian.org wheezy/rpi Translationen Recuperado
7140 kB en 35 s (200 kB/s)
Leyendo listas de paquetes... Listo
aptobtener actualización
sudo aptobtener actualización
El comando aptget upgrade instalará las versiones más recientes de todos los paquetes actualmente instalados en
el sistema. Si un paquete está instalado actualmente y hay una nueva versión disponible, se recuperará y actualizará.
Las nuevas versiones de los paquetes actuales que no se puedan actualizar sin cambiar el estado de instalación de
otro paquete se dejarán como están.
Como se mencionó anteriormente, siempre se debe realizar primero una actualización de aptget para que la
actualización de aptget sepa qué nuevas versiones de paquetes están disponibles.
Una vez que se ejecuta el comando, la computadora considerará sus aplicaciones instaladas contra la lista de bases
de datos de los paquetes más actualizados y nos mostrará un mensaje que nos permitirá saber cuántos paquetes
están disponibles para actualizar, cuántos datos se necesitarán. que se descargará y qué impacto tendrá esto en
nuestro almacenamiento local. En este punto podemos decidir si queremos continuar o no;
pi@raspberrypi ~ $ sudo aptget upgrade Leyendo
listas de paquetes... Listo Construyendo
árbol de dependencias Leyendo
información de estado... Listo Se actualizarán
los siguientes paquetes: bind9host cupsbsd cups
client cupscommon libapache2mod php5 libbind980 libisccc80 libisccfg82 liblwres80 libsdl1.2debian
libsqlite30 libssl1.0.0 php5mcrypt php5mysql raspiconfig
6 actualizados, 0 recién instalados, 0 para eliminar y 0 no actualizados.
Machine Translated by Google
Comandos Linux 217
Necesita obtener 10,7 MB de archivos.
Después de esta operación, se liberarán 556 kB de espacio en disco.
¿Quieres continuar [S/n]?
Una vez que decimos que sí ('Y'), la actualización comienza y veremos una lista de los paquetes a medida que
se descargan, desempaquetan e instalan (lo que sigue es un ejemplo editado);
¿Quieres continuar [S/n]? y Obtener:1 http://
archive.raspberrypi.org/debian/wheezy/main libsdl1.2debian armhf 1.2.155+rpi1 [205 kB]
Obtener: 2 http://archive.raspberrypi.org/debian/wheezy/main raspiconfig todo 201501315 [13,3 kB]
Obtener:3 http://mirrordirector.raspbian.org/raspbian/wheezy/main libsqlite30 armhf 3.7.131+deb7u2
[414 kB]
Obtuvo 10,7 MB en 31 s (343 kB/s)
Preconfigurando paquetes...
(Leyendo base de datos... 80703 archivos y directorios actualmente instalados.)
Preparándose para reemplazar cupscommon 1.5.35+deb7u5
(usando .../cupscommon_1.5.35+deb7u6_all.deb) ...
Desembalaje de vasos de repuestocomunes...
Preparándose para reemplazar cupsbsd 1.5.35+deb7u5
(usando .../cupsbsd_1.5.35+deb7u6_armhf.deb) ...
Desembalaje de vasos de repuestobsd...
Preparándose para reemplazar php5gd 5.4.390+deb7u2
(usando .../php5gd_5.4.410+deb7u1_armhf.deb) ...
Desempaquetando el reemplazo de php5gd...
Disparadores de procesamiento para mandb...
Configurando libssl1.0.0:armhf (1.0.1e2+rvt+deb7u17) ...
Configurando libsqlite30:armhf (3.7.131+deb7u2) ...
Configurando cupscommon (1.5.35+deb7u6) ...
Configurando cupsclient (1.5.35+deb7u6) ...
A menudo puede haber alertas a medida que el proceso identifica diferentes problemas que cree que el
sistema podría encontrar (alias diferentes, niveles de tiempo de ejecución o nombres de dominio completos
faltantes). Esto no es necesariamente una señal de problemas, sino más bien una indicación de que el proceso
tuvo que tener en cuenta ciertas configuraciones al actualizar y vale la pena señalarlas. Siempre que haya
alguna duda sobre lo ocurrido, Google será tu amigo :).
aptget install
El comando aptget install instala o actualiza uno (o más) paquetes. Todos los paquetes adicionales (de
dependencia) necesarios también se recuperarán e instalarán.
www.dbooks.org
Machine Translated by Google
Comandos Linux 218
sudo aptget install *nombrepaquete*
Si queremos instalar varios paquetes, simplemente podemos enumerar cada paquete separado por un espacio después
del comando de la siguiente manera;
sudo aptget install paquete1 paquete2 paquete3
aptget eliminar
sudo aptget remove *nombrepaquete*
El comando aptget remove elimina uno (o más) paquetes.
Pruébate
1. ¿Cómo podría instalar una variedad de paquetes con nombres similares (por ejemplo, todos los paquetes
comenzando con 'mysql')?
2. Al eliminar un paquete, ¿se conserva o elimina la configuración de ese paquete (Google será su amigo)?
3. ¿Cómo podría eliminar varios paquetes con un solo comando?
Machine Translated by Google
Comandos Linux 219
claro
El comando borrar se usa para eliminar los comandos y la salida de la ventana del terminal y presentar una
pantalla clara. Esta es una forma conveniente de limpiar un 'desorden' para mostrar una pantalla en blanco
(aparte de un símbolo del sistema).
• borrar : borra la pantalla del terminal.
Este es uno de los comandos más simples sin opciones ni argumentos.
claro
El resultado es una pantalla clara con solo el símbolo del sistema en la esquina superior izquierda
El comando claro
El comando claro no tiene opciones ni argumentos que nos distraigan. Su misión es simplemente hacernos la
vida más fácil limpiando la pantalla.
Tenga en cuenta que, si bien puede borrar el contenido de la pantalla, nuestro historial de comandos sigue
estando accesible, por lo que no es garantía de ocultación.
También tiene un atajo en forma de combinación de teclas 'CTRLl' (esa es una 'L' minúscula por cierto).
Pruébate
1. ¿Qué otros métodos podrían estar disponibles para determinar qué había en la pantalla antes de que se
en blanco?
www.dbooks.org
Machine Translated by Google
Comandos Linux 220
eco
El comando echo se usa ampliamente al escribir scripts y en la línea de comando para mostrar información en la
pantalla. Si bien los usuarios avanzados utilizarán este comando de manera extensiva, también es útil para los
usuarios que comienzan, ya que tienen una buena comprensión del contexto de los comandos que están
utilizando y como un componente básico para un mayor avance.
• echo [opciones] [cadena(s)] : mostrar texto en la pantalla.
Cada caparazón tiene una interpretación ligeramente diferente del eco, por lo que, si bien los principios
siguen siendo los mismos, tenga en cuenta que habrá variaciones inevitables en algún lugar a lo largo de la pista.
A los efectos de la siguiente explicación, supondremos el uso del shell 'bash', que es predominantemente el
shell predeterminado en las distribuciones de Linux.
echo se puede demostrar simplemente ejecutando algo como el siguiente comando;
echo Mi primer eco!
Esto producirá lo siguiente en la siguiente línea;
Mi primer eco!
Este ejemplo de uso puede parecer un poco trillado, pero la verdadera fuerza viene con la aplicación de variables
y opciones de formato.
El comando de eco
Si bien el eco se puede considerar un comando y se puede usar fácilmente desde la línea de comandos, su poder
real se revela en los scripts en ejecución. Como parte de un script, el comando echo puede permitirnos presentar
comentarios a un usuario e incluso recopilar información para permitir una mayor utilidad y control.
echo solo tiene tres opciones de nota y todas se refieren al formato de la salida;
• n : no generar un carácter de nueva línea final • e :
habilitar la interpretación de secuencias de escape de barra invertida •
E : deshabilitar la interpretación de secuencias de escape de barra invertida (predeterminado)
La aplicación de un carácter de nueva línea final significa que cada vez que echo muestra algo en la pantalla,
inmediatamente agrega una nueva línea a la salida para que lo siguiente que aparezca en la pantalla ocurra en
una nueva línea. Por ejemplo, ejecutar el siguiente comando con la opción n ;
Machine Translated by Google
Comandos Linux 221
echo n ¡Mi primer eco!
verá aparecer la siguiente línea como tal;
Mi primer echo!pi@raspberrypi:~ $
Esto muestra el símbolo del sistema (pi@raspberrypi: $) con el nombre de usuario y el nombre del sistema
inmediatamente detrás de la cadena repetida;
Habilitar los caracteres de barra invertida con la opción e nos permite incluir una gama de caracteres de formato
que nos permitirán presentar la información en pantalla de una forma más flexible. Los personajes son;
• \a : alerta
(campana) • \b :
retroceso • \c : suprimir salida
adicional • \e : carácter de
escape • \f : avance
de página • \n :
nueva línea • \r : retorno
de carro • \t : pestaña
horizontal • \v :
tabulador vertical •
\\ : barra invertida • \0nnn : el carácter cuyo código ASCII es nnn (octal). nnn puede tener de 0 a 3
dígitos octales • \xHH : el carácter de ocho bits cuyo valor es HH (hexadecimal). HH puede ser uno o dos hex.
dígitos
Como ejemplo, el siguiente comando;
echo e "¡Mi \nprimer \necho! \n\t(ahora \tcon \ttabs)"
Producirá el siguiente resultado;
Mi
primer
¡eco!
www.dbooks.org
Machine Translated by Google
Comandos Linux 222
La cadena en el comando está encerrada entre marcas de voz. Sin estos, los caracteres
de barra invertida y paréntesis no se interpretan como nos gustaría.
La segunda característica del arco de echo es su capacidad para informar valores variables. podemos establecer
fácilmente valores de variables en el shell (o un script) que luego se pueden imprimir usando echo de la siguiente manera;
x=1234
eco $x
El comando luego informará el valor en la variable 'x';
1234
Del mismo modo, podemos usar las variables de entorno integradas para mostrar más sobre nuestro sistema;
x=1234
eco $ INICIO
El comando luego informará el directorio de inicio de los usuarios actuales;
/inicio/pi
Podemos encontrar una lista de las variables de entorno usando el comando env .
Pruébate
1. ¿Por qué no tuvimos que usar paréntesis en nuestro primer comando de ejemplo? echo My first
¿¡eco!?
2. Elabore un comando de eco que combine una cadena, una variable local (x) y un entorno
variable.
Machine Translated by Google
Comandos Linux 223
agregar grupo
El comando groupadd es utilizado por un superusuario (generalmente a través de sudo) para agregar una
cuenta de grupo. Es un comando fundamental en el sentido de que Linux, como un sistema multiusuario
complejo, requería un mecanismo para agregar grupos. No es que este comando se use todos los días, pero
es importante saberlo para permitirnos administrar usuarios en la computadora.
• groupadd [opciones] grupo: agregar una cuenta de grupo
El siguiente ejemplo es la aplicación más simple del comando;
sudo groupaddpigroup
Esto crea el grupo 'pigroup' utilizando los valores predeterminados del sistema.
El comando groupadd
El comando groupadd no se utiliza con regularidad, pero es útil para reconocer su función. Agrega una cuenta
de grupo utilizando los valores predeterminados del sistema. El nuevo grupo se ingresará en los archivos del
sistema según sea necesario. Solo puede ser utilizado por el usuario raíz, por lo que a menudo tiene el prefijo
del comando sudo . Los nombres de grupo solo pueden tener hasta 32 caracteres y, si el nombre de grupo ya
existe en una base de datos de grupo externa, como NIS o LDAP, groupadd rechazará la solicitud de creación
de grupo.
Cuando se ejecuta groupadd , lo hace utilizando los siguientes archivos;
• /etc/group : información de la cuenta del grupo. • /
etc/gshadow : información de cuenta de grupo segura. • /etc/
login.defs : configuración del conjunto de contraseñas ocultas.
Pruébate
1. ¿Qué otro comando que hemos visto utiliza los archivos anteriores?
www.dbooks.org
Machine Translated by Google
Comandos Linux 224
hombre
El comando man se utiliza para formatear y mostrar documentación (o manuales) sobre otros comandos. Es uno
de los comandos más importantes desde la perspectiva de proporcionar una referencia siempre disponible sobre
cómo debe formatearse o usarse un comando.
• Man [opciones] comando: muestra el manual de referencia de un comando.
El comando man se usa principalmente sin ninguna opción y solo con el comando sobre el que queremos encontrar
información. Por ejemplo, para obtener información sobre el comando ls simplemente escribimos;
hombre ls
A continuación, se mostrará la primera página del manual para el comando ls ;
NOMBRE
ls lista de contenidos del directorio
SINOPSIS
ls [OPCIÓN]... [ARCHIVO]...
DESCRIPCIÓN
Muestra información sobre los ARCHIVOS (el directorio actual por defecto).
Ordene las entradas alfabéticamente si no se especifica ninguno de cftuvSUX ni sort.
Los argumentos obligatorios para las opciones largas son obligatorios para las opciones cortas
también.
a, todos
no ignore las entradas que comiencen con .
Podemos avanzar hacia abajo en la página (y retroceder) una línea a la vez con las teclas de flecha o movernos un
poco más rápido una página a la vez con las teclas de avance/retroceso de página.
En cualquier momento podemos pulsar 'q' para salir del programa man y volver a la línea de comandos.
El mando del hombre
El comando man muestra la documentación (o manual) disponible en la computadora para un comando específico.
Piense en ello como una forma de documentación en línea que está disponible en los sistemas operativos Unix/
Linux. El comando man puede mostrar documentación sobre diferentes temas aparte
Machine Translated by Google
Comandos Linux 225
de los comandos. Estas se denominan secciones e incluyen llamadas al sistema, funciones de biblioteca,
dispositivos, formatos de archivo, juegos y diversiones, convenciones y miscelánea, administración del sistema
y comandos privilegiados y comandos TCL. Sin embargo, a los efectos de una introducción, un usuario más
nuevo identificará el comando man como la referencia para los programas ejecutables (que es la sección 1).
La documentación de un comando individual se suele denominar "página man". La página normalmente se
compone de una variedad consistente de secciones como;
• NOMBRE: El nombre del comando en sí y una breve descripción de lo que el comando
hace.
• SINOPSIS: Este es un esquema que describe cómo se supone que debe usarse el comando. •
DESCRIPCIÓN: una descripción más detallada del comando, incluidas las opciones
disponible.
• AUTORES: Las personas que escribieron o ayudaron en la redacción del mandato. • BUGS:
Cualquier problema conocido con los programas. La mayoría de las veces estos no son errores, sino
limitaciones.
• ENTORNO: Cualquier variable que pueda ser necesaria o limitaciones en la versión del shell que pueda
ser necesaria. • EJEMPLOS o
NOTAS: Ejemplos de uso y notas generales. • REPORTE DE ERRORES:
Si encontramos problemas con el comando, este nos dice donde podemos
Reportalos.
• DERECHOS DE AUTOR: Esta es la persona u organización que posee los derechos de autor del
comando. • VER TAMBIÉN: Que sugiere otros comandos que están relacionados con este comando.
Debido a que Linux es un sistema operativo que es un esfuerzo de colaboración, el producto final es el resultado
de muchas personas diferentes que contribuyen de diferentes maneras. Las páginas de manual no son una
excepción y, como resultado, encontraremos que algunas están más desarrolladas que otras. Si bien existe un
grado de consistencia, siempre habrá variaciones en la profundidad o integridad de la descripción. No se
pretende que una página del manual sea el repositorio completo de todo el conocimiento sobre un comando,
pero ciertamente es un buen primer lugar para comenzar.
Para obtener ayuda al ejecutar el comando man , presione la tecla 'h'. Esto proporcionará alguna ayuda para
navegar por el comando y probablemente será una reproducción de los comandos que usa el programa de
visualización de texto que usa . La siguiente es la página de ayuda que se muestra al usar el sistema operativo
Raspbian predeterminado y muestra que usa menos para mostrar las páginas;
www.dbooks.org
Machine Translated by Google
Comandos Linux 226
RESUMEN DE MENOS COMANDOS
Comandos marcados con * puede estar precedido por un número, N.
Las notas entre paréntesis indican el comportamiento si se da N.
Una tecla precedida por un signo de intercalación indica la tecla Ctrl; por lo tanto, ^K es ctrlK.
S.S Mostrar esta ayuda.
q :q Q :Q ZZ Salida.
MOVIENTE
e ^E j ^N CR * Reenviar una línea (o N líneas). y ^Y k ^K ^P * Hacia atrás una
línea (o N líneas). f ^F ^V ESPACIO * Adelante una ventana (o N líneas).
b ^B ESCv * Hacia atrás una ventana (o N líneas).
z * Reenviar una ventana (y configurar la ventana en N).
w * Retroceda una ventana (y establezca la ventana en N).
ESCESPACIO * Avance una ventana, pero no se detenga al final del archivo.
re ^ re * Reenviar una media ventana (y establecer media ventana en N).
tu ^ tu * Retrocede una media ventana (y establece la media ventana en N).
ESC) RightArrow * La mitad izquierda del ancho de la pantalla (o N posiciones).
AYUDA Presiona RETURN para más, o q cuando hayas terminado
Pruébate
1. ¿El comando man muestra el material de referencia definitivo para un comando?
2. ¿Es necesario estar conectado a Internet para mostrar las páginas man?
Machine Translated by Google
Comandos Linux 227
Modprobe
El comando modprobe nos permite agregar (o quitar) módulos al Kernel² de Linux. El kernel de Linux es el
código que forma el núcleo del sistema operativo Linux, por lo que es algo importante.
Al cambiar el hardware, el comando modprobe nos permite importar o eliminar el equivalente de los controladores
de dispositivos de Windows hacia/desde el kernel para habilitar/deshabilitar la funcionalidad adicional.
• modprobe [opciones] [nombre del módulo]: carga o elimina un módulo del kernel de Linux
Por ejemplo, para agregar el módulo w1therm para admitir la medición de temperatura a través del bus 1Wire,
ejecutaríamos el siguiente comando;
sudo modprobe w1therm
Es necesario hacer esto como superusuario a través de sudo.
El comando modprobe
El kernel de Linux está diseñado con una estructura monolítica, pero con la capacidad de poder cambiar los
módulos del kernel mientras se ejecuta. (Windows 7 y OS X utilizan núcleos híbridos que ofrecen la ventaja de
ser de menor tamaño, pero requieren una mayor gestión de los controladores por parte del usuario y el
fabricante).
Para evitar la desventaja de tener una gran huella, los desarrolladores del kernel de Linux han incorporado la
función de agregar o eliminar módulos del kernel sobre la marcha. Esto se puede llevar al extremo en el que se
puede reemplazar todo el módulo del kernel sin necesidad de reiniciar.
Los módulos del kernel generalmente se encuentran en el directorio lib/modules y se pueden enumerar con el
siguiente comando;
ls /lib/módulos/$(uname r)
Una salida podría parecerse a la siguiente;
² http://www.howtogeek.com/howto/31632/whatisthelinuxkernelandwhatdoesitdo/
www.dbooks.org
Machine Translated by Google
Comandos Linux 228
pi@raspberrypi /lib/módulos $ ls /lib/módulos/$(uname r)
núcleo módulos.incorporados módulos.dep.bin módulos.softdep módulos.incorporados.bin
módulos.alias módulos.devname módulos.símbolos
módulos.alias.bin módulos.dep módulos.pedir módulos.símbolos.bin
También podemos listar todos los módulos cargados usando el comando lsmod de la siguiente manera;
lsmod
Una salida de muestra puede ser similar a la siguiente;
pi@raspberrypi /lib/módulos $ lsmod
Módulo Tamaño utilizado por
w1_therm 2559 0
cable 25680 1 w1_therm
cn 4636 1 cable
matar 16651 1 cfg80211
i2c_dev 6027 0
snd_bcm2835 18649 0
snd_pcm 73475 1 snd_bcm2835
snd_seq 53078 0
snd_seq_dispositivo 5628 1 snd_seq 17784 2
snd_timer snd_pcm,snd_seq 51038 5
snd snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq\
_dispositivo
i2c_bcm2708 4990 0
También podemos ver la gama de controladores que están disponibles a través del comando;
ls /lib/modules/$(uname r)/kernel/drivers/
Lo que proporcionaría una salida similar a la siguiente;
pi@raspberrypi /lib/modules $ ls /lib/modules/$(uname r)/kernel/drivers/ rtc staging w1 scsi uio watchdog
base CD ROM entrada extcon mfd nfc gpio
bcma carbonizarse miscelánea de leds de
Comandos Linux 229
Opciones
El comando modprobe tiene varias opciones, pero la gran mayoría de los usuarios simplemente necesitarán
instalar un módulo que se hace usando el comando sudo modprobe [nombre del módulo] (no se necesitan
opciones).
La única opción de comando realista que un usuario novato podría usar sería r , que eliminaría un módulo.
sudo modprobe r w1therm
Argumentos
El nombre del módulo es el principal argumento utilizado al ejecutar el comando modprobe . Se pueden
cargar varios módulos simplemente poniendo un espacio entre los nombres de los módulos.
Pruébate
1. Qué tipo de módulo se usa en el kernel de Linux frente al kernel de Windows y cuál es la ventaja del
enfoque del kernel de Linux 2. Muestre cómo
se pueden cargar los módulos mod1, mod2 y mod3 usando un solo uso del comando modprobe .
www.dbooks.org
Machine Translated by Google
Comandos Linux 230
Contraseña
El comando passwd es una herramienta vital del administrador del sistema para administrar las contraseñas de las cuentas de
usuario. Podemos cambiar nuestra propia cuenta, o como usuario root podemos cambiar otras cuentas.
• contraseña [opciones] nombre de usuario: cambiar la contraseña de usuario
Para cambiar la cuenta de usuario actual todo lo que necesitamos hacer es ejecutar el comando passwd ;
Contraseña
Para permitir que se cambie nuestra contraseña, primero debemos ingresar la contraseña que vamos a cambiar;
Cambio de contraseña para newpi. (actual)
contraseña de UNIX:
El ingresamos la nueva contraseña;
Introduzca la nueva contraseña de UNIX:
Luego volvemos a ingresar la nueva contraseña para confirmar que la escribimos bien la primera vez;
Vuelva a escribir la nueva contraseña de UNIX:
Luego se nos dice que la actualización se ha realizado correctamente;
passwd: contraseña actualizada con éxito
Esta es una de las tareas más sencillas que utiliza el comando passwd , pero hay otras que implican un mayor grado de
complejidad para la gestión de usuarios y contraseñas.
El comando contraseña
El comando passwd nos permite cambiar las contraseñas de las cuentas de usuario. Como usuario normal solo podemos cambiar
la contraseña de nuestra propia cuenta, mientras que como superusuario ('root') podemos cambiar la contraseña de cualquier
cuenta. El comando passwd también puede cambiar las propiedades de la contraseña de una cuenta a través de opciones como;
• n : establece el número mínimo de días entre cambios de contraseña • x : establece el
número máximo de días que una contraseña permanece válida • w : establece el número
de días de advertencia antes de que se requiera un cambio de contraseña
Para ver las propiedades de nuestra contraseña podemos usar el comando chage con la opción l para listar los detalles de la
contraseña del usuario 'newpi';
Machine Translated by Google
Comandos Linux 231
cambio l newpi
Esto nos mostrará detalles similares a los siguientes;
último cambio de contraseña : 13 de febrero de 2016
La contraseña caduca : 13 de mayo de 2016
Contraseña inactiva : nunca
La cuenta caduca : nunca
Número mínimo de días entre el cambio de contraseña : 0
Número máximo de días entre el cambio de contraseña : 90
Podemos establecer el número mínimo de días entre cambios de contraseña (a través de n), el número máximo de
días que una contraseña permanece válida (a través de x) o el número de días de advertencia antes de que se
requiera un cambio de contraseña (a través de w) como sigue;
sudo passwd n 0 newpi
sudo passwd x 90 newpi sudo
passwd w 7 newpi
Necesitamos configurarlos usando sudo ya que constituye una función de administración del sistema
que debe ser realizada por un usuario con privilegios de sudo .
Las demás funciones administrativas giran en torno a la administración de las contraseñas de otros usuarios a través
de las siguientes opciones;
• l : bloquear la contraseña de un usuario sudo passwd l newpi •
u : desbloquear la contraseña de un usuario sudo passwd u newpi (la contraseña utilizada antes del bloqueo
vuelve a estar disponible) • e :
caducar la contraseña de un usuario sudo passwd l newpi (los fuerza para cambiar su contraseña
en el próximo inicio de sesión)
Pruébate
1. ¿Puedes cambiar tu propio número de días de advertencia antes de un cambio de contraseña si no estás en
la lista de sudoers?
2. ¿Cuál es el número máximo de días entre un cambio de contraseña?
www.dbooks.org
Machine Translated by Google
Comandos Linux 232
cerrar
El comando shutdown nos permite gestionar el apagado del sistema desde la línea de comandos de varias formas. Este
comando permite una salida elegante del sistema y tiene la opción de alertar a otros usuarios para que sepan lo que está
pasando. en un sistema multiusuario o como método para evitar presionar el botón de encendido, es una buena práctica
asegurarse de que el sistema tenga todas las oportunidades para salir de forma administrada.
• apagar [opciones] [hora] [mensaje]: apaga o reinicia un sistema.
shutdown debe ejecutarse como un usuario administrativo y cuando se lleva a cabo sin opciones o argumentos de la
siguiente manera;
apagado sudo
… iniciará un mensaje de difusión a los usuarios en el sistema de que la computadora se apagará en un minuto;
Apagado programado para el domingo 20160214 18:00:30, use 'shutdown c' para cancelar
pi@raspberrypi:~ $
Mensaje de difusión de root@raspberrypi (dom 20160214 17:59:30 NZDT):
El sistema se apagará el domingo 20160214 18:00:30 NZDT.
Luego, después de un minuto, aparecerá lo siguiente cuando el sistema se apague;
Mensaje de difusión de root@raspberrypi (dom 20160214 18:00:34 NZDT):
¡El sistema se apagará AHORA!
En este escenario, el sistema tiene la oportunidad de salir con gracia y, siempre que sea posible, se hace todo lo posible
para preservar cualquier dato o configuración (no es que esto se pueda dar por sentado).
El comando de apagado
El comando de apagado está diseñado para apagar el sistema de forma administrada y segura.
Los usuarios que iniciaron sesión reciben una alerta de que el sistema se está cayendo, lo que brinda la oportunidad de
guardar el trabajo abierto y prepararse para la interrupción.
Podemos variar la cantidad de tiempo de retraso antes de apagar completamente hasta que no haya ningún retraso y
podemos variar el estado que existe después del apagado para reiniciar, detener o apagar.
Estas diferentes acciones y más están disponibles a través de las siguientes opciones;
Machine Translated by Google
Comandos Linux 233
• h : apaga el sistema y luego lo detiene • P :
apaga el sistema y luego lo apaga • r : reinicia después de
apagarlo • c : cancela un apagado
pendiente.
Estas opciones pueden ir acompañadas de un argumento '[tiempo]' para especificar cuándo realizar la acción;
Por ejemplo, el siguiente comando apagará el sistema y lo apagará en 5 minutos;
sudo apagado P +5
Además, podemos incluir un argumento '[mensaje]' que permitirá que se transmita un mensaje personalizado para
alertar a los usuarios del cierre inminente. Por ejemplo, para apagar y detener el sistema e imprimir un mensaje
personalizado;
sudo shutdown h "El sistema se detendrá en un minuto. Guarde su trabajo ahora\
w!"
Además, podemos realizar el apagado de inmediato usando ahora o +0 como tiempo. Por ejemplo, para reiniciar
inmediatamente;
sudo apagado r ahora
Pruébate
1. ¿Cuánto tiempo tenemos para cancelar un apagado dado el tiempo predeterminado y qué opción tenemos?
¿usar?
www.dbooks.org
Machine Translated by Google
Comandos Linux 234
su
El comando su se usa para cambiar de una cuenta a otra sin necesidad de salir de la sesión en la que se
encuentra el usuario original. Si bien se puede usar para cambiar a cualquier usuario, se usa con mayor
frecuencia para cambiar a la 'raíz' usuario para ejecutar comandos administrativos La acción predeterminada
de su si se invoca sin un nombre de usuario es cambiar al usuario 'root'. Obtener una buena comprensión de
su es un excelente paso para facilitarnos la vida al administrar el sistema.
• su [opciones] [nombre de usuario]: cambiar a otro usuario.
Para sustituir el usuario actual ('pi') por el usuario 'newpi' haríamos lo siguiente
su nuevo pi
El sistema pedirá la contraseña del usuario 'newpi' y una vez introducida habremos cambiado al usuario 'newpi'
Contraseña:
nuevopi@raspberrypi:/home/pi$
Un aspecto interesante de este método de conmutación es que el directorio de trabajo en el que nos
encontramos es el directorio de inicio de los usuarios 'pi' (/home/pi). Esto es sintomático del cambio de usuario,
pero no del entorno del nuevo usuario. También podemos cambiar al entorno de nuevos usuarios usando
'
(es un espacio seguido de un guión) después del comando su'.
Entonces, lo siguiente sustituye al usuario y cambia al entorno del nuevo usuario;
su nuevopi
el comando su
El comando su puede tener una función similar a sudo en el sentido de que puede permitirnos cambiar al uso
de permisos de root para ejecutar comandos mientras estamos conectados como un usuario diferente. Sin
embargo, la diferencia sustancial en esta circunstancia es que su cambiará al nuevo usuario mientras que sudo
simplemente ejecutará el comando único. Esto se puede remediar usando la opción c con su de modo que le
digamos a su que ejecute el comando que le sigue directamente en la misma línea.
El nombre del comando se derivó inicialmente de las palabras usuario sustituto . Aunque cambiar de usuario
también es una descripción aceptada.
Una vez que hayamos cambiado de usuario, podemos revertirlo escribiendo 'salir' y presionando enter o presionando
'CTRLd'
Machine Translated by Google
Comandos Linux 235
Pruébate
1. ¿Es usuario sustituto o cambio de usuario una descripción más precisa de la derivación del su
¿dominio?
2. Si fuera a ejecutar una serie de comandos como root, sería mejor hacerlo usando
sudo o su?
3. ¿Cómo nos aseguramos de que nuestras variables ambientales estén configuradas para el nuevo usuario al cambiar
¿usuario?
www.dbooks.org
Machine Translated by Google
Comandos Linux 236
sudo
El comando sudo permite a un usuario ejecutar un comando como 'superusuario' (o como otro usuario).
Es una herramienta vital para la administración y gestión del sistema.
• sudo [opciones] [comando]: ejecuta un comando como superusuario
Por ejemplo, si queremos actualizar y actualizar nuestros paquetes de software, deberemos hacerlo como superusuario.
Todo lo que tenemos que hacer es prefijar el comando aptget con sudo de la siguiente manera;
sudo aptobtener actualización
sudo aptobtener actualización
Una de las mejores ilustraciones de esto es a través del excelente trabajo de dibujos animados de la tira cómica xkcd²
(Compra sus cosas² , ¡ es increíble!).
Sudo cortesía xkcd
El comando sudo
El comando sudo es la abreviatura de 'superusuario do'.
El comando sudo permite al usuario ejecutar programas o dar comandos que solo
deben ejecutarse con precaución, ya que podrían afectar el funcionamiento normal
de la computadora. Sin embargo, un usuario solo puede usar este comando si tiene
los permisos correctos para hacerlo.
² https://xkcd.com/149/
² http://store.xkcd.com/
Machine Translated by Google
Comandos Linux 237
Cuando usamos sudo, un usuario autorizado está determinado por el contenido del archivo /etc/sudoers.
Como ejemplo de uso deberíamos revisar el archivo /etc/sudoers. Si usamos el comando cat para listar el archivo
así;
gato /etc/sudoers
Obtenemos la siguiente respuesta;
pi@raspberrypi ~ $ cat /etc/sudoers cat: /etc/sudoers:
Permiso denegado
Eso es correcto, el usuario 'pi' no tiene permisos para ver el archivo
Confirmemos eso con ls;
ls /etc/sudoers
Lo que dará como resultado lo siguiente;
pi@raspberrypi ~ $ ls l /etc/sudoers rr 1 raíz raíz
696 7 de mayo 10:39 /etc/sudoers
¡Parece que solo el usuario root puede leer el archivo!
Así que usemos sudo para catear el archivo de la siguiente manera;
sudo cat /etc/sudoers
Eso dará como resultado el siguiente resultado;
pi@raspberrypi ~ $ sudo cat /etc/sudoers
#
# Este archivo DEBE ser editado con el comando 'visudo' como root.
#
# Considere agregar contenido local en /etc/sudoers.d/ en lugar de # modificar directamente este archivo.
# Consulte la página del manual para obtener detalles sobre cómo escribir un archivo sudoers.
#
valores predeterminados env_reset
www.dbooks.org
Machine Translated by Google
Comandos Linux 238
valores predeterminados mail_badpass
valores predeterminados ruta_segura="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi\
n:/sbin:/bin"
# Especificación de alias de host
# Especificación de alias de usuario
# Especificación de alias de Cmnd
# Especificación de privilegios de usuario
raíz TODO=(TODO:TODO) TODO
# Permitir que los miembros del grupo sudo ejecuten cualquier comando %sudo
ALL=(ALL:ALL) ALL
# Consulte sudoers(5) para obtener más información sobre las directivas "#include":
#includedir /etc/sudoers.d pi TODO=(TODO)
SIN CONTRASEÑA: TODO
¡NO edite este archivo con un editor de texto! ¡Use siempre el comando visudo como dicen
las instrucciones! (Curiosamente, Raspbian tiene el editor nano (no vi) configurado como
editor predeterminado).
Hay mucha información en el archivo, pero justo en la parte inferior está la línea que determina los privilegios para el usuario
'pi';
pi TODO=(TODO) SIN CONTRASEÑA: TODO
Podemos desglosar lo que significa cada sección;
Pi
pi TODO=(TODO) SIN CONTRASEÑA: TODO
La parte pi es el usuario al que se aplicará esta regla en particular.
TODO
pi TODO=(TODO) SIN CONTRASEÑA: TODO
La primera parte TODOS nos dice que la regla se aplica a todos los hosts.
TODO
pi TODO=(TODO) SIN CONTRASEÑA: TODO
El segundo ALL nos dice que el usuario 'pi' puede ejecutar comandos como todos los usuarios y todos los grupos.
Machine Translated by Google
Comandos Linux 239
SIN CONTRASEÑA
pi TODO=(TODO) SIN CONTRASEÑA: TODO
El NOPASSWD nos dice que al usuario 'pi' no se le pedirá su contraseña al ejecutar un comando con sudo.
Todo
pi TODO=(TODO) SIN CONTRASEÑA: TODO'
El último ALL nos dice que las reglas de la línea se aplican a todos los comandos.
En situaciones normales, el uso de sudo requeriría que un usuario esté autorizado y luego ingrese su contraseña. De
forma predeterminada, el sistema operativo Raspbian tiene configurado el usuario 'pi' en el archivo /etc/sudoers para
evitar ingresar la contraseña cada vez.
Si tiene curiosidad acerca de qué privilegios (si los tiene) tiene un usuario, podemos ejecutar sudo con la opción l
para enumerarlos;
sudol
Esto dará como resultado una salida similar a la siguiente;
pi@raspberrypi ~ $ sudo l
Coincidencia de entradas predeterminadas para pi en este host:
env_reset, mail_badpass, ruta_segura=/
usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:\ / bin
El usuario pi puede ejecutar los siguientes comandos en este host:
(TODOS : TODOS) TODOS
(TODOS) SIN CONTRASEÑA: TODOS
El archivo 'sudoers'
Como se mencionó anteriormente, el archivo que determina los permisos para los usuarios es /etc/sudoers. NO
EDITAR ESTO A MANO. Use el comando visudo para editar. Por supuesto, se le pedirá que ejecute el comando
usando sudo;
sudo visudo
www.dbooks.org
Machine Translated by Google
Comandos Linux 240
Voy a reforzar un poco más el punto de que comenzar a configurar el archivo sudoers es
una tarea que debe tomarse muy en serio y con pleno conocimiento de las implicaciones
de seguridad.
Si abre un archivo sudoers para editarlo y ve algo como lo siguiente;
bob TODO=(TODO) TODO
john TODO=(TODO) TODO
eve TODO=(TODO) TODO
alguien TODO=(TODO) TODO
Indicaría que hay una buena cantidad de personas con derechos de administración
completos para este servidor y tal vez esto debería revisarse.
sudo contra su
Existe un grado de confusión sobre las funciones del comando sudo frente al comando su . Si bien ambos se
pueden usar para obtener privilegios de root, el comando su en realidad cambia al usuario a otro usuario,
mientras que sudo solo ejecuta el comando especificado con diferentes privilegios. Si bien habrá cierto grado
de debate sobre su uso, se acepta ampliamente que para una simple elevación de encendido y apagado,
sudo es ideal.
Pruébate
1. Escriba una entrada para el archivo sudoers que proporcione privilegios de sudo a un usuario solo para el gato
dominio.
2. ¿Bajo qué circunstancias puede editar el archivo sudoers con un editor de texto estándar?
Machine Translated by Google
Comandos Linux 241
agregar usuario
El comando useradd es utilizado por un superusuario (generalmente a través de sudo) para agregar una cuenta de sistema de usuario.
Es un comando fundamental en el sentido de que Linux, como sistema multiusuario, requería un mecanismo para
agregar usuarios. No es que este comando se use todos los días, pero es importante saberlo para permitirnos administrar
usuarios en la computadora.
• useradd [opciones] nombre de usuario: agregar una cuenta de usuario
El siguiente ejemplo es la aplicación más simple del comando;
sudo useradd newpi
Esto crea el usuario, pero al hacerlo se establece en un estado 'bloqueado' porque no tiene una contraseña asociada.
Esto se puede configurar usando el comando passwd .
El comando agregar usuario
El comando useradd no se utiliza con regularidad; de hecho, la página de manual para el comando recomienda usar
adduser , que es una interfaz más amigable para esta herramienta de bajo nivel. Agrega un usuario a la lista de
entidades que pueden acceder al sistema informático aunque se utiliza sin ninguna opción, el comando deja la nueva
cuenta bloqueada hasta que se establezca una contraseña con passwd. Solo puede ser utilizado por el usuario raíz, por
lo que a menudo tiene el prefijo del comando sudo .
Opciones
Hay varias opciones útiles que se pueden usar con useradd, pero las más utilizadas que examinaremos son;
• m : agrega el directorio de inicio del usuario si no existe • s :
especifica el shell de inicio de sesión del usuario
Para agregar el directorio de inicio para el usuario 'newpi' y configurar su shell de inicio de sesión en bash, usaríamos el
siguiente comando;
sudo useradd m s /bin/bash newpi
Pruébate
1. ¿Cuál es la alternativa más fácil de usar que useradd?
www.dbooks.org
Machine Translated by Google
Comandos Linux 242
modo de usuario
El comando usermod es utilizado por un superusuario (generalmente a través de sudo) para cambiar la configuración de la
cuenta del sistema de un usuario. No es un comando que se usará todos los días, pero es importante saber que está ahí para
permitirnos administrar los detalles del usuario en la computadora.
• usermod [opciones] nombre de usuario: modificar la configuración de la cuenta de un usuario
El siguiente ejemplo es uno que se usa en las primeras etapas de la configuración de Raspberry Pi, donde queremos que nuestro
usuario 'pi' sea miembro del grupo 'wwwdata', lo que permitirá (junto con otros pasos) que el usuario edite los archivos en un
servidor web;
sudo usermod a G wwwdatos pi
La opción a agrega al usuario a un grupo 'suplementario' adicional (a solo debe usarse en una situación en la que le sigue el
uso de una opción G ). La opción G enumera el grupo complementario al que se agregará un usuario. En este caso el grupo es
wwwdata. Finalmente, el usuario que se agrega al grupo complementario es pi.
El comando modusuario
El comando usermod no se utiliza con regularidad, pero cuando se requiere para administrar los detalles administrativos de un
usuario, es útil saber qué es capaz de hacer y cómo configurar el comando. Modifica la configuración de un usuario (por lo tanto,
usermod = modificación del usuario ) y se puede usar para tareas tales como cambiar el directorio de inicio de un usuario, la
fecha de vencimiento de la contraseña, su shell predeterminado y los grupos a los que pertenece el usuario. Solo puede ser
utilizado por el usuario raíz, por lo que a menudo tiene el prefijo del comando sudo .
Cuando usermod cambia la configuración de un usuario, lo hace utilizando los siguientes archivos;
• /etc/group : información de la cuenta del grupo. • /etc/
gshadow : información de cuenta de grupo segura. • /etc/login.defs :
configuración del conjunto de contraseñas ocultas. • /etc/passwd : información
de la cuenta de usuario. • /etc/shadow : información de
cuenta de usuario segura.
Opciones
Hay alrededor de 15 opciones que se pueden usar con usermod, pero las que se usan comúnmente que examinaremos son;
• d : cambia el directorio de inicio del usuario • g :
cambia el grupo principal del usuario
Machine Translated by Google
Comandos Linux 243
• a G grupo : Agrega el usuario a un grupo suplementario • s :
Cambia el shell predeterminado de los
usuarios • L : Bloquea la cuenta del usuario deshabilitando la
contraseña • U : Desbloquea la cuenta del usuario volviendo a habilitar la contraseña anterior
Para cambiar el directorio de inicio del usuario 'pi' al directorio /home/newpi usaríamos el siguiente comando;
sudo usermod d /home/newpi pi
Para hacer de 'pigroup' el grupo principal para el usuario 'pi';
sudo usermod g pigrupo pi
Para que esto tenga éxito, el grupo debe existir. Además, cualquier archivo del directorio
de inicio del usuario que fuera propiedad del grupo primario anterior del usuario será
propiedad de este nuevo grupo.
Diferentes usuarios se sentirán cómodos en diferentes caparazones. Para cambiar el shell predeterminado de los
usuarios, podemos usar la opción s . El siguiente ejemplo cambia el shell predeterminado para el usuario 'pi' al shell
'Korn';
sudo usermod s /bin/ksh pi
Podemos bloquear la cuenta de un usuario usando la opción L que modifica el archivo /etc/shadow poniendo un signo
de exclamación delante de la contraseña cifrada. El siguiente ejemplo hace esto para el usuario 'pi';
sudo mod de usuario L pi
Luego querremos desbloquear la cuenta de usuario bloqueada con la opción U de la siguiente manera;
sudo usermod U pi
www.dbooks.org
Machine Translated by Google
Comandos Linux 244
Pruébate
1. ¿Qué debemos hacer antes de cambiar el grupo principal de un usuario a un nuevo grupo?
2. ¿Cómo podríamos desbloquear manualmente la cuenta de un usuario sin usar el comando usermod ?
Machine Translated by Google
Comandos Linux 245
OMS
El comando who puede decirnos qué usuarios están actualmente conectados a un sistema, así como cuándo se reinició
el sistema por última vez y una variedad de otros detalles de información del sistema. Esta es una herramienta de
administración del sistema útil y que es especialmente relevante en un entorno multiusuario más grande.
• quién [opciones] : informe de los usuarios registrados en el sistema.
En su forma más simple, el comando who puede decirnos quién está conectado al sistema de la siguiente manera;
OMS
Mientras esté conectado como el usuario 'pi', la salida será;
Al observar la primera línea, nos muestra el nombre del usuario que inició sesión (pi), el terminal que se utilizó para
iniciar sesión en el sistema (pts/0, lo que significa psuedo terminal esclavo número 0), la fecha/hora de la conexión
(20160214 05:39) y la dirección IP desde la que se realizó la conexión (10.1.1.33). Vemos que además de estar dos
veces conectado desde 10.1.1.33 como usuario 'pi', hay otro usado 'newpi' conectado desde 10.1.1.222.
el que manda
El comando who es esencialmente una herramienta de administración del sistema para determinar un rango de
información sobre nuestro sistema. Si bien el nombre es obviamente un reflejo de la necesidad de determinar quién está
conectado a un sistema, hay una variedad de otros detalles que se pueden determinar usando el comando. Se accede
a la información adicional a través de las siguientes opciones;
• b : hora del último arranque del
sistema • d : todos los procesos
inactivos • login : los procesos de inicio de
sesión del sistema • p : el proceso activo generado
por init • r : el nivel de ejecución del
sistema • t : el hora en que el reloj del sistema cambió
por última vez • T : el estado del mensaje de los
usuarios (a +, o ?) • u :
los usuarios iniciaron sesión. • a : todo lo anterior
• H : imprimir encabezados de columna
Hay una gran cantidad de detalles en las opciones anteriores y gran parte de ellos no serán relevantes para un nuevo
usuario, pero es útil presentarlos aquí para que si estamos ejecutando la opción a sepamos lo que estamos obteniendo .
En para.
www.dbooks.org
Machine Translated by Google
Comandos Linux 246
quien aH
arranque del sistema 20160213 22:27
nivel de ejecución 5 20160213 22:27
En la salida podemos ver los encabezados;
Cuándo se arrancó el sistema por última vez (aunque cualquier persona con una Raspberry Pi sabrá que falsifiqué
la hora aquí);
arranque del sistema 20160213 22:27
El nivel de ejecución del sistema;
nivel de ejecución 5 20160213 22:27
Un nivel de ejecución es un estado de inicialización del sistema que define qué servicios del sistema
están en funcionamiento. Se designan con un número y pueden variar de la siguiente manera;
• 0 Detener el sistema.
• 1 Modo monousuario (para administración especial). • 2
multiusuario local con red pero sin servicio de red (como NFS) • 3 multiusuario completo con
red • 4 no utilizados
• 5 multiusuario completo con funciones de red y X Windows (GUI) • 6
reinicio.
Los símbolos + después de los usuarios 'pi' y 'newpi' indican el estado de su mensaje;
Machine Translated by Google
Comandos Linux 247
Los diferentes estados de los mensajes son;
• + permitir 'escribir' mensajes •
no permitir 'escribir' mensajes • ? no
se puede encontrar el dispositivo terminal
El servicio de mensajes es aquel en el que un usuario puede enviar un mensaje directamente a la terminal de otro usuario.
Aunque no lo cubrimos en este libro, se puede encontrar más información con el comando man
mensaje
Pruébate
1. ¿Por qué mencioné que modifiqué el tiempo de arranque para la descripción del ejemplo anterior?
2. Escriba el comando quién soy y determine la diferencia entre eso y el comando
quién soy.
www.dbooks.org
Machine Translated by Google
Comandos Linux 248
quién soy
El comando whoami puede decirnos quién es el usuario actual. Según el shell que estemos usando, es posible que no
se nos presente el nombre de usuario en el símbolo del sistema. Lo crea o no, es un hecho relativamente común perder
la noción de qué usuario es el usuario operativo mientras trabaja (especialmente en entornos más complejos). Si es así
podremos saber quiénes somos con un simple comando.
• whoami [opciones]: informar al usuario actual.
El comando whoami es muy simple y se ejecuta casi exclusivamente sin opciones de la siguiente manera;
quién soy
Mientras esté conectado como el usuario 'pi', la salida será;
Pi
El comando whoami
Trabajar en sistemas multiusuario complejos conlleva el potencial de confusión cuando se trabaja en la línea de comando
y/o con múltiples ventanas de terminal abiertas y se pierde el rastro de qué usuario es el usuario efectivo actual que inició
sesión. Las ramificaciones de ejecutar un comando como el usuario equivocado puede ser catastrófico si se trabaja como
usuario 'root', por lo que nos corresponde asegurarnos de que sabemos 'quiénes' somos en la línea de comandos.
En muchos shells, el usuario actual se imprime en el símbolo del sistema, por lo que es bastante obvio. Sin embargo,
algunos shells como 'csh' no presentan de forma predeterminada el nombre de usuario actual, por lo que debemos poder
determinarlo con un comando. El comando whoami es (obviamente) una compresión de la frase "¿quién soy yo?" y su
salida es bastante sencilla.
Además del ejemplo simple anterior, como prueba podemos ejecutar el comando con sudo para simular operar como el
usuario 'root' de la siguiente manera;
sudo whoami
El resultado debería ser el sorprendente;
raíz
… independientemente de con qué usuario ejecutamos el comando.
El comando whoami es útil en relación con el shell actual, pero para determinar más acerca de otros usuarios que
iniciaron sesión en el sistema, usaríamos el comando who .
Machine Translated by Google
Comandos Linux 249
Pruébate
1. ¿Cuál es la diferencia entre un shell, una consola y una terminal (pregunta capciosa que
requieren investigación)?
www.dbooks.org
Machine Translated by Google
Hoja de trucos de comandos
Administración de archivos
• cd [opciones] directorio: se usa para cambiar el directorio actual • chgrp
[opciones] archivos de grupo: cambia la propiedad del grupo de uno o más archivos y directorios • chmod [opciones]
archivos de modo: cambia los permisos de acceso de uno o más archivos y directorios • chown [opciones] archivos
de nuevo propietario: cambiar la propiedad de uno o más archivos y directorios • cp [opciones] destino de origen:
copiar archivos y directorios • buscar [punto de inicio] [criterios de búsqueda]
[término de búsqueda]: buscar archivos • gzip [opciones] nombre de archivo:
comprimir o expandir archivos • ln [opciones] originalfile linkfile: crear
enlaces entre archivos o directorios • ln [opciones] originalfile: crear un enlace al archivo original
en el directorio actual • ls [opciones] [argumentos] : enumera los archivos en un directorio en particular •
mkdir [opciones] directorio: crea un directorio • mv [opciones] destino de origen:
mueve y/o cambia el nombre de archivos y directorios • pwd
[opción]: imprime el directorio de trabajo actual • rm [opciones] archivo: eliminar archivos o
directorios • rmdir [opciones] directorio: eliminar directorios vacíos • tar
[opciones] archivename [archivo(s)]: archivar o extraer
archivos
Acceso al contenido del archivo
• cat [opciones] [nombres de archivo] [] [nombres de archivo]: Muestra, combina o crea nuevos archivos.
• cortar [opciones] archivo: Corta secciones de cada línea de un archivo o archivos •
diff [opciones] de archivo a archivo: muestra las diferencias entre dos archivos • grep [opciones]
patrón [archivo]: busca texto y empareja patrones • cabeza [opciones] nombre(s)
de archivo: muestra la primera parte de un archivo específico • menos [opciones]
nombre de archivo: muestra archivos de texto • más
[opciones] nombre de archivo: muestra un archivo de texto
• cola [opciones] nombre(s) de archivo: Listar la última parte de un archivo específico
Sistemas de archivos
• fdisk [opciones] [dispositivo]: manipula las tablas de particiones. • mkfs
[opciones] dispositivo: formatea una partición con un sistema de archivos • mount
[opciones] escribe el directorio del dispositivo: monta el almacenamiento en el sistema de archivos
• umount [opciones] dispositivo y/o directorio: desmonta el almacenamiento del sistema de archivos
Machine Translated by Google
Hoja de trucos de comandos 251
Información del sistema
• fecha [opciones] +formato: muestra o configura la fecha/hora •
df [opciones] archivo: muestra la cantidad de espacio libre en los sistemas de
archivos. • du [opciones] archivo: muestra la cantidad de espacio utilizado en archivos
y directorios • libre [opciones]: muestra información sobre la memoria libre y utilizada en el sistema
Procesos
• crontab [u usuario] [l | r | e] : programe una tarea para que se ejecute en un momento o intervalo
particular • kill [opciones] PID(s) : envía una señal para terminar un proceso o procesos por PID •
killall [opciones] nombre del comando : envía una señal para terminar un procesos por nombre • ps
[opciones]: muestra una instantánea de los procesos actuales • top
[opciones]: muestra información del sistema y del proceso en tiempo real
Red
• curl [opciones] [URL]: descargar o cargar archivos a servidores remotos. • host
[opciones] servidor: verifica la dirección IP de una computadora a partir de su nombre de host o al revés •
ifconfig [argumentos] interfaz [opciones]: configurar una interfaz de red • ifconfig
[argumentos] [interfaz]: ver detalles de la interfaz de red • ip [ opciones] objeto
subcomando [parámetros]: herramienta de configuración de red • netstat [opciones]:
herramienta de monitoreo de conexión de red • ping [opciones]
servidor remoto: verifica la conexión de red a un servidor remoto. • scp [opciones]
usuario1@hostorigen:directorio/nombre de archivo usuario2@hostdestino:directorio/nombre de archivo: copia
segura de archivos entre computadoras • sftp
[opciones ] [usuario@]nombre de host[:directorio]: copia interactiva de archivos entre computadoras
de forma segura
• servidor ssh [opciones] [nombre de inicio de sesión]: acceda de forma segura a un
equipo remoto. • traceroute [opciones] hostname: rastree la ruta que toman los paquetes al
host de la red • wget [opciones] [URL]: descargue o cargue archivos de la web de forma no interactiva.
Misceláneas
• aptget install *packagename* : instala un paquete • aptget
remove *packagename* : desinstala un paquete • aptget update :
actualiza la base de datos de paquetes disponibles • aptget upgrade :
actualiza el paquetes en el sistema • borrar : borra la pantalla del
terminal. • echo [opciones] [cadena(s)] :
mostrar texto en la pantalla. • groupadd [opciones] grupo: agrega
una cuenta de grupo • man [opciones] comando: muestra
el manual de referencia para un comando.
www.dbooks.org
Machine Translated by Google
Hoja de trucos de comandos 252
• modprobe [opciones] modulename: carga o elimina un módulo del kernel de Linux •
passwd [opciones] nombre de usuario: cambia la contraseña del
usuario • shutdown [opciones] [hora] [mensaje]: apaga o reinicia un sistema. • su
[opciones] [nombre de usuario]: cambiar a otro usuario. •
comando sudo [opciones]: ejecuta un comando como superusuario • usermod
[opciones] nombre de usuario: modifica la configuración de una cuenta de usuario
• useradd [opciones] nombre de usuario: agrega una cuenta
de usuario • quién [opciones]: informa de los usuarios que iniciaron
sesión en el sistema. • whoami [opciones]: informar al usuario actual.
Machine Translated by Google
Hoja de referencia de la estructura del directorio
• / : el directorio 'raíz' que contiene todos los demás archivos y directorios • /bin :
comandos/programas comunes, compartidos por todos los usuarios • /
boot : contiene los archivos necesarios para iniciar correctamente la computadora durante el proceso de
arranque • /dev : retiene archivos de dispositivos que representan dispositivos
físicos y 'lógicos' • /etc : contiene archivos de configuración que controlan el funcionamiento
de los programas • /etc/cron.d: uno de los directorios que permite que los programas se ejecuten en un
horario regular • /etc/rc ?.d : Directorios que contienen archivos que controlan el modo de operación de una
computadora • /home : Un directorio que contiene subdirectorios para que cada usuario almacene
archivos específicos del usuario • /lib : Contiene archivos de
biblioteca compartidos y módulos del kernel • /lost+found : Contendrá datos recuperables en caso de
un apagado incorrecto • /media : se usa para montar temporalmente
dispositivos extraíbles • /mnt : un punto de montaje para sistemas de archivos o un punto de montaje
temporal para administradores de sistemas • /opt : contiene software adicional o de terceros que no forma
parte de la instalación predeterminada • /proc : contiene archivos que contienen información sobre los
procesos en ejecución y los recursos del sistema • /root : el directorio de inicio del
administrador del sistema o el usuario 'raíz' • /sbin : contiene ejecutables/comandos binarios utilizado
por el administrador del sistema • /srv : proporciona una ubicación coherente para
almacenar datos para servicios específicos • /tmp : una
ubicación temporal para almacenar archivos o datos • /usr : es el directorio donde se
almacenan y comparten los programas y los datos del usuario • /
usr /bin : contiene archivos ejecutables binarios para los usuarios • /usr/lib : contiene archivos de biblioteca
compartidos para admitir ejecutables en /usr/bin y /usr/sbin • /usr/local : contiene programas de
usuarios que se instalan localmente desde el código fuente • / usr/sbin : el directorio para ejecutables
binarios de administración de sistemas no esenciales • /var : contiene archivos de datos variables que se
espera que crezcan en circunstancias normales • /var/lib : contiene información de estado dinámico
que los programas modifican mientras se ejecutan • /var/ log : almacena
archivos de registro de una variedad de programas y servicios • /var/spool : contiene
archivos que se mantienen (en cola) para su posterior procesamiento • /var/tmp : un almacén temporal para datos que deben
www.dbooks.org
Machine Translated by Google
Hoja de referencia de expresiones regulares
Los siguientes son algunos de los metacaracteres más utilizados y una breve descripción
de su efecto;
[ ] Haga coincidir cualquier cosa dentro de los corchetes para UN carácter
ˆ (circunflejo o símbolo de intercalación) Coincide solo al comienzo de la cadena de destino (cuando no se
usa entre corchetes (donde tiene un significado diferente))
ps
Coincide solo al final de la cadena de destino
. (punto o punto) Coincide con cualquier carácter individual
? Coincide cuando el carácter anterior aparece 0 o 1 vez solamente
* Coincide cuando el carácter anterior aparece 0 o más veces
+ Coincide cuando el carácter anterior aparece 1 o más veces
( ) Se puede usar para agrupar partes de nuestra expresión de búsqueda |
(barra vertical o tubería) Nos permite encontrar los valores de la mano izquierda o derecha
Machine Translated by Google
Hoja de referencia 'buscar'
El proceso de buscar con 'encontrar' se trata de combinar tres cosas;
1. El punto de inicio de la búsqueda 2. El
tipo de criterio o propiedad que vamos a evaluar en nuestra búsqueda 3. El valor específico de los criterios contra
los que queremos buscar.
Los argumentos numéricos a continuación se pueden especificar como;
• +n : para mayor que n, • n : para
menor que n, • n : para
exactamente n.
También podemos emplear comodines para ayudar a hacer coincidir los nombres.
• name patrón: el nombre del archivo que coincide con el patrón del patrón • iname patrón:
como nombre, pero la coincidencia no distingue entre mayúsculas y minúsculas •
mmin n: los datos del archivo se modificaron por última vez hace n minutos •
mtime n: los datos del archivo se modificó por última vez hace n *24 horas • archivo
más nuevo : el archivo se modificó más recientemente que el archivo • amin n: se
accedió al archivo por última vez hace n minutos. • atime n : el archivo
*
fue accedido por última vez n Hace 24 horas •
user uname: el archivo es propiedad del usuario uname • group
gname: el archivo pertenece al grupo gname • executable : coincide
con los archivos que son ejecutables y los directorios que se pueden buscar • type c: el archivo es de tipo C:
– b bloque (con búfer) especial – c
carácter (sin búfer) especial – d directorio – p
canalización con
nombre (FIFO) – f archivo
normal – l enlace
simbólico – s socket
• size n[cwbkMG] : el archivo usa n unidades de espacio (redondeando hacia arriba). Los siguientes sufijos pueden
ser usado:
– b para bloques de 512 bytes (este es el valor predeterminado si no se usa sufijo) –
c para bytes – w
para palabras de dos bytes – k
para kilobytes (unidades de 1024 bytes)
– M para Megabytes (unidades de 1048576 bytes)
www.dbooks.org
Machine Translated by Google
Hoja de referencia 'buscar' 256
– G para Gigabytes (unidades de 1073741824 bytes)
• Modo perm : Los archivos tienen un conjunto específico de permisos con un modo diferente dependiendo de cómo
queramos acceder a ellos – modo
Los bits de permiso del archivo son exactamente el modo –
modo Todos los modos de bits de permiso están configurados para el
archivo. – /mode Se establece cualquiera de los modos de bits de permiso para el archivo.