【发布时间】:2017-06-15 05:11:19
【问题描述】:
我想用shell脚本启动Redis服务器,然后监控一个日志文件:
#!/bin/bash
/path/to/redis/src/redis-server &
tail -f /path/to/log/logfile.log
如果我运行此脚本并从终端按 Ctrl+C,tail -f 将终止,这正是我想要的,但是 Redis 也检测到 SIGINT 并退出。
我试着这样写脚本:
#!/bin/bash
trap '' INT TSTP
~/redis/src/redis-server &
tail -f ./script1
这一次情况更糟,tail -f 拒绝终止,而 Redis 仍然 检测到 SIGINT 并退出。
似乎 Redis 在忽略信号方面存在一些问题。
我的目标是让tail -f响应Ctrl+C,同时让Redis忽略这个信号。
请任何人告诉我这是否可以实现,如果可以,请给我一些建议?
【问题讨论】:
-
无法重现您所看到的行为。你在什么操作系统上?什么版本的 Redis?
-
@Jack,我使用的是 Ubuntu 12.04.5 和 Redis 3.2.9
-
一种解决方法可能是以
setsid ~/redis/src/redis-server &运行它 -
@MarkPlotnick 很好的解决方案,谢谢!