天天看点

perl版nginx启动daemon

好长一段时间本人的博客都未更新了,新年向大家献上第一份博文。网上关于nginx的启动脚本大都是shell版的,我尝试着用perl重写了一下,不足之处,恳请指正。

code:

#!/bin/env perl 

# chkconfig:   - 85 15 

# description: nginx is a web server 

# progname:    nginx 

# config_file: /opt/nginx/conf/nginx.conf 

# pid_file:    /opt/nginx/logs/nginx.pid 

# author:      Henry He on 2012/01/09 

use strict; 

use File::Basename qw/basename/; 

use Term::ANSIColor qw(:constants); 

# Global options for my color 

$Term::ANSIColor::AUTORESET = 1; 

my $base_dir = "/opt/nginx"; 

my $prog = `basename $base_dir`; 

chomp $prog; 

if (! -f "$base_dir/conf/nginx.conf") { 

   &errorexit("no nginx config file"); 

if (! -x "$base_dir/sbin/nginx") { 

   &errorexit("can't excute nginx binary file"); 

if (@ARGV != 0) { 

    for my $args (@ARGV) { 

        if ($args =~ /(\bstart\b)+/) { 

            print BOLD GREEN "Starting nginx now ..."; 

            system "$base_dir/sbin/nginx -c $base_dir/conf/nginx.conf"; 

            system "touch /var/lock/subsys/$prog"; 

            printf "%-s\n","[OK]"; 

        } 

        elsif ($args =~ /(\bstop\b)+/) { 

            print BOLD GREEN "Stopping nginx now ..."; 

            system "killall -s QUIT $prog"; 

            unlink "$base_dir/logs/nginx.pid"; 

            unlink "/var/lock/subsys/$prog"; 

      } 

       elsif ($args =~ /(\breload\b)+/) { 

            print BOLD GREEN "Reload nginx now"; 

            system "killall -s HUP $prog"; 

        elsif ($args =~ /(\bstatus\b)+/) { 

            if (open FILE,"<","$base_dir/logs/nginx.pid") { 

                chomp(my $pid = <FILE>); 

                close FILE; 

                printf "%s\n","$prog (pid $pid is running)"; 

            } 

        else { 

            usage(); 

            exit 1; 

    } 

} else { 

        usage(); 

sub errorexit { 

    printf "ERROR: %s",@_; 

    printf "\n"; 

    exit 0; 

sub usage { 

    printf "USAGE:  %-10s\n","/etc/init.d/nginx  {start|stop|status|reload}"; 

将此脚本命名为nginx并拷贝到/etc/init.d/目录下

# cp nginx /etc/init.d/nginx 

# chkconfig --add nginx 

# chkconfig nginx on 

# /etc/init.d/nginx 

USAGE:  /etc/init.d/nginx  {start|stop|status|reload} 

# # /etc/init.d/nginx start 

Starting nginx now ...[OK] 

...................................................... 

本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/760305,如需转载请自行联系原作者

继续阅读