Страница 1 из 2

rc.d в FreeBSD 8

Добавлено: 2010-11-23 11:31:28
gonzo111
есть стандартный стартовый скрипт
/usr/local/etc/rc.d/transmission

Код: Выделить всё

#!/bin/sh
#
# $FreeBSD: ports/net-p2p/transmission-cli/files/transmission.in,v 1.3 2010/03/27 00:14:31 dougb Exp $
#
# PROVIDE: transmission
# REQUIRE: DAEMON
#
# Add the following lines to /etc/rc.conf to enable this service:
#
# transmission_enable:       Set to NO by default. Set it to YES to enable it.
# transmission_watch_dir:    Directory for torrent files to download
#                            automatically. Off by default unless you add
#                            a path.
# transmission_conf_dir:     Directory where transmission configuration
#                            data is stored.
#                            Default: /usr/local/etc/transmission/home
# transmission_download_dir: Directory to store downloaded data.
#                            Default: /usr/local/etc/transmission/home/Downloads
# transmission_user:         The user account transmission daemon runs as what
#                            you want it to be. It uses 'transmission' user by
#                            default. Do not sets it as empty or it will run
#                            as root.
#

. /etc/rc.subr

name="transmission"
rcvar=${name}_enable

command=/usr/local/bin/transmission-daemon

load_rc_config ${name}

: ${transmission_enable:="NO"}
: ${transmission_user:="transmission"}
: ${transmission_conf_dir:="/usr/local/etc/transmission/home"}
: ${transmission_download_dir:="/usr/local/etc/transmission/home/Downloads"}

transmission_flags=" \
        ${transmission_watch_dir:+-c ${transmission_watch_dir}} \
        ${transmission_conf_dir:+-g ${transmission_conf_dir}} \
        ${transmission_download_dir:+-w ${transmission_download_dir}} \
        ${transmission_flags}"

run_rc_command "$1"
./transmission status
transmission is running as pid 2057.
где хранится пид файл? в /var/run/ его нету (!)
раньше была строка в скриптах

Код: Выделить всё

pidfile="/var/run/${name}.pid"
а где оно щас берет 2057?
мне нужен пид файл для ротации логов в newsyslog.conf

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 11:38:03
FreeBSP

Код: Выделить всё

sh -c 'ls /var/run | { while read pidfile; do if [ "`cat /var/run/$pidfile`" -eq "2057" ]; then echo $pidfile; fi; done;  }'
я чета в манах не увидел кпоминания про пидфайл

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 11:49:08
FreeBSP
тоесть правильнее так
grep -rn 2057 /var/run/*

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:14:33
gonzo111
в /var/run пид файла нету я это уже написал

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:30:56
Гость
ps ax
truss
и вообще проявите изобретательность ума

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:33:00
Alex Keda
Гость писал(а):ps ax
truss
и вообще проявите изобретательность ума
paradox снова с нами =))

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:37:29
gonzo111
причем тут изобретательность,
если rc.d тупо грепает пиды из ps , то это не верно в корне,
как оно помнит что это именно его пид ?
и что команда
./transmission stop
не прибьет пид запущенный мною в другом скрипте?
для этого как раз и были придуманы пид файлы насколько я понимаю


Alex Keda может по теме лучше ответишь? :smile:

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:42:38
Alex Keda
ищщи где задаётся функция run_rc_command и смотри в ней как она его достаёт
чё сложного-то?

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:47:16
gonzo111
http://www.freebsd.org.ua/doc/ru_RU.KOI ... aemon.html
Демон будет запущен командой $command с ключами определенными в переменной $mumbled_flags. Таким образом, все данные, необходимые для стандартного метода start определены в переменных на момент запуска скрипта. В отличие от метода start, другим методам может потребоваться дополнительная информация о запущенном процессе. Например, stop должен знать об идентификаторе запущенного процесса (PID) чтобы завершить его. В нашем случае, rc.subr(8) найдет среди запущенных процессов процесс с именем $procname. Эта переменная выставляется rc.subr(8) автоматически и по-умолчанию ее значение соответствует переменной command. Другими словами, когда мы указываем значение command, мы тем самым указываем и procname. Это позволяет нашему скрипту проверить, запущен ли демон или завершить его работу.
выходит что оно тупо грепает процесс с таким названием? :cz2:

как тут http://www.freebsd.org.ua/doc/ru_RU.KOI ... n-adv.html
добавил

Код: Выделить всё

pidfile="/var/run/${name}.pid"
че то не хочет создавать файл :cz2:

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:52:42
FreeBSP
gonzo111 писал(а):

Код: Выделить всё

. /etc/rc.subr
но она толстенькая
да и сам rc.subr не маленький.

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 12:57:28
Гость
как оно помнит что это именно его пид ?
а что программа сама не может помнить свой пид?
она его внутри себя может держать(имя пути)
а по параметру
программа /stop
к примеру
прибивать
и для этого и есть команды
ps ax
что бы увидеть все параметры запуска демона
и
truss
что бы увидеть все файлы что она открывает/создает

чудеса изобретательности ума
и больше ничего не надо
а все маны и скрипты не упомнишь
нужно только помнить как это быстро сделать

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 13:04:17
FreeBSP
интересно, что скажет дебаг
допиши в скирпт строчку

Код: Выделить всё

rc_debug="YES"
после

Код: Выделить всё

. /etc/rc.subr

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 13:05:10
gonzo111
FreeBSP спасибо не увидел думал у него будет атрибут исполняемого...
я че то раньше думал, что для всех процессов от rc.d всегда падают пиды в /var/run/ , не венда все же таки..


мне надо в newsyslog.conf
сделать че то типа

Код: Выделить всё

/var/log/transmission.log transmission:transmission            640  3     100  *     JCB /var/run/transmission.pid 30

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 13:13:31
ttys
gonzo111 писал(а):FreeBSP спасибо не увидел думал у него будет атрибут исполняемого...
я че то раньше думал, что для всех процессов от rc.d всегда падают пиды в /var/run/ , не венда все же таки..


мне надо в newsyslog.conf
сделать че то типа

Код: Выделить всё

/var/log/transmission.log transmission:transmission            640  3     100  *     JCB /var/run/transmission.pid 30
зачем хозяин логфайла transmission:transmission???
если его пишет newsyslogd!!!!

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 13:16:39
gonzo111
еще один пофлудить зашел, мне так захотелось, мы с тобой в жаббере эту тему обсуждали


что мне добавить в стартовый скрипт чтоб появился PID файл?

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 20:35:36
ttys
gonzo111 писал(а):еще один пофлудить зашел, мне так захотелось, мы с тобой в жаббере эту тему обсуждали
:fool: не пойму на кой ляд??? :st: ну да ладно, это твоё дело. :"":
gonzo111 писал(а):что мне добавить в стартовый скрипт чтоб появился PID файл?
у меня нету ПИД файла :pardon: искал через финд :Search: но так и не нашёл

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 21:07:19
Гость
через find как искали? по расширению .pid что ли?
пробуйте через truss

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 21:22:01
ttys
Гость писал(а):через find как искали? по расширению .pid что ли?
пробуйте через truss
да меня это в принципе и не беспокоит, :pardon: работает трансмиссия - пусть работает чё в неё лесть?
это больше нужно gonzo111 :bn:

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-23 23:36:54
snorlov
А искать через ps -ax | grep transmission не пробовали....

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-24 13:23:48
ttys
snorlov писал(а):А искать через ps -ax | grep transmission не пробовали....
:pardon: так ищем ведь пид файл

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-24 13:41:39
snorlov
ttys писал(а):
snorlov писал(а):А искать через ps -ax | grep transmission не пробовали....
:pardon: так ищем ведь пид файл
На первое сообщение посмотри, там никакого pid файла нет, просто озадачился человек, почему когда запрашивается статус выдается pid процесса, а самого pid файла он не видит...

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-24 14:41:12
ttys
snorlov писал(а):
ttys писал(а):
snorlov писал(а):А искать через ps -ax | grep transmission не пробовали....
:pardon: так ищем ведь пид файл
На первое сообщение посмотри, там никакого pid файла нет, просто озадачился человек, почему когда запрашивается статус выдается pid процесса, а самого pid файла он не видит...
:shock: ну а я о чём?

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-24 14:56:33
Гость
https://trac.transmissionbt.com/browser ... n/daemon.c
поиск по строке "Saved pidfile"

можно через -x задать в скрипте флагс - путь на пид файл
и он будет явный

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-24 15:16:40
gonzo111
пид файл нам всем нужен (кто юзает трансмишн) ,чтобы сделать корректную ротацию логов, при условии что лог пишет сам трансмишн...

Re: rc.d в FreeBSD 8

Добавлено: 2010-11-24 18:54:51
hizel
Гость писал(а):https://trac.transmissionbt.com/browser ... n/daemon.c
поиск по строке "Saved pidfile"

можно через -x задать в скрипте флагс - путь на пид файл
и он будет явный
от спасибо! :-) избавил меня от мучений, надеюсь на этом топик сдохнет, а то его существование в ТОПе - как сирпом по яйцам