Все вопросы по установке, обновлению и эксплуатации FreeBSD: конфигурация и сопровождение.
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
d15b200
- рядовой
- Сообщения: 10
- Зарегистрирован: 2010-06-28 1:12:10
Непрочитанное сообщение
d15b200 » 2011-01-14 2:17:39
Уважаемые гуру, уже инет облазил и с такой кашей в голове окончательно запутался.
Короче мне нужно стартовать скрипт (Perl) как демон, и работать с ним как с сервисом.
У меня команда
onestart проходит, а вот
onestatus нет... даже не создаётся файл
.pid
Уже опустился до простого скрипта, не перла, и та же проблема.
Код: Выделить всё
# ll /usr/local/etc/rc.d/utility
-r-xr-xr-x 1 root wheel 350 Jan 13 09:21 /usr/local/etc/rc.d/utility
Код: Выделить всё
#!/bin/sh
#
# $FreeBSD
#
# PROVIDE: utility
# REQUIRE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/${name}"
load_rc_config $name
pidfile="/var/run/${name}.pid"
start_cmd="daemon -f ${command}"
run_rc_command "$1"
Код: Выделить всё
# ll /usr/local/sbin/utility
-r-xr-xr-x 1 root wheel 148 Jan 13 09:16 /usr/local/sbin/utility
Код: Выделить всё
#!/bin/sh
#
# $FreeBSD
#
echo "sleeping 2"
sleep 2
echo "sleeping 10"
sleep 10
exit 0
Код: Выделить всё
# /usr/local/etc/rc.d/utility onestart
# cat /var/run/utility.pid
cat: /var/run/utility.pid: No such file or directory
# /usr/local/etc/rc.d/utility onestatus
utility is not running.
# ps -ax | grep utility
9885 ?? Ss 0:00.00 /bin/sh /usr/local/sbin/utility
# ps -ax | grep utility
Интересует именно не
.sh а через
rc.subr
моё чтиво
Руководство FreeBSD 11.5. Запуск сервисов
FreeBSD Man Pages RC.SUBR(8)
d15b200
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Непрочитанное сообщение
FreeBSP » 2011-01-14 3:56:15
добавь к чтиву /etc/rc.subr
еще можешь попробовать самостоятельно реализовать команду stаtus определив
Код: Выделить всё
ststus_cmd="supercomand";
supercomand() {
echo 42
}
вроде так
читай не только ман по рц.субр, но и его самого
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
FreeBSP
-
spf
- ефрейтор
- Сообщения: 58
- Зарегистрирован: 2009-11-05 15:28:46
Непрочитанное сообщение
spf » 2011-01-14 7:34:47
Работающий вариант перлового демона как сервиса:
Код: Выделить всё
#!/bin/sh
# PROVIDE: sysadmd
# REQUIRE: NETWORKING SERVERS
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable sysadmd:
#
# sysadmd_enable="YES"
#
. /etc/rc.subr
name=sysadmd
rcvar=`set_rcvar`
pidfile=/var/run/${name}.pid
command="/usr/local/sbin/${name}"
command_interpreter="/usr/local/bin/perl"
load_rc_config $name
run_rc_command "$1"
Демон должен сам позаботится о pid-файле. Например, так:
Код: Выделить всё
#!/usr/local/bin/perl
use strict;
my $PIDFILE = '/var/run/sysadmd.pid';
.....
.....
# Станем демоном
my $pid = fork ();
exit (0) if $pid;
die "Can't fork: $!" unless defined $pid;
setsid() or die "Can't start a new session: $!";
# Демон должен быть один
if (-s $PIDFILE) {
open (FILE, $PIDFILE) or die "Can't open $PIDFILE: $!";
chomp ($pid = <FILE>);
close (FILE);
if (kill (0, $pid)) {
die "Daemon already works";
}
}
open (FILE, "> $PIDFILE") or die "Can't open $PIDFILE: $!";
print FILE $$, "\n";
close (FILE);
.......
.......
spf