Ich habe ein einfaches Skript wie das folgende, das prüft, ob der fail2ban- Dienst unter Ubuntu 18.04 ausgeführt wird oder nicht:
#!/bin/bash
# Script to check if fail2ban service is running
if pgrep -x "fail2ban" > /dev/null
then
echo "Fail2ban is running"
else
echo "Fail2ban is not running"
fi
Ich habe fail2ban in einer Test-VM installiert und läuft auf der VM. Hier ist ein Screenshot des systemctl status
Befehls.
Aber wenn das obige Skript ausgeführt wird, erhalte ich das Ergebnis, dass "Fail2ban nicht ausgeführt wird". Ich bin nicht sicher, ob es mit dem Skript ist. Ich habe auch versucht, ps aux
Befehl statt pgrep
. Aber ich bekomme immer noch das gleiche Ergebnis .
ps
, wenn Sie es verwenden könnensystemctl is-active fail2ban
? FWIW Ihr Befehl schlägt wahrscheinlich fehl, weil Sie eine genaue Übereinstimmung angegeben haben (-x
), aber der Prozessname ist tatsächlichfail2ban.server
fail2ban-server
(mit einem Bindestrich);pgrep -x fail2ban.server
findet es, weil es eine Regex-Übereinstimmung ist (.
entspricht der-
) undsystemctl status fail2ban.service
sagt zum BeispielMain PID: 2721 (fail2ban-server)
. Der Servicename ist fail2ban.serv ice, glaube ich./usr/bin/python3
.Antworten:
Sie haben gefragt
pgrep
, ob Sie genau (-x
) nach einem aufgerufenen Prozess suchen möchten,fail2ban
aber die Ausgabe vonsystemctl status
zeigt, dass er/usr/bin/python3
stattdessen aufgerufen wird.Um zu überprüfen, ob ein
systemd
Gerät läuft, verwenden SieDas ist:
quelle
pgrep -f '*fail2ban*'
um Muster zu finden oderpgrep -f '/usr/bin/python3 /usr/bin/fail2ban-server'
genau das zu finden, was Screenshots zeigenpgrep -f '*fail2ban*'
könnte denpgrep
Befehl selbst fangen ./proc/<pid>/comm
), obwohl es sich um ein Python-Skript handelt,fail2ban-server
sopgrep -x fail2ban-server
- obwohl ich keinen Grund sehe, ihn zu verwenden, wenn ersystemctl is-active
verfügbar istDas folgende Shellscript
running
kombiniert das Ergebnis vonsystemctl is-active
undps -ef | ... | grep
um festzustellen, ob ein bestimmtes Programm (oder ein Programmname, der die Suchzeichenfolge enthält) ausgeführt wird oder nicht.
Machen Sie es ausführbar und legen Sie es in einem Verzeichnis in PATH ab, wenn Sie möchten. Ich habe es in mein
bin
Verzeichnis gestellt und kann es ohne Pfad verwenden.Verwendungszweck:
Beispiele:
quelle