Continuando con el manejo de servicios SMF para monitorizar o cambiar el estado de los servicios se utilizan los comandos:
- svcs: información sobre el estado del servicio y / o dependencias.
- svcadm: acciones administrativas como cambiar el estado de un servicio.
- svccfg: Crear nuevos servicios a partir de un archivo xml y modificar las propiedades de un servicio.
- svcprop: obtener y cambiar valores de la bbdd sobre un servicio.
Obtener información de los servicios (svcs)
Para mas organización los servicios SMF estan en grupos con los siguientes nombres:
- Application: servicios asociados a aplicaciones
- Device: dependencias
- Milestone: niveles de ejecución
- Network: servicios del antiguo inetd.conf
- Platform: servicios específicos de la plataforma
- System: servicios independientes de la plataforma
- Site: por ahora sin uso (que precavidos… hasta inventan esto para el futuro)
Información del servicio
sendmail: (utilizo el grep para ser puntual en la búsqueda)
# svcs -a |grep sendmail
online 9:34:28 svc:/network/smtp:sendmail
Como se puede ver pertenece a /network
Dependencias de un servicio
El mismo sendmail (nota: es necesario colocar la “ruta” completa del servicio)
# svcs -d svc:/network/smtp:sendmail
STATE STIME FMRI
online 9:34:16 svc:/system/identity:domain
online 9:34:19 svc:/network/service:default
online 9:34:19 svc:/milestone/name-services:default
online 9:34:21 svc:/system/filesystem/local:default
online 9:34:27 svc:/system/filesystem/autofs:default
online 9:34:28 svc:/system/system-log:default
Como vemos para que sendmail pueda ser ejecutado los otros servicios deben estar en ejecución (son sus dependencias)
Procesos asociados a un servicio
El comando es svcs -p. Claro que tambien podemos utilizar el viejo ps -fea. El ejemplo con sendmail:
# svcs -p svc:/network/smtp:sendmail
STATE STIME FMRI
online 13:53:15 svc:/network/smtp:sendmail
13:53:16 551 sendmail
13:53:16 552 sendmail
# ps -fea |grep sendmail
smmsp 551 1 0 13:53:17 ? 0:00 /usr/lib/sendmail -Ac -q15m
root 552 1 0 13:53:17 ? 0:00 /usr/lib/sendmail -bl -q15m
Información detallada de un servicio
SMP aporta tambien información detallada de un servicio como su nombre, si esta habilitado, su propio estado y dependecias. Comando: svcs -l
# svcs -l svc:/network/smtp:sendmail
fmri svc:/network/smtp:sendmail
name sendmail SMTP mail transfer agent
enabled true
state online
next_state none
state_time 3 de octubre de 2008 13:53:15 COT
logfile /var/svc/log/network-smtp:sendmail.log
restarter svc:/system/svc/restarter:default
contract_id 73
dependency require_all/refresh file://localhost/etc/mail/sendmail.cf (online)
dependency require_all/refresh file://localhost/etc/nsswitch.conf (online)
dependency optional_all/none svc:/system/filesystem/autofs (online)
dependency require_all/none svc:/system/filesystem/local (online)
dependency require_all/none svc:/network/service (online)
dependency require_all/refresh svc:/milestone/name-services (online)
dependency optional_all/refresh svc:/system/identity:domain (online)
dependency optional_all/none svc:/system/system-log (online)
Diagnostico de fallos
Con el comando svcs -x nos muestra información detallada en caso de un error en el arranque de un servicio. Útil para el diagnostico de errores.
Parar, arrancar y reiniciar un servicio
Podemos dejar temporal o permanentemente detenido un servicio deseado. Para que el cambio sea temporal:
# svcadm disable -t svc:/network/smtp:sendmail
Y si adicional verificamos con el diagnostico de fallos (punto anterior)
# svcs -x svc:/network/smtp:sendmail
svc:/network/smtp:sendmail (sendmail SMTP mail transfer agent)
State: disabled since 3 de octubre de 2008 14:15:46 COT
Reason: Temporarily disabled by an administrator.
See: http://sun.com/msg/SMF-8000-1S
See: sendmail(1M)
See: /var/svc/log/network-smtp:sendmail.log
Impact: This service is not running.
Más claro no se puede: informa que el servicio fue temporalmente desabilitado por un administrador. Además informa donde se puede hallar mas info al respecto y hasta la ubicación del archivo log.
Para iniciar nuevamente el servicio:
# svcadm enable -t svc:/network/smtp:sendmail
Para reiniciar (restart como en GNU/Linux) ejecutamos
# svcadm restart svc:/network/smtp:sendmail
Haciendo el reinicio del servicio y cambiando los pid del mismo.
Como quiero dejar permanente el servicio sendmail desabilitado ejecuto la parada del servicio sin la variable de temporal (-t)
# svcadm disable svc:/network/smtp:sendmail
Y luego verifico:
# svcs -x svc:/network/smtp:sendmail
svc:/network/smtp:sendmail (sendmail SMTP mail transfer agent)
State: disabled since 3 de octubre de 2008 14:26:47 COT
Reason: Disabled by an administrator.
See: http://sun.com/msg/SMF-8000-05
See: sendmail(1M)
See: /var/svc/log/network-smtp:sendmail.log
Impact: This service is not running.
Creo que con eso es suficiente para administrar rapidamente los servicios ejecutandose. Si ya se desea crear o modificar los valores de los servicios puedes consultar un poco mas sobre svcprop. Igualmente es posible generar nuevos servicios y / o convertir un servicio inetd.conf en SMF.
Hasta la proxima.


Si tienes mas de un servicio smtp, podrias reiniciarlos todos sin especificar que sea sendmail o demas. Puedes agrupar diferentes servicios en una sola categoria (por eso esta primero smtp).
% svcadm restart smtp
comentario por arpunk — 3 Octubre 2008 @ 4:45 PM
Gracias por la aclaración… como decía antes apenas estoy comenzando con Opensolaris… cualquier aclaración adicional sera siempre bienvenida
comentario por mmejiav — 3 Octubre 2008 @ 9:44 PM
This look interesting,so far.
If it’s not just all bots here, let me know. I’m looking to network
Oh, and yes I’m a real person LOL.
Bye,
comentario por Annemafoete — 14 Agosto 2009 @ 3:33 AM