2013-04-22 5 views
6

Ho avviato Redis per la prima volta sulla mia macchina locale oggi e in seguito ho chiuso tutte le finestre del terminale dopo aver spento la mia app Rails. Un'ora più tardi, ho iniziato l'applicazione Rails di nuovo e fatto quanto segue per avviare il server RedisShuting down Redis

redis-server /usr/local/etc/redis.conf 

Tuttavia, mi ha detto

# Opening port 6379: bind: Address already in use 

ho quindi pensato che era ancora in esecuzione la sua precedente istanza anche anche se ho chiuso le finestre del terminale sul mio Mac.

Guardando questa pagina http://redis.io/commands/shutdown, ho cercato di correre

SHUTDOWN 

nella finestra del terminale, ma ottengo questa risposta

SHUTDOWN: NOT super-user 

Ho quindi provato (anche se non ho usato sudo per avviarlo)

sudo SHUTDOWN 

e dopo che mi ha chiesto la mia password, emette questo

usage: shutdown [-] [-h [-u] [-n] | -r [-n] | -s | -k] time [warning-message ...] 

ma quando mi sono casualmente imbattuto shutdown -s ha detto

SHUTDOWN: NOT super-user 

Qual è il modo corretto di Redis arresto quando chiudo la mia app?

+0

Ehi, ho accidentalmente downvoted la tua domanda 15 minuti fa. L'ho appena capito, ma non posso annullarlo. Se lo modifichi, penso di poterlo annullare. Sono davvero, davvero dispiaciuto. – Leandro

risposta

4

Questo è pensato per essere inviato come comando per redis, non per essere eseguito sul terminale.

In questo caso, è possibile eseguire solo i numeri rossi da terminale kill, poiché dopo aver ricevuto un segnale SIGTERM, verrà programmato uno SPEGNIMENTO invece di uscire semplicemente.

Per riferimento see the signal handling doc page.

+0

in realtà, eseguire 'kill' mi dà questo kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... o kill -l [sigspec] – BrainLikeADullPencil

+0

È necessario fornire l'ID processo per uccidere, in modo che sappia dove inviare il segnale SIGTERM. Date un'occhiata a questo: http://unixhelp.ed.ac.uk/CGI/man-cgi?kill – Nathan

+2

ok, per chi guarda questa risposta, ho ottenuto l'id del processo facendo 'redis-cli info | grep process_id 'e quindi eseguito' kill 2694 ' – BrainLikeADullPencil

34

Utilizzare il built-in Redis client: redis-cli shutdown

+1

Questo sembra il modo giusto per farlo. – Eddy

+0

Dovrebbe essere la risposta migliore. – sanny

+1

non funziona per me –

3

scoprite l'ID del processo dell'istanza Redis in esecuzione sul computer ...

> ps aux | grep redis 

impadmin 23277 0.0 0.0 35044 1976 pts/2 Sl+ 14:19 0:00 src/redis-server 

... e quindi eseguire:

> kill 23277 
+2

Ho provato questo approccio, ma continuavo a notare che il mio processo 'redis-server' continuava a cambiare il suo PID per qualche motivo ... Quindi ogni volta che eseguivo' ps aux | grep redis' il PID visualizzato sarebbe diverso dalla precedente esecuzione di 'ps aux | grep redis'. In definitiva, 'redis-cli shutdown' era quello che volevo. – mecampbellsoup