2013-04-22 31 views
6

Lần đầu tiên tôi khởi động Redis trên máy cục bộ của mình và sau đó đóng tất cả các cửa sổ đầu cuối sau khi tắt ứng dụng Rails của mình. Một tiếng đồng hồ sau, tôi bắt đầu lên các ứng dụng Rails một lần nữa và đã làm những điều sau đây để khởi động server redisShuting down Redis

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

Tuy nhiên, nó nói với tôi

# Opening port 6379: bind: Address already in use 

vì thế tôi cho rằng nó vẫn chạy dụ trước đó của nó thậm chí mặc dù tôi đã đóng các cửa sổ đầu cuối trên máy Mac của mình.

Nhìn vào trang này http://redis.io/commands/shutdown, tôi đã cố gắng để chạy

SHUTDOWN 

trong cửa sổ terminal nhưng tôi nhận được phản ứng này

SHUTDOWN: NOT super-user 

do đó tôi đã cố gắng (Mặc dù tôi không sử dụng sudo để bắt đầu nó)

sudo SHUTDOWN 

và sau khi nó hỏi mật khẩu của tôi, nó xuất ra

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

nhưng khi tôi ngẫu nhiên chạy shutdown -s nó nói

SHUTDOWN: NOT super-user 

cách thích hợp để Redis tắt máy khi tôi đóng lên ứng dụng của tôi là gì?

+0

Xin chào, tôi vô tình downvoted câu hỏi của bạn 15 phút trước. Tôi vừa mới nhận ra điều đó nhưng tôi không thể hoàn tác nó. Nếu bạn chỉnh sửa nó tôi nghĩ rằng tôi có thể hoàn tác nó. Tôi thật sự thật sự rất tiếc. – Leandro

Trả lời

4

Điều này có nghĩa là được gửi dưới dạng lệnh để quay lại, không được thực thi trên thiết bị đầu cuối của bạn.

Trong trường hợp này, bạn có thể thực sự chỉ kill redis từ thiết bị đầu cuối, vì khi nhận được tín hiệu SIGTERM, nó sẽ lên lịch SHUTDOWN thay vì chỉ thoát.

Để tham khảo see the signal handling doc page.

+0

thực sự, chạy 'giết' mang lại cho tôi điều này giết: sử dụng: giết [-s sspspec | -n signum | -sigspec] pid | jobspec ... hoặc kill -l [sigspec] – BrainLikeADullPencil

+0

Bạn cần cung cấp ID tiến trình để giết, vì vậy nó biết nơi gửi tín hiệu SIGTERM. Hãy xem điều này: http://unixhelp.ed.ac.uk/CGI/man-cgi?kill – Nathan

+2

ok, cho bất cứ ai nhìn vào câu trả lời này, tôi đã nhận được quá trình id bằng cách làm 'redis-cli info | grep process_id 'và sau đó chạy' kill 2694 ' – BrainLikeADullPencil

34

Sử dụng được xây dựng trong khách hàng redis: redis-cli shutdown

+1

Điều này có vẻ đúng cách để làm điều đó. – Eddy

+0

Nên là câu trả lời hàng đầu. – sanny

+1

không làm việc cho tôi –

3

Tìm hiểu quá trình id của instance Redis chạy trên máy tính của bạn ...

> ps aux | grep redis 

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

... và sau đó chạy:

> kill 23277 
+2

Tôi đã thử phương pháp này, nhưng lưu ý rằng quá trình 'redis-server' của tôi tiếp tục thay đổi PID của nó vì một lý do nào đó ... Vì vậy, mỗi lần tôi chạy' ps aux | grep redis' PID hiển thị sẽ khác với lần chạy trước của 'ps aux | grep redis'. Cuối cùng 'redis-cli shutdown' là thứ tôi muốn. – mecampbellsoup