Está en la página 1de 13

Linux

Sistema operativo que implementa las caracterisisticas del sistema operativo UNIX:

Multitarea
Multiusuario
Multiplataforma

Sistema Operativo

Es un programa que administra los recursos de un sistema de computo.

Sistema de computo

Es un sistema que se utiliza para realizar calculos númericos de manera rapida y automatizada.

Recursos de un sistema de computo:

CPU Unidad de central de proceso, procesador, dispositivo digital que realiza las operaciones. RAM Memoria
de acceso aleatorio, espacion donde se almacenan los datos y el cádigo al momento de ser utilizados.

HD Disco duro, unidad de almancenamiento permanente de los datos y el codigo, cuando no estan siendo
utilizados.

Terminal Dispositivo que consta de monitor, teclado y puerto de comunicación, conectado al servidor que
permite el acceso al usuario al sistema.

Conexión actual
Se realiza utilizando un emulador de terminal utilizando el protocolo de red tcp/ip y el protocolo de
comunicacion o servicio ssh, previamente se utilizo telnet, pero actualmente no se recomienda su uso por ser
un protocolo inseguro.

Conexión con putty

Al conectarse la primera vez, solicita la aceptación de la clave de encriptación del trafico entre el
cliente y el servidor:

Al aceptar:
Se debe proporcionar el nombre del usuario y su correspondiente contraseña.

Luego de proporcionar un usuario y claves válidos el sistema nos proporciona un shell, un shell es la interface
del usuario hacia el sistema operativo, una de las tareas del sjhell es permitirlea al usuario ejecutar
programas en el servidor:

$id
uid=1000(lcarrera) gid=1000(lcarrera) grupos=1000(lcarrera),10(wheel)
contexto=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$hostname
centos-base
$uname
Linux
$cal
  junio de 2019
do lu ma mi ju vi sá
                  1
2  3  4  5  6  7  8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
$date
sáb jun  8 15:53:11 -05 2019
$ who
root     tty1         2019-06-08 14:54
user2   pts/0        2019-06-08 15:19 (172.17.2.52)
user8   pts/1        2019-06-08 15:19 (172.17.2.61)
user1   pts/2        2019-06-08 15:20 (172.17.2.51)
user7   pts/3        2019-06-08 15:46 (172.17.2.59)
user6   pts/4        2019-06-08 15:42 (172.17.2.58)
user3   pts/5        2019-06-08 15:23 (172.17.2.53)
user5   pts/6        2019-06-08 15:33 (172.17.0.57)
user11   pts/7        2019-06-08 15:45 (172.17.2.54)
user10   pts/8        2019-06-08 15:41 (172.17.2.64)
lcarrera pts/9        2019-06-08 15:42 (172.17.2.68)
user4   pts/10       2019-06-08 15:42 (172.17.2.55)
user9   pts/11       2019-06-08 15:46 (172.17.2.66)
]$ w
15:54:13 up  1:01, 13 users, load average: 0,01, 0,02, 0,05
USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      14:54   11:57   0.47s  0.47s -bash
user2   pts/0    172.17.2.52      15:19   29.00s  0.03s  0.03s -bash
user8   pts/1    172.17.2.61      15:19    5.00s  0.04s  0.04s -bash
user1   pts/2    172.17.2.51      15:20    4:53   0.03s  0.03s -bash
user7   pts/3    172.17.2.59      15:46   37.00s  0.03s  0.03s -bash
user6   pts/4    172.17.2.58      15:42    2:37   0.03s  0.03s -bash
user3   pts/5    172.17.2.53      15:23   30:39   0.01s  0.01s -bash
user5   pts/6    172.17.0.57      15:33   21.00s  0.03s  0.03s -bash
user11   pts/7    172.17.2.54      15:45   13.00s  0.03s  0.03s -bash
user10   pts/8    172.17.2.64      15:41   37.00s  0.03s  0.03s -bash
lcarrera pts/9    172.17.2.68      15:42    5.00s  0.04s  0.00s w
user4   pts/10   172.17.2.55      15:42    5.00s  0.05s  0.05s -bash
user9   pts/11   172.17.2.66      15:46   37.00s  0.05s  0.05s -bash

Estos comandos estan diseñados para realizar un acción simple, los gtes comandos serán utilizados en el
transcurso del laboratorio:

id Proporciona los datos de identifación del usuario: uid (user id), gid (group id)
hostname Proporciona el nombre de la estación
uname Proporciona el nombre del sistema operativo
cal Proporciona el calendario del mes actual
date Proporciona la fecha y hora del sistema
w Proporciona la lista de usuarios activos en el sistema
who Proporciona la lista de usuarios activos en el sistema
cat Muestra el contenido de un archivio
head Muestra las 10 primeras lineas de un archivo
tail Muestra las 10 últimas lineas de un archivo
write Permite enviar un mensaje a otro usuario activo
talk Inicia un chat iteractivo con otro usuario del sistema
cut Extrae columnas de un archivo de texto
grep Extrae lineas de un archivo de texto, las lineas deben tener un contenido especifico.
ls (list) Lista el contenido de un directorio.

Se puede obtener información adicional sobre el proposito de un comando con el comando man:

$man cal

Distribución
Son un conjunto de programas que acompañan al sistema operativo (Linux).: redhat, centos, fedora, debian,
ubuntu, slackware, suse, archlinux......

Todas comparten el sistema operativo (kernel) Linux,

En el laboratorio utilizaremos la distribución CentOS la cual está basada en el codigo binario de RedHAT, por
lo tanto compartiran muchas caracteristicas.

Una caracteristica del sistema es que la configuración se realiza utilizando archivos de texto:

Definicion de usuarios del sistema : /etc/passwd

nombre
Nombre con el cual el usuario ingresara al sistema
usuario

Ubicación inicial de la clave del usuario , actualmente se almacena en el archivo


clave
shadow.

Código de identificación del usuario, es un numero con el cual el sitema operativo


uid
reconoce al usuario

Codigo de identificación del grupo principal del usuario, los archivos y procesos se
gid
crean identificados con este código.

comentario Comentario descriptivo del usuario, revisar formato GECOS

Directorio Ruta del directorio en el sistema de archivos en el cual el usuario tieme todos los
hogar permisos.

programa
Programa que se ejecutará cada vez que el usuario ingrese al sistema.
de inicio

Almacenamiento de claves de uisuario : /etc/shadow

Configuración de la interface de red: /etc/sysconfig/network-scripts/ifcfg-enp0s3

El Shell
EL shell es un programa que le permite al usuario interactuar con el sistema operativo, para que un programa
sea considerado como un shell, debe tener las sgtes caracteristicas:

1. Proporcionar un linea de comandos y realizar su analisis


2. Realizar la expansion de variables.
3. Realizar la substitución de nombres de archivo.
4. Implementar la redireccion del entrada y salida (E/S).
5. Proporcionar un lenguaje de programación interpretado.

Linea de comando
Es el area comprendida entre el prompt y la digitación de la tecla enter
$                   enter
Linea de comando

EL contenido del prompt depende de la variable de entorno PS1, la finalizacion de la


cadena indica el tipo de usuario:
$     usuario normal
# usuario root

El contenido de la linea de comandos es analizado por el shell en busca de caracteres especiales que
activaran una función especial del shell.

Utilizacion del shell

Ejecucion de comandos:

$comando opciones parametros

Donde:
comando
nombre del programa a ejecutar, corresponde con el nombre del archivo
binario del programa.
opciones
Caracteres precedidos de guión que modifican el comportamiento del
comando.
parametros
Objetos sobre los que actua el comando, generalmente nombres de archivos.

Secuencias de programación

EL ejecutar una secuencia de programación, aparecera el prompt secundariom para indicar que la acción se a
divido en varias lineas, el prompt secundario está definido por la variable de entorno PS2

$inicio
>do
>comandos
>creacion de variables
>estructuras de control
>..
>donde
$

Creación de variables

Una variable es una area de memoria con nombre que almacena un valor, las variables pueden ser creadas
por el sistema (Variables del sistema) o por el usuario (variables de usuario).

Los nombres de las variables del sistema se escriben en mayúsculas y las del usuario en minúsculas.

EL conjunto total de variables se conoce como el entorno.

$nombre=valor
Para ver el entorno utilizamos el comando set,

variables del sistema importantes

PATH Indica los directorios donde el shell debe buscar los ejecutables. PS1 Definicion del prompt principal
PS2 Definición del prompt secundario. HOME Ruta del directorio hogar del usuario. MAIL Ruta de la casilla de
correo del usuario. USER Nombre del usuario.

Expansion de variables
La expansion de variables es la acción realizada por el shell cuando en la linea de comandos aparece el
simbolo $ el shell reemplazara el simbolo $ y la cadena que los sigue por el contenido de la variable que
tenga el mismo nombre que la cadena.

Substitución de nombres de archivo.

Se utiliza cuando los nombres de los archivos con los cuales se va atrabajar cumple con un patron el shell
reconce el sgte conjuntos de caracteres para realizar esta acción.

Caracteres Significado

? se reemplaza un solo caracter

* Reemplaza cualquier cadena de caracteres

[abc] Reemplaza un caracter, siempre y cuando sea uno de los encerrados entre los corchetes

[a-z]
[A-Z] Reemplaza un caracter, siempre y cuando sea uno de los compredidos en el rango.
[1-9]

Reemplaza un caracter, siempre y cuando NO sea uno de los indicados entre los
[^abc]
corchetes.

ejemplos

$ ls /dev/tty*
/dev/tty   /dev/tty17 /dev/tty26 /dev/tty35 /dev/tty44 /dev/tty53
/dev/tty0   /dev/tty18 /dev/tty27 /dev/tty36 /dev/tty45 /dev/tty54
/dev/tty1   /dev/tty19 /dev/tty28 /dev/tty37 /dev/tty46 /dev/tty55
/dev/tty10 /dev/tty2   /dev/tty29 /dev/tty38 /dev/tty47 /dev/tty56
/dev/tty11 /dev/tty20 /dev/tty3   /dev/tty39 /dev/tty48 /dev/tty57
/dev/tty12 /dev/tty21 /dev/tty30 /dev/tty4   /dev/tty49 /dev/tty58
/dev/tty13 /dev/tty22 /dev/tty31 /dev/tty40 /dev/tty5   /dev/tty59
/dev/tty14 /dev/tty23 /dev/tty32 /dev/tty41 /dev/tty50 /dev/tty6
/dev/tty15 /dev/tty24 /dev/tty33 /dev/tty42 /dev/tty51 /dev/tty60
/dev/tty16 /dev/tty25 /dev/tty34 /dev/tty43 /dev/tty52 /dev/tty61
$ ls /dev/tty?
/dev/tty0 /dev/tty2 /dev/tty4 /dev/tty6 /dev/tty8
/dev/tty1 /dev/tty3 /dev/tty5 /dev/tty7 /dev/tty9
$ ls /dev/tty[246]
/dev/tty2 /dev/tty4 /dev/tty6
$ ls /dev/tty[246][15]
/dev/tty21 /dev/tty25 /dev/tty41 /dev/tty45 /dev/tty61
$ ls /dev/tty[1][1-9]
/dev/tty11 /dev/tty13 /dev/tty15 /dev/tty17 /dev/tty19
/dev/tty12 /dev/tty14 /dev/tty16 /dev/tty18
$ ls /dev/tty?[1-9]
/dev/tty11 /dev/tty19 /dev/tty28 /dev/tty37 /dev/tty46 /dev/tty55
/dev/tty12 /dev/tty21 /dev/tty29 /dev/tty38 /dev/tty47 /dev/tty56
/dev/tty13 /dev/tty22 /dev/tty31 /dev/tty39 /dev/tty48 /dev/tty57
/dev/tty14 /dev/tty23 /dev/tty32 /dev/tty41 /dev/tty49 /dev/tty58
/dev/tty15 /dev/tty24 /dev/tty33 /dev/tty42 /dev/tty51 /dev/tty59
/dev/tty16 /dev/tty25 /dev/tty34 /dev/tty43 /dev/tty52 /dev/tty61
/dev/tty17 /dev/tty26 /dev/tty35 /dev/tty44 /dev/tty53 /dev/tty62
/dev/tty18 /dev/tty27 /dev/tty36 /dev/tty45 /dev/tty54 /dev/tty63
$ ls /dev/tty[246]
/dev/tty2 /dev/tty4 /dev/tty6
$ ls /dev/tty[^246]
/dev/tty0 /dev/tty1 /dev/tty3 /dev/tty5 /dev/tty7 /dev/tty8 /dev/tty9

Redireción de entrada y salida (E/S)

Premisa de diseño fundamental

Desde el punto de vista del sistema operativo, todo es un archivo.

Archivo: Flujo bits

Cuando ejecutamos un comando y el sistema operativo le ha asignado tiempo de ejecución en el CPU y area
de memoria para el código y sus datos, se dice que hemos creado un proceso.

Cada proceso recibe tres archivos:

stdin Archivo de entrada estandar, es el archivo de donde el proceso obtendra los datos que debe manejar.
Se identifica con el descriptor de archivos 0

stdout Archivo de salida estandar, es el archivo donde el proceso almacenara los resultados. Se identifica con
el descriptor de archivo 1.

stderr Archivo de salida de error estandar, es el archivo donde se almacenaran los mensajes de error
producidos al ejecutar el proceso, se identifica por el descriptor de archivos 2.

 
Inicialmente el shell asocia estos tres descriptores a un solo archivo, el archivo que representa el terminal del
usuario.

La redirección de entrada y salida es la caracteristica del shell que le permite variar las asociaciones de
archivo iniciales del proceso.

Redirección de salida.
En este caso la salida estandar (stdout) es enviada a otro archivo, el shell realiza la redireccion cuando
encuentra los sgtes simbolos:

comando > archivo


comando >> archivo

ejemplos

$ cal > junio


$ ls -l
total 4
-rw-rw-r--. 1 lcarrera lcarrera 151 jun  8 19:10 junio
$ cat junio
  junio de 2019
do lu ma mi ju vi sá
                  1
2  3  4  5  6  7  8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
$ date >junio
$ cat junio
sáb jun  8 19:11:51 -05 2019
$ cal > junio
$ date >> junio
]$ cat junio
  junio de 2019
do lu ma mi ju vi sá
                  1
2  3  4  5  6  7  8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
sáb jun  8 19:12:16 -05 2019

En caso de necesitar redirigir la salida de error estandar se debe especificar en la linea de comandos a la
izquierda del simbolo > el descriptor de archivos 2.

Ejemplo

$ ls -l junio
-rw-rw-r--. 1 lcarrera lcarrera 181 jun  8 19:12 junio
$ ls -l junio datos
ls: no se puede acceder a datos: No existe el fichero o el directorio
-rw-rw-r--. 1 lcarrera lcarrera 181 jun  8 19:12 junio
ls -l junio datos  2> errores
-rw-rw-r--. 1 lcarrera lcarrera 181 jun  8 19:12 junio
$ ls
errores junio
$ cat errores
ls: no se puede acceder a datos: No existe el fichero o el directorio

Redirección de entrada
En este caso los datos de entrada (stdin) ya no se toman del terminal, sino, del archivo indicado a la derecha
del simbolo <

comando < archivo

El comando abrira el archivo y utilizara su contenido como si hubiese sido digitado del terminal.

Ejemplo

$ write user2 < junio

La segunda forma: (heredoc)

comando << etiqueta


contenido
de entrada
etiqueta

Utiliza el valor de "etiqueta" como delimitador del contenido, todo lo que se encuentre entre los delimitadores
se utilizara como entrada para el comando, al encontrar la útima etiqueta al final de la linea.

Ejemplo

$ write user2 << fin


> esto es un
> mensaje
> escrito en heredoc
> fin
$ for i in {1..20}
> do
> write user$i < linux
> done
write: user9 is not logged in
write: user10 is logged in more than once; writing to pts/17
write: user15 is not logged in
write: user16 is not logged in
write: user17 is not logged in
write: user18 is not logged in
write: user19 is not logged in
write: user20 is not logged in
 

Redirección entre comandos


Forma 1:

comando1 | comando2 | comando3 | ..............| comandox

La salida del comando1 es usado como entrada del comando2, la salida del comando2 es usada como
entrada para el comando3 .....

ejemplos:

$ cat /etc/passwd| cut -d: -f 7 |tail


/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
$ grep "user" /etc/passwd |wc -l
20

Forma 2:

comando2 `comando1`

La salida del comando1 es usada como parametro para el comando2.

Ejemplos

$ ls -l `which cal`
-rwxr-xr-x. 1 root root 37736 mar 14 05:37 /usr/bin/cal
$ usuarios=`grep "user" /etc/passwd |wc -l`
$ echo $usuarios
20

Ejercicios
1. Crear un archivo que contenga los nombres de los usuarios conectados al sistema.
2. Crear una variable que contenga los nombres de los usuarios conectados al sistema.
3. Crear un archivo que contenga las lineas 10 a 15 del archivo /etc/passwd.
4. Crear un archivo que contenga la lista de usuarios cuyo nomre inicia con la cadena user y su directorio
hogar.
5. Crear un archivo qye contenga la lista de usuarios conectados al sistema y su dirección ip de conexion.

tiempo: 30min

También podría gustarte