"systemctl" 명령의 출력에서 ​​"활동(실행 중)" 캡처

"systemctl" 명령의 출력에서 ​​"활동(실행 중)" 캡처

telegraf현재 시스템에서 실행 중인 활성 서비스( )가 있습니다. 몇 가지 단계를 자동화하려고 합니다. 그 중 첫 번째 단계는 서비스가 에서 실행 중인지 확인하는 것입니다 shell script.

systemctl status telegraf서비스 상태를 수동으로 확인하는 명령을 실행하고 있습니다 . 출력은 다음과 같습니다

telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
   Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-05-19 12:26:17 UTC; 3 weeks 5 days ago
     Docs: https://github.com/influxdata/telegraf
 Main PID: 1297 (telegraf)
    Tasks: 9 (limit: 49778)
   Memory: 106.3M
   CGroup: /system.slice/telegraf.service
           └─1297 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

가치를 포착하고 싶다활동(실행)내 스크립트의 쉘 스크립트에서 이 작업을 어떻게 수행합니까?

여기에 이미지 설명을 입력하세요.

답변1

명령의 출력을 구문 분석할 수 있습니다 systemctl status.

그러나 서비스가 실행 중인지 여부에 대한 정보를 얻는 더 쉬운 방법은 is-active하위 명령을 사용하는 것입니다 systemctl. 예를 들어:

user@host:~$ systemctl is-active postfix
active

서비스가 활성화되지 않은 경우 반환되는 문자열은 입니다 inactive.

따라서 스크립트에서 반환된 문자열(활성 또는 비활성)과 ​​위 명령의 반환 코드를 확인할 수 있습니다. 서비스가 활성 상태이면 명령은 0을 반환하고, 그렇지 않으면 0이 아닌 반환 코드로 다시 실행됩니다.

인사:)

관련 정보