Esta semana he tenido la oportunidad de trabajar con unas máquinas impresionantes, una SUN v890, y me surgió la necesidad de tener que montar como servicio el vncserver para que al arrancar las máquinas se iniciase el servicio, pero en SOLARIS 10 los servicios se gestionan de manera diferente a como vengo acostumbrado del mundo GNU/Linux aquà todo se gestiona mediante SMF. Y es necesario seguir los pasos que pongo a continuación para poder montar como servicio el vncserver o cualquier otra aplicación.
[xml]
< ?xml version='1.0'?>
< !DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
[/xml]
Una vez hemos creado el fichero vncserver.xml deberemos validarlo
[code]
svccfg validate vncserver.xml
[/code]
Crearemos un script que maneje el inicio y parada del servicio vncserver, para eso dejaremos este script escrito en perl en /etc/init.d/vncserver
[perl]
#!/usr/perl5/bin/perl
require 5.8.3;
use strict;
use warnings;
use locale;
my ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell,
$expire) = getpwuid “$< ";
$ENV{USER} = $name;
$ENV{HOME} = $dir;
$ENV{SHELL} = $shell;
$ENV{LANG} = "en_US"; # Just to create havoc (i.e. expose bugs).
#
# The stop method is run as root so that it can cleanup.
#
if (defined($ARGV[0]) && $ARGV[0] eq “stop”) {
# ksh and sh specific
print “stop method\n”;
system(“$ENV{SHELL}”, “-c”, “/usr/local/bin/vncserver -kill :1″);
if (-S “/tmp/.X11-unix/X1″) {
unlink(“/tmp/.X11-unix/X1″);
unlink(“/tmp/.X1-lock”);
}
exit 0;
}
#
# The start method is run with the user’s identity.
#
print “start method\n”;
if (-f “/tmp/.X1-lock”) {
unlink(“/tmp/.X1-lock”);
}
if (-S “/tmp/.X11-unix/X1″) {
system(“logger -p 1 application/vncserver requires ” .
“/tmp/.X11-unix/X1 be removed”);
exit 0;
}
# ksh and sh specific
{ exec “$ENV{SHELL}”, “-c”,
“/usr/local/bin/vncserver -pn -geometry 1024×768 -depth 24 :1″ };
system(“logger -p 1 application/vncserver can’t exec /usr/local/bin/vncserver”);
exit 1;
[/perl]
Le damos permisos de ejecución
[code]
chmod +x vncserver
[/code]
Le asignamos el owner y el group
[code]
chown root:sys vncserver
[/code]
Una vez tenemos los ficheros creados, procedemos a registrar el servicio svccfg import vncserver.xml. Ahora comprobamos que el servicio está online
[code]
svcs -a | grep vnc
[/code]
