LINUX.ORG.RU
ФорумTalks

[archъ]подпортим свои rc.conf


0

2

написал очередной скрипт для облегчения жизни.
может, тут пригодится кому.
вообщем: хреновина управляет демонами. может стартовать\останавливать демонов, получать статус (запущен или нет), добавлять и удалять деманяшек в rc.conf (даже с выбором позиции)
также определяет, рут вы или нет, если нет - ищет sudo, если sudo установлена - все делаем через неё, если нет - жалобно подыхаем
примеры использования:
$ service start|stop|restart <daemon> - аналог /etc/rc.d/<daemon> start|stop|restart
$ service status <daemon> - получаем статус выбранного демона
$ service add <daemon> - добавляем демона в rc.conf (DAEMONS=.. ), естесственно со всевозможными проверками
$ service add <daemon> select - добавляем демона в rc.conf в интерактивном режиме (с выбором позиции)
$ service remove <daemon> - удаляем демона из rc.conf, также с проверками
тест в полевых условиях показал адекватную работу скрипта в 100% случаев.
p.s. да, я тоже добавляю\удаляю демонов раз в полгода, но всё же (:
p.p.s - http://paste.org.ru/?k7vp9a
да, кому как удобнее - можно поменять местами $action и $service, и тогда можно будет вызывать скрипт так -
$ service <daemon> start|stop|restart|status|add|remove [select]

★★★★★

Ответ на: комментарий от yytreop

а что в убунте?
не юзал со времен 8.10. а в «козле» был родной дебиановский rc-update add <daemon> <options>

snoopcat ★★★★★ ()

спасибо, теперь будет как в красно шапке

guilder ()
service(8)                                                          service(8)

NAME
       service - run a System V init script

SYNOPSIS
       service SCRIPT COMMAND [OPTIONS]

       service --status-all

       service --help | -h | --version

DESCRIPTION
       service  runs  a  System V init script in as predictable environment as possible, removing most environment variables and with current
       working directory set to /.

       The SCRIPT parameter specifies a System V init script, located in /etc/init.d/SCRIPT.  The supported values of COMMAND depend  on  the
       invoked  script,  service  passes COMMAND and OPTIONS it to the init script unmodified.  All scripts should support at least the start
       and stop commands.  As a special case, if COMMAND is --full-restart, the script is run twice, first with the stop command,  then  with
       the start command.

       service --status-all runs all init scripts, in alphabetical order, with the status command.

FILES
       /etc/init.d
              The directory containing System V init scripts.

ENVIRONMENT
       LANG, TERM
              The only environment variables passed to the init scripts.

SEE ALSO
       chkconfig(8), ntsysv(8)

                                   Jan 2006                         service(8)
iSage ★★★★ ()
Ответ на: комментарий от iSage

[neko@gdetotut ~]$ man service
Нет справочной страницы для service

snoopcat ★★★★★ ()

omg... /etc/init.d? Посмотри генту хоть одним глазком.

Chaser_Andrey ★★★★★ ()
Ответ на: комментарий от DoctorSinus

Ты такой крутой. Тебе уже, наверное, пиво продают.

Alsvartr ★★★★★ ()
service(8)                                                          service(8)

NAME
       service - run a System V init script

SYNOPSIS
       service SCRIPT COMMAND [OPTIONS]

       service --status-all

       service --help | -h | --version

DESCRIPTION
       service  runs  a  System V init script in as predictable environment as
       possible, removing most environment variables and with current  working
       directory set to /.

       The  SCRIPT  parameter  specifies  a  System  V init script, located in
       /etc/init.d/SCRIPT.  The supported values  of  COMMAND  depend  on  the
       invoked  script,  service  passes  COMMAND  and  OPTIONS it to the init
       script unmodified.  All scripts should support at least the  start  and
       stop  commands.   As  a special case, if COMMAND is --full-restart, the
       script is run twice, first with the stop command, then with  the  start
       command.

       service --status-all runs all init scripts, in alphabetical order, with
       the status command.

FILES
       /etc/init.d
              The directory containing System V init scripts.

ENVIRONMENT
       LANG, TERM
              The only environment variables passed to the init scripts.

SEE ALSO
       chkconfig(8), ntsysv(8)

                                   Jan 2006                         service(8)

Fedore Core 13

ados ★★★★★ ()
Ответ на: комментарий от silw

Ну например имена сервисов по дефолту - уники. Пока не нашел дублей. В противном случае один бинарник можно переименовать.

Chubakur ★★ ()
Ответ на: комментарий от Chubakur

ты же понял, что пример вверху это не абстрактный пример, а DNS сервер BIND? тоже самое и с openvpn, с апачем, лайти... Да почти у каждого сервиса так.

silw ★★★★★ ()
Ответ на: комментарий от Fantasma

> А почему service, а не daemon? Это ведь Linux, а не Windows всё-таки )

лолшто? service был ещё в красношапке 6.2 (насколько я помню), винда тогда по-большому ещё в дос ходила и смотрела вот такими О_О огромными испуганными глазами на жестокий и незнакомый мир вообще и на юниксы в частности…

arsi ★★★★★ ()
Ответ на: комментарий от Chubakur

[silwer@archmage ~]$ ls -1 /usr/sbin/ > 1
[silwer@archmage ~]$ ls -1 /etc/rc.d/ > 2
[silwer@archmage ~]$ comm -1 -2 1 2
avahi-daemon
avahi-dnsconfd
crond
dhcpd
ftpd
gpm
ip6tables
iptables
kadmind
lighttpd
lircd
lircmd
named
nscd
openvpn
php-fpm
slpd
smartd
sshd
syslog-ng
xinetd
[silwer@archmage ~]$ 

Это все общие названия, при том, что у меня не так много стоит софта.

silw ★★★★★ ()

резюме: костыли в виде service в арчах не нужны.

Fatroll ()
Ответ на: комментарий от unikum

Дело не в сложности, а в неудобстве. Работать и в венде можно, дело-то не в этом.

GreyDoom ★★★★ ()
Ответ на: комментарий от silw

ты же понял, что пример вверху это не абстрактный пример, а DNS сервер BIND? тоже самое и с openvpn, с апачем, лайти... Да почти у каждого сервиса так.

для этого существуют функции баша, которые можно вшивать в bashrc.

например, вот так:

 mode_service 
which `named` 
/etc/rc.d/named

mode_user 
which `named` 
/usr/sbin/named

а вообще, зачем тебе запускать named ручками? Если нужно какую-то особую конфигурацию запуска, проще скопировать уже существующий /etc/rc.d/named в /etc/rc.d/named_very_very_special и поменять параметры там

stevejobs ★★★★☆ ()

Половину этого можно сделать симлинками без оверхеда.
Не нашел возможности установки запуска демона в фоне.

kernelpanic ★★★★★ ()
Ответ на: комментарий от stevejobs

меня просто интересовало, что будет происходить в такой ситуации, когда есть одинаковые имена в разных путях. А вообще это все дикий оверхэд, KISS же!

silw ★★★★★ ()
Ответ на: комментарий от Axon

[neko@gdetotut ~]$ alias service ='/etc/rc.d/'
bash: alias: service: не найден
bash: alias: =/etc/rc.d/: не найден
[neko@gdetotut ~]$ alias service\ ='/etc/rc.d/'
bash: alias: `service ': invalid alias name
[neko@gdetotut ~]$

snoopcat ★★★★★ ()
Ответ на: комментарий от snoopcat

Ну, идея-то сохраняется. Мысль была в том, что лишние сущности - это не юникс-вей.

Axon ★★★★★ ()
Ответ на: комментарий от Fantasma

А почему service, а не daemon?

У программы daemon более иное назначение.

GotF ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.