Laboratorio de Sistema Operativo
Ayuda del Sistema.
$ uname --help → Opción de algunos comandos.
$ apropos uname → Busca en el manual “man” (palabras clave, comodines).
$ whatis uname → Descripción breve de un comando.
$ man ”uname” → Manual del sistema.
$ clear → Limpia la terminal.
$ sudo → Para entrar como super usuario o dar permiso a algún comando como super usuario.
$ yes “ “ → Imprime la cadena que pongas entre “ “ repetidamente hasta que interrumpas el proceso con Ctrl + c -
Ctrl + z
$ sleep n° → pausa un comando o script según el número que ingreses (3=3seg ; 3m=3min ; 3h=3horas ; 3d=3dias).
Información General.
$ date → Muestra fecha y hora actual del sistema.
$ hostname → Muestra el nombre del host.
$ pwd → Muestra la ruta de tu directorio actual.
$ dmidecode → Muestra información acerca del dmidecode (Solo puede ejecutar esto el SuperUsuario)
$ cal → Muestra un calendario del mes actual.
Información acerca del usuario/s.
$ whoami → Muestra el nombre del usuario.
$ id → Muestra nombre de usuario, grupos y los ID numéricos del usuario actual y de otros usuarios.
$ last → Muestra los últimos usuarios conectados.
$ who → Muestra información sobre los usuarios que están conectados al sistema.
Información acerca de los dispositivos del sistema.
$ free → Cantidad de memoria física libre y usada. El espacio de intercambio en el sist, buffers y cache utilizadas
por el kernel.
$ lspci → Lista todos los dispositivos PCI.
$ lsusb → Lista los dispositivos USB.
$ lsblik → Lista los dispositivos de bloque.
$ df → Muestra la cantidad de espacio en disco disponible en los sistemas de archivos.
- -h → Muestra lo mismo en formato humano
- -T → . . . el tipo de sistema de archivo.
- -x tmpfs → Excluye sistema de archivo de tipo tmpfs (sistema de archivos temporales).
Información acerca del funcionamiento del sistema.
$ uname → Muestra información del sistema.
- - -a → Muestra información general del sistema.
- - -n → Muestra el nombre del equipo.
- - -s → Muestra el nombre del Kernel (núcleo) del sistema.
- - -r → Muestra la versión del Kernel del sistema operativo.
- - -o → - - el sistema operativo.
- - -v → - - el tipo de máquina.
$ uptime → Muestra la hora actual, cuanto tiempo lleva en macha el sistema, n° de usuario conectados y la carga
promedio del sistema.
- - -p → Muestra cuánto tiempo lleva en marcha el sistema.
- - -s → . . . fecha y hora que empozo el sistema.
- - -V → . . . información de versión.
$ lsb_release → Muestra información sobre modulo del sistema.
- - -a → Muestra información sobre mi Sistema Operativo.
- - -d →- - - una descripción.
- - -c → - - - el nombre particular del Sistema Operativo.
- - -i → - - - el distribuidor ID.
- - -r → - - - la versión del Sistema Operativo.
$ history → Historial de comandos usados.
$ top → Muestra una tabla de información sobre todo lo que se está ejecutando en el Sistema y se actualiza de
forma dinámica para mostrar los procesos que están ejecutándose y los recursos que se están consumiendo. (q para
salir).
Cerrar el Sistema.
$ exit → Cierra la sesión de una terminal.
$ logout → Cierra una sesión de usuario de forma segura.
$ shutdown → Apaga o reiniciar el sistema.
- - -r → Reinicia el sistema.
- - -h → Apaga el sistema.
- - -c → Cancela el apagado o reinicio programada del sistema.
- - .. now → Ejecuta el comando inmediatamente.
- - .. +10 → Se programa el comando para ejecutarse en 10 min.
- - .. 20:30 → Se programa el comando para ejecutarse a las 20:30.
Ver información de los archivos y/o directorios.
$ ls → Muestra el contenido de un directorio/s.
- -l → Lista en formato extendido.
- -i → Muestra el numero de inodo.
- -s → Muestra el tamaño de cada archivo y directorio.
- -r → Lista en orden inverso.
- -t → . . . por fecha.
- -a → . . . también los archivos ocultos.
- -S → . . . por tamaño.
- -R → . . . en recursiva (directorios y subdirectorios).
- -d → Solo muestra el directorio.
- -L → Lista el contenido del enlace.
- -p → Agrega delante de los directorios una barra inclinada /
$ du →Muestra el tamaño del directorio y/o también de todos los subdiretorios.
- -s → Solo muestra el tamaño del directorio.
- -h → Muestra en formato humano.
- -b → . . . en Byte.
- -k → . . . en Kilobyte.
- -m → . . . en Megabyte.
$ file → determina el tipo de archivo.
$ stat → Muestra fecha y hora de acceso y modificación.
- -c %A → . . . los permisos.
- . . %a → . . . los permisos en formato octagonal.
- . . %F → . . . el tipo.
- . . %i → . . . el número de Inodo.
- . . %y → . . . la fecha de modificación.
- . . %s → . . . el tamaño.
- . . %u → . . . el usuario.
Crear o eliminar Directorio/s.
$ mkdir → Crea directorio/s en la ruta especificada.
- -p → Crea directorios y sub directorios en la ruta especificada.
$ rmdir → Elimina direstorio/s si están vacio.
- -p → Elimina directorios y subdirectorios si quedan vacíos en el proceso.
Modificar directorios y/o archivos
$ cp /origen /destino→ Permite copiar y/o renombrar archivos.
- -r /origen /destino→ . . . copiar y/o renombrar directorios.
$ mv /origen /destino → Mueve archivos y/o directorios. También puedes renombrar.
$ rm → Elimina archivos.
- -r → Elimina directorios.
Crear o modificar archivos.
$ touch → Crea archivo/s vacíos.
- -a → Indica que se cambiara la fecha de acceso del archivo.
- -m → . . . que se cambiara la fecha de modificación del archivo.
- Para indicar que se cambiaran la fecha de modificación y acceso, se agrega -a -m o -d.
- ... -t yyyymmddhhmm.ss→ Indica la fecha y hora que será utilizada para el cambio.
- … -d “yyyy-mm-dd hh:mm:ss”
- ... -d yyyymmdd→ Indica la fecha que será utilizada para el cambio.
- … … “yyyy-mm-dd”
$ nano → Permite crear y/o editar archivo.
Ver contenido de archivos.
$ cat → Muestra el contenido del archivo sin pausa.
- -n → . . . el contenido de archivo con números de línea.
- -s → elimina las líneas vacías del archivo.
$ more → Muestra el contenido del archivo de forma paginada.
- -d → . . . el porcentaje de avance en el archivo.
$ less → Hace lo mismo que el comando “more” pero permite navegar en el archivo.
$ head → Muestra las primeras 10 líneas de un archivo.
- -n8 → . . . las primeras 8 líneas de un archivo.
$ tail → Muestra las ultimas 10 líneas de un archivo.
- -n6 → . . . las ultimas 6 líneas de un archivo.
$ wc → Muestra la cantidad de líneas, palabras o caracteres de un archivo.
- -c → Indica la cantidad de caracteres.
- -w → . . . la cantidad de palabras.
- -l → . . . la cantidad de líneas.
- -L → . . . la longitud de la línea de texto más larga.
Muchos de estos comandos al ser ingresado sin algún archivo donde ejecutar, aparece la entrada de texto para que
ingreses caracteres y poder ejecutar su función mas no guarda nada de esto y para cerrar dicho comando se usa Crtl + e.
Buscar archivos y/o directorios.
$ find /directorio -criterio “búsqueda “→ obtiene la ubicación (ruta) del archivo y/o directorio.
- -type f → Indica el tipo de archivo buscado.
- . . . d → . . . el tipo de directorio buscado.
- . . . l → . . . el tipo de enlace simbólico buscado.
- -name → . . . el nombre del archivo y/o directorio buscado.
- -atime → . . . el rango de fecha acceso buscado.
- -mtime -1→ . . . el rango de fecha modificado buscado (1=24 horas).
- -size → . . . el rango de tamaño de archivo buscado (b=512 byte; 1c=1 byte; 1k=1 Kb; 1M=1 Mb; 1G= 1Gb)
- . . . 1M → Busca archivo de 1 Megabyte.
- . . . +1M → Busca archivo mayor de 1 Megabyte.
- . . . -1M → Busca archivo menor de 1 Megabyte.
- -empty → . . . que se buscan archivos o directorios vacíos.
- -user nombre_usuario → . . . que se buscan los archivos o directorio de un usuario especifico.
- -inum → . . . que se buscan archivos o directorio por números de Inodo.
- -iname → hace lo mismo que “find -name” pero en mayúscula y minúscula.
Modificar permisos
$ chmod → permite asignar, agregar o quitar permisos de un archivo y/o directorio.
- -R → Indica que los permisos cambiados serán al directorio y todo su contenido.
- -h → Indica que los permisos cambiados serán a los enlaces.
- Para asignar permisos a usuario, grupo y otros, se usa ugo= o a=
- Para ejecutar tiene que tener el permiso de Lectura y Ejecución.
- Para copiar hace falta el permiso de Lectura y Ejecución en los archivos y permiso de Lectura y Ejecución al
directorio padre.
- Para editar un archivo o directorio tiene que tener los 3 permisos.
$ sudo chown new_user arch/dir→ Permite cambiar el propietario de un archivo o directorio.
- ... :new_team arch/dir → Permite cambiar el grupo de un archivo o directorio.
- ... user:team arch/dir → Permite cambiar el propietario y grupo de un archivo o directorio.
Crear enlaces
$ ln arch_orig arch_enlace → Crea un enlace fijo (duros) para hacer referencia a un archivo.
- -s arch_org arch_enlace → Crea un enlace Simbólico (blandos) para hacer referencia a un archivo o
directorio.
- Cuando comparte Numero de Inodo quiere decir que es el mismo archivo.
- Si estamos en otros sistemas de archivo (otro país) no se puede crear un enlace, por que el Inodo se puede
repetir.
- En el simbólico solo maneja una ruta, si dicha ruta es cambiada entonces dará error.
Empaquetar o comprimir archivo
$ tar -op arch_tar.gz datos_origen→ Permite generar archivos comprimidos, ver su contenido o extraer los datos.
- -c → Indica que se creara un archivo empaquetado o comprimido.
- -t → Indica que se listará el contenido del archivo.
- -x → Indica que se extraerá el contenido del archivo.
- -z → Indica que el archivo se comprimirá.
- -v → Indica que se mostrará información de los archivos.
- -f → Indica el nombre del archivo.
- -C → Indica en qué directorio se extraerá el contenido del archivo (extre solo archivos).
- Siempre que se usa este comando se usa la opción -f para indicar el nombre del paquete
- Y -v para ver información del proceso.
- Se usa -z para indicar que el archivo se comprimirá
- Para empaquetar se usa .tar y para comprimir .gz
$ gzip → Permite comprimir archivos (individuales), ver información del archivo o extraer su contenido.
- -n → Siendo n un valor entre 1 y 9 que indica el factor de compresión.
- -k → Indica que se conservará el archivo original tras la compresión.
- -d → Indica que se realizará la descompresión del archivo.
- -l → Indica que se muestre informacion acerca de la compresión del archivo.
Redireccionamiento
$ Comando > /destino_arch → La salida del comando es sobrescrita en el archivo indicado, si el archivo no existe se
creará.
$ Comando >> /destino_arch → La salida del comando se guarda al final del archivo indicado.
$ Comando 2> /destino_arch → Si la salida da ERROR igualmente se sobrescribirá en el archivo indicado, si el
archivo no existe se creará.
$ Comando 2>> /destino_arch → Si la salida da ERROR igualmente se guardara al final del archivo indicado.
$ Comando > /destino_arch 2>&1 → Se guardara tanto la SALIDA como la salida de ERROR en el mismo archivo.
$ Comando < /destino_arch → Desde un archivo manda instrucciones para ejecutar el comando.
Buscar dentro de un archivo
$ grep -op “búsqueda” /arch → Permite buscar una cadena (patrón regular) en uno o mas archivos y muestra las
líneas que la contiene.
- -i → Ignora diferencias entre mayúsculas y minúsculas.
- -n → Muestra los números de líneas donde aparece la cadena buscada.
- -w → Busca la cadena como una palabra.
- -c → Cuenta las líneas que contienen la cadena buscada.
- -v → Muestra las líneas que no coincidan con la cadena buscada.
- -e → Permite indicar 2 o más cadenas a buscar.
- ^ → Indica que solo se muestren las líneas que empiecen con la cadena.
- $→... .. ... .. ... las líneas que terminen con la cadena.
$ cut → Permite mostrar secciones de uno o más archivos.
- -fn° → Especifica las columnas que serán “extraídas”.
- -d “carácter” → . . . el carácter separador de columnas a considerar.
$ sort → Ordena el contenido de un archivo de acuerdo a un campo especifico. Por defecto ordena por el primer
campo.
- -kn° → Especifica la columna por la que se realizara la ordenación.
- -t “carácter” → . . . el carácter separador de columnas a considerar.
- -n → Ordena considerando un campo numérico (por defecto se toma ASCII)
- -u → Elimina las líneas repetidas.
- -r → Orden inverso.
Descargar y/o actualizar
$ sudo apt install Comando → Instala comando nuevo.
- . . . update Comando → Actualiza el comando.
- Sudo nos da permiso como super usuario, ya q el comando no puede usarlo un usuario común.
$ wget pag_web → Descarga archivos de una página web al directorio actual en el que estás trabajando.
- -P /destino pag_web → . . . ... y puedes especificar el destino donde se guardará.
Listar Procesos
$ ps -op id_proceso → Permite listar los procesos que se ejecutan en el sistema.
- -op --noheaders → No muestra la cabecera la información que busques.
- -e , -A → Muestra todos los procesos que se están ejecutando.
- -ax , -aux → . . . todos los procesos que se están ejecutando pero con mas información.
- -l → . . . en formato extendido, información de los proceso.
- -u → . . . los procesos de un usuario.
- U →. . . la salida en formato usuario.
- -t → . . . el tiempo de los comando en proceso
- -p → . . . información solo del proceso indicado.
$ pgrep → Permite obtener el id de un proceso conociendo su nombre.
$ pstree → Muestra el árbol de procesos.
$ top → Muestra de forma dinámica el listado de procesos.
$ jobs → Muestra los procesos que se ejecutan en segundo plano.
Modificar prioridades de un proceso
$ nice -n [-20,19] comando → Permite iniciar un proceso con un valor especifico de prioridad. Por defecto la
prioridad será 0.
$ renice -n [-20,19] -p id_proceso → Permite modificar la prioridad de un proceso que ya se esta ejecutando.
Ctrol + Z → Pausa un proceso.
Ctrol + C → Finaliza un proceso.
$ kill -op id_proceso → Permite enviar señales a los procesos.
- -9 → Finaliza o termina un proceso (SIGKILL).
- -18 → Reanuda la ejecución de un proceso pausado (SIGCONT).
- -19 → Pausa la ejecución de un proceso (SIGSTOP).
- -l → Lista las señales que KILL puede enviar a los procesos.
$ fg %n°_trabajo → Reanuda (en 1er plano) un proceso que se encuentra pausado, o enviar a 1er plano un proceso
que se ejecuta en segundo plano.
$ bg %n°_trabajo → Reanuda (en 2do plano) un proceso que se encuentra pausado.
$ nohup comando → Mantiene la ejecución de un comando aunque se cierre la terminal desde donde se ejecuto.
$ fuser -op /destino_arch → Permite identificar procesos a partir de archivos o sockets.
- -k → Finaliza el proceso asociado al archivo indicado.
- -u → Muestra el nombre de usuario de cada proceso
- -v → Proporciona mas información.
Ejecución en serie
$ proceso1 ; proceso2 ; proceso3 → Ejecución Secuencial: Ejecuta varios procesos en serie.
$ proceso1 & proceso2 & proceso3 & → Ejecución Paralela: Ejecuta varios procesos en paralelo.
$ (proceso1 ; proceso2) → Es una agrupación de procesos, cuenta como si fuera 1 proceso.
$ proceso1 && proceso2 → Ejecución Condicional: Si el proceso/s no da error a continuación ejecuta un proceso.
$ proceso1 || proceso2 → Ejecución Condicional: Si el proceso/s da error a continuación ejecuta un proceso.
$ env → Lista todas las variables de su entorno.
$ set, typeset, declare → Lista todas las variables que hay en el sistema.
$ unset name_variable → Elimina la variable indicada.
$ $NAME_VARIABLE comando → Esto se hace para acceder al contenido de la variable.
$ echo $name_variable → Muestra los valores de la variable indicada.
$ name_variable=”valor” → Crea una variable que solo existirá mientras la sesión actual del Shell este abierta
$ name_variable=$otra_variable → Crea una variable con los valores de $otra_variable.
$ new_variable=$variable1+$variable2 → Suma 2 variable y lo guarda en new_variable.
$ typeset o declare → Por defecto, las variables de entorno son definida de tipo Cadena de Caracteres.
- ... -i → Define una variable como Numérica.
- ... -r → Define una variable como Lectura.
- ... -x → Las variables se exportan para ser usadas por subprocesos.
Dentro de Script
Como crear y ejecutar un script:
1°: Editar el archivo: nano ejemploScript
2°: Agregar permisos: chmod u+x ejemploScript
3°: Ejecutar el script: dirección/ejemploScript
#!/bin/bash → Inicia el scripts
Name_variable=$(comando) → Guarda todo comando ejecutado entre paréntesis dentro de una nueva variable.
Variables de la SHELL
$0 → Nombre del comando o programa que se ejecuta.
$1 - $9 → Parámetros de un comando o programa que ingreses.
$*, $@ → Todos los parámetros de un comando o programa.
$# → Cantidad de parámetros de un comando o programa.
$$ → ID del proceso actual.
$? → Resultado del ultimo comando, correcto o incorrecto.
$! → ID del proceso en segundo plano más reciente.
Operadores Lógicos
if [ ! cond ] → Negación (NOT).
if [ cond1 -a cond2 ]; then → Conjugación (AND). If [ cond1 -o cond2 ] then → Disyunción (OR).
if [ cond1 ] && [ cond2 ] then → Conjugación (AND). If [ cond1 ] || [ cond2 ] then → Disyunción (OR).
Operadores Numericos
-eq → Igual. -lt → Menor que. -gt → Mayor que.
-ne → Distinto. -le → Menor o igual. -ge → Mayor o igual.
Operadores de Cadenas
= → Igual. -n → Cadena no nula.
!= → Distinto. -z → Cadena nula.
Operadores de Archivos
-e → Existe. -w → Tiene Permiso de Escritura. -s → Tamaño mayor que cero.
-d → Directorio. -r → Tiene Permiso de Lectura. -L → Archivo Simbólico.
-f → Archivo ordinario. -x → Tiene Permiso de Ejecución.
Estructura de Control Secuencial
echo “oración” → Imprime por pantalla la “oración” o también puede imprimir el contenido de una variable.
- -n “oración” → Imprime por pantalla “oración” sin saltar de línea al final.
read name_variable → Pide la información por pantalla para luego crear una variable con esa información ingresada.
- -p “oración” name_variable → Muestra una oración y pido información por pantalla.
Estructura de Control Selectivas
If → Permite verificar una condición y elegir entre 2 caminos de acciones.
Selectiva Simples y Dobles Anidamiento de Selectivas
if [ cond ]; then if [ cond1 ]; then if [ cond1 ]; then
acciones acciones1 acciones1
else elif [ cond2 ]; then else
acciones acciones2 if [ cond2 ]; then
fi fi acciones 2
fi
fi
case → Permite elegir entre numerables caminos alternativos de acciones.
case $valor_variable in
op1)
acciones_1
;;
op2)
acciones_2
;;
*)
acción_por_defecto
;;
esac
Estructura de Control Repetitivas
for → Permite repetir un conjunto de acciones un numero definido de veces o de acuerdo a una lista de datos.
for ((i=0;$1<=$variable;i=$i+1)) for name_variable in lista_datos
do do
acciones acciones
done done
while → Permite repetir un conjunto de acciones en tanto la condición de repetición sea VERDADERO.
while [condición]
do
acciones
done
BUCLE INFINITO LECTURA DE ARCHIVO
while true ó : while read variable
do do
acciones acciones
done done < nombre_archivo
until → Permite repetir un conjunto de acciones en tanto la condición de repetición sea FALSA.
until [ cond ]
do
acciones
done
BUCLE INFINITO LECTURA DE ARCHIVO
until false ó !: until ! read variable
do do
acciones acciones
done done < nombre_archivo