Perl 프로그램의 Linux 쉘 명령

Perl 프로그램의 Linux 쉘 명령

안녕하세요, 질문이 있습니다. 중지된 상태에 있는 서버를 다시 시작하는 스크립트를 작성하고 싶습니다. 여기서는 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참고용.

관련 정보