有個同事說重啓了服務器沒有自啓動redis,我看了一下,是之前手動編譯安裝的模式,沒有配置開機啓動的服務html
這邊作個筆記記錄一下redis如何設置編譯安裝模式的開機自啓動。mysql
配置文件路徑:/etc/redis.confredis
daemonize是守護進程的意思sql
把daemonize no改爲daemonize yesvim
make install安裝命令是不帶自啓動腳本的。服務器
而redis官方提供了一個手動編譯時的自啓動腳本,ide
可是須要經過另一個工具來安裝。咱們切換到目錄中的utils目錄下工具
具體路徑:/usr/local/redis/utilsui
腳本文件會依次提示咱們選擇redis-server所使用的端口、配置文件、日誌文件、庫文件以及啓動文件。spa
若是保持默認的話直接輸入enter便可。
它就會自動複製編譯好的文件到對應的目錄中去,
如第下圖中所示,同時自動將redis設置爲開機自啓動,可是使用的是chkconfig命令。
Linux chkconfig命令用於檢查,設置系統的各類服務。
這是Red Hat公司遵循GPL規則所開發的程序,它可查詢操做系統在每個執行等級中會執行哪些系統服務,其中包括各種常駐服務。
使用ps -aux命令查看自啓動的redis進程
而後在/etc/init.d/目錄下能夠看到redis_6379這個自啓動腳本。
使用chkconfig --list命令查看
能夠看到redis程序在2,3,4,5這四個等級下是開機自啓動的。
關於chkconfig的命令能夠查看我另一個mysql自啓動的帖子:http://www.javashuo.com/article/p-qwefigiz-ka.html
配置文件路徑:/etc/redis.conf
daemonize是守護進程的意思
把daemonize no改爲daemonize yes
vim /etc/init.d/redis
複製下面代碼到腳本中
!注意要修改裏面redis的安裝路徑:我這邊的安裝路徑是/usr/local/redis/
這段代碼就是redis根目錄 /utils/redis_init_script 啓動腳本的代碼
我這邊是用了install_server.sh自動生成的,因此不用改那麼多東西,直接用就行
直接chmod + x /etc/init.d/redis
而後systemctl start redis_6379就能夠啓動了
#!/bin/sh #Configurations injected by install_server below.... EXEC=/usr/local/redis/src/redis-server CLIEXEC=/usr/local/redis/src/redis-cli PIDFILE=/var/run/redis_6379.pid CONF="/etc/redis/6379.conf" REDISPORT="6379" ############### # SysV Init Information # chkconfig: - 58 74 # description: redis_6379 is the redis daemon. ### BEGIN INIT INFO # Provides: redis_6379 # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Should-Start: $syslog $named # Should-Stop: $syslog $named # Short-Description: start and stop redis_6379 # Description: Redis daemon ### END INIT INFO case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; status) PID=$(cat $PIDFILE) if [ ! -x /proc/${PID} ] then echo 'Redis is not running' else echo "Redis is running ($PID)" fi ;; restart) $0 stop $0 start ;; *) echo "Please use start, stop, restart or status as first argument" ;; esac