Перезапуск сценария Perl (снабжают демона сокетом) от/etc/inittab

Я сделал это в прошлом на Windows Server 2003 с учетными записями домена, которым предоставляют вход в систему в интерактивном режиме и как сервисным правам и простому сценарию отображения диска, развернутому на тех учетных записях с групповой политикой сценария входа в систему. Это действительно работало, но это было некоторое время назад (и был для сервисного приложения прежней версии, которое не могло обработать пути UNC, конечно).

Какой windowsversion - это? Какие учетные записи Вы используете, локальный или доменный? Как Вы подключаете диски? Попытайтесь использовать политику запуска/сценария входа в систему. Возможно, для сервисов нужно старое, "взаимодействуют с настольным" флагом для этого, я не могу вспомнить прямо сейчас.

3
задан 2 June 2011 в 23:20
2 ответа

Просто удалите ветвление () из кода. К этой точке Вы записали часть кода, который Вы хотите отсоединить от консоли и выполнить в фоновом режиме. Однако, когда процессы, выполненные от inittab, они должны остаться приложенными. При удалении ветвления (), это останется приложенным к init, и init сможет контролировать/начинать/останавливать/перезапускать правильно

1
ответ дан 3 December 2019 в 07:39

Я не могу говорить с Вашим inittab решением, надо надеяться, кто-то еще может, но я действительно хочу предложить, чтобы Вы посмотрели на "File::Pid" как на что-то для добавления к сценарию - после вызова daemonize (это важно - идентификационные изменения процесса после ветвления).

use File::Pid;

my $pidfile = File::Pid->new({
                            file => '/var/run/myprogram.pid',
                            pid => $$,
                            });

if ( my $num = $pidfile->running ) {
    exit;
}
$pidfile->write;

Это дает Вам пару вещей - один она гарантирует, чтобы Вы не выполняли две копии ее одновременно (который, как Вы сказали, было грандиозное предприятие), и она также позволит Вам безопасно назвать эту программу каждый раз, когда Вы хотели обеспечить простую проверку активности. Просто назовите свой код от крона каждые 10 минут, и он ничего не сделает, если он будет работать, или перезапустите его, если он снижается.

0
ответ дан 3 December 2019 в 07:39

Теги

Похожие вопросы