В этой статье я расскажу о некоторых особенностях, которые очень помогают при работе с сервисами.
1) Копия сервиса с отличием.
Цель: создать сервис, у который будет отличаться 1-2 параметрами от исходного.
# svccfg -s service add other
# svccfg -s service:other setprop start/exec = astring: "other"
# svcadm disable service:other
Без последней строки вы его не увидите через svcs -a. Дальше можно менять остальные параметры сервиса независимо от исходного.
2) Enviroment
Дело в том, что параметры enviroment’a – это multistring array, хотя и отображается как одна строка. Просто так менять его через setprop нельзя. Правильно меняется вот так:
svc:/application/pm2:admin> setenv HOME /opt/admin
при этом меняется только параметр HOME, остальные переменные остаются прежними. Добавляется новый enviroment тоже командой setenv
Удалить определённый enviroment:
svc:/application/pm2:admin> unsetenv HOME
Для method_context значения меняются с добавлением параметра ‘-i‘:
svc:/application/pm2:admin> setenv -i TEST true
3) Правка multistring array.
Если нужно изменить мультристрочный параметр, то делаем это так:
svc:/application/pm2:admin> setprop method_context/environment =astring: ("PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/usr/sbin" "HOME=/opt/admin" "NODE_ENV=production")
4) Правка опций с пробелами.
Если нужно из консоли поправить опции, которые с пробелами, то заключаем всё в одинарные кавычки:
# svccfg -s pm2:admin setprop method_context/environment =astring: '("PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/usr/sbin" "HOME=/opt/admin" "NODE_ENV=production")'