jueves, 26 de noviembre de 2015

Padre Nuestro de Linux

Un poco de humor linuxero


San Torvalds nuestro que estás en http://www.linux.org/
Santificado sea tu Kernel
venga a nosotros tu Free Software,
Tanto de Icaza como de Stallman
Hágase tu download así en el http como en el ftp,
Danos hoy nuestras actualizaciones cada día,
Perdona nuestros bugs
como también nosotros perdonamos a microsoft,
No nos dejes caer en mac-win
y líbranos de los pantallazos azules.
Amén.

Niveles de ejecución o RUN LEVELS

Los niveles de ejecución hacen referencia a los modos en los cuales el sistema operativo puede operar desde que ha sido encendido.

En las versiones de RHEL, CentOS, Fedora, y las demas distros los run levels son los siguientes:


Run Level Nombre Descripción
0 Apagado Procede apagar el sistema operativo
1 Monousuario En este modo solo se habilita el acceso al usuario root no se habilita el acceso de la red
2 Multiusuario En este modo se habilita el acceso a mas usuarios pero no se habilita la red
3 Multiusuario Se habilita la interfaz de red
4 Multiusuario con red Igual que el modo 3
5 Modo Grafico Permite iniciar el sistema operativo con una interfaz de red
6 Reinicio Procede a reiniciar el sistema operativo

Para consultar el run level de un sistema operativo lo haremos con el siguiente comando:

# runlevel

Para cambiar el run level de un sistema operativo lo haremos modificando el siguiente parámetro.

# vim /etc/inittab

Tendremos un contenido similar al siguiente:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

Para modificar el run level se debe de cambiar el valor descrito en este archivo en la línea des-comentada.

Run levels con systemd
A partir de la versión de RHEL7 los sistemas operativos ya no son manejados por el super demonio initd por lo cual el manejo de los run levels es distinto, en estas nuevas versiones el super demonio es el systemd. Para manejar los run leves se lo hace con el systemctl

Para ver en que nivel esta corriendo el sistema operativo

# systemclt get-default
graphical.target

Como se puede ver ya no se muestra los valores que habíamos identificado anteriormente.

Para ver los niveles de servicio del sistema operativo se lo realiza con el siguiente comando:


[root@dark ~]# systemctl list-units --type=target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target loaded active active Network
nfs-client.target loaded active active NFS client services
nss-lookup.target loaded active active Host and Network Name Lookups
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
rpcbind.target loaded active active RPC Port Mapper
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
timers.target loaded active active Timers

LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.

22 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Para cambiar el nivel de ejecución por defecto utilizaremos el parámetro set-default seguido del “UNIT” asociado

# systemctl set-default  multi-user.target


Formato de paquetes RPM

Muchas de las veces me han preguntado que significan los números que siguen del nombre de un paquete pues hoy quiero esclarecer esa inquietud con todos ustedes.Vamos a tomar como ejemplo un paquete que muchos administradores conocen y por lo menos alguna vez lo han visto el famoso webmin.

Para la descarga de el webmin deben dirigirse al sitio oficial y proceder a descargarlo
http://www.webmin.com/rpm.html

En el momento del desarrollo de este post la versión del webmin es webmin-1.770-1.x86_64.rpm

Vamos analizar que significan los parámetros que siguen después del nombre, estos parámetros son una convención así que siempre vamos a encontrar los mismos para todos los rpms de la siguiente forma:

nombre-version-publicación.arquitectura.rpm

  • Nombre: Es una descripción del paquete. El nombre sera la entrada base para el indice de paquetes en la base de datos de paquetes disponibles en el sistema operativo.
  • Versión: Es la versión del paquete con la que sera liberado.
  • Publicación: Es el numero de veces que esta versión del paquete ha sido empaquetada. Por lo general incrementa cuando se hacen correcciones o mejoras sobre la misma versión del paquete.
  • Arquitectura: Es una descripción del paquete que indica para que tipo de CPU fue empaquetado este rpm.
Como ejemplo tomamos el paquete: webmin-1.770-1.x86_64.rpm donde:
  • Nombre: Webmin
  • Versión: 1.770
  • Publicación: 1
  • Arquitectura: x86_64
Como información adicional para manejo de los rpms dejare una breve explicación.

Directorio de la base de los rpm /var/lib/rpm, los archivos que se encuentran en este directorio continen la información relacionada con los paquetes instalados en el Sistema Operativo.

Para saber si un paquete esta instalado:

# rpm -q webmin webmin-1.770-1x86_64.rpm

Para saber todos los rpms instalados en el sistema operativo:

# rpm -qa 

Para tener información del paquete RPM

# rpm -qi webmin

[root@dark ~]# rpm -qi webmin 
Name        : webmin
Version     : 1.770
Release     : 1
Architecture: noarch
Install Date: mié 25 nov 2015 13:05:37 ECT
Group       : System/Tools
Size        : 73745404
License     : Freeware
Signature   : DSA/SHA1, dom 04 oct 2015 00:50:08 ECT, Key ID d97a3ae911f63c51
Source RPM  : webmin-1.770-1.src.rpm
Build Date  : dom 04 oct 2015 00:49:38 ECT
Build Host  : fudu.home
Relocations : (not relocatable)
Vendor      : Jamie Cameron
Summary     : A web-based administration interface for Unix systems.
Description :
A web-based administration interface for Unix systems. Using Webmin you can
configure DNS, Samba, NFS, local/remote filesystems and more using your
web browser.

After installation, enter the URL http://localhost:10000/ into your
browser and login as root with your root password.

Para des-instalar un rpm 

# rpm -e webmin




miércoles, 11 de noviembre de 2015

Montar ISOs en el fstab.

Para realizar el montaje de una imagen de un DVD y que esta sea persistente al inicio del servidor se debe agregar el punto de montaje del mismo en el archivo /etc/fstab.


#
/dev/mapper/luks-5c96c7a3-4ffe-4132-9bd9-dd6d5d9669ac /                       ext4    defaults,x-systemd.device-timeout=0 1 1
UUID=a818315b-c29d-41fb-8358-589a1977f5b5 /boot                   ext4    defaults        1 2
/dev/mapper/fedora-swap swap                    swap    defaults        0 0
/home/dark/html/isos/rhel/rhel5/rhel-server-5.11-x86_64-dvd.iso /home/dark/html/imagenes/rhel5/ iso9660 loop 0 0
/home/dark/html/isos/rhel/rhel6/rhel-server-6.7-x86_64-dvd.iso /home/dark/html/imagenes/rhel6/ iso9660 loop 0 0
/home/dark/html/isos/rhel/rhel7/rhel-server-7.1-x86_64-dvd.iso /home/dark/html/imagenes/rhel7/ iso9660 loop 0 0
/home/dark/html/isos/centOS/CentOS-7-x86_64-DVD-1503-01.iso /home/dark/html/imagenes/centos7/ iso9660 loop 0 0
/home/dark/html/isos/rhel/rhev-h/rhev3.5/rhevh-7.1-20150603.0.el7ev.iso /home/dark/html/imagenes/rhevh7/ iso9660 loop 0 0

Como sabemos debemos tener disponibles en el disco local la imagen dvd del medio que debemos de montar para montar los dvds o los cds el formato es iso9660 no olvidar incluir esta linea en el punto de montaje definido.




Manejo de Procesos

Manejo de Procesos

Para el manejo de Procesos en GNU/Linux podemos utilizar las herramientas de top,htop,ps las cuales nos permiten visualizar el PID de un proceso el PPID de un proceso, etc.

Para comprender los procesos en GNU/Linux debemos comprender los siguientes conceptos:

Proceso padre

El proceso padre es el cual contiene bajo su poder procesos hijos.
El proceso padre en las versiones de RHEL5,6 es el init
El proceso padre en las versiones de RHEL7 y posteriores es el systemd

El init y el systemd se encargan de manejar los demás procesos en el sistema operativo.

Posteriormente agregaré un blog explicando las características de cada uno de ellos.

Proceso hijo

El proceso hijo va a depender de la supervivencia de un proceso padre.
Todos los procesos que se ejecuten por debajo del init y del systemd se consideran procesos hijos.

Como todo en GNU/Linux los procesos tiene características similares a los archivos o directorios de esa forma un proceso tiene:

  • ID del usuario dueno del proceso
  • ID del proceso
  • ID del proceso padre
  • variables
  • directorios de configuración
  • archivos de ejecución
Una vez claros los conceptos basicos de procesos podemos empezar a manejarlos.
Tomaremos como ejemplo el proceso mas elemental en GNU/Linux el interprete de comandos el "bash"

Para identificar el PID el PPID el ID del proceso vamos a usar el comando ps

Si es de nuestro interes el conocer el  PID/PGID/PPID/SID de un determinado proceso podemos ejecutar lo siguiente en un terminal.


Para listar los procesos 

ps -efj | less

ps -efj | grep process
ps -efj | grep pid
Si deseamos tener mas información de los procesos podemos intentar los siguientes comandos.
ps -ejf | egrep 'STIME | nombre_proceso'
ps -ejf | egrep 'STIME | pid_del_proceso'
Ejemplos:
ps -ejf | egrep 'STIME | bash'
ps -ejf | egrep 'STIME | 1234' Suponiendo que el proceso 1234 es equivalente a uno conocido.