SlideShare uma empresa Scribd logo
1 de 72
Baixar para ler offline
Diplomado en Software Libre
Línea de comando
GNU/Linux
Eudris Cabrera Rodríguez
22 Junio 2014, Santiago de los Caballeros, R. D.
@eudriscabrera @eudriscabrera
Todas las marcas registradas, así como todos los logotipos, imágenes,
fotografías, audio y vídeos mostrados en esta presentación son propiedad de
sus respectivos propietarios.
Su utilización es solamente para fines ilustrativos y no pretendo dar a entender
cualquier afiliación con esas empresas.
Los conceptos y juicios de valor emitidos en esta presentación son
responsabilidad personal y no se puede entender como una posición oficial de
alguna empresa con la que he tenido relación laboral.
Asuntos Legales
Agenda
1- Línea de comandos.
❏ Terminología
❏ Shell disponibles
2- Shell scripts
3- Rutas absolutas y relativas
4- Información del sistema
5- Monitoreo del sistema.
❏ Procesos
❏ Log del sistema
Objetivos
❖ Conocer las características más importantes de la línea de comando.
❖ Descubrir el verdadero potencial de GNU / Linux utilizando la línea de
comando.
❖ Realizar tareas comunes de administración de sistemas GNU/Linux
desde la línea de comando.
Línea de comandos
Interfaz de Línea de Comandos, en inglés, Command Line Interface (CLI),
es un método que permite a las personas dar instrucciones a algún
programa informático por medio de una línea de texto simple.
Las CLI pueden emplearse interactivamente,
escribiendo instrucciones en alguna especie de
entrada de texto, o pueden utilizarse de una
forma mucho más automatizada (archivo batch),
leyendo comandos desde un archivo de scripts.
Línea de comandos
Las CLI son usadas por muchos
programadores y administradores de
sistemas como herramienta primaria
de trabajo, especialmente en
sistemas operativos basados en Unix;
en entornos científicos y de
ingeniería, y un subconjunto más
pequeño de usuarios domésticos
avanzados.
Los recién llegados al mundo de Unix /
Linux se suelen confundir, cuando se
trata de la diferencia entre un terminal,
una consola y un shell.
Desde la perspectiva del usuario,
puede haber poca o ninguna diferencia
entre ellos, pero en realidad, el usuario
utiliza una consola para conectarse a
un terminal, con el fin de mirar el shell
en ejecución en el equipo.
Terminología
Los conceptos de Consola, Terminal y
Shell no son lo mismo, aunque suelen
utilizarse como sinónimos.
Console
Terminal
Shell
En los primeros años de la computación, estos tres elementos eran hardware
separado.
La consola no era más que un monitor y un teclado, que no tenía la
capacidad de computación.
Era conectado a un terminal, a través de una interfaz en serie, siendo el más
común el conector RS-232.
Consola
Un terminal es similar a un
punto final a un mainframe.
Por lo general, tenía algunas
capacidades de computación
y puede comunicarse a través
de una red, o alguna forma de
conexión especializada, a un
mainframe.
Terminal
Un terminal también proporciona
derechos administrativos sobre
el sistema, y por eso se mantiene
generalmente en un espacio
cerrado.
Consolas y terminales finalmente
se fusionaron en un solo
dispositivo, siendo el más notorio
de los terminales VT emulados en
distribuciones de Linux.
Terminal
El término genérico shell se utiliza para denominar un programa que
sirve de interfaz entre el usuario y el núcleo (kernel ) del sistema
GNU/Linux.
El shell, como programa, es una utilidad que permite a los usuarios
interactuar con el kernel por interpretación de comandos que el
mismo usuario introduce en la línea de comandos o en los ficheros de
tipo shell script y proporciona el resultado en la pantalla.
Shell
Características
1. Es capaz de leer la entrada del usuario y proporcionar el resultado en la pantalla.
2. Puede ser textual (como el CLI) o gráfica (como GUI de Windows).
3. En informática de hoy en día, un shell es mucho más que una simple interfaz
entre el usuario y el sistema.
4. Es responsable de la gestión de procesos, ventanas, aplicaciones, comandos
y otros aspectos del sistema.
Una vez iniciado el shell interactivo, se muestra un prompt de cara al usuario,
indicándole que puede introducir una línea de comando.
Tras la introducción, el shell asume la responsabilidad de validarla y poner los
procesos necesarios en ejecución, mediante una serie de fases:
● Leer e interpretar la línea de comandos.
● Evaluar los caracteres “comodín” como $ * ? u otros.
● Gestionar las redirecciones de E/S necesarias, los pipes y los procesos en segundo
plano (background) necesarios (&).
● Manejar señales.
● Preparar la ejecución de los programas.
Shells interactivos
Shells interactivos
Normalmente, las líneas de comandos podrán ser ejecuciones de comandos del sistema, comandos
propios del shell interactivo, puesta en marcha de aplicaciones o shell scripts.
Todos los programas invocados mediante un shell poseen tres archivos predefinidos,
especificados por los correspondientes descriptores de archivos (file handles):
1) Standard Input (STDIN) (entrada estándar)
2) Standard Output (STDOUT) (salida estándar)
3) Standard Error (STDERR) (salida estándar de errores)
Además, los shells suelen proporcionar los tres mecanismos siguientes:
Redirección, Tuberías (pipes) y Concurrencia de programas de usuario
La independencia del shell respecto al kernel del operativo (el shell es sólo una
capa de interfaz), nos permite disponer de varios de ellos en el sistema.
Algunos de los más comunes son:
El shell Bash (bash).
El shell Linux por defecto.
Shells disponibles
El shell Bourne (sh).
Éste ha sido desde siempre el shell estándar UNIX, y el que todos los UNIX
poseen en alguna versión.
Normalmente, es el shell por defecto del administrador (root).
El sh fue creado por Stephen Bourne en AT&T a finales de los setenta.
El indicador (o prompt) por defecto suele ser un ’$’ (en root un ’’#’).
Shells disponibles
El shell Korn (ksh).
Es un superconjunto del Bourne (se mantiene cierta compatibilidad), escrito
en AT&T por David Korn (a mediados de los ochenta), en el cual se hizo cierta
mezcla de funcionalidades del Bourne y del C, más algún añadido.
El prompt por defecto es el $.
El shell C (csh).
Desarrollado en la Universidad de Berkeley por Bill Joy a finales de los 70's
Añade elementos interesantes al Shell Bourne , como un histórico de
comandos, alias, aritmética desde la línea de comandos, completa nombres
de ficheros y control de trabajos en segundo plano.
Shells disponibles
El shell C (csh)
● El prompt por defecto para los usuarios es ‘%’.
● Los usuarios UNIX suelen preferir este shell como interactivo, pero los
administradores UNIX prefieren utilizar el Bourne, ya que los scripts
suelen quedar más compactos, y la ejecución suele ser más rápida.
● Como su nombre indica, su sintaxis está
basada en el lenguaje C.
Shells disponibles
También existen otros
shell, como versiones
restringidas o
especializadas de los
anteriores.
La mayoría de las distribuciones de Linux, así como MacOSX, usan BASH como
shell por defecto. Solaris y OpenIndiana utiliza KornShell por defecto,
que es otra variante de BASH.
Este shell forma parte del software GNU.
Es un intento de combinar los tres shell
anteriores (Bourne, C y Korn),
manteniendo la sintaxis del
shell Bourne original.
Bash (Bourne Again Shell)
Una forma rápida de conocer
bajo qué shell nos encontramos
como usuarios es mediante la
variable $SHELL, desde una
línea de comandos con la
instrucción:
$ echo $SHELL
Algunas variables de sistema útiles que pueden consultarse
(con el comando echo), son:
HOME Directorio raíz del usuario
LOGNAME Id del usuario en el login
PATH Ruta
SHELL Shell del usuario
PS1 Prompt del shell, el usuario puede cambiarlo
MAIL Directorio del buzón de correo
TERM Tipo de terminal que el usuario utiliza
PWD Directorio actual del usuario
Las diferentes variables del entorno pueden verse con el comando env.
Variables de entorno y variables shell
Variables de entorno y variables shell
Unset y set:
El comando unset sirve para desactivar una variable y quitarla de la lista de
variables shell.
El comando set es útil para controlar muchos aspectos del modo de trabajo de
bash (o de otros shells).
Si utiliza el comando set sin ninguna opción, éste le mostrará todas las
variables shell y sus respectivos valores (si los hubiera).
Puede activar las diferentes opciones de set con un - y desactivarlas con un +.
Variables de entorno y variables shell
export
Se utiliza para transferir el valor de una variable para que pueda ser accesible
a todos los subshells (subprocesos).
Sintaxis:
$ export VARIABLE=valor
Shell scripts
Shell scripts
Son archivos de texto que contienen secuencias de comandos de sistema, más una
serie de comandos propios del shell interactivo, más las estructuras de control
necesarias para procesar el flujo del programa (tipo while, for, etc.).
En cierta manera, podemos ver el shell script como código de un lenguaje interpretado
que se ejecuta sobre el shell interactivo correspondiente.
Para ejecutarlos, se invoca el shell junto con el nombre del archivo, o bien se dan
permisos de ejecución al shell script.
Para el administrador, los shell scripts son muy importantes básicamente
por dos razones:
1) La configuración del sistema y de la mayoría de los servicios proporcionados
se hacen mediante herramientas proporcionadas en forma de shell scripts.
2) La principal forma de automatizar procesos de administración es mediante la
creación de shell scripts por parte del administrador.
Shell scripts
Todos los scripts Bash tienen que comenzar con la línea:
#!/bin/bash
Esta línea le indica al shell actual usado por el usuario, con qué shell hay que ejecutar el
script que aparece a continuación.
Ejemplo:
#!/bin/bash
# Un script simple
ls -l > listado.txt
Programación de scripts en Bash
El script puede ejecutarse de dos modos diferentes:
1) Por ejecución directa desde la línea de comandos, siempre que tenga permiso de
ejecución.
Si no se da el caso, ponemos el permiso con: chmod +x script.
2) Por ejecución mediante el shell, llamamos al shell explícitamente:
bash script.
Programación de scripts en Bash
Variables
Una variable es un nombre al cual se le puede asociar un valor, tal valor puede cambiar durante la
ejecución de un programa
#!/bin/bash
#variables
SOURCEDIR=/home/user/Documents/
DESTDIR=/media/diskid/user_backup/Documents/
cp -r $SOURCEDIR $DESTDIR
Programación de scripts en Bash
Entrada de datos
Los scripts también pueden ser interactivos, y nos pueden pedir un dato (por ejemplo, un ruta) para
luego tomar esa variable para el resto del script. Si queremos pedir un argumento haríamos lo
siguiente:
#!/bin/bash
echo $1
Y eso aplicándolo a un script sencillo podría resultar en un pequeño script que nos pregunte el
nombre:
#!/bin/bash
echo -e "Escribe tu nombre, por favor: "
read nombre
echo "Encantado de saludarte, $nombre"
Programación de scripts en Bash
Entrada de datos
En un script puede emplear ciertas variables especiales ($1, $2, ...) para referenciar los parámetros
que el usuario empleó al iniciarlo. $1 tendrá el valor del primer parámetro, $2 del segundo y así
sucesivamente.
El siguiente script ejemplifica su uso:
#!/bin/bash
echo "Creando $2.tar.gz de $1"
mkdir $2
cp -rf $1/* $2
tar cvf $2.tar
gzip $2.tar
Programación de scripts en Bash
Puedes obtener más información sobre este tipo de scripts en
Bash Guide for Beginners.
http://tldp.org/LDP/Bash-Beginners-Guide/html/
Programación de scripts en Bash
Rutas absolutas y relativas
Algunos comandos bash están incorporados, mientras otros son externos.
Los comandos externos son sólo archivos de su sistema de archivos.
En sistemas Linux y UNIX, se puede acceder a todos los archivos como parte
de un mismo árbol raíz al que se accede por medio de /.
Si usted escribe el nombre de un comando, el bash busca ese comando en su
ruta, la cual es una lista de directorios separados por punto y coma en la
variable de entorno PATH.
Rutas de los comandos del shell
Utilice el comando which o type para búsqueda de ubicaciones de comandos.
Sintaxis:
which [comando]
type [comando]
El comando whereis también es útil para estos casos.
Sintaxis:
whereis [comando]
Rutas de los comandos del shell
Si un comando no se encuentra en la especificación de ruta, usted puede
igualmente ejecutarlo especificando una ruta y un nombre del comando.
Existen dos tipos de rutas que se pueden utilizar:
Rutas Absolutas que son aquellas que comienzan con /, (como /bin/bash,
/bin/env, etc).
Rutas Relativas varían según el tipo de directorio de trabajo actual, según lo
informado por el comando pwd.
Ejecución de otros comandos
Estos comandos no comienzan con /, pero si contienen al menos una /.
Usted puede utilizar rutas absolutas sin importar cuál sea el directorio en el
cual está trabajando actualmente, pero probablemente utilizará rutas relativas
sólo si un comando se encuentra cerca de su directorio actual.
Existen dos nombres especiales que usted puede utilizar en una ruta; un sólo
punto (.) se refiere al directorio actual, y un par de puntos (..) se refiere al
directorio primario actual.
Ejecución de otros comandos
Ejemplo:
./hello.sh
../hello.sh
Usted puede usar tanto . como .. como parte de una ruta absoluta, aunque un
sólo . no es muy útil en tal caso.
Usted puede también usar una virgulilla (~) para referirse a su directorio
principal ~nombre de usuario para referirse al directorio principal del usuario
denominado nombre de usuario.
Ejecución de otros comandos
Del mismo modo en el que puede ejecutar programas desde varios directorios
de su sistema, puede también modificar el directorio que está funcionando
actualmente utilizando el comando cd.
El argumento para cd debe ser una ruta absoluta o relativa a un directorio.
En cuanto a los comandos, usted puede utilizar ., .., ~, y ~nombre de usuario
en las rutas. Si utiliza cd sin parámetros, el cambio se realizará en su directorio
principal.
Un sólo guión (-) como parámetro significa que se debe volver al directorio de
trabajo anterior.
Modificación del directorio de trabajo
Por lo general hablamos de cambiar directorio en lugar de cambiar directorio
de trabajo.
En cualquier momento quiere saber la ruta en la que está situado, el comando
pwd (print working directory), se suele utilizar para saber en que parte de la
estructura de directorios te encuentras.
Modificación del directorio de trabajo
Información de sistema
Información de sistema con uname
El comando uname imprime información sobre el sistema y su kernel
Opción Descripción
-s Imprime el nombre del kernel.
En el caso de que no se especifique ninguna opción esto sucederá por defecto.
-n Imprime el nombre del nodo o del dominio.
-r Imprime la actualización del kernel.
Esta opción por lo general se utiliza en los comandos de manipulación de módulos.
-v Imprime la versión del kernel.
-m Imprime el nombre del hardware de la máquina (CPU).
-o Imprime el nombre del sistema operativo.
-a Imprime toda la información anterior.
Historial de comandos
El shell bash puede guardar un historial de sus comandos. El historial se
encuentra activado por defecto. Usted puede desactivarlo utilizando el
comando set +o history y volver a activarlo utilizando set -o history.
Una variable de entorno denominada HISTSIZE le dice al bash cuantas líneas
del historial guardar.
Otra serie de configuraciones controla el modo de trabajo y la administración
del historial. Si desea obtener más información diríjase a las páginas del
manual del bash.
Historial de comandos
Comandos que se pueden utilizar mediante las funciones del historial son:
history
Muestra todo el historial
history N
Muestra las últimas líneas N del historial
history -d N
Elimina la línea N de su historial; usted podría hacer esto si la línea contiene una clave, por
ejemplo
!!
Muestra el comando más reciente
!N
Muestra el N comando del historial
Historial de comandos
!-N
Muestra el comando que se encuentra N comandos atrás en el historial (!-1 es equivalente a !!)
!#
Muestra el comando que usted está escribiendo actualmente
!string
Muestra el comando más reciente que inicia con string
!?string?
La principal (y tradicional) fuente de documentación la constituyen las páginas
de los manuales, a las cuales puede acceder utilizando el comando man.
Man es una herramienta de sistemas Unix que se utiliza para documentar y
aprender sobre comandos, archivos, llamadas de sistema, etc., en un sistema
operativo tal como GNU/Linux.
La mayoría de las aplicaciones aportan documentación de manual accesible
desde el mismo comando:
$ man [comando]
Página de los manuales(man)
Por ejemplo, para saber todo lo relacionado sobre la aplicación man basta con
poner en la consola:
$ man man
Y se mostrará la información necesaria sobre este.
En ocasiones el mismo programa posee diversas secciones de manual,
cuando esto ocurre suele mostrar un mensaje indicando la sección, como man
(1) y man(7), o exit(1) y exit(3). Para acceder a estas secciones basta con
indicarlo de la siguiente forma:
$ man 3 printf
Página de los manuales(man)
El manual normalmente está dividido en ocho secciones numeradas,
organizadas como sigue (en BSD, Unix y Linux)
Página de los manuales(man)
Monitoreo del sistema
Procesos
La más simple definición de un proceso podría ser que es una instancia de
un programa en ejecución (corriendo). A los procesos frecuentemente se
les refiere como tareas.
Un proceso puede, a su vez, según el sistema operativo, contener elementos
paralelos de ejecución, como pueden ser hilos (threads).
La ejecución de los procesos se puede ver con el comando ps.
ps
Lista los procesos con sus datos de usuario, tiempo, identificador de proceso y línea de comandos
usada. Una de las opciones utilizada es ps ef, pero hay muchas opciones disponibles (ver manual).
Procesos
En GNU/Linux, cada proceso puede a su vez, lanzar otros procesos hijos.
Estos dependerán del padre, de modo que cuando el proceso padre
muera, los procesos hijos recibirán la señal de que deben de finalizar su
ejecución.
La dependencia de procesos puede verse con el comando:
$ pstree
Tipos de procesos
Los procesos que se encuentren en ejecución en un determinado momento
serán, en general, de diferente naturaleza.
Procesos de sistema:
Son procesos asociados al funcionamiento local de la máquina y del kernel, o
bien procesos (denominados daemons) asociados al control de diferentes
servicios, ya sean locales, o de red, porque estamos ofreciendo el servicio
(actuamos de servidor) o estamos recibiendo el servicio (actuamos de
clientes).
Tipos de procesos
Procesos del usuario administrador:
En caso de actuar como root, nuestros procesos interactivos o aplicaciones
lanzadas también aparecerán como procesos asociados al usuario root.
Procesos de usuarios del sistema:
Asociados a la ejecución de sus aplicaciones, ya sea tareas interactivas en
modo texto o en modo gráfico.
Programas y procesos
Programas y procesos son entidades distintas. En un sistema operativo
multitarea, múltiples instancias de un programa pueden ejecutarse
simultáneamente. Cada instancia es un proceso separado.
Linux, es un sistema operativo multitarea y multiusuario. Múltiples procesos
pueden operar simultáneamente sin interferirse unos con los otros.
Cada proceso tiene la "ilusión" que es el único proceso en el sistema y
que tiene acceso exclusivo a todos los servicios del sistema operativo.
Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa al mismo
tiempo, habría cinco instancias del mismo programa, es decir, cinco procesos distintos.
Programas y procesos
Cada proceso que se inicia es referenciado con un número de
identificación único conocido como Process ID PID, que es siempre un
entero positivo.
Prácticamente todo lo que se está ejecutando en el sistema en cualquier
momento es un proceso, incluyendo el shell, el ambiente gráfico que puede
tener múltiples procesos, etc.
Programas y procesos
La excepción a lo anterior es el kernel en sí, el cual es un conjunto de
rutinas que residen en memoria y a los cuales los procesos a través de
llamadas al sistema pueden tener acceso.
Procesos y recepción de señales
Cada proceso que se ejecuta en el sistema operativo está preparado para
recibir una serie de señales y actuar en consecuencia.
El comando kill es el empleado de forma cotidiana para enviar de forma
manual estas señales.
Sintaxis del comando kill
$ kill señal id proceso
$ kill -9 12123
Esto le dice al sistema operativo que debe de eliminar forzosamente el proceso 12123.
Procesos y recepción de señales
Las señales que se pueden enviar, en resumen, son:
1 – SIGHUP Hangup. Se indica al programa que debe de salir.
Pero es reprogramable para poder usarse en otros comportamientos, como reload.
9 – SIGKILL Kill.
Le dice al sistema operativo que debe de terminar de forma forzosa con ese proceso.
15 – SIGTERM Terminación.
Es reprogramable para poder realizar tareas específicas antes de salir.
19 – SIGSTOP Stop.
Detiene el proceso, pero sin terminarlo, de modo que se pueda volver a reanudar su
ejecución.
18 – SIGCONT Continue.
Le dice a un proceso parado que continúe su ejecución.
Estados de los procesos
Un proceso puede tener estados básicos de:
S – Sleep Durmiendo. Quiere decir que está en ejecución, pero en ese momento
no se encuentra ejecutándose ningún código dentro de la CPU.
D – Sleep Es igual que el anterior, pero no es posible interrumpirlo.
T – Stopped Detenido. Quiere decir que se ha detenido su ejecución.
R – Running En ejecución. Es un proceso que se está ejecutando de forma activa
en la CPU.
Z – Zombie Es un proceso que debería de haber muerto, pero aún tiene
dependencias que no es posible terminar.
Hasta que no se eliminen sus dependencias no desaparecerá.
Estados de los procesos
Un proceso que está en ejecución en primer plano, es decir, en la consola,
puede ser detenido mediante la pulsación de ^C (Ctrl+C).
Este comando, envía al proceso activo la señal de SIGTERM.
Si se presiona la combinación de teclas ^Z (Ctrl+Z), se enviará la señal de
SIGSTOP.
Para volver a retomar el proceso ejecutar el comando fg.
Entorno de ejecución
Cuando estamos en una consola (un tty, pts o similar), tenemos a nuestra
disposición un intérprete de comandos en el que podemos lanzar procesos en
cualquier momento.
Estos procesos pueden detenerse mediante la pulsación de ^C, como habíamos
dicho antes, pero también pueden detenerse (con ^Z).
¿Qué sucede cuando se detienen?, básicamente, se genera en un entorno de
ejecución un identificador (que es informado entre corchetes, justo antes de la
palabra Stopped, en el texto que sale nada más pulsar la combinación de teclas).
Por ejemplo, si ejecutamos el vim y presionamos ^Z, volvemos a la consola con este
mensaje:
[1]+ Stopped vim
Entorno de ejecución
Comando jobs:
El comando jobs se utiliza para listar procesos que estés ejecutando en segundo
plano o en primer plano. Si la respuesta se devuelve sin información es que no hay
procesos presentes.
Sintaxis:
jobs [opciones]
Opciones:
-l Informa del identificador del grupo de proceso y la carpeta de trabajo de las operaciones.
-n Muestra sólo los trabajos que se han detenido o cerrado desde la última notificación.
-p Muestra sólo el identificador de proceso para los líderes de grupo de procesos de los
trabajos seleccionados.
Entorno de ejecución
Comando bg:
El comando bg se utiliza para mover un trabajo a segundo plano. El usuario puede
ejecutar un proceso en segundo plano añadiendo un símbolo "&" al final del
comando.
Sintaxis:
bg [opciones] [proceso]
Opciones:
-l Informa del identificador del grupo de proceso y la carpeta de trabajo de las operaciones.
-p Informa únicamente del identificador del grupo de proceso de las operaciones.
-x Sustituye cualquier job_id encontrado en el comando o argumentos con el identificador de
grupo de proceso correspondiente, después ejecuta el comando dándole argumentos.
job Especifica el proceso que quiere ejecutarse en segundo plano.
Entorno de ejecución
Comando fg:
El comando fg se utiliza para situar un proceso en primer plano.
Sintaxis:
fg [proceso]
Opciones:
No hay opciones para el comando fg.
Herramientas para administrar procesos
top
Una versión que nos da una lista actualizada a intervalos.
htop
Versión mejorada de top
Logs del sistema
La mayor parte de los logs se generan en el directorio /var/log, aunque
algunas aplicaciones pueden modificar este comportamiento;
la mayoría de logs del propio sistema sí
que se encuentran en este directorio.
Una modificación simple de este método
podría ser introducir, desde un terminal,
la instrucción siguiente:
$ tail -f /var/log/messages
El daemon Syslogd es el
servicio más importante de
obtención de información
dinámica de la máquina.
El proceso de análisis de los
logs nos ayuda a entender el
funcionamiento, los posibles
errores y el rendimiento del
sistema.
Comandos relacionados
uptime
Tiempo que hace que el sistema está activo.
last
Analiza log de entradas/salidas del sistema (/var/log/wtmp).
free
Informa sobre el estado global de la memoria. Da también el tamaño de la memoria virtual.
vmstat
Informa sobre el estado de la memoria virtual, y el uso que se le da.
Apagar / Reiniciar un sistema GNU/Linux
Para apagar el sistema tenemos tres comandos distintos (halt, poweroff
y shutdown).
El comando halt detiene el sistema.
$ sudo halt
El comando poweroff es un enlace simbólico al comando halt, lo que
detiene el sistema y luego intenta apagarlo.
$ sudo poweroff
Apagar / Reiniciar un sistema GNU/Linux
El comando shutdown apaga el sistema de una manera segura. Este
comando tiene distintas opciones, por ejemplo podemos decirle que lo
apague ahora mismo:
$ sudo shutdown -h now
o en x tiempo, siendo x el número de minutos que tiene que esperar para
apagarlo, por ejemplo en 5 minutos:
$ sudo shutdown -h +5
Apagar / Reiniciar un sistema GNU/Linux
También podemos decirle que se apague a una hora determinada (reloj
en sistema de 24 horas, es decir, de 0 a 23), por ejemplo a las 22:30:
$ sudo shutdown -h 22:30
Para reiniciar el sistema tenemos dos: reboot y shutdown, con todas las
opciones mencionadas antes sólo que en lugar de usar el argumento -h
(de halt), usaremos el -r (de reboot).
Apagar / Reiniciar un sistema GNU/Linux
El comando reboot es otro enlace simbólico al comando halt, primero
detiene el sistema y luego reinicia.
$ sudo reboot
Usando el comando shutdown:
$ sudo shutdown -r now
$ sudo shutdown -r +5
$ sudo shutdown -r 22:30
Referencias
Libros:
GNU/Básico : Antonio Perpiñan http://codigolibre.org/
After the software wars : Keith Curtis http://keithcu.com
Administración Avanzada de GNU/Linux
http://www.uoc.edu/masters/oficiales/img/871.pdf
Enlaces
http://www.ibm.com/developerworks/ssa/linux/library/l-lpic1-v3-103-1/
http://altenwald.org/2010/11/27/procesos-en-gnulinux/
http://blog.desdelinux.net/permisos-basicos-en-gnulinux-con-chmod/
¿Preguntas?
@eudriscabrera
@eudris
@ecabrerar
@eudriscabrera
Eudris Cabrera Rodríguez
Ingeniero Telemático
Desarrollador de Software / Consultor Informático
eudris@gmail.com

Mais conteúdo relacionado

Mais procurados

Mais procurados (19)

2 filesystem basics
2 filesystem basics2 filesystem basics
2 filesystem basics
 
Linux comandos 1
Linux comandos 1Linux comandos 1
Linux comandos 1
 
Los scripts de linux
Los scripts de linuxLos scripts de linux
Los scripts de linux
 
Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.Comandos GNU/Linux-Unix y programación shell.
Comandos GNU/Linux-Unix y programación shell.
 
Tutorial shell scripts
Tutorial shell scriptsTutorial shell scripts
Tutorial shell scripts
 
Unix 1314 test
Unix 1314 testUnix 1314 test
Unix 1314 test
 
Intro comandos unix
Intro comandos   unixIntro comandos   unix
Intro comandos unix
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUX
 
Maria jose hernandez c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
Maria jose hernandez   c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...Maria jose hernandez   c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
Maria jose hernandez c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
 
Shell script en linux
Shell script en linuxShell script en linux
Shell script en linux
 
Unix 3.1
Unix 3.1Unix 3.1
Unix 3.1
 
Taller
TallerTaller
Taller
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Posix
PosixPosix
Posix
 
Cuadros De Posix Y Win 32
Cuadros De Posix Y Win 32Cuadros De Posix Y Win 32
Cuadros De Posix Y Win 32
 
Practica 1 unidad 4
Practica 1 unidad 4Practica 1 unidad 4
Practica 1 unidad 4
 
Comandos linux y windows
Comandos linux y windowsComandos linux y windows
Comandos linux y windows
 
Practica 2 simbolo del sistema
Practica 2 simbolo del sistemaPractica 2 simbolo del sistema
Practica 2 simbolo del sistema
 
2.3 lineadecomandosshell
2.3 lineadecomandosshell2.3 lineadecomandosshell
2.3 lineadecomandosshell
 

Semelhante a [ES] Línea de Comandos GNU/Linux

Semelhante a [ES] Línea de Comandos GNU/Linux (20)

Linux Programacion en Shell
Linux Programacion en ShellLinux Programacion en Shell
Linux Programacion en Shell
 
17 comandos basicoslinuxasoitsonp
17 comandos basicoslinuxasoitsonp17 comandos basicoslinuxasoitsonp
17 comandos basicoslinuxasoitsonp
 
Manejo de sistemas operativos
Manejo de sistemas operativosManejo de sistemas operativos
Manejo de sistemas operativos
 
Conceptos básicos del shell
Conceptos básicos del shellConceptos básicos del shell
Conceptos básicos del shell
 
arquitectura-de-linux
arquitectura-de-linuxarquitectura-de-linux
arquitectura-de-linux
 
Control1 victoria diaz
Control1   victoria diazControl1   victoria diaz
Control1 victoria diaz
 
Agilidad en shell de linux
Agilidad en shell de linuxAgilidad en shell de linux
Agilidad en shell de linux
 
Charla kde españa
Charla kde españaCharla kde españa
Charla kde españa
 
Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linux
 
Shellt
ShelltShellt
Shellt
 
Unix solaris chrome os
Unix solaris chrome osUnix solaris chrome os
Unix solaris chrome os
 
Comandos Linux 1.ppt
Comandos Linux 1.pptComandos Linux 1.ppt
Comandos Linux 1.ppt
 
Introduccion a linux_archivos_y_directorios (1)
Introduccion a linux_archivos_y_directorios (1)Introduccion a linux_archivos_y_directorios (1)
Introduccion a linux_archivos_y_directorios (1)
 
Laboratorio n3 sistemas_operativos_gilberto_ramos_9-748-1883
Laboratorio n3 sistemas_operativos_gilberto_ramos_9-748-1883Laboratorio n3 sistemas_operativos_gilberto_ramos_9-748-1883
Laboratorio n3 sistemas_operativos_gilberto_ramos_9-748-1883
 
Introducción a linux
Introducción a linuxIntroducción a linux
Introducción a linux
 
Programacion en shell
Programacion en shellProgramacion en shell
Programacion en shell
 
Curso básico linux
Curso básico linuxCurso básico linux
Curso básico linux
 
Unix[1]
Unix[1]Unix[1]
Unix[1]
 
Unix
UnixUnix
Unix
 
Unix[1]
Unix[1]Unix[1]
Unix[1]
 

Último

Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 

Último (20)

Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 

[ES] Línea de Comandos GNU/Linux

  • 1. Diplomado en Software Libre Línea de comando GNU/Linux Eudris Cabrera Rodríguez 22 Junio 2014, Santiago de los Caballeros, R. D. @eudriscabrera @eudriscabrera
  • 2. Todas las marcas registradas, así como todos los logotipos, imágenes, fotografías, audio y vídeos mostrados en esta presentación son propiedad de sus respectivos propietarios. Su utilización es solamente para fines ilustrativos y no pretendo dar a entender cualquier afiliación con esas empresas. Los conceptos y juicios de valor emitidos en esta presentación son responsabilidad personal y no se puede entender como una posición oficial de alguna empresa con la que he tenido relación laboral. Asuntos Legales
  • 3. Agenda 1- Línea de comandos. ❏ Terminología ❏ Shell disponibles 2- Shell scripts 3- Rutas absolutas y relativas 4- Información del sistema 5- Monitoreo del sistema. ❏ Procesos ❏ Log del sistema
  • 4. Objetivos ❖ Conocer las características más importantes de la línea de comando. ❖ Descubrir el verdadero potencial de GNU / Linux utilizando la línea de comando. ❖ Realizar tareas comunes de administración de sistemas GNU/Linux desde la línea de comando.
  • 6. Interfaz de Línea de Comandos, en inglés, Command Line Interface (CLI), es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea de texto simple. Las CLI pueden emplearse interactivamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho más automatizada (archivo batch), leyendo comandos desde un archivo de scripts. Línea de comandos Las CLI son usadas por muchos programadores y administradores de sistemas como herramienta primaria de trabajo, especialmente en sistemas operativos basados en Unix; en entornos científicos y de ingeniería, y un subconjunto más pequeño de usuarios domésticos avanzados.
  • 7. Los recién llegados al mundo de Unix / Linux se suelen confundir, cuando se trata de la diferencia entre un terminal, una consola y un shell. Desde la perspectiva del usuario, puede haber poca o ninguna diferencia entre ellos, pero en realidad, el usuario utiliza una consola para conectarse a un terminal, con el fin de mirar el shell en ejecución en el equipo. Terminología Los conceptos de Consola, Terminal y Shell no son lo mismo, aunque suelen utilizarse como sinónimos. Console Terminal Shell
  • 8. En los primeros años de la computación, estos tres elementos eran hardware separado. La consola no era más que un monitor y un teclado, que no tenía la capacidad de computación. Era conectado a un terminal, a través de una interfaz en serie, siendo el más común el conector RS-232. Consola
  • 9. Un terminal es similar a un punto final a un mainframe. Por lo general, tenía algunas capacidades de computación y puede comunicarse a través de una red, o alguna forma de conexión especializada, a un mainframe. Terminal
  • 10. Un terminal también proporciona derechos administrativos sobre el sistema, y por eso se mantiene generalmente en un espacio cerrado. Consolas y terminales finalmente se fusionaron en un solo dispositivo, siendo el más notorio de los terminales VT emulados en distribuciones de Linux. Terminal
  • 11. El término genérico shell se utiliza para denominar un programa que sirve de interfaz entre el usuario y el núcleo (kernel ) del sistema GNU/Linux. El shell, como programa, es una utilidad que permite a los usuarios interactuar con el kernel por interpretación de comandos que el mismo usuario introduce en la línea de comandos o en los ficheros de tipo shell script y proporciona el resultado en la pantalla. Shell
  • 12. Características 1. Es capaz de leer la entrada del usuario y proporcionar el resultado en la pantalla. 2. Puede ser textual (como el CLI) o gráfica (como GUI de Windows). 3. En informática de hoy en día, un shell es mucho más que una simple interfaz entre el usuario y el sistema. 4. Es responsable de la gestión de procesos, ventanas, aplicaciones, comandos y otros aspectos del sistema.
  • 13. Una vez iniciado el shell interactivo, se muestra un prompt de cara al usuario, indicándole que puede introducir una línea de comando. Tras la introducción, el shell asume la responsabilidad de validarla y poner los procesos necesarios en ejecución, mediante una serie de fases: ● Leer e interpretar la línea de comandos. ● Evaluar los caracteres “comodín” como $ * ? u otros. ● Gestionar las redirecciones de E/S necesarias, los pipes y los procesos en segundo plano (background) necesarios (&). ● Manejar señales. ● Preparar la ejecución de los programas. Shells interactivos
  • 14. Shells interactivos Normalmente, las líneas de comandos podrán ser ejecuciones de comandos del sistema, comandos propios del shell interactivo, puesta en marcha de aplicaciones o shell scripts. Todos los programas invocados mediante un shell poseen tres archivos predefinidos, especificados por los correspondientes descriptores de archivos (file handles): 1) Standard Input (STDIN) (entrada estándar) 2) Standard Output (STDOUT) (salida estándar) 3) Standard Error (STDERR) (salida estándar de errores) Además, los shells suelen proporcionar los tres mecanismos siguientes: Redirección, Tuberías (pipes) y Concurrencia de programas de usuario
  • 15. La independencia del shell respecto al kernel del operativo (el shell es sólo una capa de interfaz), nos permite disponer de varios de ellos en el sistema. Algunos de los más comunes son: El shell Bash (bash). El shell Linux por defecto. Shells disponibles
  • 16. El shell Bourne (sh). Éste ha sido desde siempre el shell estándar UNIX, y el que todos los UNIX poseen en alguna versión. Normalmente, es el shell por defecto del administrador (root). El sh fue creado por Stephen Bourne en AT&T a finales de los setenta. El indicador (o prompt) por defecto suele ser un ’$’ (en root un ’’#’). Shells disponibles
  • 17. El shell Korn (ksh). Es un superconjunto del Bourne (se mantiene cierta compatibilidad), escrito en AT&T por David Korn (a mediados de los ochenta), en el cual se hizo cierta mezcla de funcionalidades del Bourne y del C, más algún añadido. El prompt por defecto es el $. El shell C (csh). Desarrollado en la Universidad de Berkeley por Bill Joy a finales de los 70's Añade elementos interesantes al Shell Bourne , como un histórico de comandos, alias, aritmética desde la línea de comandos, completa nombres de ficheros y control de trabajos en segundo plano. Shells disponibles
  • 18. El shell C (csh) ● El prompt por defecto para los usuarios es ‘%’. ● Los usuarios UNIX suelen preferir este shell como interactivo, pero los administradores UNIX prefieren utilizar el Bourne, ya que los scripts suelen quedar más compactos, y la ejecución suele ser más rápida. ● Como su nombre indica, su sintaxis está basada en el lenguaje C. Shells disponibles También existen otros shell, como versiones restringidas o especializadas de los anteriores.
  • 19. La mayoría de las distribuciones de Linux, así como MacOSX, usan BASH como shell por defecto. Solaris y OpenIndiana utiliza KornShell por defecto, que es otra variante de BASH. Este shell forma parte del software GNU. Es un intento de combinar los tres shell anteriores (Bourne, C y Korn), manteniendo la sintaxis del shell Bourne original. Bash (Bourne Again Shell) Una forma rápida de conocer bajo qué shell nos encontramos como usuarios es mediante la variable $SHELL, desde una línea de comandos con la instrucción: $ echo $SHELL
  • 20. Algunas variables de sistema útiles que pueden consultarse (con el comando echo), son: HOME Directorio raíz del usuario LOGNAME Id del usuario en el login PATH Ruta SHELL Shell del usuario PS1 Prompt del shell, el usuario puede cambiarlo MAIL Directorio del buzón de correo TERM Tipo de terminal que el usuario utiliza PWD Directorio actual del usuario Las diferentes variables del entorno pueden verse con el comando env. Variables de entorno y variables shell
  • 21. Variables de entorno y variables shell Unset y set: El comando unset sirve para desactivar una variable y quitarla de la lista de variables shell. El comando set es útil para controlar muchos aspectos del modo de trabajo de bash (o de otros shells). Si utiliza el comando set sin ninguna opción, éste le mostrará todas las variables shell y sus respectivos valores (si los hubiera). Puede activar las diferentes opciones de set con un - y desactivarlas con un +.
  • 22. Variables de entorno y variables shell export Se utiliza para transferir el valor de una variable para que pueda ser accesible a todos los subshells (subprocesos). Sintaxis: $ export VARIABLE=valor
  • 24. Shell scripts Son archivos de texto que contienen secuencias de comandos de sistema, más una serie de comandos propios del shell interactivo, más las estructuras de control necesarias para procesar el flujo del programa (tipo while, for, etc.). En cierta manera, podemos ver el shell script como código de un lenguaje interpretado que se ejecuta sobre el shell interactivo correspondiente. Para ejecutarlos, se invoca el shell junto con el nombre del archivo, o bien se dan permisos de ejecución al shell script.
  • 25. Para el administrador, los shell scripts son muy importantes básicamente por dos razones: 1) La configuración del sistema y de la mayoría de los servicios proporcionados se hacen mediante herramientas proporcionadas en forma de shell scripts. 2) La principal forma de automatizar procesos de administración es mediante la creación de shell scripts por parte del administrador. Shell scripts
  • 26. Todos los scripts Bash tienen que comenzar con la línea: #!/bin/bash Esta línea le indica al shell actual usado por el usuario, con qué shell hay que ejecutar el script que aparece a continuación. Ejemplo: #!/bin/bash # Un script simple ls -l > listado.txt Programación de scripts en Bash
  • 27. El script puede ejecutarse de dos modos diferentes: 1) Por ejecución directa desde la línea de comandos, siempre que tenga permiso de ejecución. Si no se da el caso, ponemos el permiso con: chmod +x script. 2) Por ejecución mediante el shell, llamamos al shell explícitamente: bash script. Programación de scripts en Bash
  • 28. Variables Una variable es un nombre al cual se le puede asociar un valor, tal valor puede cambiar durante la ejecución de un programa #!/bin/bash #variables SOURCEDIR=/home/user/Documents/ DESTDIR=/media/diskid/user_backup/Documents/ cp -r $SOURCEDIR $DESTDIR Programación de scripts en Bash
  • 29. Entrada de datos Los scripts también pueden ser interactivos, y nos pueden pedir un dato (por ejemplo, un ruta) para luego tomar esa variable para el resto del script. Si queremos pedir un argumento haríamos lo siguiente: #!/bin/bash echo $1 Y eso aplicándolo a un script sencillo podría resultar en un pequeño script que nos pregunte el nombre: #!/bin/bash echo -e "Escribe tu nombre, por favor: " read nombre echo "Encantado de saludarte, $nombre" Programación de scripts en Bash
  • 30. Entrada de datos En un script puede emplear ciertas variables especiales ($1, $2, ...) para referenciar los parámetros que el usuario empleó al iniciarlo. $1 tendrá el valor del primer parámetro, $2 del segundo y así sucesivamente. El siguiente script ejemplifica su uso: #!/bin/bash echo "Creando $2.tar.gz de $1" mkdir $2 cp -rf $1/* $2 tar cvf $2.tar gzip $2.tar Programación de scripts en Bash
  • 31. Puedes obtener más información sobre este tipo de scripts en Bash Guide for Beginners. http://tldp.org/LDP/Bash-Beginners-Guide/html/ Programación de scripts en Bash
  • 32. Rutas absolutas y relativas
  • 33. Algunos comandos bash están incorporados, mientras otros son externos. Los comandos externos son sólo archivos de su sistema de archivos. En sistemas Linux y UNIX, se puede acceder a todos los archivos como parte de un mismo árbol raíz al que se accede por medio de /. Si usted escribe el nombre de un comando, el bash busca ese comando en su ruta, la cual es una lista de directorios separados por punto y coma en la variable de entorno PATH. Rutas de los comandos del shell
  • 34. Utilice el comando which o type para búsqueda de ubicaciones de comandos. Sintaxis: which [comando] type [comando] El comando whereis también es útil para estos casos. Sintaxis: whereis [comando] Rutas de los comandos del shell
  • 35. Si un comando no se encuentra en la especificación de ruta, usted puede igualmente ejecutarlo especificando una ruta y un nombre del comando. Existen dos tipos de rutas que se pueden utilizar: Rutas Absolutas que son aquellas que comienzan con /, (como /bin/bash, /bin/env, etc). Rutas Relativas varían según el tipo de directorio de trabajo actual, según lo informado por el comando pwd. Ejecución de otros comandos
  • 36. Estos comandos no comienzan con /, pero si contienen al menos una /. Usted puede utilizar rutas absolutas sin importar cuál sea el directorio en el cual está trabajando actualmente, pero probablemente utilizará rutas relativas sólo si un comando se encuentra cerca de su directorio actual. Existen dos nombres especiales que usted puede utilizar en una ruta; un sólo punto (.) se refiere al directorio actual, y un par de puntos (..) se refiere al directorio primario actual. Ejecución de otros comandos
  • 37. Ejemplo: ./hello.sh ../hello.sh Usted puede usar tanto . como .. como parte de una ruta absoluta, aunque un sólo . no es muy útil en tal caso. Usted puede también usar una virgulilla (~) para referirse a su directorio principal ~nombre de usuario para referirse al directorio principal del usuario denominado nombre de usuario. Ejecución de otros comandos
  • 38. Del mismo modo en el que puede ejecutar programas desde varios directorios de su sistema, puede también modificar el directorio que está funcionando actualmente utilizando el comando cd. El argumento para cd debe ser una ruta absoluta o relativa a un directorio. En cuanto a los comandos, usted puede utilizar ., .., ~, y ~nombre de usuario en las rutas. Si utiliza cd sin parámetros, el cambio se realizará en su directorio principal. Un sólo guión (-) como parámetro significa que se debe volver al directorio de trabajo anterior. Modificación del directorio de trabajo
  • 39. Por lo general hablamos de cambiar directorio en lugar de cambiar directorio de trabajo. En cualquier momento quiere saber la ruta en la que está situado, el comando pwd (print working directory), se suele utilizar para saber en que parte de la estructura de directorios te encuentras. Modificación del directorio de trabajo
  • 41. Información de sistema con uname El comando uname imprime información sobre el sistema y su kernel Opción Descripción -s Imprime el nombre del kernel. En el caso de que no se especifique ninguna opción esto sucederá por defecto. -n Imprime el nombre del nodo o del dominio. -r Imprime la actualización del kernel. Esta opción por lo general se utiliza en los comandos de manipulación de módulos. -v Imprime la versión del kernel. -m Imprime el nombre del hardware de la máquina (CPU). -o Imprime el nombre del sistema operativo. -a Imprime toda la información anterior.
  • 42. Historial de comandos El shell bash puede guardar un historial de sus comandos. El historial se encuentra activado por defecto. Usted puede desactivarlo utilizando el comando set +o history y volver a activarlo utilizando set -o history. Una variable de entorno denominada HISTSIZE le dice al bash cuantas líneas del historial guardar. Otra serie de configuraciones controla el modo de trabajo y la administración del historial. Si desea obtener más información diríjase a las páginas del manual del bash.
  • 43. Historial de comandos Comandos que se pueden utilizar mediante las funciones del historial son: history Muestra todo el historial history N Muestra las últimas líneas N del historial history -d N Elimina la línea N de su historial; usted podría hacer esto si la línea contiene una clave, por ejemplo !! Muestra el comando más reciente !N Muestra el N comando del historial
  • 44. Historial de comandos !-N Muestra el comando que se encuentra N comandos atrás en el historial (!-1 es equivalente a !!) !# Muestra el comando que usted está escribiendo actualmente !string Muestra el comando más reciente que inicia con string !?string?
  • 45. La principal (y tradicional) fuente de documentación la constituyen las páginas de los manuales, a las cuales puede acceder utilizando el comando man. Man es una herramienta de sistemas Unix que se utiliza para documentar y aprender sobre comandos, archivos, llamadas de sistema, etc., en un sistema operativo tal como GNU/Linux. La mayoría de las aplicaciones aportan documentación de manual accesible desde el mismo comando: $ man [comando] Página de los manuales(man)
  • 46. Por ejemplo, para saber todo lo relacionado sobre la aplicación man basta con poner en la consola: $ man man Y se mostrará la información necesaria sobre este. En ocasiones el mismo programa posee diversas secciones de manual, cuando esto ocurre suele mostrar un mensaje indicando la sección, como man (1) y man(7), o exit(1) y exit(3). Para acceder a estas secciones basta con indicarlo de la siguiente forma: $ man 3 printf Página de los manuales(man)
  • 47. El manual normalmente está dividido en ocho secciones numeradas, organizadas como sigue (en BSD, Unix y Linux) Página de los manuales(man)
  • 49. Procesos La más simple definición de un proceso podría ser que es una instancia de un programa en ejecución (corriendo). A los procesos frecuentemente se les refiere como tareas. Un proceso puede, a su vez, según el sistema operativo, contener elementos paralelos de ejecución, como pueden ser hilos (threads). La ejecución de los procesos se puede ver con el comando ps. ps Lista los procesos con sus datos de usuario, tiempo, identificador de proceso y línea de comandos usada. Una de las opciones utilizada es ps ef, pero hay muchas opciones disponibles (ver manual).
  • 50. Procesos En GNU/Linux, cada proceso puede a su vez, lanzar otros procesos hijos. Estos dependerán del padre, de modo que cuando el proceso padre muera, los procesos hijos recibirán la señal de que deben de finalizar su ejecución. La dependencia de procesos puede verse con el comando: $ pstree
  • 51. Tipos de procesos Los procesos que se encuentren en ejecución en un determinado momento serán, en general, de diferente naturaleza. Procesos de sistema: Son procesos asociados al funcionamiento local de la máquina y del kernel, o bien procesos (denominados daemons) asociados al control de diferentes servicios, ya sean locales, o de red, porque estamos ofreciendo el servicio (actuamos de servidor) o estamos recibiendo el servicio (actuamos de clientes).
  • 52. Tipos de procesos Procesos del usuario administrador: En caso de actuar como root, nuestros procesos interactivos o aplicaciones lanzadas también aparecerán como procesos asociados al usuario root. Procesos de usuarios del sistema: Asociados a la ejecución de sus aplicaciones, ya sea tareas interactivas en modo texto o en modo gráfico.
  • 53. Programas y procesos Programas y procesos son entidades distintas. En un sistema operativo multitarea, múltiples instancias de un programa pueden ejecutarse simultáneamente. Cada instancia es un proceso separado. Linux, es un sistema operativo multitarea y multiusuario. Múltiples procesos pueden operar simultáneamente sin interferirse unos con los otros. Cada proceso tiene la "ilusión" que es el único proceso en el sistema y que tiene acceso exclusivo a todos los servicios del sistema operativo. Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa al mismo tiempo, habría cinco instancias del mismo programa, es decir, cinco procesos distintos.
  • 54. Programas y procesos Cada proceso que se inicia es referenciado con un número de identificación único conocido como Process ID PID, que es siempre un entero positivo. Prácticamente todo lo que se está ejecutando en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente gráfico que puede tener múltiples procesos, etc. Programas y procesos La excepción a lo anterior es el kernel en sí, el cual es un conjunto de rutinas que residen en memoria y a los cuales los procesos a través de llamadas al sistema pueden tener acceso.
  • 55. Procesos y recepción de señales Cada proceso que se ejecuta en el sistema operativo está preparado para recibir una serie de señales y actuar en consecuencia. El comando kill es el empleado de forma cotidiana para enviar de forma manual estas señales. Sintaxis del comando kill $ kill señal id proceso $ kill -9 12123 Esto le dice al sistema operativo que debe de eliminar forzosamente el proceso 12123.
  • 56. Procesos y recepción de señales Las señales que se pueden enviar, en resumen, son: 1 – SIGHUP Hangup. Se indica al programa que debe de salir. Pero es reprogramable para poder usarse en otros comportamientos, como reload. 9 – SIGKILL Kill. Le dice al sistema operativo que debe de terminar de forma forzosa con ese proceso. 15 – SIGTERM Terminación. Es reprogramable para poder realizar tareas específicas antes de salir. 19 – SIGSTOP Stop. Detiene el proceso, pero sin terminarlo, de modo que se pueda volver a reanudar su ejecución. 18 – SIGCONT Continue. Le dice a un proceso parado que continúe su ejecución.
  • 57. Estados de los procesos Un proceso puede tener estados básicos de: S – Sleep Durmiendo. Quiere decir que está en ejecución, pero en ese momento no se encuentra ejecutándose ningún código dentro de la CPU. D – Sleep Es igual que el anterior, pero no es posible interrumpirlo. T – Stopped Detenido. Quiere decir que se ha detenido su ejecución. R – Running En ejecución. Es un proceso que se está ejecutando de forma activa en la CPU. Z – Zombie Es un proceso que debería de haber muerto, pero aún tiene dependencias que no es posible terminar. Hasta que no se eliminen sus dependencias no desaparecerá.
  • 58. Estados de los procesos Un proceso que está en ejecución en primer plano, es decir, en la consola, puede ser detenido mediante la pulsación de ^C (Ctrl+C). Este comando, envía al proceso activo la señal de SIGTERM. Si se presiona la combinación de teclas ^Z (Ctrl+Z), se enviará la señal de SIGSTOP. Para volver a retomar el proceso ejecutar el comando fg.
  • 59. Entorno de ejecución Cuando estamos en una consola (un tty, pts o similar), tenemos a nuestra disposición un intérprete de comandos en el que podemos lanzar procesos en cualquier momento. Estos procesos pueden detenerse mediante la pulsación de ^C, como habíamos dicho antes, pero también pueden detenerse (con ^Z). ¿Qué sucede cuando se detienen?, básicamente, se genera en un entorno de ejecución un identificador (que es informado entre corchetes, justo antes de la palabra Stopped, en el texto que sale nada más pulsar la combinación de teclas). Por ejemplo, si ejecutamos el vim y presionamos ^Z, volvemos a la consola con este mensaje: [1]+ Stopped vim
  • 60. Entorno de ejecución Comando jobs: El comando jobs se utiliza para listar procesos que estés ejecutando en segundo plano o en primer plano. Si la respuesta se devuelve sin información es que no hay procesos presentes. Sintaxis: jobs [opciones] Opciones: -l Informa del identificador del grupo de proceso y la carpeta de trabajo de las operaciones. -n Muestra sólo los trabajos que se han detenido o cerrado desde la última notificación. -p Muestra sólo el identificador de proceso para los líderes de grupo de procesos de los trabajos seleccionados.
  • 61. Entorno de ejecución Comando bg: El comando bg se utiliza para mover un trabajo a segundo plano. El usuario puede ejecutar un proceso en segundo plano añadiendo un símbolo "&" al final del comando. Sintaxis: bg [opciones] [proceso] Opciones: -l Informa del identificador del grupo de proceso y la carpeta de trabajo de las operaciones. -p Informa únicamente del identificador del grupo de proceso de las operaciones. -x Sustituye cualquier job_id encontrado en el comando o argumentos con el identificador de grupo de proceso correspondiente, después ejecuta el comando dándole argumentos. job Especifica el proceso que quiere ejecutarse en segundo plano.
  • 62. Entorno de ejecución Comando fg: El comando fg se utiliza para situar un proceso en primer plano. Sintaxis: fg [proceso] Opciones: No hay opciones para el comando fg.
  • 63. Herramientas para administrar procesos top Una versión que nos da una lista actualizada a intervalos. htop Versión mejorada de top
  • 64. Logs del sistema La mayor parte de los logs se generan en el directorio /var/log, aunque algunas aplicaciones pueden modificar este comportamiento; la mayoría de logs del propio sistema sí que se encuentran en este directorio. Una modificación simple de este método podría ser introducir, desde un terminal, la instrucción siguiente: $ tail -f /var/log/messages El daemon Syslogd es el servicio más importante de obtención de información dinámica de la máquina. El proceso de análisis de los logs nos ayuda a entender el funcionamiento, los posibles errores y el rendimiento del sistema.
  • 65. Comandos relacionados uptime Tiempo que hace que el sistema está activo. last Analiza log de entradas/salidas del sistema (/var/log/wtmp). free Informa sobre el estado global de la memoria. Da también el tamaño de la memoria virtual. vmstat Informa sobre el estado de la memoria virtual, y el uso que se le da.
  • 66. Apagar / Reiniciar un sistema GNU/Linux Para apagar el sistema tenemos tres comandos distintos (halt, poweroff y shutdown). El comando halt detiene el sistema. $ sudo halt El comando poweroff es un enlace simbólico al comando halt, lo que detiene el sistema y luego intenta apagarlo. $ sudo poweroff
  • 67. Apagar / Reiniciar un sistema GNU/Linux El comando shutdown apaga el sistema de una manera segura. Este comando tiene distintas opciones, por ejemplo podemos decirle que lo apague ahora mismo: $ sudo shutdown -h now o en x tiempo, siendo x el número de minutos que tiene que esperar para apagarlo, por ejemplo en 5 minutos: $ sudo shutdown -h +5
  • 68. Apagar / Reiniciar un sistema GNU/Linux También podemos decirle que se apague a una hora determinada (reloj en sistema de 24 horas, es decir, de 0 a 23), por ejemplo a las 22:30: $ sudo shutdown -h 22:30 Para reiniciar el sistema tenemos dos: reboot y shutdown, con todas las opciones mencionadas antes sólo que en lugar de usar el argumento -h (de halt), usaremos el -r (de reboot).
  • 69. Apagar / Reiniciar un sistema GNU/Linux El comando reboot es otro enlace simbólico al comando halt, primero detiene el sistema y luego reinicia. $ sudo reboot Usando el comando shutdown: $ sudo shutdown -r now $ sudo shutdown -r +5 $ sudo shutdown -r 22:30
  • 70. Referencias Libros: GNU/Básico : Antonio Perpiñan http://codigolibre.org/ After the software wars : Keith Curtis http://keithcu.com Administración Avanzada de GNU/Linux http://www.uoc.edu/masters/oficiales/img/871.pdf Enlaces http://www.ibm.com/developerworks/ssa/linux/library/l-lpic1-v3-103-1/ http://altenwald.org/2010/11/27/procesos-en-gnulinux/ http://blog.desdelinux.net/permisos-basicos-en-gnulinux-con-chmod/
  • 72. @eudriscabrera @eudris @ecabrerar @eudriscabrera Eudris Cabrera Rodríguez Ingeniero Telemático Desarrollador de Software / Consultor Informático eudris@gmail.com