[es] línea de comandos gnu/linux

72
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

Upload: eudris-cabrera

Post on 20-Jun-2015

467 views

Category:

Technology


0 download

DESCRIPTION

Presentación sobre la línea de comandos en los sistemas GNU/Linux, como parte del Diplomado de Software Libre que se lleva a cabo en la Universidad Abierta para Adultos (UAPA), Santiago de los caballeros. #Linux #softwarelibre

TRANSCRIPT

Page 1: [ES] Línea de Comandos GNU/Linux

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

Page 2: [ES] Línea de Comandos GNU/Linux

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

Page 3: [ES] Línea de Comandos GNU/Linux

Agenda

1- Línea de comandos.❏ Terminología❏ Shell disponibles

2- Shell scripts3- Rutas absolutas y relativas4- Información del sistema 5- Monitoreo del sistema.

❏ Procesos❏ Log del sistema

Page 4: [ES] Línea de Comandos GNU/Linux

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.

Page 5: [ES] Línea de Comandos GNU/Linux

Línea de comandos

Page 6: [ES] Línea de Comandos GNU/Linux

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.

Page 7: [ES] Línea de Comandos GNU/Linux

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

Page 8: [ES] Línea de Comandos GNU/Linux

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

Page 9: [ES] Línea de Comandos GNU/Linux

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

Page 10: [ES] Línea de Comandos GNU/Linux

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

Page 11: [ES] Línea de Comandos GNU/Linux

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

Page 12: [ES] Línea de Comandos GNU/Linux

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.

Page 13: [ES] Línea de Comandos GNU/Linux

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

Page 14: [ES] Línea de Comandos GNU/Linux

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

Page 15: [ES] Línea de Comandos GNU/Linux

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

Page 16: [ES] Línea de Comandos GNU/Linux

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

Page 17: [ES] Línea de Comandos GNU/Linux

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'sAñ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

Page 18: [ES] Línea de Comandos GNU/Linux

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.

Page 19: [ES] Línea de Comandos GNU/Linux

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

Page 20: [ES] Línea de Comandos GNU/Linux

Algunas variables de sistema útiles que pueden consultarse (con el comando echo), son:

HOME Directorio raíz del usuarioLOGNAME Id del usuario en el loginPATH RutaSHELL Shell del usuarioPS1 Prompt del shell, el usuario puede cambiarloMAIL Directorio del buzón de correoTERM Tipo de terminal que el usuario utilizaPWD Directorio actual del usuario

Las diferentes variables del entorno pueden verse con el comando env.

Variables de entorno y variables shell

Page 21: [ES] Línea de Comandos GNU/Linux

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 +.

Page 22: [ES] Línea de Comandos GNU/Linux

Variables de entorno y variables shell

exportSe utiliza para transferir el valor de una variable para que pueda ser accesible a todos los subshells (subprocesos).

Sintaxis:$ export VARIABLE=valor

Page 23: [ES] Línea de Comandos GNU/Linux

Shell scripts

Page 24: [ES] Línea de Comandos GNU/Linux

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.

Page 25: [ES] Línea de Comandos GNU/Linux

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

Page 26: [ES] Línea de Comandos GNU/Linux

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 simplels -l > listado.txt

Programación de scripts en Bash

Page 27: [ES] Línea de Comandos GNU/Linux

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

Page 28: [ES] Línea de Comandos GNU/Linux

VariablesUna 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

Page 29: [ES] Línea de Comandos GNU/Linux

Entrada de datosLos 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/bashecho $1

Y eso aplicándolo a un script sencillo podría resultar en un pequeño script que nos pregunte el nombre:

#!/bin/bashecho -e "Escribe tu nombre, por favor: "read nombreecho "Encantado de saludarte, $nombre"

Programación de scripts en Bash

Page 30: [ES] Línea de Comandos GNU/Linux

Entrada de datosEn 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/bashecho "Creando $2.tar.gz de $1"

mkdir $2cp -rf $1/* $2tar cvf $2.targzip $2.tar

Programación de scripts en Bash

Page 31: [ES] Línea de Comandos GNU/Linux

Puedes obtener más información sobre este tipo de scripts enBash Guide for Beginners.

http://tldp.org/LDP/Bash-Beginners-Guide/html/

Programación de scripts en Bash

Page 32: [ES] Línea de Comandos GNU/Linux

Rutas absolutas y relativas

Page 33: [ES] Línea de Comandos GNU/Linux

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

Page 34: [ES] Línea de Comandos GNU/Linux

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

Page 35: [ES] Línea de Comandos GNU/Linux

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

Page 36: [ES] Línea de Comandos GNU/Linux

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

Page 37: [ES] Línea de Comandos GNU/Linux

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

Page 38: [ES] Línea de Comandos GNU/Linux

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

Page 39: [ES] Línea de Comandos GNU/Linux

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

Page 40: [ES] Línea de Comandos GNU/Linux

Información de sistema

Page 41: [ES] Línea de Comandos GNU/Linux

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.

Page 42: [ES] Línea de Comandos GNU/Linux

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.

Page 43: [ES] Línea de Comandos GNU/Linux

Historial de comandos

Comandos que se pueden utilizar mediante las funciones del historial son:history

Muestra todo el historialhistory N

Muestra las últimas líneas N del historialhistory -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

Page 44: [ES] Línea de Comandos GNU/Linux

Historial de comandos

!-NMuestra el comando que se encuentra N comandos atrás en el historial (!-1 es equivalente a !!)

!#Muestra el comando que usted está escribiendo actualmente

!stringMuestra el comando más reciente que inicia con string

!?string?

Page 45: [ES] Línea de Comandos GNU/Linux

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)

Page 46: [ES] Línea de Comandos GNU/Linux

Por ejemplo, para saber todo lo relacionado sobre la aplicación man basta con poner en la consola:

$ man manY 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)

Page 47: [ES] Línea de Comandos GNU/Linux

El manual normalmente está dividido en ocho secciones numeradas, organizadas como sigue (en BSD, Unix y Linux)

Página de los manuales(man)

Page 48: [ES] Línea de Comandos GNU/Linux

Monitoreo del sistema

Page 49: [ES] Línea de Comandos GNU/Linux

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.

psLista 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).

Page 50: [ES] Línea de Comandos GNU/Linux

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

Page 51: [ES] Línea de Comandos GNU/Linux

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).

Page 52: [ES] Línea de Comandos GNU/Linux

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.

Page 53: [ES] Línea de Comandos GNU/Linux

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.

Page 54: [ES] Línea de Comandos GNU/Linux

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 procesosLa 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.

Page 55: [ES] Línea de Comandos GNU/Linux

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 12123Esto le dice al sistema operativo que debe de eliminar forzosamente el proceso 12123.

Page 56: [ES] Línea de Comandos GNU/Linux

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.

Page 57: [ES] Línea de Comandos GNU/Linux

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á.

Page 58: [ES] Línea de Comandos GNU/Linux

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.

Page 59: [ES] Línea de Comandos GNU/Linux

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

Page 60: [ES] Línea de Comandos GNU/Linux

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.

Page 61: [ES] Línea de Comandos GNU/Linux

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.

Page 62: [ES] Línea de Comandos GNU/Linux

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.

Page 63: [ES] Línea de Comandos GNU/Linux

Herramientas para administrar procesos

topUna versión que nos da una lista actualizada a intervalos.

htopVersión mejorada de top

Page 64: [ES] Línea de Comandos GNU/Linux

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.

Page 65: [ES] Línea de Comandos GNU/Linux

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.

Page 66: [ES] Línea de Comandos GNU/Linux

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

Page 67: [ES] Línea de Comandos GNU/Linux

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

Page 68: [ES] Línea de Comandos GNU/Linux

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).

Page 69: [ES] Línea de Comandos GNU/Linux

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

Page 70: [ES] Línea de Comandos GNU/Linux

ReferenciasLibros: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/

Page 71: [ES] Línea de Comandos GNU/Linux

¿Preguntas?

Page 72: [ES] Línea de Comandos GNU/Linux

@eudriscabrera

@eudris

@ecabrerar

@eudriscabrera

Eudris Cabrera Rodríguez Ingeniero Telemático

Desarrollador de Software / Consultor Informático

[email protected]