Я написал скрипт Daemon::Control
на Perl, который я могу запускать/останавливать как службу из пользователя, но теперь я хочу, чтобы это запускалось при перезагрузке. Когда я запускаю его как пользователь, все хорошо, когда я запускаю его как root, он терпит неудачу с
Can't locate Mojo/Server/Morbo.pm in @INC
Я запускаю команду с service appname start , это работает нормально. root имеет базовую установку perl, тогда у пользователя есть установка perlbrew со всеми правильными модулями.
Не должен ли Daemon::Control
работать от имени пользователя, если я укажу «пользователя» и «группу», и я также указал init_config для файла пользователей .bashrc для настройки переменных среды.
use warnings;
use strict;
use Daemon::Control;
use Cwd qw(abs_path);
Daemon::Control->new(
{ name => "appname",
lsb_start => '$syslog $remote_fs',
lsb_stop => '$syslog',
lsb_sdesc => 'appname startup Short',
lsb_desc => 'Morbo , bit lighter than hypnotoad.',
init_config => "/home/mojouser/.bashrc",
path => abs_path($0),
program => '/home/mojouser/perl5/perlbrew/perls/perl-5.18.1/bin/morbo',
program_args => [
'-l', "http://*:3000", '-w', '/home/mojouser/apps/appname/lib',
'-w',
'/home/mojouser/apps/appname/templates',
'/home/mojouser/apps/appname/script/app'
],
user => 'mojouser',
group => 'mojouser',
pid_file => '/tmp/mojouser_appname.pid',
stderr_file => '/tmp/mojouser_appname.err',
stdout_file => '/tmp/mojouser_appname.out',
fork => 2,
}
)->run;