Está en la página 1de 27

UNIVERSIDAD PÚBLICA DE EL ALTO M. Sc.

ZARA YUJRA CAMA CARRERA


INGENIERÍA DE SISTEMAS SISTEMAS OPERATIVOS (SIO - 427B)

TRABAJO GRUPAL FINAL

LABORATORIO NRO. 5

INTEGRANTES DEL GRUPO: HUARACHI FLORES JUAN CARLOS


EDUARDO TOLA JOSUE
ASISTER CONDORI ARIEL LEONEL
PATERNO MATERNO NOMBRE(S)

DOCENTE: M. Sc. ZARA YUJRA CAMA GESTION: I/2023

PUNTAJE: SOBRE 20 PUNTOS

- 10 PUNTOS (Informe completo)


- 5 PUNTOS (Exposición Individual)
- 5 PUNTOS (Respuestas Individuales)

PARTE I: Instalación de dos Sistemas Operativos (PRACTICA EN SU PC)


En su equipos realizar al menos dos particiones, en cada una instalar un sistema operativo:
A) Partición 1: Windows la versión que se pueda instalar en su PC
B) Partición 2: Linux, la distribución de su disponibilidad y la que prefiera.

INFORME – PARTE I: (Puntaje 5 Puntos)


Elaborar un Informe con los puntos siguientes:
1) PROCESO DE INSTALACION:
Mostrar paso a paso el proceso de instalación, capturar pantallas e incluyendo la
explicación precisa de lo realizado en cada paso.
SISTEMA OPERATIVO WINDOWS 10
PASO 1.
Bueno en el video no lo tenemos pero es tener un CD con la imagen original de
Windows 7,10 o 11 o crear por nuestra cuenta un USB Booteable descargando
la iso original desde la web de Microsoft y creando el USB Booteable con el
programa Rufus, ya dependiendo de las caracteristicas de tu pc instalar el
Windows que desee

PASO 2.
Bueno ahora tenemos que ingresar a la Bios del PC y configurar el orden de
booteo poniendo como principal el USB creado y luego elegir el dispositivo de
arranque como se ve en la imagen

PASO 3
Luego de eso nos aparecera lo que es el proceso de instalación donde se
elegira nuestras preferencias como vemos en las las imagenes y luego se
instalara
PASO 4
Una vez electo lo demas nos pedira activar el Windows cosa que si tienes una
licencia original te sera facil aunque luego puedes comprar una ya sea de uso
personal o empresarial el cual es mas caro

PASO 5
Aceptar terminos y condiciones
PASO 6
Bueno ahpra nos aparece el tipo de instalacion que deseamos y nos da estas
dos opciones ya que antes tenia el windows como SO y este lo toma como una
actualizacion, en este caso elegimos lo que es la instalacion desde cero con
configuraciones y programas predeterminados

PASO 7
Ahora toca realizar las particiones dedicadas a tu preferencia como puede ser
el disco local D o E o particiones minimas como lo desees y entre las opciones
que nos da esta la de eliminar particiones, crearlas, formatearlas entre otras
como se ve en la imagen
PASO 8
Una vez realizado todos eso pasos viene el momento de la instalacion el cual
suele tardar unos minutos

PASO FINAL
Ahora sera solo la personalizacion a tu gusto nuevamente decidiras si quieres
recibir actualizaciones de programas entre otros como el usuario que lo
manejara y eso es todo, a disfrutar tu nueva pc
SISTEMA OPERATIVO LINUX (UBUNTU)
PASO 1
En este caso haremos lo mismo de crear el USB booteable con el ubuntu ya
sea de la version que tu quieras ya que este SO es de uso libre no es lo mismo
que el Windows que se compran licencias para poder usarlo completamente
aunque en ubuntu no dispongamos de la amplia gama de programas que tiene
windows se tienen algunos de software libre
PASO 2
Nos dirigimos a la Bios donde nuevamente cambiamos el orden de arranque
poniendo como principal el USB y una ve hecho eso saldra de forma
automatica el proceso de instalacion de ubuntu
PASO 3
Una vez cargue todo, ubuntu es muy distinto de windows ya que antes de
cambiar a ubuntu puedes probar el software y ver que te parecio y asi nos
diferenciamos de Windows el cual tienes qie instalar el SO si o si para poder
probarlo y testearlo

PASO 4
En el paso siguiente nos saldra dos opciones de instalacion, la normal y la
minima donde se diferencian es en los programas y utilidades basicas que se
instalaran junto al SO y tambien se puede apreciar otras opciones como las
actualizaciones e instalacion de perifericos
PASO 5
El siguiente paso es elegir que hacer con el SO, si instalar de forma automatica
donde el propio SO elige sus particiones, en este caso como nosotros
teniamos el Windows instalado lo que hace es instalar ubuntu junto a windos y
tener dos sistemas de arranque o tambien borrar todo windows y solo
quedarnos con ubuntu y una tercera opcion que lo que hace es que nosotros
por nuestra cuenta hacer las particiones como se ve en la imagen

PASO 6
En el siguiente paso debemos crear un usuario con el nombre y la contraseña
para dar mas seguridad al equipo pasando esto se viene la instalacion la copia
de archivos de ubuntu como se ven en las imagenes
PASO FINAL
Como ultimo paso a realizar debemos reiniciar el equipo para que se quede
con los cambios y luego ya personalizar a gusto
2) VIDEO EXPLICATIVO DEL PROCESO DE INSTALACIÓN
Dirección Web: https://www.youtube.com/watch?v=_yeTU8lKv44
En el informe incluir la dirección web donde se encuentra publicado para su revisión.

DATOS DESCRIPTIVOS EN EL VIDEO:


A. TITULO
B. UNIVERSIDAD Y CARRERA
C. MATERIA
D. DOCENTE
E. TRABAJO FINAL DE SEMESTRE
F. INTEGRANTES DEL GRUPO

PARTE II: APLICACIÓN PRÁCTICA DE LOS TEMAS (Puntaje 5 Puntos)


Describir los puntos siguientes enfocándolos respecto a los Sistemas Operativos:
Windows, IOS MAC y Linux.
Se debe realizar una investigación previa en Textos, Tutoriales, Manuales y otros
para responder a los siguientes puntos de manera precisa.

INFORME – PARTE II:


A. Gestión de Procesos de: Windows, MAC OS y Linux:
- WINDOWS 11: El sistema de gestión de procesos en Windows 11 está diseñado para que sea
completamente compatible con Windows 10, por lo tanto, es el mismo que el de Windows
10, se puede manipular los procesos por medio de scripts, sin embargo se puede
interactuar con la administración que se da al ejecutar el programa Taskmgr.exe , donde
se puede manipular los procesos que inician al iniciar la pc.
Los procesos se ven de manera ordenada en el administrador de tareas con los detalles
de usos de recursos en pc.
- MAC OS: La gestión de los procesos de Mac OS es similar al de Windows, utilizando varias
colas de procesos cada una con un nivel de prioridad. Un hilo puede pasar de una cola a
otra dependiendo de los requerimientos. Estos niveles se pueden manejar mediante
llamadas al sistema. Los niveles son: normal, alta, Kernel y tiempo real. Activity Monitor
muestra los procesos que se están ejecutando en el Mac, por lo que puede gestionar y
ver cómo afectan a la actividad y el rendimiento de tu Mac.

-
- LINUX: Una instancia de un programa en ejecución se llama proceso. Cada proceso en Linux
tiene un ID de proceso (PID) y está asociado con un usuario y una cuenta de grupo en
particular. Linux es un sistema operativo multitarea, lo que significa que se pueden
ejecutar varios programas al mismo tiempo, los procesos también se conocen como
tareas. Hay 5 fases en el ciclo de vida del proyecto, también llamadas los 5 grupos de
procesos: iniciación, planificación, ejecución, seguimiento / control y cierre. Cada una de
estas fases del proyecto representa un grupo de procesos interrelacionados que deben
tener lugar.
-

B. Gestión de Memoria de: Windows, MAC OS y Linux


-WINDOWS 11: Utiliza memoria virtual cuando la necesita o la memoria empieza a
llenarse, comprime páginas de memoria antiguas que las mantiene en la memoria, pero
antes de comprimir se deben de cerrar las pestañas pequeñas que ya no se utilizaran
para que la velocidad del equipo mejore, ahora la memoria física suele dividirse en
almacenamiento primario de alta velocidad y secundario de menor velocidad.
-MAC OS: La gestión de la memoria en Mac OS X puede sorprender a mas de un
usuario. Esto es debido a que Apple cataloga el uso de la memoria de la siguiente forma:
Libre: Tal como se puede deducir, este tipo de memoria no se está utilizando.
Sistema: Cantidad de memoria que se emplea por parte del sistema.
Activa: Memoria RAM que ha sido utilizada hace poco.
Inactiva: Cantidad de memoria que no se está utilizando en el momento pero que puede
volver a estar disponible para la aplicación que la ha usado. Mac OS X reserva este tipo
de memoria a aplicaciones que se han cerrado. De esta forma si volvemos a abrirlas,
como tienen memoria reservada, se abrirán mas rápido.
En uso: Consiste en la cantidad de memoria total que se encuentra en uso.

Esto abarca la memoria física como la virtual.


-LINUX: El sistema operativo Linux utiliza para la gestión de memoria el BUDDY
SYSTEM(ALOCACION): El kernel debe establecer una estrategia robusta y eficiente
para asignar grupos de marcos de páginas contiguos. Por ello, el objetivo principal del
Buddy system es evitar la fragmentación externa. Desarrolla un sistema que controla los
marcos de página contiguos y evita en lo posible dividir un bloque libre grande para una
asignación pequeña. El principio básico del Buddy System es el siguiente:
A cada petición de asignación, se usa la lista no vacía que contiene los grupos de
marcos de página de tamaño inmediatamente superior al tamaño especificado, y se
selecciona un grupo de páginas de esta lista. Este grupo se descompone en dos partes:
los marcos de página correspondientes al tamaño de memoria especificado, y el resto de
marcos de página que siguen disponibles. Este resto puede insertarse en las otras
listas. Al liberar un grupo de marcos de página, el kernel intenta fusionar este grupo con
los grupos disponibles, con el objetivo de obtener un grupo disponible de tamaño
máximo, La técnica de cargar sólo páginas virtuales en memoria conforme son
accedidas es conocida como Paginación por Demanda. Linux utiliza la paginación por
demanda para cargar imágenes ejecutables en la memoria virtual de un proceso.

C. Sistema de Archivos de Windows, MAC OS y Linux


- WINDOWS 11: En este caso, hablando de Windows 10, sabemos que el sistema de archivos
por defecto es NTFS (New Technology File System) pero también Windows 10 está en la
capacidad de admitir sistemas de archivos como FAT, FAT32, exFAT y ReFS sin
necesidad de usar software adicional como ocurre con otros sistemas operativos.

- MAC OS: Mac admite varios formatos del sistema de archivos:


- Sistema de archivos de Apple (APFS): Sistema de archivos usado por macOS 10.13 o posterior.
- Mac OS Plus: Sistema de archivos usado por macOS 10.12 y versiones anteriores.
- MS-DOS (FAT) y ExFAT: Sistemas de archivos compatibles con Windows.
APFS: El sistema de archivos de Apple (APFS) es el sistema de archivos por omisión de
ordenadores Mac con macOS 10.13 o posterior. Incluye una encriptación de alta
seguridad, espacio compartido, instantáneas, redimensionamiento rápido de los
directorios y mejora de los aspectos básicos del sistema de archivos.
MAC OS PLUS: Selecciona uno de los siguientes formatos del sistema de archivos Mac
OS Plus para hacer posible la compatibilidad con ordenadores Mac con macOS 10.12 y
versiones anteriores. Mac OS Plus (con registro, encriptado), Mac OS Plus (con registro),
Mac OS Plus (mayús./minús., con registro), Mac OS Plus (mayús./minús., con registro,
encriptado).
COMPATIBLE CON WINDOWS: Selecciona uno de los siguientes formatos del sistema
de archivos compatible con Windows si vas a formatear un disco para usarlo con
Windows.
MS-DOS (FAT): Se utiliza para los volúmenes de Windows de hasta 32 GB.
ExFAT: Se utiliza para los volúmenes de Windows de más de 32 GB.

- LINUX: Los principales sistemas de archivos que podemos usar en Linux son:
Extended4, Fourth Extended Filesystem, o más conocido como EXT4, es el sistema de
archivos usado por la mayoría de las distribuciones. A grandes rasgos, viene a ser el
NTFS de Linux. Este sistema de archivos llegó para suceder a EXT3, incluyendo una gran
cantidad de funciones y características, entre otras, el soporte para unidades sólidas SSD.
XFS
F2FS
- Este sistema de archivos fue creado originalmente para trabajar con unidades basadas en
NAND, como memorias USB o, sobre todo, unidades SSD. Este sistema de archivos fue
diseñado por Samsung, aunque se ha ganado la confianza de la comunidad dado su
excelente rendimiento. Cuando formateamos una unidad con él, se divide el espacio en
partes muy pequeñas de manera que, en lugar de reutilizar un mismo sector una y otra
vez, los datos se vayan guardando en distintas partes, alargando la vida útil de las
unidades. Además, cuenta con soporte para tecnologías específicas de los SSD, como
TRIM o FITRIM.
BtrFS
- Acrónimo de «b-tree file system«, BtrFS fue diseñado por Oracle con la intención de suceder a
EXT. Sin embargo, aún no lo ha conseguido. Este sistema de archivos cuenta con una
gran cantidad de funciones avanzadas que mejoran el funcionamiento general de todo
tipo de unidades, como desfragmentación avanzada y compresión de datos.
OpenZFS
- OpenZFS es un fork de Zettabyte File System (ZFS), desarrollado por Sun. Tras muchos
problemas de licencia, finalmente, en 2010, comenzó el desarrollo de este nuevo sistema
de archivos. Y, desde 2016, muchas distros, como Ubuntu, lo soportan de serie.
- OpenZFS es un sistema de archivos especialmente diseñado para funcionar en sistemas RAID.
Además de ser compatible con todas las configuraciones de RAID.
D. Administración de Dispositivos de Entrada/Salida de Windows, MAC OS y Linux
- WINDOWS 11: Windows 10 utiliza el sistema de entrada/salida de Windows NT.
- Permite utilizar los dispositivos conectados a la computadora, protegiendo a esta para que solo
se pueda acceder a ellos a través de las funciones que proporciona el sistema operativo,
y nunca puedan hacerlo directamente los programas del usuario.
- Gracias a esto se facilitan los accesos a los mismos e independiza los programas de los
dispositivos, brindando así seguridad a su uso cuando se quieran acceder varios procesos
a los mismos, y facilitar la escalabilidad del sistema al permitir añadir o remover
dispositivos o drivers sin necesidad de realizar cambios en los programas o el sistema.

- MAC OS: Manejador dispositivos son programas con los manejadores de cuales los diversos
tipos de dispositivos pueden presentar interfaces uniformes de entrada / salida a las
aplicaciones. Tres manejadores de dispositivo están integrados al sistema operativo en
ROM: el manejador de disco se encarga del acceso a la información en discos, el
manejador de sonido controla los generadores de sonido, y el manejador en serie envía y
recibe datos a través de los puertos seriales (estableciendo as la comunicación con
dispositivos periféricos en serie como impresoras y módems).
- Con el manejador de impresoras las aplicaciones pueden imprimir datos en diversas
impresoras. Con el administrador de AppleTalk las aplicaciones pueden transmitir y recibir
información en una red de comunicaciones AppleTalk.

- LINUX: En Linux los dispositivos por defecto son los denominados entrada estándar y salida
estándar. Si un programa lee de la entrada estándar estará obteniendo datos desde el
teclado. Cuando escribe algún resultado a la salida estándar, lo estará haciendo a la
pantalla.
- Ciertos comandos no utilizan la entrada estándar (teclado) para recibir la información que
necesitan para ejecutarse, sino que la reciben como argumento directamente.
- El interés del concepto de entrada/salida estándar estriba en que todos los dispositivos son
tratados como si fueran ficheros. Por esta razón, a los programas no les importa si están
leyendo de un teclado o de un fichero ni tampoco si están escribiendo en la pantalla o, de
nuevo, en un fichero.

SISTEMA OPERATIVO LINUX:


E. Gestión de Grupos y Usuarios: Añadir, Modificar y Borrar cuentas de usuarios en Linux
El objetivo principal de la gestión de usuarios y grupos en Linux, es permitir que múltiples
usuarios hagan uso del sistema, pero de una forma ordenada y segura. De tal manera
que ninguna de las tareas que se realicen por cualquier usuario, pueda poner en riesgo
todo el sistema. A través de la gestión, se establecen los mecanismos y políticas de
seguridad para la protección de os datos de cada usuario, así como parara asegurar y
proteger el funcionamiento de todo el sistema.
Para permitir una administración flexible de los permisos de los usuarios, Linux permite
estructurar los usuarios a través de grupos y los permisos pueden ser asignados a un
grupo. Por ejemplo, tenemos una institución educativa, el grupo de profesores tiene
acceso a ciertos archivos, al momento de añadir un nuevo profesor en el sistema, solo
tenemos que asignarle a su cuenta de usuario el grupo profesor.
Como les mencione anteriormente, todos los usuarios deben pertenecer a un grupo
principal o primario (obligatoriamente), pero puede pertenecer a otros grupos, esos son
considerados secundarios. Todos los grupos de usuarios sólo pueden contener varios
usuarios, es decir, no pueden contener a otros grupos.
Comandos de gestión de usuarios y grupos en Linux
Creación de usuarios
Para añadir un usuario, indicando sus parámetros de información utilizamos en la
consola el comando useradd. Su sintaxis es:

[php]useradd [opciones] nombre-usuario[/php]


Podemos resaltar entre todas sus opciones, las siguientes:

g: Grupo principal que sera asignado al usuario


d: Para asignar carpeta home del usuario. Normalmente es /home/nombre-usuario
m: Crear carpeta home en caso de no existir
s: Intérprete de comandos (shell) del usuario. Suele ser /bin/bash

Por ejemplo, queremos crear un usuario llamado «luis» y que su grupo principal sea
«profesores», que demas tenga asignada como carpeta home «/home/luis» y que sus
comando sean interpretados en «/bin/bash». El comando que debemos ejecutar sera el
siguiente:

[php]sudo useradd -g profesores -d /home/luis -m -s /bin/bash luis[/php]


Ahora nos queda por establecer su contraseña mediante el uso del comando passwd:

[php]sudo passwd luis[/php]


El sistema nos solicitara la contraseña dos veces y listo! Sera asignada.

Un dato relevante es que podemos usar el comando useradd, para la creación de


usuarios en lotes mediante el uso de shell script.

Por otro lado, una recomendación a tomar en cuenta es el hecho de crear los nombres
de usuario en minúsculas y que ademas incluya números y algún signo como guion o
guion bajo. También hay que recordar que para Linux, Luis es distinto de luis, ya que
distingue entre mayúsculas y minúsculas.

Modificación de usuarios
Para realizar modificaciones sobre los usuarios, se emplea el comando usermod. Este te
permite hacer cambios sobre el nombre, la carpeta home, su interpretador de comandos,
sus grupos, entre otros.
Por ejemplo, para cambiar el nombre de usuario usamos:

[php]sudo usermod -d /home/carpeta_luis luis[/php]

Eliminación de usuarios
La eliminación de los usuarios la realizamos mediante el uso del comando userdel y a
continuación el nombre de usuario. Si a la instrucción, le añadimos la opción -r, su
carpeta home también sera eliminada. Veamos el ejemplo:

[php]sudo userdel -r luis[/php]

Creación de grupos
En este caso, tenemos el comando groupadd, tan solo debemos indicar el nombre del
grupo como parámetro. Por ejemplo, si quisiéramos añadir un grupo llamado
«estudiantes», la sentencia seria:

[php]sudo groupadd estudiantes[/php]

Modificación de grupos
Por supuesto, los grupos también pueden ser modificados al igual que hacemos con los
usuarios. Para ello, usamos el comando groupmod. En el caso de los grupos podemos
editar su nombre o su gid.

La sintaxis para el comando es: sudo groupmod [-g nuevo-gid] [-n nuevo-nombre]
nombre-grupo, ejemplo:

por ejemplo, cambiemos el gid del grupo «profesores»:

[php]sudo groupmod -g 2000 profesores[/php]


Eliminación de grupos
Lo hacemos con el comando groupdel seguido del nombre del grupo, por ejemplo:

[php]sudo groupdel profesores[/php]


Se eliminara el grupo sólo en caso de que no tenga usuarios con el grupo asignado
como primario. Si existiera algún usuario con esta condición, el grupo no se eliminara.

Añadir usuarios a un grupo


pera ello empleamos el comando adduser y a continuación el nombre del usuario y el
nombre del grupo. Por ejemplo, para añadir Luis al grupo profesores usamos:

[php] sudo adduser luis profesores[/php]


Quitar usuarios de un grupo
Y finalmente, si queremos eliminar un usuario de un grupo, utilizamos el comando
deluser acompañado del nombre del usuario y del grupo. Por ejemplo, si queremos
quitar a «luis» del grupo «profesores»:

[php]sudo deluser luis profesores[/php]


Como ves, tenemos suficientes herramientas para realizar una excelente gestión de los
usuarios y grupos en Linux. Si requieres mayor información de los comandos, puedes
consultar la ayuda disponible, ejecutando man seguido del nombre por ejemplo:

[php]man adduser[/php]

F. Manejo de impresoras en Linux : el manejo de impresoras en Linux se hace mediante


comandos en la siguiente lista se ve algunos ejemplos en lista de operaciones con
impresoras:
1 Administración de Redes ADMINISTRACIÓN DE IMPRESORAS EN LINUX
2 Sistemas de impresión en Linux LPD: tradicional (desde Unix BSD) LPRng: version
mejorada de LPD (next generation) PDQ: version distribuida, más reciente CUPS:
(Common UNIX Printing Systems). Desarrollado para ambientes heterogéneos. Portado
a Linux (desplazó a LPRng!)
3 Tipos de impresora Dependiendo de la conexión (serial, paralelo, red, USB), formato
de datos: texto o PDL (Page Description Language) como PostScript y PCL PostScript
(Adobe) es un standard de facto. Software genera PostScript. Impresoras modernas
entienden PostScript; sino, se instala traductor PostScript -> formato impresora. Ej:
ghostscript
4 LPD printer spooler Controlado por demonio (/usr/sbin/lpd). Usuarios usan lpr (o lp), el
cual se comunica con lpd vía el pipe /dev/printer, y usa /etc/printcap para determinar el
spool directory lpd usa configuración en /etc/printcap Si impresora local, crea un hijo
(fork) para enviar datos del archivo a la impresora (eventualmente aplicando filtros para
convertir formatos) Si es remota, abre conexión y envía datos con formato apropiado
5 Control de impresión lpr -Pprinter archivo lpq: muestra estado de la cola de impresión
lprm: cancela impresión lpc: controla una impresora o cola Labores administrativas
6 /etc/printcap Base de datos usada por LPD. Toda impresora debe estar registrada allí
antes de usarse Cada impresora definida contiene alias e información de configuración
sd: spool directory; lf: error log file; lp: dispositivo; af: accounting file; rm: máquina
remota; rp: printer remoto; of: filtro de salida; if: filtro de entrada; mx: máximo tamaño de
archivo; sh: elimina encabezados
7 Añadir una impresora Tres escenarios Impresora local en puerto paralelo o serial
Aceptar tareas de impresión lpd desde otras máquinas de la red Imprimir hacia un
servidor de impresión lpd en la red
8 Impresora local Agregar descripción impresora en /etc/printcap /dev/lp0 paralelo,
/dev/ttys0 serial deskjet printer\ :mx#0:\ :sd=/var/spool/lpd/deskjet:\ :sh:\ :lp=/dev/lp0:\
9 Aceptar trabajos desde otras máquinas de la red Servidor: Configurar y probar
impresora localmente En el archivo /etc/hosts.lpd, agregar nombres de las máquinas
(clientes) desde donde se aceptan trabajos para imprimir Configurar impresora local
Cliente: agregar entrada en /etc/printcap rdeskjet rprinter:\
:lp=/var/spool/lpd/rdeskjet/.null:\ :rm=suma:rp=deskjet:mx#0:\ :sd=/var/spool/lpd/rdeskjet:\
10 Aceptar trabajos desde otras máquinas de la red (cont.) Crear directorio spool y el.null
Probar (lpr, lpq, lp) > mkdir /var/spool/lpd/rdeskjet > touch /var/spool/lpd/rdeskjet/.null >
chown -R daemon /var/spool/lpd/rdeskjet > chgrp -R daemon /var/spool/lpd/rdeskjet >
chmod 775 /var/spool/lpd/rdeskjet.
ALGUNOS COMANDOS PARA LA ADMINISTRACION DE IMPRESORAS SON:
lp / lpr : Ambos comandos envían trabajos a la impresora. Comparten sintaxis y algunas
opciones.
Opciones comunes:
Especificar el usuario que hará uso del servidor de impresión: -U <usuario>
Enviar un mail a la finalización del trabajo: -m
Especificar un servidor de impresión alternativo: -h hostname[:port] / -H server[:port] (lp y
lpr respectivamente)
Opciones lp:
Imprime los archivos en la impresora especificada: -d <impresora>
Especificar un existente trabajo a modificar: -i <job-id>
Indicar el número de copias a imprimir (de 1 a 100): -n <copias>
Indicar la prioridad de un trabajo (de 1 a 500, por defecto 50): -q <prioridad>
Setear el nombre de un trabajo: -t <name>
Opciones lpr:
Imprime los archivos en la impresora especificada: -P <impresora>
Indicar el número de copias a imprimir (de 1 a 100): -# <copias>
No imprimir la cabecera del archivo: -h
Especificar que el archivo a imprimir ya está formateado, no necesita ser procesado por
filtros: -l
Eliminar los archivos una vez imprimidos: -r
lpc: Proporciona un control limitado sobre impresoras y colas de impresión suministradas
por CUPS
lpq: Informa sobre el estado de la cola de impresión
cancel: Cancela trabajos de la cola de impresión. Podemos pasar la opción -a para
eliminar todos los trabajos de una cola de impresión dada, o de todas las colas si no
especificamos una en concreto.
lprm: Igual al anterior. Elimina trabajos de la cola de impresión.
lpmove: Mueve trabajos a un nuevo destino
lpmove job-id newprinter
lpoptions: Muestra o establece las opciones para una impresora.
lpstat: Muestra el estado de la impresora, la cola de impresión y trabajos.
lpstat [opciones]
Opciones:
Mostrar el nombre del servidor de impresión y el puerto: -H
Mostrar un trabajo determinado, por defecto mostrará si está o no completado. Hay que
indicar esta opción antes de -o y/o del nombre de la impresora: -W <job>
Mostrar la impresora de destino por defecto: -d
Mostrar una larga lista de impresoras y trabajos: -l
Mostrar la cola de impresión para un destino concreto: -o <destino>
Mostrar si el servidor CUPS está en ejecución: -r
lpadmin: Nos permite definir la impresora por defecto y configurarla. Posee bastantes
opciones. Algunas obvias podrían ser:
Eliminar la impresora por defecto: -R <nombreimpresora>
Imprimir información sobre la impresora: -D
Habilitar la impresora destino y aceptar colas de impresión: -E
Informar sobre la localización de la impresora destino: -L
system-config-printer: Configura un servidor de impresión CUPS
cupsaccept/cupsreject: Aceptar o rechazar trabajos enviados a una impresora.
cupsenable/cupsdisable: Iniciar o detener impresoras CUPS.

G. Programación Shell (Script Bash) en Linux


G.1 Qué es un proceso Shell (Script Bash)
Un proceso Shell: Es un intérprete de comandos o shell es un programa que permite a
los usuarios interactuar con el sistema, procesando las órdenes que se le indican. Bash
es una herramienta popular de scripts disponible en Unix. Es la abreviación de Bourne Again
Shell. Es una herramienta poderosa para todo usuario de Linux o administrador de sistemas.
Unix tiene 2 categorías principales de shells.
Shell tipo Bourne
C shell
Bourne shell se clasifica además como:
Korn shell (ksh)
Bourne shell (sh)
POSIX shell (sh)
Bourne Again shell (bash)

C shell también se clasifica además como:


C shell (csh)
TENEX (TOPS) C shell (tcsh)

Los Bash scripts son un componente muy potente y útil para el desarrollo. Puede reducir
tareas repetitivas y cortas a una sola línea. Se pueden consolidar muchos comandos
largos en un solo código ejecutable.Bash está disponible en casi todas las versiones de
Linux y no requiere de instalación adicional. La lista de shells disponibles se puede
verificar escribiendo el siguiente comando:
cat /etc/shells
- El resultado será algo similar a esto:
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh

G.2 Como escribir un script en Bash


- Antes de comenzar, tendrás que acceder a tu servidor VPS mediante SSH.
- Para comenzar con las opciones básicas de los comandos, puedes consultar las páginas del
manual de bash escribiendo:
man bash
- A continuación, tendremos que crear un archivo .sh. Para esto usaremos VIM Editor. Para crear un
archivo, usa un comando como este:
vim sampleFunction.sh
- Ahora seremos llevados al archivo .sh, donde podemos editarlo.
- Esto generará un resultado con los comandos Bash y su uso. Todo script de bash en Linux debe comenzar
con la siguiente línea:
#!/bin/bash
- El siguiente comando muestra la ruta del script bash.
which bash
- Esto mostrará el siguiente resultado:
/bin/bash
- La sintaxis común de bash es:
function functionName {
first command
second command
}
- Esto también se puede escribir como:
functionName (){
first command
second command
}
- En una sola línea, esto se puede escribir así:
functionName() { first command; second command; }
- Un ejemplo de dicha función se muestra a continuación, donde primero creamos un directorio y luego
cambiamos la ruta para que apunte al nuevo directorio:
sampleFunction () {
mkdir -p $1
cd $1
}
- $1 representa el argumento de entrada de la línea de comando. Bash puede crear entradas dinámicas
dentro del comando. Para verificar esta función, puedes ejecutar:
sampleFunction myDir
- Aquí myDir es un nombre de directorio válido. Si revisas el directorio de trabajo actual utilizando el
comando pwd, puedes ver que actualmente estás dentro del myDir recién creado.
- Igualmente, cualquier comando de uso común se puede agregar como una función bash.
- Recuerda que cuando hayas terminado de usar el editor VIM para editar el archivo .sh, puedes guardar y
salir presionando ESC para ingresar al modo de comando, y luego escribir :wq para guardar y salir.
- Uno de los ejemplos básicos de la función bash en Linux se muestra a continuación:
#!/bin/bash
testfunction(){
echo "My first function"
}
Testfunction
G.3 Condicionales en Bash
En Bash && representa el elemento lógico AND, mientras que || representa a OR.
Con las declaraciones If, también podemos definir Else if, case.
En las declaraciones case ;; representa una ruptura de case.
G.4 Bucles en Bash
En bash soporta los bucles con While, for.
G.5 Funciones en Bash
Al igual que viste en el caso de los arrays, en el caso de las funciones en Bash, también es posible
declararla de varias formas. La primera de las formas es tan sencillo, como indicar el nombre de
la función seguido paréntesis. Por ejemplo:

mi_primera_funcion(){
echo Hola Mundo
}
G.6 Creando Scipts en Bash: (Parte Práctica)
(nombrarlos en forma correlativa denominándolo Ejer1, Ejer2,…. etc)
C.6.1 Crear 10 procesos Shell (Script Bash) simples :

EJER1:
Es un script que imprime “Hola, mundo” y el nombre del usuario.
#!/bin/bash

echo "Hola, mundo"


echo "Tu nombre es $JosueEduardo"

EJER2:
Un script que muestra la fecha y la hora actual.
#!/bin/bash
echo "La fecha actual es $(date +%d/%m/%Y)"
echo "La hora actual es $(date +%H:%M:%S)"

EJER3:
Un script que calcula el área de un círculo dado el radio.
#!/bin/bash

echo "Introduce el radio del círculo en centímetros:"


read radio
area=$(echo "3.14 * $radio * $radio" | bc)
echo "El área del círculo es $area cm^2"

EJER4:
Un script que crea un archivo de texto con el nombre que le indiques
y escribe un mensaje en él.
#!/bin/bash
echo "Introduce el nombre del archivo de texto que
quieres crear:"
read nombre
echo "Introduce el mensaje que quieres escribir en el
archivo:"
read mensaje
echo "$mensaje" > $nombre.txt
echo "Se ha creado el archivo $nombre.txt con el
mensaje: $mensaje"

EJER5:
Un script que muestra el número de archivos y directorios que hay en
el directorio actual.
#!/bin/bash

archivos=$(ls -1 | wc -l)
directorios=$(ls -d */ | wc -l)
echo "Hay $archivos archivos y $directorios directorios
en el directorio actual"

EJER6:
Un script que muestra los 10 primeros números de la sucesión de
Fibonacci.
#!/bin/bash
a=0
b=1
echo "Los 10 primeros números de la sucesión de
Fibonacci son:"
for i in {1..10}
do
echo "$a"
c=$((a + b))
a=$b
b=$c
done
EJER7:
Un script que muestra un menú con opciones y ejecuta la opción
elegida por el usuario.
#!/bin/bash
echo "Elige una opción del menú:"
echo "1) Saludar"
echo "2) Sumar dos números"
echo "3) Salir"
read opcion
case $opcion in
1) echo "Hola, ¿cómo estás?";;
2) echo "Introduce el primer número:"
read num1
echo "Introduce el segundo número:"
read num2
suma=$((num1 + num2))
echo "La suma de $num1 y $num2 es $suma";;
3) echo "Adiós"; exit;;
*) echo "Opción inválida";;
esac

EJER8:
Un script que muestra el nombre y el tamaño de los archivos que
ocupan más de 1 MB en el directorio actual.
#!/bin/bash
echo "Los archivos que ocupan más de 1 MB en el
directorio actual son:"
find . -type f -size +1M -exec ls -lh {} \; | awk '{print $9,
$5}'
EJER9:
Un script que comprime todos los archivos de texto del directorio
actual en un archivo zip llamado textos.zip.
#!/bin/bash
zip textos.zip *.txt
echo "Se ha creado el archivo textos.zip con los
archivos de texto del directorio actual"
EJER10:
Un script que muestra el uso de la memoria y del disco duro del
sistema.
#!/bin/bash
echo "El uso de la memoria es:"
free -h
echo "El uso del disco duro es:"
df -h
C.6.2 Crear 5 procesos Shell Script Bash complejos
EJER1:
Un script que recibe dos argumentos: un nombre de archivo y una palabra. El script busca la
palabra en el archivo y muestra el número de veces que aparece y las líneas donde se
encuentra.
#!/bin/bash
if [ $# -eq 2 ]; then # Comprueba que hay dos
argumentos
archivo=$1 # Asigna el primer argumento a la
variable archivo
palabra=$2 # Asigna el segundo argumento a la
variable palabra
if [ -f $archivo ]; then # Comprueba que el archivo
existe y es un archivo regular
veces=$(grep -c -w $palabra $archivo) # Cuenta el
número de veces que aparece la palabra en el archivo
echo "La palabra $palabra aparece $veces veces en
el archivo $archivo"
echo "Las líneas donde se encuentra son:"
grep -n -w $palabra $archivo # Muestra las líneas
donde se encuentra la palabra con el número de línea
else
echo "El archivo $archivo no existe o no es un
archivo regular"
fi
else
echo "Debes introducir dos argumentos: un nombre
de archivo y una palabra"
fi
EJER2:
Un script que lee un archivo de texto con una lista de nombres y apellidos separados por comas
y crea un nuevo archivo con los nombres ordenados alfabéticamente y con el formato “Apellido,
Nombre”.
#!/bin/bash
echo "Introduce el nombre del archivo de texto con la lista de
nombres y apellidos:"
read entrada
echo "Introduce el nombre del archivo de texto donde quieres
guardar los nombres ordenados y formateados:"
read salida
if [ -f $entrada ]; then # Comprueba que el archivo de entrada existe
y es un archivo regular
cat $entrada | sed 's/\(.*\), \(.*\)/\2, \1/' | sort > $salida # Cambia el
orden de los nombres y apellidos, los ordena alfabéticamente y los
guarda en el archivo de salida
echo "Se ha creado el archivo $salida con los nombres ordenados
y formateados"
else
echo "El archivo $entrada no existe o no es un archivo regular"
fi

EJER3:
Un script que valida si una dirección de correo electrónico tiene un formato válido usando
expresiones regulares. El script recibe la dirección de correo como argumento y muestra un
mensaje indicando si es válida o no.
#!/bin/bash
if [ $# -eq 1 ]; then # Comprueba que hay un argumento
email=$1 # Asigna el argumento a la variable email
regex="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$" # Define
la expresión regular para validar el email
if [[ $email =~ $regex ]]; then # Comprueba si el email cumple con
la expresión regular
echo "La dirección de correo $email tiene un formato válido"
else
echo "La dirección de correo $email no tiene un formato válido"
fi
else
echo "Debes introducir una dirección de correo electrónico como
argumento"
fi
EJER4:
Un script que calcula el factorial de un número usando una función recursiva. El script recibe el
número como argumento y muestra el resultado.
#!/bin/bash
factorial() { # Define la función factorial
if [ $1 -eq 0 ]; then # Caso base: si el número es 0, devuelve 1
echo 1
else # Caso recursivo: si el número es mayor que 0, devuelve el
número multiplicado por el factorial del número menos 1
echo $(( $1 * $(factorial $(( $1 - 1 ))) ))
fi
}
if [ $# -eq 1 ]; then # Comprueba que hay un argumento
numero=$1 # Asigna el argumento a la variable numero
if [ $numero -ge 0 ]; then # Comprueba que el número es mayor o
igual que 0
resultado=$(factorial $numero) # Llama a la función factorial con
el número y guarda el resultado
echo "El factorial de $numero es $resultado"
else
echo "El número debe ser mayor o igual que 0"
fi
else
echo "Debes introducir un número como argumento"
fi
EJER5:
Un script que muestra los 10 países con más casos confirmados de COVID-19 según los datos
de la Universidad Johns Hopkins. El script usa un array para guardar los datos y los muestra en
una tabla.
#!/bin/bash
datos=( # Define el array con los datos de los países, el nombre y el
número de casos separados por :
"Estados Unidos:45332134"
"India:34074032"
"Brasil:21596592"
"Reino Unido:8617369"
"Rusia:7997895"
"Francia:7009738"
"Turquía:7009738"
"Irán:5689560"
"Argentina:5257153"
"Colombia:4961286"
)
echo "Los 10 países con más casos confirmados de COVID-19
son:"
printf "%-15s %s\n" "País" "Casos" # Muestra los encabezados de
la tabla
printf "%-15s %s\n" "====" "====="
for i in ${datos[@]}; do # Recorre el array con los datos
IFS=: read pais casos <<< "$i" # Separa el nombre del país y el
número de casos por el delimitador :
printf "%-15s %s\n" $pais $casos # Muestra el país y los casos en
la tabla
done

También podría gustarte