Perl 程序中的 linux shell 命令

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

但在这里我想要的输出是,如果服务器处于停止状态,它将处于启动状态

如何解决呢?

答案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以供参考。

相关内容