Я пытаюсь добавить к автозапуску во время загрузки службу Linux через
chkconfig -add <servicename>
и я получаю сообщение о том,
service <servicename> does not support chkconfig
Я использую Red Hat Enterprise 4. Сценарий, который я пытаюсь добавить в автозапуск во время загрузки, следующий:
#!/bin/sh
soffice_start() { if [ -x /opt/openoffice.org2.4/program/soffice ]; then
echo "Starting Open Office as a Service"
#echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
/opt/openoffice.org2.4/program/soffice
-headless -accept="socket,Host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard & else
echo "Error: Could not find the soffice program. Cannot Start SOffice." fi }
soffice_stop() { if [ -x /usr/bin/killall ]; then
echo "Stopping Openoffice"
/usr/bin/killall soffice 2> /dev/null else
echo "Eroor: Could not find killall. Cannot Stop soffice." fi }
case "$1" in 'start') soffice_start ;; 'stop') soffice_stop sleep 2 ;; 'restart') soffice_stop sleep 5 soffice_start ;; *) if [ -x /usr/bin/basename ]; then
echo "usage: '/usr/bin/basename $0' start| stop| restart" else
echo "usage: $0 start|stop|restart" fi esac
Скрипт должен иметь 2 строки:
# chkconfig: <levels> <start> <stop>
# description: <some description>
например:
# chkconfig: 345 99 01
# description: some startup script
345 - levels to configure
99 - startup order
01 - stop order
После добавления вышеуказанных заголовков вы можете запустить chkconfig --add <service>
.
Хотя katriel уже ответил на это с минимальным минимумом, необходимым для создания сценария инициализации, я думаю, вам также будет полезно посмотреть на /etc/init.d/skeleton
и используя его в качестве шаблона, на котором будет основан ваш скрипт инициализации. Вы получите гораздо более последовательный и читаемый скрипт.
Похоже, что конкретная проблема Geo уже решена, но я столкнулся с похожим сообщением, пытаясь настроить приложение Rails с sidekiq
в качестве управляемого сервиса. объясните мое решение здесь, если оно поможет другим новичкам, таким как я.
Я работаю над установкой CentOS, и chkconfig уже настроен с несколькими другими службами, такими как httpd, mysql и redis. Обратите внимание, что большинство служб необходимо включать только на уровнях выполнения 3
через 5
.
chkconfig --list
> httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
> mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
> redis-server 0:off 1:off 2:on 3:on 4:on 5:on 6:off
> (etc...)
Мне нужно было добавить новый скрипт для службы sidekiq
, поэтому я взял скрипт по адресу https://Gist.github.com/CD1212/5326706 , изменил его, чтобы он соответствовал моим приложениям. параметры, и сохранил его в /etc/rc.d/init.d/sidekiq
(принадлежит root, как и все остальные скрипты).
Однако, когда я попытался зарегистрировать этот новый сервис, я получил ошибку chkconfig:
Sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig
После некоторое дополнительное чтение я обнаружил, что номера приоритетов, определенные в верхней части каждого сценария chkconfig, должны быть уникальными. Более четкое сообщение об ошибке было бы приятно! Другой сценарий имел уровень приоритета отключения 75, поэтому я изменил свой на 76 и попробовал снова. Вот глава моего сценария инициализации:
#!/bin/bash
#
# sidekiq Init script for Sidekiq
#
# chkconfig: 345 99 76
# processname: sidekiq
# pidfile: /var/www/visual_testing_tool/sidekiq.pid
# description: Starts and Stops Sidekiq message processor for the Rails app.
#
В этот раз, Sudo chkconfig --add sidekiq
не подал жалобу. Затем, когда я побежал Sudo chkconfig --list sidekiq
, служба sidekiq была показана как on
для соответствующих уровней выполнения.
Номера приоритетов не должны быть уникальными. Они только представляют заказ услуг.
ls -l /etc/rc.d/rc3.d/*Oracle lrwxrwxrwx 1 root root 16 сентября 16 12:28 /etc/rc.d/rc3.d/S99Oracle -> ../init.d/Oracle
ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 root root 12 сентября 16 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it
У Chkconfig не было проблем с добавлением службы "it". В противном случае вы будете ограничены 100 услугами.
Кроме того, в моем примере, он будет работать до Oracle, потому что сценарии выполняются в алфавитном порядке.