Perl
Perl 程序中的 linux shell 命令
嗨朋友們,這是一些問題,我想編寫一個腳本來重新啟動處於停止狀態的伺服器。在這裡,我將來會使用我的 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
但在這裡我想輸出如果伺服器處於停止狀態,它將處於啟動狀態
如何解決?
這更像是一個查找“開始/執行”或類似的東西,更好地格式化為
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以供參考。