iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
佛心分享-我的私藏工具箱

作業系統的專武系列 第 9

在AIX用crontab以Perl監控服務

  • 分享至 

  • xImage
  •  

在AIX上運行Java,常用crontab設定排程Perl監控運作中的系統,監控用監控哪些?

  • Process若死了,啟動它。
  • Log超過三分鐘沒寫,強制重啟它。
    以下這支runBth.pl,是在crontab每15分鐘偵測一次有沒有名為batch.jar的Process,沒有就執行runBatch.sh啟動;若有運行,則檢查log是否超過三分鐘未更新?若未更新,則stop.sh停止該Process,再用runBatchsh啟動。
#!/usr/bin/perl
my $flag = `ps -ef | grep -v grep | grep -c batch.jar`;
chomp $flag;
unless ($flag eq "0") {
	print "Running Batch...\n";
	my $last = (stat("/opt/batch/logs/batch.log"))[9];
	my $now = time();
print "$now - $last = " . ($now - $last) . "\n";
	if ($now - $last > 3 * 60 * 1000) {
		print "Batch is blocking...\n";
		system "./stop.sh; nohup ./runBatch.sh >/dev/null 2>&1 &"
		#print "Restarting Batch ...\n";
		#system "nohup ./runBatch.sh >/dev/null 2>&1 &";
	}
} else {
#	print "Starting Batch...\n";
	system "nohup ./runBatch.sh >/dev/null 2>&1 &";
}

另外會有一支Perl用於過版新版Java程式,會呼叫上述的監控程式。
會連上FTP抓新版jar下來,並備份舊版,然後重啟系統。

#!/usr/bin/perl
use Net::FTP;

my $HOST = "1.1.1.1";
my $ftp = Net::FTP->new($HOST) or die "Can't connect: $@\n";
$ftp->login("ftpuser", "ftppwd") or die "Can't login by ftpuser: $@\n";
$ftp->cwd("UAT1/output") or die "NO Folder: $@\n";
$ftp->binary;
system "./stop.sh";
if (defined($ftp->size("batch.jar"))) {
	system "mv batch.jar batch-old.jar";
	$ftp->get("batch.jar");
}
$ftp->quit;
system "./runBth.pl";

上一篇
列出有Listen的Port
下一篇
在Windows用排程服務以PowerShell監控服務
系列文
作業系統的專武30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言