1#!/usr/bin/perl -w
2use
strict;
3use
warnings;
4use
dbi;56
####
7# 這裡進行伺服器任務管理8##
9#字串對映函式
10our
%actions =(11"
check
" => \&pcheck,12"
run" => \&prun,13"
run_nohup
" => \&run_nohup,14"
kill
" => \&pkill
15);
16our
$home = "
/var/www/html";
17our
$public_home = "
/var/www/html/public";
18our
$log_home = "
/var/www/html/yfcloud_admin/public/log";
1920
our$host = "
***"
; 21
our$database = "
***";22
our$db_user = "
***";23
our$db_pass = "
***";24
25#程式路徑
26our
$ppath = ""
; 27
#程式名
28our
$pname = "";29
#日誌檔案
30our
$log_file = "
log"
; 3132#
檢測程序狀態,返回pid
33# 如果同程序不在執行,則返回空
34sub
pcheck35'
";38my
$ret = `$cmd
` ;39
chomp
$ret;40
#如果有多個程序pid,則返回第乙個pid
41if( $ret =~ /\n/)
44 ($ret eq "") ? print
0 : print
$ret;45
}4647#
結束程序,返回成功與否
48# 0 表示成功
49sub
pkill
505556#
引數需要是 程式的全路徑
57# 啟動程序並後台執行,並返回pid
58# 啟動程序後,需要將程序的pid及日誌檔案寫入資料庫
59# shell輸出格式如下: [1] 15758
60sub
prun
616566#
後台以nuhup方式執行
67sub
run_nohup
687273#
命令格式如下: perl processmanager.pl $pname $action
74sub
main
7584
$pname = $ar**[0] ; #
這裡使用全域性變數算了 ~_~
85my
$action = $ar**[1
] ;86
#判斷操作是否合法
87if( $actions )->() ;
89 }else93}
9495
main();
9697
9899
############
100##這裡是一些工具函式
101############
102sub
gettime
103112
113sub
run_exec
114132 }else
136}
137138
#將日誌寫入日誌
139sub
addtodb
140)|| die
"could not connect to database: $dbi::errstr";
144145
my$sql = "
insert into log (name,log_file,createtime) values (?,?,?)";
146my
$sth = $db_handle->prepare($sql
);147
148$sth->execute($progname, $log_file , $createtime) or die
$dbi::errstr;
149$sth->finish();
150151
$db_handle->disconnect();
152 }
演算法優化一例
本文將以排序演算法中的插入排序為例,介紹優化演算法,編制高效程式的方法。人們通常用於排序手中橋牌的方法是一次考慮一張牌,將它插入到已經排序過的牌的適當位置中 時刻讓它們保持有序 在計算機實現中,我們需要將較大的元素移到右邊,為插入的元素準備空間,然後再在空位置上插入該元素。該演算法的通常的乙個實現如...
delegate 委託一例
using system using system.collections.generic using system.linq using system.text namespace consoletest public static void englishgreeting string snam...
資料合併一例
qs 在mssqlserver2000中乙個表中有兩條記錄 a,a,0,0,b,0,c,0 0,0,b,0,0,d,0,0 如何將這兩條記錄合併為 a,a,b,0,b,d,c,0 as sql05 建立測試表 create table id1 varchar 10 id2 varchar 10 id...