linux下关闭守护进程,在Linux中启动和停止Perl守护进程

我一直在为Linux的perl守护进程工作,这是它的骨架:

#!/usr/bin/env perl

use File::Copy;

use Socket;

use Sys::Hostname;

use POSIX qw(setsid);

use Env;

use Sys::Info::Constants qw( :device_cpu );

my $daemonName = 'proc';

my $proc;

my $error;

my $file = "Proc.pl";

my $pidfile = ">/var/run/proc.pid";

my $pid2check = "/var/run/proc.pid";

my $pid;

if (!$error) {

LogMessage("$daemonName : PID $proc : Begin");

}

if (!$error) {

LogMessage("$daemonName : PID $proc : Writing pid information to $pidfile");

print FILE $proc . "

";

close (FILE);

}

$SLEEP_TIME = 5; # seconds

#Main loop of Daemon

while (!$error) {

sleep($SLEEP_TIME);

}

if ($error) {

LogMessage("$file : PID $proc : Error $error");

}

LogMessage("$file : PID $proc : END");

exit(0);

sub Daemonize {

if (!(chdir '/')) {

$error .= "Can't chdir to /: $!";

}

if (!(umask 0)) {

$error .= "Unable to umask 0";

}

unless (open STDIN, '/dev/null') {

$error .= "Can't read /dev/null: $!";

}

open(OLD_OUT,">&STDOUT");

#All print statments will now be sent to our log file

unless (open STDOUT, '>>/var/log/proc.log') {

$error .= "Can't read /var/log/proc.log: $!";

}

#All error messages will now be sent to our log file

unless (open STDERR, '>>/var/log/proc.log') {

$error .= "Can't write to /var/log/proc.log: $!";

}

defined($pid = fork);

#Exit if $pid exists (parent)

if ($pid)

{

print OLD_OUT "Service successfully installed.

";

exit(0);

}

#As Child

setsid();

$proc = $$;

return ($proc);

}

#Prints log messages

sub LogMessage {

my $message = $_[0];

print localtime() . " $message

";

}

我对perl比较陌生,我想知道启动和停止这个守护进程最简单的方法是什么?另外,我如何检查以确保没有已经运行的实例?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值