kill: 5656: аргументы должны быть идентификаторами процесса или задания

1892
Hellfar

После redis-serverвключения (запущен с redis-server &).

Выполнение этой команды в терминале работает отлично:

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

Но в скрипте он выводит следующее сообщение и не останавливает процесс:

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

(если я это сделаю: pgrep redis-serverв этом примере он выведет меня 1448)

Мой полный исходный скрипт:

#!/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 

(Здесь, если я заменю pgrep redis-serverкакой-то тушью, как pgrep bash1.shэто также работает отлично).

Мой сценарий правильный, что мне не хватает?

0
Для полноты, `ps aux | grep redis-server` вернуть 1448 в качестве PID процесса? djsmiley2k 7 лет назад 0
Вы не изобретаете велосипед? Большинство систем имеют `service redis stop`,` systemctl stop redis`. grawity 7 лет назад 2
`username 1448 0.0 0.1 34880 4320 pts / 1 Sl 14:17 0:01 redis-server *: 6379` yep: / Hellfar 7 лет назад 0
@grawity, ваши команды возвращают мне `Unit redis.service not found`. Я также попытался использовать сервис следующим образом: `/etc/init.d/redis-server start`, но без инцидентов (без ошибок, но и без процесса) с` start` и `stop`. Однако, `redis-server & 'позволяет мне использовать его и выполнять запрос redis. Hellfar 7 лет назад 0
Хорошо, так что `redis-cli shutdown` работает. Но это все еще странно, что та же самая команда `kill` не работает в скрипте. Hellfar 7 лет назад 0

0 ответов на вопрос

Похожие вопросы