こんにちは、質問があります。停止状態のサーバーを再起動するスクリプトを作成したいと思います。ここではMySQLサーバーを使用します。サーバーが停止すると、スクリプトによって再起動されます。私はperl
言語を使用しており、私のコードは次のとおりです。
GNU nano 2.2.6ファイル:service.pl
#!/usr/local/bin/perl
if (system("service mysql status") =~ "start/running") {
system("service mysql start");
}
出力:
mysql stop/waiting
しかし、ここで私が望む出力は、サーバーが停止状態の場合は起動状態になるということです。
どうやって解決しますか?
答え1
これはもはや「スタート/実行」などを探してください。より良い形式は
if (system("service mysql status") =~ /start\/running/)
system
次に、出力の代わりにコマンドの戻りコードを一致させます。代わりにバックティック(`)を使用してください。
if (`service mysql status` =~ /start\/running/)
not
あなたのコメントで述べたように存在しません。あなたが望むものを代わりにnot
使用する必要があります:!~
=~
if (`service mysql status` !~ /start\/running/)
mysql
次のコードが異なる状態にあると(再)起動が発生しますstart/running
。
if (`service mysql status` !~ /start\/running/) {
`service mysql restart`;
}
ノート:サービスを開始/停止できるユーザーとしてPerlスクリプトを実行する必要があります。root
また、見ることができますhttp://perldoc.perl.org/perlretut.html#Simple-word-matching参考用。