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