Guia Open Solaris

Embed Size (px)

DESCRIPTION

Guía del estudiante, para el SO OpenSolaris 10 (community Edition)Distribuida bajo licencia: Creative Commons Reconocimiento-Compartirigual cc by sa

Citation preview

  • Gua del Estudiante CE 1.0aCommunity EditionComunidad OpenSolaris Hispanoes.opensolaris.org

    USE IMPROVE EVANGELIZE

  • Comunidad OpenSolaris Hispano

    Licencia

    Esta obra est bajo una licencia de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-sa/2.5/ o enve una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.Usted es libre de:

    - Copiar, distribuir y comunicar pblicamente la obra y hacer obras derivadas.

    Bajo las condiciones siguientes:

    Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

    Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta.

    Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los

    derechos de autor

    Nada en esta licencia menoscaba o restringe los derechos morales del autor.

    Referencias

    Todos los nombres propios de programas, sistemas operativos, equipos hardware, etc., que aparecen en este libro son marcas registradas de sus respectivas compaas u organizaciones.

    2

  • Comunidad OpenSolaris Hispano

    OpenSolarisOpenSolaris nace en Junio de 2005 y es el resultado de la liberacin de la mayor parte del cdigo

    fuente de Solaris pasando a ser un proyecto de software libre. Desde este nuevo enfoque nacen nuevas distribuciones que aportan mejoras al sistema adems de enriquecerlas con ms software.

    Distribuciones OpenSolaris

    De las diferentes aportaciones realizadas por comunidades de usuarios o desarrolladores nacen las siguientes distribuciones:

    Solaris 10: es la versin oficial de Sun Microsystems disponible para arquitectura Sparc y x86. Es estable y robusta estando diseada para entornos de produccin donde se necesita estabilidad. Es gratuita y podemos descargarla del sitio web oficial de Sun.

    Solaris Express Community Edition: su nombre en clave es nevada es una distribucin binaria que se actualiza cada dos viernes, es una versin que puede no ser compatible con otras versiones ya que incorpora muchos cambios.

    Solaris Express Developer Edition: contiene todas las nuevas incorporaciones de funcionalidades y software que darn lugar a la prxima versin estable de Solaris por lo tanto esta recomendada para entornos de desarrollo o preproduccin. Se actualiza cada tres o cuatro meses.

    OpenSolaris Developer Preview: mas conocida como OpenSolaris 2008.05 es una distribucin en un solo CD que combina livecd e instalacin en disco. OpenSolaris 2008.05 esta en sus primeras

    3

  • Comunidad OpenSolaris Hispano

    fases de desarrollo. Las versiones actualmente liberadas no son totalmente estables. Incluye un kit para crear tu propia distribucin y es instalable en una llave USB.

    Nexenta OS: es una distribucin totalmente independiente a Sun y esta basado en GNU libre y de cdigo abierto, integra el kernel de OpenSolaris y un conjunto de aplicaciones Open Source. Es una distribucin que comparte la filosofa de a Ubuntu.

    Belenix: LiveCD basado en OpenSolaris que esta dando pasos en convertirse en una distribucin completa. Aporta un conjunto de software OpenSource. Incluye scripts para crear tu propio livecd y se puede instalar y arrancar desde una llave USB.

    MartUX mBE :es un DVDlive para SPARC y x64/x86 y esta cargado de paquetes de CommunitySoftWare.

    Shillix: es una distro basada en OpenSolaris y es LiveCD para arquitecturas x86,x64 y EM64T. Esta basada en Nevada Build 17.

    OpenGrokOpenGrok es el motor de bsqueda de cdigo fuente, con OpnGrok podemos descargar el fuente

    de OpenSolaris y examinar su cdigo ademas de poder hacer modificaciones para realizar modificaciones al ya existente. Para entrar en OpenGrok entre en la direccin:http://cvs.opensolaris.org/source

    Las comunidades Las comunidades son puntos de encuentro dentro de OpenSolaris.org donde puedes encontrar otras

    personas con las mismas inquietudes sobre una tecnologa o apliacin. Hay comunidades alrededor de ZFS, DTrace, SMF, Virtualizacin etc.. Algunas de las comunidades:

    Teora e investigacin: http://www.opensolaris.org/os/community/edu DTrace: http://www.opensolaris.org/os/community/dtrace ZFS : http://www.opensolaris.org/os/community/zfs Redes: http://www.opensolaris.org/os/community/networking Zonas: http://www.opensolaris.org/os/community/zones Documentacin: http://www.opensolaris.org/os/community/documentation Controladores de dispositivos: http://www.opensolaris.org/os/community/device_drivers Herramientas: http://www.opensolaris.org/os/community/tools Impulsores: http://www.opensolaris.org/os/community/advocacy Seguridad: http://www.opensolaris.org/os/community/security Rendimiento: http://www.opensolaris.org/os/community/performance Almacenamiento: http://www.opensolaris.org/os/community/storage

    4

  • Comunidad OpenSolaris Hispano

    ProyectosLos proyectos alojados en www.opensolaris.org albergan las contribuciones de cdigo, documentos,

    grficos o productos de varios autores. Los proyectos disponen de espacio para alojar cdigo.

    ParticipaPuedes participar en la comunidad OpenSolaris Hispano de formas diferentes y da igual tu nivel de

    experiencia con OpenSolaris.

    Si eres principiante puedes desarrollar documentos y alimentar la Wiki: http://www.genunix.org/wiki/index.php/OpenSolarisHispano con el conocimiento que vas aprendiendo, tu aportacin ser muy til para otros recin llegados.

    Si eres desarrollador puedes participar bien proponiendo un proyecto o unirte a un proyecto de la comunidad para participar en su desarrollo.

    Si eres un usuario experimentado puedes participar impartiendo charlas, desarrollando documentacin, alimentado la Wiki y ayudando a otros usuarios.

    5

  • Comunidad OpenSolaris Hispano

    Instalando OpenSolaris 2008.05 Novedades de OpenSolaris

    OpenSolaris 2008.05 incorpora importantes novedades sobre sus antecesores inmediatos. Veamos algunas de ellas:

    Solaris Service Manager es una nueva infraestructura que viene a sustituir al clsico inicio secuencial de Unix System V. Esta nueva infraestructura permite arrancar los servicios de forma paralela acorde a sus relaciones de dependencia. Permite al administrador observar, deshabilitar, arrancar y parar de una manera sencilla y eficiente.

    Solaris Containers es una tecnologa de virtualizacin que permite la ejecucin de servicios y aplicaciones de forma totalmente aisladas.

    ZFS (Solaris Zeta File System) nuevo sistema de archivos de 128bits. Su capacidad de almacenamientos es practicante ilimitada. Su implantacin y administracin comparada con los sistemas anteriores muy sencilla. Implementa un nuevo modelo de ACL sencillo de administrar utilizando los comandos chmod y ls.

    DTrace es una potente herramienta que permite a los administradores observar procesos del ncleo y de los usuarios. Se compone de ms de 30.000 sensores que aportan informacin sobre las aplicaciones asociadas a estos.

    Image Packaging System es el nuevo sistema de paquetes de OpenSolaris 2008.05 que permite la instalacin de paquetes de repositorios de una forma sencilla resolviendo problemas como dependencias. IPS instalar, actualizar y eliminar aplicaciones.

    Slim Install un nuevo instalador que solo necesita de seis pasos para instalar OpenSolaris 2008.05 .

    6

  • Comunidad OpenSolaris Hispano

    Sun xVM Hypervisor (basado en el trabajo de la comunidad Xen permitiendo correr Solaris, GNU/Linux y Windows en mquinas virtuales)

    Requisitos de Instalacin

    Antes de comenzar la instalacin debemos comprobar si la maquina destino cumple con los requisitos demandados por OpenSolaris 2008.05 . En la siguiente tabla podemos ver dichos requisitos mnimos:

    Arquitectura X86 Mnimo necesariosMemoria 512MB recomendados.

    Espacio en disco 10GB

    Iniciando OpenSolaris 2008.05 El proceso de instalacin de OpenSolaris 2008.05 esta basado en Slim Install que nos permitir

    instalar el sistema de forma sencilla. Resumimos la instalacin en:

    Arranque del LiveCD de OpenSolaris 2008.05 .

    Arrancar el instalador Slim Install e inicia la instalacin.

    Reiniciar.

    Iniciando el LiveCDComenzamos el proceso de instalacin arrancando desde CD con el LiveCD de OpenSolaris

    2008.05 , lo primero que veremos ser el gestor de arranque GRUB.

    OpenSolaris 2008.05 comenzara a iniciarse y solicitar el idioma del teclado y del escritorio como podemos ver en las siguientes capturas:

    7

  • Comunidad OpenSolaris Hispano

    Despus de seleccionar el idioma continua el arranque del sistema y procede a arrancar el escritorio GNOME donde nos muestra la licencia.

    8

  • Comunidad OpenSolaris Hispano

    Una vez aceptada la licencia veremos el escritorio donde tenemos el sistema totalmente operativo en

    modo live, ahora tenemos que iniciar la instalacin. Para ello arrancamos el instalador identificado en el escritorio como Install OpenSolaris.

    Ecritorio Live-CD OpenSolaris 2008.05

    Al arrancar nos mostrar el proceso de instalacin que consiste en un volcado a disco de todo el sistema. Los pasos del instalador son:

    1. Pantalla de bienvenida.2. Seleccionar el disco o particin donde vamos a instalar.3. Seleccionar la zona horaria.4. Introducimos la contrasea, creamos un usuario y damos nombre al sistema.5. Inicia la instalacin.6. Finaliza y reinicio.

    Veamos una captura de cada uno de los pasos: 9

  • Comunidad OpenSolaris Hispano

    Pantalla de bienvenida, seleccionamos instalar o realizar un Upgrade.

    Elegimos en que disco queremos instalar o usar una particin ya existente.

    10

  • Comunidad OpenSolaris Hispano

    Seleccionamos nuestra zona horaria, fecha y hora.

    Seleccionamos el entorno regional.

    11

  • Comunidad OpenSolaris Hispano

    Creamos un usuario de sistema, damos contrasea al root y establecemos el nombre de la mquina.

    Pantalla que muestra informacin de las opciones elegidas.

    12

  • Comunidad OpenSolaris Hispano

    Se inicia el proceso de copiado a disco del sistema.Cuando finaliza el copiado a disco de todo el sistema reiniciamos y ya tenemos instalado OpenSolaris

    2008.05 . Al reiniciar veremos GRUB e iniciamos el arranque esta vez ya desde el disco y no del Live-CD:

    GRUB

    13

  • Comunidad OpenSolaris Hispano

    Inicia la primera carga de los servicios SMF (nuevo sistema de arranque por dependencias).

    Lo siguiente que veremos ser la pantalla de bienvenida donde hacemos login con el usuario que hemos creado durante el proceso de instalacin. Despus de introducir el usuario y contrasea tenemos disponible el sistema con el escritorio GNOME.

    Con la instalacin base dispones de tecnologas como Zonas, BrandZ, SMF, ZFS y DTrace y xVM Hypervisor (basado en XEN).

    14

  • Comunidad OpenSolaris Hispano

    Arranque y ParadaIntroduccin

    En este capitulo veremos el proceso arranque y parada de OpenSolaris 2008.05 , los comandos necesarios para reiniciar y parar el sistema

    Parada y reinicio del sistema

    Cuando finaliza el arranque de la mquina se encuentra en el nivel de ejecucin multi-user-server o run level 3. En ocasiones hay que reiniciar el sistema para realizar tareas de mantenimiento como aadir hardware. A continuacin veremos las diferentes formas de reiniciar y parar el sistema.

    Reinicio de la mquina:

    Si deseamos realizar un reinicio del sistema y queremos emitir un mensaje personalizado avisando a los usuarios usaremos el comando shutdown que permite los siguientes parmetros:

    shotdown i niveldeejecucin g segundosdeespera mensaje de aviso

    Ejemplo del uso de shotdown para reiniciar:

    15

  • Comunidad OpenSolaris Hispano

    #/usr/sbin/shutdown -i 6 g 360 Aviso a los usuarios. El sistema se reiniciar en 60segundos. Cierre sus aplicaciones.

    Con i indicamos el nivel de ejecucin, con g damos 360 segundos a los usuarios para cerrar sus aplicaciones y ficheros. Cuando finalicen los 360 segundos el sistema solicita la confirmacin del reinicio al administrador:

    # Do you want to continue? (y or n):

    Para reiniciar el sistema tambin podemos ejecutar la orden reboot:

    # /usr/sbin/reboot

    El comando reboot ejecuta una parada inmediata e inicia el sistema en el nivel 3 de ejecucin ahora llamado multi-user-server.

    Parada de la mquina:

    Para parar el sistema de forma ordenada y despus realizar un apagado elctrico de la mquina ejecutamos:

    #/usr/sbin/shutdown -i 0 g 360 Aviso a los usuarios. El sistema se reiniciar en 60segundos. Cierre sus aplicaciones.

    Si la ejecutamos el comando en una mquina SPARC se quedara en la OpenBoot momento en el que podemos realizar el apagado elctrico ejecutando desde la OpenBoot el comando:

    ok power-off

    Si es una mquina x86 mostrara el siguiente mensaje:

    Svcd.startd: The system is down.Syncing file systemsdonePres any key to reboot.

    Podemos pulsar cualquier tecla y reiniciar o realizar directamente el apagado elctrico de la mquina.Si necesitramos parar la mquina de forma urgente podemos utilizar el comando halt que realizara

    una parada inmediata no ordenada:

    # /usr/sbin/halt

    Para una parada urgente no ordenada pero con parada elctrica:

    # /usr/sbin/poweroff

    16

  • Comunidad OpenSolaris Hispano

    Para reiniciar el sistema podemos ejecutar la orden reboot que antes proceder al reinicio actualiza el superbloque:

    # /usr/sbin/reboot

    Gestor de arranque GRUB (Grand Unified Bootloader)

    Introduccin a GRUB

    GRUB es el nuevo gestor de arranque para arquitecturas x86 que aade nuevas posibilidades de arranque a OpenSolaris 2008.05 . GRUB se inicia en el MBR ocupando tan solo 512 bytes y este pequeo cdigo comienza la carga del resto de GRUB ubicado en el disco.

    No podemos comparar GRUB con la OpenBoot para arquitecturas SPARC ya que la OBP se basa en hardware y software, pero sin duda viene a mejorar las posibilidades de Solaris y su integracin con otros sistemas operativos como Linux. GRUB es un gran conocido dentro de la comunidad Linux por lo que facilita aun mas el acercamiento de administradores Linux a Solaris. GRUB nos ofrece tres interfaces diferentes para el uso y configuracin de GRUB:

    Interfaz de men: es la primera que vemos cuando arranca GRUB y muestra una lista con todas las opciones disponibles para elegir con que sistema queremos arrancar. (ver figura 4.4)

    Interfaz de edicin: Permite la edicin de las opciones de arranque establecidas para cada sistema operativo configurado. Un ejemplo es cambiar de forma temporal el kernel para realizar pruebas. (ver figura 4.3)

    Interfaz de lnea de comandos: es una pequea shell que permite configurar GRUB, realizare pruebas de dispositivos, red etc..

    eprom: OpenSolaris se integra con GRUB con el comando eprom al igual que lo hace con la OpenBoot en SPARC.

    Opciones de arranque

    Cuando arrancamos la mquina lo primero que nos muestra GRUB es la Interfaz de men donde podemos elegir el sistema operativo. Esta interfaz se basa en un fichero de configuracin que permite aadir nuevos sistemas o modificar los ya existentes. El fichero de configuracin se encuentra en /boot/grub/menu.lst .

    Cuando finalizamos la instalacin de Solaris el archivo queda de la siguiente forma:

    #---------- ADDED BY BOOTADM - DO NOT EDIT ----------title Solaris 11 11/06 s10x_u3wos_10 X86root (hd0,0,a)kernel /platform/i86pc/multibootmodule /platform/i86pc/boot_archive#---------------------END BOOTADM--------------------#---------- ADDED BY BOOTADM - DO NOT EDIT ----------title Solaris failsaferoot (hd0,0,a)kernel /boot/multiboot kernel/unix -smodule /boot/x86.miniroot-safe

    17

  • Comunidad OpenSolaris Hispano

    #---------------------END BOOTADM--------------------

    Podemos establecer el fichero /boot/grub/menu.lst los siguientes parmetros:

    default: contiene un valor numrico que se corresponde con la posicin en la lista que muestra GRUB para seleccionar una opcin de arranque. Comienza con el valor 0, para arrancar por defecto con la opcin failsafe estableceramos el valor a 1.

    timeout: son los segundos que esperara para que el usuario elega una opcin de arranque, si no interviene el usuario arrancara el sistema establecido por defecto con el valor default . Con valor -1 espera indefinidamente.

    Para cambiar estos valores editamos el fichero menu.lst con cualquier editor de texto y cambiamos el valor en la lnea donde aparece default o timeout:

    ## default menu entry to bootdefault 0## menu timeout in second before default OS is booted# set to -1 to wait for user inputtimeout 10

    18

  • Comunidad OpenSolaris Hispano

    Service Management Facility (SMF)

    Introduccin a SMF

    OpenSolaris 2008.05 incorpora un nuevo sistema de gestin del arranque que ofrece nuevas posibilidades y optimiza el arranque del sistema, este nuevo componente se llama SMF (Service Management Facility) y forma parte de una nueva infraestructura que viene a sustituir al clsico inicio secuencial de Unix System V. Esta nueva infraestructura permite arrancar los servicios de forma paralela acorde a sus relaciones de dependencia. Una vez arrancado el sistema el administrador puede observar, deshabilitar, arrancar y parar servicios de una manera sencilla y eficiente.

    Caractersticas de SMF:

    Ofrece los mecanismos para establecer relaciones de dependencia entre servicios. Un servicio no arranca hasta que estn correctamente arrancadas sus dependencias.

    Repositorio que contiene toda la informacin referente a la configuracin del servicio, modos de arranque, parada, reinicio y el estado en el que se encuentra.

    Log con informacin de eventos de cada servicio.

    Cambios de niveles de ejecucin a mono usuario, red, mantenimiento etc..

    19

  • Comunidad OpenSolaris Hispano

    Beneficios de SMF:

    Los servicios al ser objetos pueden ser vistos y gestionados con sencillos comandos de administracin.

    Se puede definir que SMF monitorice un proceso del servicio y tomar acciones si detecta que el proceso a muerto o hay un fallo hardware.

    Delegar en otros usuarios el poder arrancar o parar servicios de esta forma no necesitamos utilidades como sudo o la cuenta de root.

    Un servicio definido en SMF no tiene por que estar necesariamente asociado a un proceso que se este ejecutando en el sistema, un servicio puede ser el estado de un dispositivo, de una tarjeta de red o de un sistema de ficheros.

    Repositorio (Repository SMF)

    Es la pieza principal y en el se almacena la configuracin de cada servicio tanto en local como en memoria. Tambin contiene el procedimiento para parar, arrancar y verificar un servicio. Cuando un servicio se ha iniciado correctamente en el arranque del sistema es guardada una foto de la configuracin de dicho servicio con el objetivo de saber cual es la configuracin correcta en caso de tener que restaurar el servicio.

    SMF Restarters: svc.startd Es el proceso que permite reiniciar un servicio en caso de fallo, para ello consulta el repositorio para

    identificar el mtodo definido para reiniciar el servicio y hacerlo respetando las dependencias establecidas. Si hemos definido dependencias para un servicio y una de estas falla SMF Restarters solucionar el problema con la dependencia para restaurar el servicio.

    SMF Service Instances

    Un servicio puede estar compuesto a su vez por otra serie de servicios a los que se denominan instancias. Un ejemplo seria un servidor web Apache con el servicio web escuchando por el puerto 80, otro seguro por el 443 y un tercero por el 8080. Para gestionar el servicio deberamos crear el servicio web con tres instancias.

    Componentes de un servicio SMF

    Un servicio en SMF esta formado por un conjunto de componentes que interactan entre si. Veamos cada uno de estos componentes:

    20

  • Comunidad OpenSolaris Hispano

    SMF manifiest: es un fichero XML en el que se definen las caractersticas de un servicio o una instancia del servicio. Los ficheros XML con las propiedades de los servicios se almacenan en /var/svc/manifest. Estos ficheros son cargados en el repositorio SMF.Methods: los mtodos son usados por el restarter para interactuar con el servicio y puede ser un fichero ejecutable: un script o una palabra clave. Se utilizan para definir los mtodos de arranque, parada o reinicio de un servicio. Los mtodos son almacenados en /lib/svc/method.Service Log Files: es un servicio que escribe un log con todo los datos sucesos sobre un servicio, los logs se encuentran en /var/svc/log.Service Identifiers : cada servicio y cada instancia de servicio tienen un nombre con el que identificarse con Fault Management Resource Identifier (FMRI) en el que se especifica como actuar en caso de fallo en el sistema.

    Estados de un servicio SMF

    Los servicios pueden tener varios estados en los que podemos ver si el servicio esta parado, arrancado, degradado o en mantenimiento. Anteriormente se utilizaba el comando ps ef para ver si un servicio estaba arrancado, ahora podemos utilizar los comandos de SMF para ver el estado del servicio adems de poder continuar hacindolo con el comando ps ef para buscar el proceso. Estados en los se puede encontrar un servicio SMF:

    online: la instancia del servicio esta disponible y se esta ejecutando correctamente.

    offline: la instancia del servicio esta disponible pero no esta ejecutandose.

    disabled: la instancia del servicio no esta disponible y no esta ejecutndose.

    maintenance: la instancia del servicio tiene un error y esta siendo resuelto por el administrador.

    degraded: la instancia del servicio esta disponible pero esta funcionando al lmite de su capacidad.

    uninitialized: este es el estado inicial de todos los servicios antes de iniciar su ejecucin.

    legacy_run: este estado solo se utiliza para guardar la compatibilidad con los viejos niveles de arranque y nos ndica que el estado en el que se encuentran. Los niveles de arranque solo pueden ser observados con SMF son se pueden editar.

    DependenciasCuando definimos un servicio podemos definir dependencias, estableciendo que no arranque el

    servidor Apache hasta que no este arrancado el sistema en multiusuario (run level 3) y la bbdd MYSQL iniciada. Para cada servicio podemos establecer desde ninguna a varias dependencias.

    Veamos las propiedades que podemos definir para las dependencias:

    require_all: todos los servicios de la dependencia deben estar online (arrancados) antes de iniciar el servicio.

    require_any: es suficiente con que uno de los servicios de la dependencia se ejecute para que el servicio se inicie.

    optional_all: si los servicios de la dependencia estn disponibles y pueden ejecutarse deben estar online o degraded antes de la ejecucin del servicio. Si estn en mantenimiento el servicio no arrancara.

    exclude_all: significa que no todos los servicios de la dependencia deben estar corriendo para hincar el servicio.

    21

  • Comunidad OpenSolaris Hispano

    Proceso de arranque con SMFEn arranque de Solaris se realiza como en versiones anteriores y el proceso init continua siendo el

    primer proceso del sistema leyendo fichero /etc/initab. initab contiene la siguiente entrada:

    smf::sysinit:/lib/svc/bin/svc.startd >/dev/msglog 2/dev/msglog

  • Comunidad OpenSolaris Hispano

    Con la llegada de SMF tambin se ha redefinido la forma de poner la mquina en diferentes niveles de ejecucin. Los niveles de ejecucin mas conocidos son sigle user y multi user. Ahora se les denomina milestone. Milestone no es ms que un servicio especial de SMF que agrupa las dependencias necesarias para establecer un nivel de ejecucin.

    Se han aadido dos nuevos niveles de ejecucin: none que no ejecuta ningn servicio y all en el que se ejecutan todos los servicios disponibles.

    Las equivalencias al sistema tradicional son las reflejadas en la siguiente tabla:

    SMF Milestone Run Level Run Level

    milestone single-user Smilestone multi-user 2milestone multi-user-server 3milestone all 3milestone none No existe

    Para pasar de un nivel de ejecucin a otro podemos realizarlo sin problemas de la manera tradicional con el comando init y el nmero del nivel de ejecucin al que queremos pasar o con el comando svcadm de la siguiente forma:

    Pasar a single-user:# svcadm milestone single-user

    A multi-user# svcadm milestone multi-user

    A multi-user-server# svcadm milestone multi-user-server

    Para averiguar en que Runlevel esta ejecutndose el sistema lanzamos el siguiente comando:

    # svcprop svc:/system/svc/restarter:default | grep -i milestoneoptions_ovr/milestone astring svc:/milestone/multi-user-server:default

    Podemos ver que el sistema se encuentra en el nivel de ejecucin multi-user-server. Si la ejecucin del comando no muestra nada en pantalla significa que estemos en el nivel de ejecucin all.

    Un milestone es un servicio tiene definidas dependencias de otros servicios, por ejemplo el servicio multi-user depende de los servicios de red. Obervando las dependencias de cada nivel de ejecucin podemos averiguar que servicios ejecuta el milestone multi-user.

    Para ello ejecutamos el comando svcs d servicio para ver sus dependencias:Para ver las dependencias del milestone multi-user ejecutamos:

    bash-3.00# svcs -d milestone/multi-user

    STATE STIME FMRIdisabled 12:52:37 svc:/system/auditd:defaultdisabled 12:52:37 svc:/application/print/server:defaultdisabled 12:52:37 svc:/network/ntp:defaultdisabled 12:52:39 svc:/system/mdmonitor:default

    23

  • Comunidad OpenSolaris Hispano

    disabled 12:52:39 svc:/system/rcap:defaultonline 12:52:42 svc:/milestone/name-services:defaultonline 12:52:54 svc:/system/rmtmpfiles:defaultonline 12:52:55 svc:/system/power:defaultonline 12:52:55 svc:/system/name-service-cache:defaultonline 12:53:01 svc:/milestone/single-user:defaultonline 12:53:04 svc:/system/filesystem/local:defaultonline 12:53:04 svc:/system/cron:defaultonline 12:53:06 svc:/network/rpc/bind:defaultonline 12:53:09 svc:/platform/i86pc/kdmconfig:defaultonline 12:53:09 svc:/milestone/sysconfig:defaultonline 12:53:10 svc:/network/inetd:defaultonline 12:53:11 svc:/system/utmp:defaultonline 12:53:24 svc:/network/nfs/client:defaultonline 12:53:25 svc:/system/filesystem/autofs:defaultonline 12:53:26 svc:/system/system-log:defaultonline 12:53:26 svc:/system/system-log:defaultonline 12:53:26 svc:/network/smtp:sendmail

    Como se puede ver el nmero de servicios que ejecuta multi-server es muy superior al single-user que no requiere de tantos servicios como podemos ver en el ejemplo:

    bash-3.00# svcs -d milestone/single-user

    STATE STIME FMRIdisabled 12:52:32 svc:/system/metainit:defaultonline 12:52:39 svc:/network/loopback:defaultonline 12:52:48 svc:/milestone/network:defaultonline 12:52:49 svc:/system/identity:nodeonline 12:52:51 svc:/system/keymap:defaultonline 12:52:52 svc:/system/filesystem/minimal:defaultonline 12:52:54 svc:/system/cryptosvc:defaultonline 12:52:55 svc:/system/sysevent:defaultonline 12:52:56 svc:/milestone/devices:defaultonline 12:53:00 svc:/system/manifest-import:default

    Gestin de los servicios con SMF

    A continuacin vamos a ver los comandos que tiene SMF para la monitorizar el estado de los servicios, obtener informacin de un servicio y como parar o arrancar servicios. El conjunto de comandos que nos permite la administracin de SMF son:

    svcs: Proporciona informacin sobre el estado de un servicio y sus dependencias:

    svcadm: Permite realizar acciones administrativas como cambiar el estado de un servicio.

    svccfg: Tiene la funcin de crear nuevos servicios a partir de un fichero xml y modificar las propiedades de un servicio.

    svcprop: Obtenemos y cambiamos valores de la bbdd sobre un servicio.

    Obtener informacin de los servicios (svcs)

    24

  • Comunidad OpenSolaris Hispano

    Los servicios SMF estn organizados en grupos con los siguientes nombres:Application: Contiene los servicios asociados con aplicaciones.Device: Usado para las dependenciasMilestone: Equivalente a los niveles de ejecucin SVR4Network: Todos los servicios del antiguo inetd.confPlatform: Servicios especficos de la plataforma.System: Servicios independientes de la plataformaSite: Sin uso, reservado para uso futuro.

    El siguiente ejemplo muestra el grupo al que pertenece el servicio de telnet:

    # svcs a | grep telnetdisabled Dec_28 svc:/network/telnet:default

    Como se puede observar pertenece a /network

    Ver el estado de un servicio

    Para ver el estado todos los servicios recurrimos al comando svcs que en ejemplo lo ejecutamos con la opcin a para que muestre todos los servicios independientemente de su estado.

    # svcs a

    STATE STIME FMRIlegacy_run 10:10:30 lrc:/etc/rcS_d/S50sk98sollegacy_run 10:10:31 lrc:/etc/rcS_d/S51installupdateslegacy_run 10:10:55 lrc:/etc/rc2_d/S10lulegacy_run 10:10:56 lrc:/etc/rc2_d/S20sysetuplegacy_run 10:10:56 lrc:/etc/rc2_d/S40llc2legacy_run 10:10:56 lrc:/etc/rc2_d/S42ncakmodlegacy_run 10:10:56 lrc:/etc/rc2_d/S47pppdlegacy_run 10:10:56 lrc:/etc/rc2_d/S70uucplegacy_run 10:10:56 lrc:/etc/rc2_d/S72autoinstalllegacy_run 10:10:59 lrc:/etc/rc2_d/S73cachefs_daemonlegacy_run 10:10:59 lrc:/etc/rc2_d/S81dodatadm_udaplt..online 10:10:49 svc:/network/ftp:defaultonline 10:10:49 svc:/network/finger:defaultonline 10:10:50 svc:/network/ssh:defaultonline 10:10:50 svc:/system/dumpadm:defaultonline 10:10:51 svc:/system/system-log:defaultonline 10:10:51 svc:/network/login:rloginonline 10:10:51 svc:/network/shell:defaultonline 10:10:52 svc:/network/rpc-100235_1/rpc_ticotsord:defaultonline 10:10:53 svc:/network/smtp:sendmail

    25

  • Comunidad OpenSolaris Hispano

    En el ejemplo podemos observar el servicio legacy_run utilizado para guardar la compatibilidad con las practicas administrativas de versiones anteriores de Solaris. Del servicio legacy_run solo se puede consultar su estado y no podemos realizar cambios sobre el.

    Si aadimos un servicio de la forma tradicional con un script en el directorio ined.d y el enlace en el rc* correspondiente funcionara con normalidad vindolo en el SMF como un servicio legacy_run .

    En OpenSolaris 2008.05 no es recomendable seguir utilizando el viejo sistema para aadir servicios al arranque debiendo utilizar SMF.

    Tambin podemos observar que los servicios tradicionales como ftp y ssh estn en estado online.

    Ver las dependencias de un servicio

    Para ver las dependencias de un servicio, es decir que servicios tienen que estar arrancados para que pueda ejecutarse utilizamos el comando svcs con la opcin d. Veamos el ejemplo:

    # svcs -d svc:/network/http:apache2STATE STIME FMRIonline 10:10:12 svc:/milestone/network:defaultonline 10:10:33 svc:/system/filesystem/local:defaultonline 10:10:48 svc:/system/filesystem/autofs:defaultFigura 3.2

    En el ejemplo de la figura 3.2 vemos que para que pueda ejecutarse el servicio web Apache 2 necesitamos que estn levantados los servicios network, y filesystem.

    Procesos asociados a un servicio:

    Para averiguar que procesos estn asociados a un servicio ejecutamos el comando svcs con la opcin p . El resultado de la ejecuin produce la siguiente salida:# svcs -p svc:/network/smtp:sendmailSTATE STIME FMRIonline 10:10:53 svc:/network/smtp:sendmail 10:10:54 334 sendmail 10:10:54 341 sendmailFigura 3.3

    En el ejemplo de la figura 3.3 podemos ver los pid asociados al servicio sendmail aunque podemos averiguarlo tambien de la forma tradicional con la orden ps -ef | grep sendmail.

    Obtener informacin detallada de un servicio

    SMF puede aportar informacin detallada de un servicio como su nombre, si esta habilitado, su propio estado y las dependencias. Ejecutamos svcs con el parmetro l :

    26

  • Comunidad OpenSolaris Hispano

    # svcs -l svc:/network/http:apache2fmri svc:/network/http:apache2nombre Apache 2 HTTP serverhabilitada Falsoestado disablednext_state nonestate_time Thu Dec 28 10:10:08 2006reiniciador svc:/system/svc/restarter:defaultdependency require_all/error svc:/milestone/network:default (online)dependency require_all/none svc:/system/filesystem/local:default (online)dependency optional_all/error svc:/system/filesystem/autofs:default (online)

    Diagnostico de fallos

    SMF con el comando svcs puede aportarnos informacin sobre la causa de porque un servicio no puede arrancar, para ellos utilizamos el comando svcs con el parmetro x. Para este ejemplo hemos deshabilitado manualmente el servicio de apache. Veamos el resultado del diagnostico:

    # svcs -x svc:/network/http:apache2svc:/network/http:apache2 (Apache 2 HTTP server) Estado: disabled desde Thu Dec 28 10:10:08 2006Motivo: Un administrador lo ha inhabilitado. Consulte: http://sun.com/msg/SMF-8000-05 Consulte: httpd(8)Impacto: Este servicio no est funcionando.

    La salida del comando nos indica que el servicio fue parado por un administrador, en que momento lo hizo y el impacto sobre el servicio.

    Tambin nos remite a una url de Sun donde se nos amplia informacin sobre la causa por la que no esta arrancado el servicio. Sea cual sea el error siempre nos dar una url para obtener informacin que nos ayude a diagnosticar y solucionar el problema.

    Cambios de estado de un servicio (svcadm).

    Parada de un servicio

    Para parar un servicio utilizamos el comando svcadm con los parmetros disable y t seguido del nombre de servicio:

    svcadm disable -t svc:/network/http:apache2

    Verificamos que ha parado con el comando svcs p el cual nos indicara que el proceso esta en disable y que no hay procesos de apache2 ejecutndose. El resultado es el siguiente:# svcs -p svc:/network/http:apache2

    STATE STIME FMRI

    27

  • Comunidad OpenSolaris Hispano

    disabled 12:20:21 svc:/network/http:apache2

    ps -ef | grep -i apache2 root 1549 1444 0 12:22:51 pts/4 0:00 grep -i apache2

    La opcin t estipula que es una para temporal si olvidamos poner el parmetro t en el prximo arranque de la mquina el servicio no arrancara quedando en disable.

    Arrancar un servicio

    Para arrancar un servicio utilizamos el comando svcadm con los parmetros enable y t seguido del nombre de servicio:# svcadm enable -t svc:/network/http:apache2

    Y verificamos que ha arrancado correctamente:

    ## svcs -p svc:/network/http:apache2STATE STIME FMRIonline 12:31:23 svc:/network/http:apache2 12:31:23 1559 httpd 12:31:24 1560 httpd 12:31:24 1561 httpd 12:31:24 1562 httpd 12:31:24 1563 httpd 12:31:24 1564 httpdFigura 3.3

    Tal como podemos ver en la figura 3.3 el servicio ha arrancado correctamente y podemos ver todos los pid de los procesos en ejecucin.

    Reiniciar un servicio

    Hasta el momento si queramos reiniciar un servicio como por ejemplo ssh acudamos a ejecutar:

    /etc/init.d/sshd stop; /etc/init.d/sshd start

    Ahora ejecutamos el comando svcs con la opcin restart : # svcadm restart svc:/network/http:apache2

    Y verificamos que los procesos han cambiado de pid:

    # svcs -p svc:/network/http:apache2STATE STIME FMRI

    28

  • Comunidad OpenSolaris Hispano

    online 12:37:27 svc:/network/http:apache2 12:37:27 1577 httpd 12:37:28 1578 httpd 12:37:28 1579 httpd 12:37:28 1580 httpd 12:37:28 1581 httpd 12:37:28 1582 httpd

    Ver la configuracin de un servicio

    Si deseamos saber los valores de las propiedades de un servicio disponemos del comando svcprop que extrae dicha informacin del repositorio. Como ejemplo vamos a averiguar que mtodo esta definido para arrancar el servicio apache2.

    Ejecutamos primeramente el comando svcprop y el nombre del servicio para obtener una lista de las propiedades definidas:

    # svcprop svc:/network/http:apache2

    httpd/ssl boolean falsehttpd/stability astring Evolvingnetwork/entities fmri svc:/milestone/network:defaultnetwork/grouping astring require_all...general/entity_stability astring Evolvingstart/exec astring /lib/svc/method/http-apache2\ startstart/timeout_seconds count 60start/type astring methodstop/exec astring /lib/svc/method/http-apache2\ stopstop/timeout_seconds count 60stop/type astring methodrefresh/exec astring /lib/svc/method/http-apache2\ refreshrefresh/timeout_seconds count 60refresh/type ..restarter/state_timestamp time 1167305847.133954000general_ovr/enabled boolean truerestarter_actions/restart integerFigura 3.4

    En el ejemplo de la figura 3.4 podemos ver una lista con todas las propiedades del servicio, para nuestro ejemplo nos centramos en la lnea que pone:

    start/exec astring /lib/svc/method/http-apache2\ start

    Esta lnea muestra el fichero que ejecuta el arranque del apache 2 que es /lib/svc/method/http-apache2 pasndole el parmetro start. Podemos ver el contenido del scritp realizando un more sobre /lib/svc/method/http-apache2.

    Si queremos obtener datos formateados sobre una de las propiedades ejecutamos:

    svcprop p nombredelapropiedad nombredelservicio 29

  • Comunidad OpenSolaris Hispano

    En la figura 3.5 muestra la informacin sobre los valores de la propiedad start/exec y start/timeout_seconds .

    # svcprop -p start/exec svc:/network/http:apache2/lib/svc/method/http-apache2\ start

    # svcprop -p start/timeout_seconds svc:/network/http:apache260#Figura 3.5

    inetd como servicio SMF

    El proceso inetd ha sido migrado completamente como un servicio SMF, ya no es necesario editar el fichero /etc/inet/inetd.conf para establecer valores o habilitar y deshabilitar servicio como telnet, ftp, tftp etc..

    Si deshabilitamos un servicio como telnet ya no es necesario reiniciar con el comando kill el proceso inet.d.

    Ver servicios de inetd

    Para ver todos los servicios del proceso inetd y el estado en el que se encuentran ejecutamos el comando inetadm y pulsamos intro:

    # inetadmENABLED STATE FMRIenabled online svc:/application/x11/xfs:defaultenabled online svc:/application/font/stfsloader:defaultenabled offline svc:/application/print/rfc1179:defaultenabled online svc:/network/rpc/mdcomm:defaultenabled online svc:/network/rpc/meta:defaultenabled online svc:/network/rpc/metamed:defaultenabled online svc:/network/rpc/metamh:defaultenabled online svc:/network/rpc/gss:default..enabled online svc:/network/ftp:defaultdisabled disabled svc:/network/comsat:defaultenabled online svc:/network/finger:defaultdisabled disabled svc:/network/login:eklogindisabled disabled svc:/network/login:kloginenabled online svc:/network/login:rlogindisabled disabled svc:/network/shell:kshelldisabled disabled svc:/network/talk:default

    Deshabilitar un servicio inetd

    Al ser un servicio mas de SMF recurrimos al comando svcadm y el parmetro disable. Ejemplo para no permitir conexiones telnet:

    30

  • Comunidad OpenSolaris Hispano

    Con la opcin t se volver a habilitar el servicio al reiniciar la mquina:# svcadm disable t svc:/network/telnet:default

    Sin la opcin t el cambio es permanente: # svcadm disable svc:/network/telnet:default

    Ver el valor de un servicio inetd

    En versiones anteriores si queramos cambiar un valor al servicio ftp editbamos la lnea y cambiamos los valores en el propio fichero. Con SMF es mas sencillo ya las propiedades estn almacenadas en el repositorio. Antes de utilizar SMF editbamos la siguiente lnea de inetd.conf:

    ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -a

    Para conocer el valor que tiene un servicio ejecutamos el comando:inetadm l nombredelservicio

    Ejemplo de la ejecucin para ver los valores del servicio ftp:

    #inetadm -l ftp

    SCOPE NAME=VALUE name="ftp" endpoint_type="stream" proto="tcp6" isrpc=FALSE wait=FALSE exec="/usr/sbin/in.ftpd -a" user="root"default bind_addr=""default bind_fail_max=-1default bind_fail_interval=-1default max_con_rate=-1default max_copies=-1default con_rate_offline=-1default failrate_cnt=40default failrate_interval=60default inherit_env=TRUEdefault tcp_trace=FALSEdefault tcp_wrappers=FALSE

    Cambiar un valor de un servicio inet.d

    Para cambiar un valor de los servicios inet.d utilizamos el comando inetadm de la siguiente forma:

    inetadm m nombreservicio parametroacambiar=nuevovalor

    31

  • Comunidad OpenSolaris Hispano

    La ejecucin del comando para cambiar el valor wait=FALSE del servicio ftp a valor wait=TRUE seria:

    inetadm -m ftp wait=TRUE

    y lo verificamos con:

    # inetadm -l ftpSCOPE NAME=VALUE name="ftp" endpoint_type="stream" proto="tcp6" isrpc=FALSE wait=TRUE exec="/usr/sbin/in.ftpd -a" user="root"default bind_addr=""default bind_fail_max=-1default bind_fail_interval=-1default max_con_rate=-1default max_copies=-1default con_rate_offline=-1default failrate_cnt=40default failrate_interval=60default inherit_env=TRUEdefault tcp_trace=FALSEdefault tcp_wrappers=FALSE

    Cambios en inetd.conf

    El fichero /etc/inet/inetd.conf no puede sufrir cambios ya que toda la gestin recae sobre SMF pero en caso de producirse un cambio voluntario o por una aplicacin el sistema nos alertara en /adm/messages que el fichero ha sido modificado para que el administrador determine su naturaleza.

    Dec 28 17:11:11 aulaunix inetd[1737]: [ID 702911 daemon.warning] Configuration file/etc/inet/inetd.conf has been modified since inetconv was last run. "inetconv -i /etc/inet/inetd.conf" must be run to apply any changes to the SMF

    Convertir un servicio de inetd.conf a SMF

    En OpenSolaris 2008.05 se han migrado todos los demonios del fichero /etc/inet/inetd.conf, pero si necesitamos aadir posteriormente un servicio contamos con la utilidad inetconv. El procedimiento es el siguiente:

    1. Creamos los directorio temporales: a. /tmp/nuevoserviciob. /tmp/destinoXML

    32

  • Comunidad OpenSolaris Hispano

    2. Creamos en el directorio /tmp/nuevoservicio un fichero llamado migracion.conf que contenga el nuevo demonio del servicio usando la sintaxis del fichero /etc/inetd.conf. Para nuestro ejemplo hemos creado el fichero con la siguiente lnea:

    tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot

    3. Ejecutamos el comando:

    # inetconv -i /tmp/nuevoservicio/migracion.conf -n -o /tmp/destinoXML

    4. En el directorio /tmp/destinoXML encontraremos un nuevo fichero con extensin .XML al que le ha dado el nombre de tftp-udp6.xml para ser cargado en el repositorio.

    5. Cargamos la nueva configuracin en el repositorio con el comando svcconfig.Ejecutamos el comando:# svccfg import /tmp/destinoXML/tftp-udp6.xml

    Verificamos que ha sido cargado con:# svcs -a | grep -i tftponline 12:39:09 svc:/network/tftp/udp6:default

    Ya podemos gestionar el servicio svc:/network/tftp como un servicio mas de SMF.

    Crear un nuevo servicio SMF

    Para crear un nuevo servicio SMF debemos definir un nuevo SMF manifiest que es fichero XML que contiene los mtodos para arrancar, parar, reiniciar, definicin de dependencias, documentacin etc..

    Recordemos que los servicios SMF estn organizados en grupos con los siguientes nombres:

    Application: Contiene los servicios asociados con aplicaciones.Device: Usado para dispositivos.Milestone: Equivalente a los niveles de ejecucin SVR4Network: Todos los servicios del antiguo inetd.confPlatform: Servicios especficos de la plataforma.System: Servicios independientes de la plataformaSite: Sin uso, reservado para uso futuro.

    Para crear un servicio SMF debemos de seguir los siguientes pasos:1. Establecer el grupo y el nombre para el servicio2. Definir las dependencias 3. Definir instancias y los mtodos de arranque, parada y reinicio.4. Ubicacin de la documentacin

    33

  • Comunidad OpenSolaris Hispano

    5. Crear el fichero XML6. Cargar el fichero XML en el repositorio

    Vamos a proceder a crear un nuevo servicio SMF de un servidor web de Sun Microsystems: Sun ONE Web Server 6 para ello recopilamos la siguiente informacin:

    Vamos a crear el servicio dentro del grupo Application y a su vez dentro de un nuevo subgrupo definido por nosotros llamado servidoresweb y finalmente el identificador del servicio AulaUnix que se corresponde con el servidor web Sun One. Quedando se la siguiente forma: /application/servidoresweb/AulaUnix.

    Definimos como dependencia el nivel de ejecucin 3 o multi-user-server. Los scripts de arranque, parada y reinicio son:

    o /software/binarios/webserversunone/https-aulaunix.aulaunix.org/starto /software/binarios/webserversunone/https-aulaunix.aulaunix.org/stopo /software/binarios/webserversunone/https-aulaunix.aulaunix.org/restart

    La documentacin la ubicamos en /software/documentacion

    Creacin del XML

    En el ejemplo de la figura 3.6 podemos ver un XML completo en el que se define el servicio /application/servidoresweb/AulaUnix. Veamos las partes mas importantes:

    En la primera parte del XML vemos que se han creado los comentarios sobre el servicio y se ha definido un identificador:

    Este identificador debe ser nico y podemos personalizar el texto acorde al servicio que vamos a dar de alta.

    En el siguiente se establece a que grupo pertenece y se define un subgrupo para albergar los servidores web:

    El nombre definido con name= ser el que nos muestre el comando svcs cuando verifiquemos el estado del servicio. Debe ser un nombre sencillo y que permita identificar los servicios de forma practica. En este caso hemos optado por organizar todos los servidores web por debajo de servidoresweb.

    La propiedad de la figura 3.6 create_default_instance nos permite dos valores false y true con los que indicamos que el servicio se inicie o se detenga con las paradas y arranques del sistema. Anteriormente esto

    34

  • Comunidad OpenSolaris Hispano

    lo hacamos con los scripts dentro del run revel correspondient pondiendo la S deltante del nombre para arrancar o la K para parar el servicio.

    Figura 3.6

    Con estamos definiendo una sola instancia, un servicio puede estar compuesto a su vez por otra serie de servicios a los que se denominan instancias. Un ejemplo seria un servidor web Apache con el servicio web escuchando por el puerto 80, otro seguro por el 443 y un tercero por el 8080. Para gestionar el servicio deberamos crear el servicio web con tres instancias. Para nuestro ejemplo solo vamos el servicio con una sola instancia.

    Tenemos que crear las dependencias para que solo arranque el servicio si estn funcionando correctamente todos los servicios del nivel de ejecucin 3. Podemos crear tantas dependencias como sean necesarias haciendo referencia al nombre del servicio:

    Ya hemos definido las dependencias y ahora vamos a crear los mtodos para arrancar, reiniciar y parar. Como vemos en el ejemplo de la figura 3.6 con la opcin name= establecemos el valor start para arrancar, stop para parar y restart para reiniciar.

    Los mtodos definidos se ejecutaran cuando llamemos al comando svcadm de la siguiente forma:

    svcs Mtodo

    svcadm enable nombredelservicio startsvcadm disable nombredelservicio stopsvcadm restart nombredelservicio restart

    El valor de exec= contiene la ruta absoluta al script o binario que se ejecutara y con time timeout_seconds definimos los segundos que esperara SMF como limite para el arranque:

    Ya tenemos creados los mtodos y nos queda definir la informacin sobre la documentacin del servicio en la etiqueta donde establecemos el valor para manpage title con el titulo de la documentacin y del valor manpath con el path absoluto del lugar donde se encuentra la mquina.

    35

  • Comunidad OpenSolaris Hispano

    Importando el servicio en XML a SMF

    Ya tenemos creado el fichero XML y nos queda cargarlo en el repositorio para poder ser gestionado. La carga en el repositorio la realizamos con el comando svccfg ejecutando la siguiente sentencia:svccfg -v import fichero.xml

    # svccfg -v import aulaunix.xml

    svccfg: Tomando captura "previous" de svc:/application/servidoresweb/AulaUnix:default.svccfg: Actualizacin de propiedades de svc:/application/servidoresweb/AulaUnix de acuerdo con la instancia "default".svccfg: svc:/application/servidoresweb/AulaUnix: Actualizando propiedad "tm_man_Documentos_Web_Server/manpath".svccfg: Tomando captura "last-import" para svc:/application/servidoresweb/AulaUnix:default.svccfg: svc:/application/servidoresweb/AulaUnix:default actualizado.svccfg: Importacin finalizada con xito.

    Y verificamos que ha cargado correctamente ejecutando:

    # svcs -l svc:/application/servidoresweb/AulaUnix

    fmri svc:/application/servidoresweb/AulaUnix:defaultnombre Servicio SMF de ejemplo sobre SunONEhabilitada Falsoestado disablednext_state nonestate_time Tue Jan 02 17:56:41 2007reiniciador svc:/system/svc/restarter:defaultdependency require_all/none svc:/milestone/multi-user-server (online)

    Podemos ver las propiedades correctamente, el nombre es svc:/application/servidoresweb/AulaUnix tal como hemos definido en el XML y su estado es disabled..

    El servicio ya esta disponible para gestionarlo con SMF. Verificamos el mtodo start arrancando el servidor web con el comando svcadm:

    # svcadm enable svc:/application/servidoresweb/AulaUnix# svcs | grep -i aulaonline 10:41:16 svc:/application/servidoresweb/AulaUnix:default

    # svcs -p svc:/application/servidoresweb/AulaUnix:defaultSTATE STIME FMRIonline 10:41:16 svc:/application/servidoresweb/AulaUnix:default 10:41:06 3986 webservd-wdog 10:41:06 3987 webservd 10:41:07 3988 webservd

    Podemos verificar el servidor web con ps ef o ejecutando el comando svcs p que nos mostrara los procesos y su pid asociados al servicio.

    Modificar y eliminar un servicio SMF

    36

  • Comunidad OpenSolaris Hispano

    Para modificar las propiedades de un servicio SMF es suficiente con modificar el fichero XML con los nuevos datos y realizar la importacin al repositorio con el comando svccfg:

    # svccfg -v import aulaunix.xml

    Para eliminar un servicio del repositorio ejecutamos la orden: svcfg delete nombredelservicio:

    # svccfg delete svc:/application/servidoresweb/AulaUnix# svcs -a | grep -i aula#

    La figura 3.6 muestra el XML completo del ejemplo que hemos seguido, puedes encontrar el fichero para descargarlo en: www.aulaunix.org/ejemplos

  • Comunidad OpenSolaris Hispano

    timeout_seconds='120'>

    Servicio SMF de ejemplo sobre SunONE

    Figura 3.6

    Delegar la gestin de SMF a otros usuarios

    En algn momento puede surgir la necesidad de delegar la gestin de un servicio a otro usuario del sistema para poder arrancar, parar y reiniciar servicios.

    En nuestro ejemplo vamos a dar permisos al usuario aulaunix para que pueda gestionar el servidor web. El primer paso es aadir al servicio el atributo value_authorization utilizando el comando svcprop:

    svccfg -s /application/servidoresweb/AulaUnix setprop general/value_authorization = astring: solaris.smf.manage

    Ahora aadimos al fichero /etc/user_attr la siguiente lnea y grabamos los cambios: aulaunix::::type=normal;auths=solaris.smf.manage

    Con estos dos pasos el usuario aulaunix ya puede gestionar el servicio web: # su - aulaunix bash-3.00$ /usr/sbin/svcadm disable /application/servidoresweb/AulaUnix bash-3.00$ /usr/sbin/svcadm enable /application/servidoresweb/AulaUnix

    Si deseamos quitarle los permisos para que no pueda continuar gestionando el servicio ejecutamos el comando svcprop para eliminar la propiedad value_authorization:

    #svccfg -s /application/servidoresweb/AulaUnix delprop general/action_authorization

    38

  • Comunidad OpenSolaris Hispano

    Gestin de usuariosLas cuentas de usuario para el acceso al sistema no difieren en Solaris de otros sistemas unix, en el siguiente capitulo aprenderemos a:

    Identificar los ficheros de configuracin de usuarios

    Gestin de usuarios (alta, modificacin y borrado)

    Gestin de grupos (alta, modificacin y borrado)

    Gestionar usuarios en grupos (alta, modificacin y borrado)

    Ficheros de inicializacin

    Ficheros de configuracinLos ficheros de configuracin contienen la informacin sobre las cuentas de usuario, los grupos y

    contraseas. Los ficheros son:

    /etc/passwd

    39

  • Comunidad OpenSolaris Hispano

    Cada una de las lneas del fichero contiene la informacin de un usuarios. Cada lnea esta organizada en campos separados por el carcter dos puntos que hace de separador de campo. Ejemplo de una lnea del fichero passwd:

    aulaunix:x:65535:1:Nombre y apellidos:/export/home/aulaunix:/bin/bash

    El formato tiene la siguiente estructura:

    IDlogin:x:UID:GID:comentario:home_directory:login_shell

    Estos campos son:

    IDlogin: es el identificador con el que hacemos login en el sistema debe de ser nico.

    Contrasea: la contrasea representada por x es almacenada en el fichero /etc/shadow

    UID: esta representado por un nmero superior a 0 ya que 0 pertenece al usuario root. Los nmeros del 1 al 99 estn reservados para usuarios administradores del sistema. Para el resto de usuarios se utiliza el rango del 100 al 60000. Se reserva para el usuario nobody el 60001 y para el usuario noaccess el 60002.

    GID: nmero mayor de 0 que representa el grupo primario al que pertenece el usuario.

    Comentario: Nombre completo del usuario.

    Directorio home (home_directory): ruta absoluta del directorio home para el usuario.

    Shel (login_shell ): Define la shell para el usuario (sh, ksh, csh, etc..)

    /etc/shadow

    Contiene las contraseas de las cuentas de usuario, al ser un fichero que puede comprometer la seguridad del sistema solo el usuario root debe de tener permisos de lectura para el archivo. El contenido del archivo es el siguiente:

    root:SbEPJrMu/wMTw:6445::::::daemon:NP:6445::::::bin:NP:6445::::::sys:NP:6445::::::adm:NP:6445::::::lp:NP:6445::::::uucp:NP:6445::::::nuucp:NP:6445::::::dladm:*LK*:::::::smmsp:NP:6445::::::listen:*LK*:::::::gdm:*LK*:::::::webservd:*LK*:::::::postgres:NP:::::::nobody:*LK*:6445::::::

    40

  • Comunidad OpenSolaris Hispano

    noaccess:*LK*:6445::::::nobody4:*LK*:6445::::::aulaunix:nMF64Wg9ff/HU:13570::::::

    El formato tiene la siguiente estructura:

    IDlogin:pwd:lastchg:min:max:warn:inactivo:expiracion:

    Los datos que contiene cada lnea del fichero shadow son:

    IDlogin: identificador de entrada al sistema.

    pwd: contrasea del usuario cifrada.

    lastchg: das transcurridos entre el 11 de enero de 1970 y la ultima fecha de modificacin.

    min: establece el mnimo nmero de das antes de cambiar la contrasea.

    max: establece el mximo numero de das que una contrasea esta activa.

    warn: el nmero de das de antelacin para el aviso al usuario de la expiracin de la contrasea-

    inactive: das que puede estar la cuenta inactiva (sin entradas al sistema) antes de bloquearse.

    expiracion: Fecha de expiracin de la cuenta.

    /etc/group/Todos los usuarios del sistema tienen que pertenecer a un grupo principal definido en el

    fichero /etc/passwd. Adicionalmente un usuario puede pertenecer ms grupos disponibles en el sistema denominados grupos secundarios definidos en el fichero /etc/group. El siguiente ejemplo muestra las entradas por defecto en el fichero group:

    root::0:other::1:rootbin::2:root,daemonsys::3:root,bin,admadm::4:root,daemonuucp::5:rootmail::6:roottty::7:root,admlp::8:root,admnuucp::9:rootstaff::10:daemon::12:rootsysadmin::14:smmsp::25:gdm::50:webservd::80:postgres::90:nobody::60001:noaccess::60002:

    41

  • Comunidad OpenSolaris Hispano

    nogroup::65534:

    El formato tiene la siguiente estructura:

    nonmbredelgrupo:group-password:GID:listausuarios

    Los datos que contiene cada lnea del fichero group son:

    nonmbredelgrupo: contiene el nombre del grupo.

    group-password: Utilizado en versiones mas antiguas de unix. Actualmente no es utilizado.

    GID: nmero que identifica al grupo y debe nico en el sistema.

    listausuarios: contiene la lista de usuarios separados por coma que pertenecen al grupo.

    Gestin de usuarios

    Crear usuario

    El comando empleado para crear usuarios es useradd con las siguiente sintaxis:

    useradd [u uid] g [gid] G [gid1,gid2, ] [-d dir] m [s shell] [c comment] [e expire] usuario

    Los parmetros admitidos son los siguientes:

    -u define un uid nico para el usuario.

    -g define el grupo primario al que va a pertenecer el usuario.

    -G define los grupos secundarios a los que va a pertenecer el usuario.

    -d define el path absoluto para el home del usuario.

    -m fuerza la creacin del home del usuario si no existe.

    -s define la shell para el usuario, por defecto asigna /bin/sh

    -c establece el nombre completo del usuario o cualquier otro comentario.

    -o permite la duplicacin del uid del usuario.

    -e fecha de expiracin de la cuenta.

    -f tiempo mximo admitido de inactividad para la cuenta. Si el usuario no entra en el sistema en el tiempo establecido la cuenta se bloquea.

    -k permite la copia de archivos de inicializacin personalizados al home del usuario al crearlo.

    42

  • Comunidad OpenSolaris Hispano

    Ejemplo de uso de useradd:

    Crear usuario:

    El siguiente ejemplo muestra como crear el usuario aula, definir su UID manualmente e incluirlo en el grupo alumnos definiendo su home en /export/home/aulaunix, definimimos la shell como ksh.

    Ejecucin del comando:

    # useradd -u 109 -g alumnos -d /export/home/aulaunix -m -s /bin/ksh -cusuario de pruebas aula

    Inmediatamente se aade la siguiente lnea al fichero /etc/passwd:

    aula:x:109:100:usuarios de pruebas:/export/home/aulaunix:/bin/ksh

    Modificar un usuarioSi ya tenemos un usuario en el sistema y deseamos cambiar alguna de sus propiedades utilizamos el

    comando usermod:

    Las opciones permitidas son:

    -o permite la duplicacin de un UID

    -m Mueve el home del usuario

    -l Cambio del nombre de inicio de sesin

    -f Definimos el nmero de das puede estar inactiva. Si la cuenta no es usada en el nmero de das especificado se bloquea.

    -e Define la fecha de caducidad de la cuenta. Cuando llega ldicha fecha la cuenta es inutilizable.

    Ejemplo de uso del comando usermod:

    Cambiamos el home del usuario dgalan a /home/nuevopath

    #usermod m d /export/nuevohome dgalan

    Este ejemplo implica que el nuevo home para el usuario dgalan es /export/nuevohome y mueve todos los archivos del viejo directorio al nuevo.

    Vamos a ejecutar el ejemplo anterior pero adems vamos a cambiar el nombre de inicio de sesin:

    #usermod m d /export/nuevohome l davidgalan 43

  • Comunidad OpenSolaris Hispano

    Despus de ejecutar el comando tenemos un nuevo home y un nuevo nombre de inicio de sesin.

    Borrado de usuariosBorrar un usuario del sistema es muy sencillo utilizando el comando userdel. userdel r [usuario a borrar]

    La opcin r elimina el home del usuario si este existe, pero no borra los archivos que el usuario pueda tener repartidos en otros directorios de la mquina.

    Para eliminar todos los archivos del usuario deberamos de recurrir a una bsqueda recursiva utilizando el comando find. Buscaramos todos los archivos y directorios pertenecientes al usuario eliminado.

    Ejemplo de borrado de usuario:userdel r dgalan

    Borramos el usuario dgalan y los contenidos de su directorio home.

    Cambiar la contrasea de usuario

    Para cambiar la contrasea de un usuario recurrimos al comando passwd:

    passwd [usuario]

    Ejemplo de cambio de contrasea:bash-3.00# passwd dgalanNueva contrasea: Vuelva a escribir la nueva contrasea: passwd: la contrasea se ha cambiado por dgalan satisfactoriamentebash-3.00#

    Gestin de gruposHemos visto como crear, modificar y eliminar usuarios. Ahora vamos a realizar el mismo recorrido

    pero esta vez gestionando grupos, para ello utilizaremos los comandos:

    groupadd

    groupmod

    groupdel

    Aadir un nuevo grupo al sistemaPara aadir un nuevo grupo al sistema recurrimos al comando groupadd. El GID y el nombre del

    grupo han de ser nicos.

    Ejemplo para aadir un grupo llamado operadores:

    44

  • Comunidad OpenSolaris Hispano

    bash-3.00# groupadd -g 124 admins

    Lo verificamos:

    bash-3.00# grep admins /etc/group admins::124:bash-3.00#

    Hemos buscado el nuevo usuario en el fichero de grupos y efectivamente se aada la nueva entrada de grupo.

    Modificar un grupoPodemos ejecutar cambios en un grupo existente con el comando groupmod que nos permite

    modificar el GID o renombrar un grupo.

    groupmod d [GID] n [nuevo nombre de grupo]

    Este primer ejemplo cambia el GID para el grupo opera:#groupmod g 125 opera

    Y este otro ejemplo cambia el nombre al grupo opera por monitor#groupmod n monitor opera

    Eliminar un grupoEliminar un grupo existente es muy facil con el comando groupdel.

    groupdel [nombre del grupo]Ejemplo:

    bash-3.00# groupdel admins

    Cambio de gruposSiempre que entramos al sistema lo hacemos perteneciendo al grupo principal, pero un usuario que

    pertenece a varios grupos puede necesitar operar en cada uno de ellos en diferentes momentos de su sesin en el sistema.

    Para cambiar de grupo recurrimos al comando newgrp, veamos un ejemplo practico:Hemos entrado al sistema con el usuario dgalan tal como se puede ver en el siguiente ejemplo:

    $ iduid=109(dgalan) gid=1(other)

    45

  • Comunidad OpenSolaris Hispano

    Para pasarnos al grupo admin ejecutamos:# newgrp admins

    Lo verificamos:$ iduid=109(dgalan) gid=1(other) gid=45(admins)

    A partir de este momento todos los ficheros y directorio creados pertenecern al grupo admins.

    Qu hacen los usuarios en el sistema?

    El comando who

    Solaris al igual que el resto de sistemas Unix nos facilita una serie de comandos que nos permite averiguar que usuarios estn conectados al sistema y desde donde se han conectado.

    El primero de estos comandos es who que muestra una lista con todos los usuarios conectados al sistema mostrando datos como:

    usuario conexin fecha de entrada

    Ejemplo del comando who:

    $ whoroot console Sep 1 19:41aula pts/1 Sep 1 19:45 (192.168.1.33)$

    El comando w

    Otro comando a nuestro alcance es w que muestra la lista de usuarios en el sistema como el comando who pero aadiendo datos como los procesos y carga de CPU.Ejemplo del comando w:$ w 9:05pm en funcionamiento 1:26, 2 usuarios, promedio de carga: 0,01, 0,01, 0,21User tty login@ idle JCPU PCPU whatroot console 7:41pm 1:21 -shaula pts/1 7:45pm 1 w

    El comando finger Muestra informacin detallada de los usuarios conectados al sistema y detalles de usuarios de forma

    individual, es un comando basado

    46

  • Comunidad OpenSolaris Hispano

    Ejemplo de la salida del comando finger para todos los usuarios:

    finder: no encontrado$ fingerLogin Name TTY Idle When Whereroot Super-User console 1:30 Sat 19:41 aula ??? pts/1 Sat 19:45 192.168.1.33 $

    Ejemplo de la salida del comando finger para obtener detalles de un solo usuario:Login name: root In real life: Super-UserDirectory: / Shell: /sbin/shOn since Sep 1 19:41:45 on console 1 hour 31 minutes Idle TimeNo unread mailNo Plan.

    El segundo ejemplo nos aporta informacin como la shell y el home del usuario as como el tiempo conectado.

    47

  • Comunidad OpenSolaris Hispano

    Procesos y sealesIntroduccin

    En este capitulo veremos como gestiona Solaris los procesos que no difiere mucho del resto de unix existentes en el mercado. Igualmente si provienes de Linux te resultar fcil adaptarte a las singularidades de Solaris. Cada programa que se ejecuta en el sistema se corresponde con uno o varios procesos. Solaris como cualquier sistema multiusuario permite a cualquier usuario ejecutar ms de un proceso simultneamente, los procesos de un mismo usuario pueden comunicarse entre si pero no con los procesos de otro usuario. El usuario root es el nico que puede comunicarse con todos los procesos en ejecucin.

    Cada proceso est identificado por un PID nico y a su vez tienen asociado un identificador de usuario (UID) y su grupo (GID).

    Ver los procesos en ejecucinUno de los comandos mas habituales para un administrador de sistemas es sin duda el comando ps.

    El comando ps permite ver los procesos en ejecucin en el sistema y obtener informacin de cada uno de ellos.

    Veamos un ejemplo de la ejecucin del comando ps ef: UID PID PPID C STIME TTY TIME CMD root 0 0 0 23:51:57 ? 30:42 sched root 1 0 0 23:51:58 ? 0:00 /sbin/init root 2 0 0 23:51:58 ? 0:00 pageout root 3 0 0 23:51:58 ? 0:01 fsflush daemon 223 1 0 23:52:18 ? 0:00 /usr/sbin/rpcbind root 7 1 0 23:51:58 ? 0:10 /lib/svc/bin/svc.startd root 45 1 0 23:52:02 ? 0:00 /sbin/dhcpagent root 9 1 0 23:51:58 ? 0:19 /lib/svc/bin/svc.configd root 230 1 0 23:52:18 ? 0:00 /usr/lib/dmi/dmispd root 419 1 0 23:52:29 ? 0:00 /usr/lib/autofs/automountd root 139 1 0 23:52:14 ? 0:00 /usr/lib/sysevent/syseventd root 71 1 0 23:52:09 ? 0:00 /usr/sfw/sbin/snmpd

    La informacin que nos aporta la salida del comando:

    48

  • Comunidad OpenSolaris Hispano

    UID: usuario propietario del proceso.

    PID: nmero de identificacin del proceso.

    PPID: nmero que identifica el proceso padre.

    STIME: fecha en la que se arranc el proceso.

    TTY: terminal del proceso.

    CMD: programa en ejecucin.

    La siguiente tabla contiene los parmetros ms tiles para utilizar con el comando ps:

    Parmetro Funcin-a Muestra los procesos mas solicitados.

    -e Muestra todos los procesos en ejecucin.-f Muestra informacin ampliada de los

    procesos.-p Muestra el ID de la CPU asociada al proceso.-u Muestra todos los procesos de un usuario

    especfico.-c Muestra los datos con formato planificacin

    y prioridad de procesos.-G Muestra los procesos ejecutados por un

    grupo.

    Los siguientes ejemplos muestran el uso del comando ps:

    Ver los procesos pertenecientes al usuario aulaunix:bash-3.00$ ps -u aulaunix PID TTY TIME CMD 712 pts/1 0:00 bash 733 pts/1 0:00 ps 682 ? 0:01 sshd 684 pts/1 0:00 sh

    Muestra los datos en formato planificacin:bash-3.00$ ps -c PID CLS PRI TTY TIME CMD 712 TS 49 pts/1 0:00 bash 734 TS 49 pts/1 0:00 ps 684 TS 59 pts/1 0:00 sh

    La opcin ejecutada en el ejemplo con c muestra informacin interesante como los valores CLS que indica el tipo de prioridad y PRI que muestra la prioridad del proceso.

    Muestra los procesos en ejecucin del grupo aulaunix: 49

  • Comunidad OpenSolaris Hispano

    bash-3.00$ grep -i aulaunix /etc/groupaulaunix::100:bash-3.00$ ps -G 100 PID TTY TIME CMD 712 pts/1 0:00 bash 742 pts/1 0:00 ps 682 ? 0:01 sshd 684 pts/1 0:00 sh

    Observa que el grupo es indicado con su GID que hemos obtenido mirando su valor en el fichero /etc/group.

    El comando prstat

    El comando prstat muestra informacin de los procesos en ejecucin ordenados por el uso de CPU. Ejemplo de la ejecucin del comando prstat:

    bash-3.00$ prstatPID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 668 noaccess 159M 80M sleep 59 0 0:00:29 0,5% java/24 744 aulaunix 4492K 2644K cpu0 39 0 0:00:00 0,4% prstat/1 682 aulaunix 7952K 2100K sleep 59 0 0:00:00 0,0% sshd/1 712 aulaunix 2484K 1612K sleep 49 0 0:00:00 0,0% bash/1 131 root 3824K 2360K sleep 59 0 0:00:00 0,0% nscd/24 535 root 4444K 1724K sleep 59 0 0:00:00 0,0% dtlogin/1 670 root 7096K 2076K sleep 59 0 0:00:00 0,0% sendmail/1 1 root 2024K 1120K sleep 59 0 0:00:00 0,0% init/1 269 root 4416K 3052K sleep 59 0 0:00:03 0,0% inetd/4 278 root 2820K 1140K sleep 59 0 0:00:00 0,0% sh/1 214 root 2272K 900K sleep 59 0 0:00:00 0,0% cron/1 143 daemon 3932K 1968K sleep 59 0 0:00:00 0,0% kcfd/3 111 root 2156K 1296K sleep 59 0 0:00:00 0,0% snmpdx/1 258 root 1700K 896K sleep 59 0 0:00:00 0,0% sac/1 71 root 6556K 4572K sleep 59 0 0:00:00 0,0% snmpd/1Total: 43 processes, 180 lwps, load averages: 0,02, 0,03, 0,31

    En la siguiente lista puedes ver la informacin aportada por la ejecucin del comando:

    PID: identificador del proceso.

    USERNAME: propietario del proceso.

    SIZE: memoria virtual utilizada por el proceso.

    STATE: estado del proceso, los estados del proceso pueden ser cpu, sleep, run, zombie y stop.

    PRI: prioridad del proceso.

    NICE: valor para el calculo de la prioridad del proceso.

    TIME: tiempo total que lleva el procesos ejecutandose.

    CPU: porcentaje de CPU utilizado por el proceso.

    PROCCESS: nombre del proceso.

    50

  • Comunidad OpenSolaris Hispano

    El comando prstat proporciona diversos parmetros para obtener mas informacin, los parmetros mas tiles son:

    -t: muestra informacin agrupada por usuario.

    -p [PID]: muestra solo la informacin para un solo proceso identificado por su PID.

    -n: nmero mximo de procesos mostrados.

    Seales

    Los procesos en ejecucin puede ser necesario detenerlos por que su funcionamiento no es el esperado, no responden o cualquier otra causa. El comando kill nos permite enviar una seal al proceso para que se detenga.

    Las seales que podemos enviar son:

    Nombre Nmero de seal.

    Descripcin

    SIGHUP 1 Seal de corte de seal, interrumpir la seal de la conexin telefnica o un terminal.

    SIGINT 2 Seal de Control-C (procedente del teclado)

    SIGKILL 9 Seal de eliminacin ningn proceso puede ignorar esta seal.

    SIGTERM 15 Finalizar proceso de forma ordenada. Ejemplo para una BDDD, LDAP etc.. para que cierre las conexiones, ficheros etc..

    Formato de kill:kill seal pidproceso

    Ejempo de killMatar una sesin ssh:# adtasweb01 /var/opt/aat/d#ps -ef | grep ssh root 449 1 0 Aug 20 ? 1:01 /usr/local/sbin/sshd root 25618 449 0 17:51:52 ? 0:00 /usr/local/sbin/sshd -R ora9 18084 18082 0 20:25:28 ? 0:00 /usr/local/sbin/sshd -R ora9 8645 8476 0 20:22:26 ? 0:00 /usr/local/sbin/sshd R# kill -9 25618 #

    La seal SIGHUP comnmente conocida como interrumpir una conexin telefnica o de Terminal, esta seal puede provocar en servicios como inetd que relean el fichero de configuracin.

    51

  • Comunidad OpenSolaris Hispano

    Seal en cursoEn algn momento puede interesarnos ver todas las seales enviadas a un proceso en ejecucin para

    ello recurrimos al comando psig.Formato:psig pidEjemplo de psig:#psig 1393613936: /usr/lib/ssh/sshdHUP defaultINT defaultQUIT defaultILL defaultTRAP defaultABRT defaultEMT defaultFPE defaultKILL defaultBUS defaultSEGV defaultSYS defaultPIPE ignoredALRM caught 0x2d7fc RESETHAND,NODEFERTERM defaultUSR1 defaultUSR2 defaultCLD caught 0x40f14 0PWR defaultWINCH defaultURG default

    Seales de proceso:

    Nombre Nmero de seal.

    Descripcin

    SIGHUP 1 Seal de corte de seal, interrumpir la seal de la conexin telefnica o un terminal.

    SIGINT 2 Seal de Control-C (procedente del teclado)

    SIGKILL 9 Seal de eliminacin ningn proceso puede ignorar esta seal.

    SIGTERM 15 Finalizar proceso de forma ordenada. Ejemplo para una BDDD, LDAP etc.. para que cierre las conexiones, ficheros etc..

    SIGINT 3 SalirSIGILL 4 Instruccin ilegal.SIGTRAP 5 Punto de rupturaSIGABRT 6 Abortar

    52

  • Comunidad OpenSolaris Hispano

    SIGEMT 7 Trap de emulacinSIGFPE 8 Excepcin aritmticaSIGBUS 10 Error en busSIGSEGV 11 Fallo de segmentacinSIGSYS 12 Llamada al sistema errneaSIGPIPE 13 Pipe rotaSIGALRM 14 Finalizada

    rbol de procesos

    Disponemos de un comando llamado ptree que nos permite ver los procesos de forma jerrquica es decir podemos ver los procesos hijos desplegados de forma arbrea. El comando ptree se lanza sin opciones, veamos el ejemplo de su ejecucin:adtasbac01 /opt/na#ptree51 /usr/lib/sysevent/syseventd60 /usr/lib/picl/picld137 /usr/lib/sparcv9/cpudiagd -i174 /usr/sbin/rpcbind197 /usr/sbin/inetd -s 326 rpc.metad 5089 in.telnetd 5094 -ksh 16041 bash 28382 bash 15728 ptree 22123 in.telnetd 22125 -ksh 23114 bash218 /usr/lib/nfs/statd219 /usr/lib/nfs/lockd221 /usr/lib/autofs/automountd 224 /usr/lib/autofs/automountd235 /usr/sbin/syslogd242 /usr/sbin/cron263 /usr/sbin/nscd266 /usr/lib/power/powerd

    Informacin sobre procesos:

    A continuacin vamos a ver una serie de comandos que nos aportaran informacin sobre los procesos en ejecucin.

    Ver las libreras en uso por un proceso.

    Para averiguar las libreras en uso por un proceso recurrimos al comando pldd:

    53

  • Comunidad OpenSolaris Hispano

    pldd [PID del proceso]

    El siguiente ejemplo muestra las libreras utilizadas por el proceso 6171 perteneciente a un servicio web de Sun Java:

    # pldd 67176717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88/usr/lib/libsocket.so.1/usr/lib/libnsl.so.1/usr/lib/libC.so.5/usr/lib/libm.so.1/usr/lib/libw.so.1/usr/lib/libc.so.1/usr/lib/libdl.so.1/usr/lib/libmp.so.2/usr/platform/sun4u-us3/lib/libc_psr.so.1

    Descriptores de ficheros abiertos

    El comando pfiles lista todos los descriptores de ficheros abiertos por un proceso:

    pfiles [PID del proceso]

    El resultado de la ejecucin del comando pfiles para un servicio web es la siguiente:

    # pfiles 67176717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88 Current rlimit: 1024 file descriptors 1: S_IFCHR mode:0666 dev:85,1 ino:72269 uid:0 gid:3 rdev:13,2 O_RDWR 2: S_IFCHR mode:0666 dev:85,1 ino:72269 uid:0 gid:3 rdev:13,2 O_RDWR

    Mapa de espacio de direcciones

    El comando pmap mustrela el uso que hace de la memoria un proceso mostrando una mapa del espacio de direcciones:

    pmap [PID del proceso]

    El siguiente ejemplo muestra la salida del comando pmap:#pmap 67176717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_8800010000 24K read/exec /opt/app/SunWeb/ /bin/https/bin/Cgistub00024000 8K read/write/exec /opt/app/SunWeb/

    54

  • Comunidad OpenSolaris Hispano

    0/bin/https/bin/Cgistub00026000 8K read/write/exec [ heap ]FF080000 688K read/exec /usr/lib/libc.so.1FF13C000 32K read/write/exec /usr/lib/libc.so.1FF1B0000 224K read/exec /usr/lib/libm.so.1FF1F6000 8K read/write/exec /usr/lib/libm.so.1FF200000 312K read/exec /usr/lib/libC.so.5FF25C000 32K read/write/exec /usr/lib/libC.so.5FF264000 64K read/write/exec /usr/lib/libC.so.5FF280000 576K read/exec /usr/lib/libnsl.so.1FF310000 40K read/write/exec /usr/lib/libnsl.so.1FF31A000 24K read/write/exec /usr/lib/libnsl.so.1FF330000 16K read/exec /usr/lib/libmp.so.2FF344000 8K read/write/exec /usr/lib/libmp.so.2FF350000 8K read/write/exec /usr/lib/libdl.so.1FF360000 8K read/exec /usr/platform/sun4u-us3/lib/libc_psr.so.1FF370000 8K read/write/exec [ anon ]FF380000 40K read/exec /usr/lib/libsocket.so.1FF39A000 8K read/write/exec /usr/lib/libsocket.so.1FF3A0000 8K read/exec /usr/lib/libw.so.1FF3B0000 192K read/exec /usr/lib/ld.so.1FF3E0000 8K read/write/exec /usr/lib/ld.so.1FF3E2000 8K read/write/exec /usr/lib/ld.so.1FFBEA000 24K read/write/exec [ stack ] total 2376K

    Informacin sobre las CPU

    A continuacin veremos una serie de comandos que nos permiten observar los procesos y la carga de trabajo de las CPU del sistema.El comando ps pero en versin BSD alojado en /usr/ucb nos permite ver el consumo de CPU y memoria de los procesos:/usr/ucb/ps -aux

    El siguiente ejemplo muestra los diez primeros procesos que mas consumen recursos, se ha aade el comando head para que solo muestra los diez primeros resultados:

    /#usr/ucb/ps -aux |head

    USER PID %CPU %MEM SZ RSS TT S START TIME COMMANDroot 792 0.5 0.271760 3528 ? S Aug 24 588:50 /usr/lib/mixer_approot 3 0.4 0.0 0 0 ? S Aug 24 842:00 fsflushj.vazque 20211 0.4 0.1 3040 1632 ? S 12:39:01 0:00 /usr/local/bin/cvsroot 790 0.2 1.713910434080 ? S Aug 24 230:50 /usr/bin/java -jarroot 438 0.2 1.04366418752 ? S Aug 24 189:06 /usr/openwin/bin/Xroot 607 0.2 0.314600 5968 pts/2 S Aug 24 197:45 /usr/lib/gconfd-2root 937 0.1 0.164576 1576 ? S Aug 24 144:52 /usr/lib/at-spi-reroot 677 0.1 0.176912 1800 ? S Aug 24 147:34 gnome-panel --sm-croot 20213 0.1 0.1 1384 952 pts/6 O 12:39:33 0:00 usr/ucb/ps aux

    Los comandos psinfo y mpstat nos muestran estadsticas sobre el estado de las CPU del sistema:mpstat muestra la actividad de las CPU de forma individual, veamos la ejecucin del comando mpstat:

    CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 1 7 1 120 412 309 168 4 21 3 0 638 1 4 0 95

    55

  • Comunidad OpenSolaris Hispano

    3 7 1 13 115 107 179 7 21 3 0 633 1 3 0 96

    La informacin ms importante que vemos en el resultado de la ejecucin del comando es:

    mjf que corresponde con fallos importantes.

    minf que corresponde con fallos de menor importancia.

    xcal aporta informacin sobre la llamada entre las CPU.

    intr indica el nmero de interrupciones.

    wt indica en % el tiempo consumido por los procesos de usuario.

    sys tiempo de CPU consumido por los procesos del sistema.

    El comando psrinfo mostrar el estado de las CPU y cuando se iniciaron. Ejemplo de la salida del comando psrinfo:

    #psrinfo0 on-line since 10/04/07 09:03:131 on-line since 10/04/07 09:03:132 on-line since 10/04/07 09:03:133 on-line since 10/04/07 09:03:134 on-line since 10/04/07 09:03:135 on-line since 10/04/07 09:03:136 on-line since 10/04/07 09:03:137 on-line since 10/04/07 09:03:0116 on-line since 10/04/07 09:03:1317 on-line since 10/04/07 09:03:1318 on-line since 10/04/07 09:03:1319 on-line since 10/04/07 09:03:1320 on-line since 10/04/07 09:03:1321 on-line since 10/04/07 09:03:1322 on-line since 10/04/07 09:03:1323 on-line since 10/04/07 09:03:1

    Trabajos planificados

    El comando at

    El comando at permite la ejecucin de un trabajo una sola vez en una fecha y hora determinada.

    Sintaxis:

    at [-m] [-r id_trabajo] [-q nombre_cola][-t hora] [fecha]

    Parmetro Funcin-m Cuando termina el trabajo enva un correo al usuario.-r Elimina un trabajo programado.

    56

  • Comunidad OpenSolaris Hispano

    -q Establece nombre de cola.-l Muestra los procesos en cola.

    hora Establece la hora de ejecucin.fecha Establece la fecha de ejeucin.

    Ejemplos de utilizacin del comando at:

    Programar un trabajo.

    El siguiente ejemplo planifica la parada de un servidor web para las 15:30:# at 03:00 pmat> /opt/servidorweb/stop.shat> at> commands will be executed using /sbin/shjob 1195653600.a at Wed Nov 21 15:00:00 2007#

    El ejemplo primero establece la hora con at 03:00 pm seguidamente introducimos el comando que se va a ejecutar /opt/servidorweb/stop.sh y salimos pulsando Control-d. Observa que el comando nos devuelve el nombre del trabajo job 1195653600.a.

    Ver los trabajos en espera de ejecucin.

    El comando at l muestra los trabajos pendientes y su hora de ejecucin:

    # at -luser = root 1195653600.a Wed Nov 21 15:00:00 2007#

    El ejemplo muestra el trabajo 1195653600.a que se ejecutar el Mircoles 21 de Noviembre a las 15:00.

    Eliminar un trabajo programado.

    Para eliminar la ejecucin de un trabajo programado utilizamos el comando at r nombredeltrabajo :

    El siguiente ejemplo muestra como eliminar un trabajo:# at -r 1195653600.a

    57

  • Comunidad OpenSolaris Hispano

    Permitir la ejecucin del comando at

    No todos los usuarios del sistema pueden ejecutar el comando at, para autorizar o denegar el uso del comando at hay que editar los ficheros /etc/cron.dat.deny o /etc/cron.d/at.allow ambos ficheros de root.

    El fichero at.deny contiene los usuarios a los que se deniega el uso del comando at:Contenido del fichero at.deny:

    # cat /etc/cron.d/at.denydaemonbinsmtpnuucplistennobodynoaccess

    El fichero at.allow contiene los usuarios que pueden ejecutar el comando at, en ocasiones el fichero puede no existir por lo que hay que crearlo.

    Contenido del fichero at.allow:

    # cat /etc/cron.d/at.allowwebldapdgalan

    Logs de at

    Toda la actividad realizada con el comando at queda registrada en el log ubicado en /var/cron/log.

    Crontab

    El comando crontab permite la ejecucin de tareas programadas y forma repetitiva. A modo de ejemplo prctico permite tareas como:

    Programar un backup que se ejecute solamente por la noche los martes y jueves de cada semana.

    Un proceso que se ejecute cada cinco minutos los lunes, mircoles y viernes.

    Un parada de un servicio todos los domingos a las 12:00.

    Cuando programamos una tarea con el comando crontab estas se almacenan en /var/spool/cron/crontabs.

    El comando crontab almacena la informacin en diferentes lneas con el siguiente formato:

    58

  • Comunidad OpenSolaris Hispano

    1 2 3 4 5 /usr/local/bin/iniciobackup.sh

    Comienza con cinco campos separados por espacios seguido de la tarea a ejecutar. Los cinco campos representan:

    Campo Descripcin1 El primer campo contiene los minutos. Valores entre 0 y 59.2 El segundo campo tiene la hora. Valores entre 0 y 23.3 Da del mes, valore entre 1 y 31.4 El mes del ao, valores entre 1 y 12.5 Da de la semana, valores entre 0 y 6.

    Usando crontab

    El comando crontab permite ver, crear, modificar o eliminar un trabajo planificado.

    Ver tareas planificadas

    Para ver las tareas planificadas ejecutamos el comando crontab l obteniendo la lista de tareas programas:

    # crontab -l#ident "@(#)root 1.20 01/11/06 SMI"## The root crontab should be used to perform accounting data collection.## The rtc command is run to adjust the real time clock if and when# daylight savings time changes.#10 3 * * * /usr/sbin/logadm15 3 * * 0 /usr/lib/fs/nfs/nfsfind1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&130 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean#10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___

    Cada usuario solo puede ver sus propias planificaciones siendo una excepcin el usuario root que puede ver la planificacin de cualquier usuario del sistema utilizando el comando crontab de la siguiente forma:

    crontab l nombre_de_usuario

    59

  • Comunidad OpenSolaris Hispano

    Editor o crear entradas en el crontab

    En los siguientes ejemplos vamos a mostrar como editar el crontab para editar o aadir nuevas entradas.

    Para comenzar tenemos que establecer el editor por defecto ejecutando:

    EDITOR=viexport EDITOR

    Abrimos el fichero crontab ejecutando:crontab -e

    Ahora veremos en el editor vi las diferentes entradas programadas:

    # The root crontab should be used to perform accounting data collection.## The rtc command is run to adjust the real time clock if and when# daylight savings time changes.#10 3 * * * /usr/sbin/logadm15 3 * * 0 /usr/lib/fs/nfs/nfsfind1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&130 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean#10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___

    Con el editor vi podemos aadir nuevas lneas, modificar las existentes o eliminar entradas para eliminarlas de la planificacin.

    La siguiente tabla muestra ejemplos de entradas crontab:

    Entrada en el crontab Descripcin0 0 * * * /opt/miscript.sh Se ejecuta todos los das a las 00.00

    30 6 9 * * /opt/miscript.sh Se ejecuta el da 9 de cada mes las 6:30.

    00 7 1,3,7,12,15,20 * * /opt/miscript.sh Se ejecuta los das 1,2,3,4,5,6 de cada mes a las 19:00

    0,10,20,30,40,50 * * * * /opt/miscript.sh Se ejecuta cada diez minutos

    Permitir la ejecucin del comando crontab

    No todos los usuarios del sistema pueden ejecutar el comando crontab, para autorizar o denegar el uso del comando at hay que editar los ficheros /etc/cron.dat.deny o /etc/cron.d/at.allow ambos ficheros de root.

    60

  • Comunidad OpenSolaris Hispano

    El fichero at.deny contiene los usuarios a los que se deniega el uso del comando at:Contenido del fichero at.deny:

    # cat /etc/cron.d/at.denydaemonbinsmtpnuucplistennobodynoaccess

    El fichero at.allow contiene los usuarios que pueden ejecutar el comando at, en ocasiones el fichero