Systemd 學習筆記

這兩天在配單機多redis實例,發現配好以後在ubuntu15.10上沒法自啓,看來用sysvinit的方式不靈了,順便研究了一下systemd,發現這東西挺好使的,不但支持服務自啓,還支持job,能夠替換crontabredis

systemd.service

幾個重要的路徑 /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

systemd.timer

在/usr/lib/systemd/system下添加兩個文件

xxxx.service,這是普通的service文件
xxxx.timer,這是定義計時器信息的計時器指令文件

首先須要用systemctl start xxx.service測一下service是否好使,而後用systemctl enable xxxx.timer來啓用timer

每次修改了配置要從新載入配置,而後重啓一下timer才能生效

OnCalendar=*-*-* *:*:00   #每分鐘執行一次

查看systemd的日誌

$ 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的問題

相關文章
相關標籤/搜索