kill: 5656: Argumente müssen Prozess- oder Job-IDs sein

2020
Hellfar

Mit redis-serverON (gestartet mit redis-server &).

Das Ausführen dieses Befehls in einem Terminal funktioniert einwandfrei:

kill -s SIGTERM "`pgrep redis-server`" 

In einem Skript wird jedoch die folgende Meldung ausgegeben und der Prozess wird nicht abgebrochen:

myscript.sh: line 17: kill: 1448 1452: arguments must be process or job IDs 

(Wenn ja: pgrep redis-serverIn diesem Beispiel wird es mich ausgeben 1448)

Mein komplettes Quellenskript:

#!/bin/bash  if [ -a "redis-server_must_be_ON" ] then if [ "`redis-cli PING`" != "PONG" ] then redis-server & if [ "`redis-cli PING`" != "PONG" ] then echo "redis-server still not running while it should have been set on." >> /dev/stderr exit 1 fi fi else if [ "`redis-cli PING`" == "PONG" ] then kill -s SIGTERM "`pgrep redis-server`" if [ "`redis-cli PING`" == "PONG" ] then echo "redis-server still running while it should have been set off." >> /dev/stderr exit 1 fi fi fi 

(Hier, wenn ich das pgrep redis-servermit einer Art Maskarade ersetze pgrep bash1.sh, funktioniert es auch gut).

Ist mein Skript korrekt, was fehlt mir?

0
Für die Vollständigkeit tut `ps aux | grep redis-server` gibt 1448 als PID des Prozesses zurück? djsmiley2k vor 7 Jahren 0
Erfinden Sie das Rad nicht neu? Die meisten Systeme haben "service redis stop", "systemctl stop redis". grawity vor 7 Jahren 2
`username 1448 0.0 0.1 34880 4320 pts / 1 Sl 14:17 0:01 redis-server *: 6379` yep: / Hellfar vor 7 Jahren 0
@grawity, deine Befehle liefern mir `Unit redis.service not found.`. Ich habe auch versucht, den Dienst so zu verwenden: `/etc/init.d/redis-server start`, aber ohne Vorfälle (keine Fehler, aber auch kein Prozess) sowohl mit` start` als auch mit `stop`. `Redis-server &` lass mich jedoch benutzen und redis request fein machen. Hellfar vor 7 Jahren 0
Ok, `redis-cli shutdown` funktioniert also. Trotzdem ist das immer noch seltsam, dass derselbe Befehl 'kill' in einem Skript nicht funktioniert. Hellfar vor 7 Jahren 0

0 Antworten auf die Frage