То что в предыдущих версия Solaris запускалось из /etc/init.d — /etc/rc?.d, в Solaris 10 устанавливается и управляется как службы (SMF — Service Management Facility)
Как быстро создать свою службу, без того, чтобы перерыть кучу документации ?
Две небольшие инструкции, в которых все очень подробно описано:
Для создания SMF конфига манифеста можно воспользоваться шаблонами из вышеприведенных источников, а можно воспользоваться
интерактивной программкой manifold.
Это питоновский скрипт, с установкой пришлось разбираться ;(
Итак, загружаем setuptools source, Genshi source и Manifold source.
Распаковываем, получаем 3 каталога
bash-3.00$ ls -l
total 3668
drwxr-xr-x 9 root root 512 Jun 29 17:56 Genshi-0.6
-rw-r--r-- 1 korolev other 842494 Jun 29 16:54 Genshi-0.6.zip
drwxrwxr-x 7 501 501 512 Jun 29 17:45 Manifold-0.2.0
-rw-r--r-- 1 korolev other 40960 Jun 29 14:39 Manifold-0.2.0.tar
drwxrwxr-x 7 506 506 1024 Jun 29 16:13 setuptools-0.6c11
-rw-r--r-- 1 korolev other 952320 Jun 29 15:08 setuptools-0.6c11.tar
Сначала устанавливаем setuptool, затем genshi, затем Manifold:
# cd setuptools-0.6c11; python setup.py install
# cd ../Genshi-0.6; python setup.py install
# cd ../Manifold-0.2.0; python setup.py install
После этого программка скомпилится, бинарник располагается в /usr/bin
После этого интерактивно создаем файл-манифест:
bash-3.00$ manifold test1.xml
The service category (example: 'site' or '/application/database') [site]
The name of the service, which follows the service category
(example: 'myapp') [] my_test_app
The version of the service manifest (example: '1') [1]
The human readable name of the service
(example: 'My service.') [] My test service
Can this service run multiple instances (yes/no) [no] ?
Full path to a config file; leave blank if no config file
required (example: '/etc/myservice.conf') [] /export/home/test1app/test1.cfg
The full command to start the service; may contain
'%{config_file}' to substitute the configuration file
(example: '/usr/bin/myservice %{config_file}') [] /export/home/test1app/bin/app -c %{config_file}' start
The full command to stop the service; may specify ':kill' to let
SMF kill the service processes automatically
(example: '/usr/bin/myservice_ctl stop' or ':kill' to let SMF kill
the service processes automatically) [:kill] /export/home/test1app/bin/app stop
Choose a process management model:
'wait' : long-running process that runs in the foreground (default)
'contract' : long-running process that daemonizes or forks itself
(i.e. start command returns immediately)
'transient' : short-lived process, performs an action and ends quickly
[wait] contract
Does this service depend on the network being ready (yes/no) [yes] ?
Does this service depend on the local filesystems being ready (yes/no) [yes] ?
Should the service be enabled by default (yes/no) [no] ?
The user to change to when executing the
start/stop/refresh methods (example: 'webservd') [] testuser
The group to change to when executing the
start/stop/refresh methods (example: 'webservd') [] testuser
Manifest written to test1.xml
You can validate the XML file with "svccfg validate test1.xml"
And create the SMF service with "svccfg import test1.xml"
bash-3.00$ cat test1.xml
....
Ссылки в тему:
Solaris Service Management Facility — Quickstart Guide
SMF Sun BluePrint
30.06.2010 в 14:19
Поднял кучу экспириенса разбираясь с этим в разрезе SNMP, а в итоге оказалось, что дефолтный вполне устраивает. :)
Хотя о потраченом времени не жалею ;)