Раньше я не знал, что существует такой продукт , как "InterSystems Caché®". Производитель заявляет "InterSystems Caché® is the high-performance object database that runs SQL five times faster than relational databases". Подробнее можно прочитать на http://www.intersystems.com/cache/index.html. Мне довелось устанавливать это чудо человеческой мысли

Скриптов запуска данной БД под Солярку у производителя не было. Пришлось самому закрыть данный пробел и реализовать это в стандарте smf Solaris 10.
Процесс инсталляции описывать не буду, там в дистрибутиве есть скрипт. Данную БД необходимо запускать из под определённого пользователя в системе(из под root не запускается, да и не безопасно это). Т.к. у меня это пользователь cachedb соответственно и конфигурировать буду под него. С начала создаю
cache.xml
После этого создаю элементарный скрипт запуска
cachedb
#!/sbin/sh
#
# Copyright 2007 SunHelp.Ru, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)cachedb 1.0 07/06/19 SMI"
#
# Method script for the InterSystems Database Cache
#
# Alexey Senin alexs@sunhelp.ru
#
. /lib/svc/share/smf_include.sh
CACHEBIN=/usr/bin
if [ -z $SMF_FMRI ]; then
echo "SMF framework variables are not initialized."
exit $SMF_EXIT_ERR
fi
case "$1" in
'start')
$CACHEBIN/ccontrol start cache
;;
'stop')
$CACHEBIN/ccontrol stop cache quietly
;;
'restart')
$CACHEBIN/ccontrol stop quietly restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $SMF_EXIT_OK
>
А далее устанавливаем этот сервис (
Пример скрипта)
mkdir /var/svc/manifest/application/database
cp cache.xml /var/svc/manifest/application/database
svccfg validate /var/svc/manifest/application/database/cache.xml
svccfg import /var/svc/manifest/application/database/cache.xml
cp cachedb /lib/svc/method/
chown cachedb:cachedb /lib/svc/method/cachedb
На всякий случай выставляю суидный бит, возможно и без него будет работать
chmod +s /lib/svc/method/cachedb
Теперь можно воспользоваться управлением через svc. По умолчанию в xml установлен автозапуск.
root@test# svcs -l cache
fmri svc:/application/database/cache:default
name Database Server Cache
enabled true
state online
next_state none
state_time Tue Jun 19 11:07:00 2007
logfile /var/svc/log/application-database-cache:default.log
restarter svc:/system/svc/restarter:default
contract_id 9068
dependency require_all/none svc:/milestone/network:default (online)
dependency require_all/none svc:/system/filesystem/local (online)
Остановим сервис
root@test# svcadm disable cache
root@test# svcs -l cache
fmri svc:/application/database/cache:default
name Database Server Cache
enabled false
state disabled
next_state none
state_time Tue Jun 19 15:03:17 2007
logfile /var/svc/log/application-database-cache:default.log
restarter svc:/system/svc/restarter:default
contract_id
dependency require_all/none svc:/milestone/network:default (online)
dependency require_all/none svc:/system/filesystem/local (online)
Запускаем командой #svcadm enable cache
Убеждаемся что сервис работает из под пользователя cachedb
root@test# ps -ef |grep cachedb
cachedb 24726 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24750 24702 0 15:05:27 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24721 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24746 24702 0 15:05:26 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24724 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24727 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24729 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24741 24702 0 15:05:22 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24725 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24722 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24730 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24740 24702 0 15:05:22 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24702 1 1 15:05:15 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24731 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24723 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
cachedb 24728 24702 0 15:05:20 ? 0:00 cache -s . -c c -C /opt/cachedb/cachesys/cache.cpf*CACHE -B
Не знаю почему разработчики этого не сделали, хотя они не удосужились и под предыдущие Solaris написать скрипт автоматического запуска.
Отзывы , вопросы и предложения прошу выслать на адрес
alexs [at] sunhelp [dot] ru