嗨,朋友们,这里有一个问题,我想编写一个脚本来重新启动处于停止状态的服务器。在这里,我将来使用我的 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以供参考。