perl程序管理一例

2021-09-08 09:38:05 字數 2473 閱讀 2650

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...