這兩天在配單機多redis實例,發現配好以後在ubuntu15.10上沒法自啓,看來用sysvinit的方式不靈了,順便研究了一下systemd,發現這東西挺好使的,不但支持服務自啓,還支持job,能夠替換crontabredis
幾個重要的路徑 /usr/lib/systemd 這是system的服務單元,全部服務單元都放這裏,下面有兩個目錄比較重要 system和user,這倆目錄至關與原來的運行級別,system的級別高於user級別,若是開機自啓就用system級別就能夠ubuntu
/usr/lib/systemd/ 下是systemd的服務單元 /etc/systemd/ 是systemd的配置,通常用不到
首先的i編寫 unit,其中unit是system中的服務配置文件的叫法rest
下面是個unit的例子日誌
[Unit] Description=Redis persistent key-value database After=network.target #依賴network.target,若是有多個依賴,能夠寫多個After [Service] ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no ExecReload=/bin/kill -s HUP $MAINPID #MAINPID是個變量,指向當前服務實例的進程ID User=redis Group=redis Restart=always #若是被殺掉或進程退出就自動重啓 RestartSec=5s #5秒檢查一次 [Install] WantedBy=multi-user.target #安裝到多用戶模式
啓動/關閉/重啓服務code
$ systemctl start redis #啓動 $ systemctl stop redis #中止 $ systemctl restart redis #重啓 $ systemctl reload redis #從新裝入ntpd的配置
systemd狀態server
$ systemctl is-enabled redis #判斷redis服務無是不是容許的 $ systemctl is-active redis #判斷redis服務是否處於活動狀態 $ systemctl enable redis.service #讓redis開機自啓 $ systemctl disable redis.service #讓redis不開機自啓
殺掉某個服務進程
$ systemctl kill redis.service
獲取某個服務的配置crontab
$ systemctl show redis
獲取每一個任務的啓動耗時ip
$ systemd-analyze blame
獲取任務之間的依賴關係ci
$ systemctl list-dependencies
在/usr/lib/systemd/system下添加兩個文件
xxxx.service,這是普通的service文件 xxxx.timer,這是定義計時器信息的計時器指令文件
首先須要用systemctl start xxx.service測一下service是否好使,而後用systemctl enable xxxx.timer來啓用timer
每次修改了配置要從新載入配置,而後重啓一下timer才能生效
OnCalendar=*-*-* *:*:00 #每分鐘執行一次
$ journalctl $ journalctl -xe 查看最後的日誌 $ journalctl -b #查看最後的啓動日誌 $ journalctl /sbin/crond #查看和crond相關的日誌 $ journalctl -f #查看最後10條日誌
添加服務的步驟
1.在/usr/lib/systemd/system下建立redis.service文件(開機自動執行,無界面模式也能夠啓動) 2. 加載配置 $ systemctl reload redis.service 3.設爲自啓動 $ systemctl enable redis.service 4.啓動 重啓或者執行 $ systemctl start redis.service
若是有異常,能夠分析出錯緣由 $journalctl -xe 若是日誌報和權限有關的錯誤,就考慮多是SELinux的問題