終於有時間寫 blog 了 (汗
應該說最近都在轉換東西,沒有新的技術可以玩
不確定什麼時候,應該是 Ubuntu 16.04 LTS 或附近,決不是 Ubuntu 14.04 LTS 就對了,系統就預設從 Upstart 系統更換到 Systemd 系統
聽說 Systemd 更厲害更快速,但是沒有比較好寫,指令也比較長 T_T
之前會抗拒使用 Ubuntu 16.04 LTS 是因為 Systemd 系統,感覺非常的陌生
不過呢,都是得轉換的,就嘗試著把 Upstart 的設定檔改成 Systemd 的設定檔了
大概簡介一下
最初期的是 SysV
使用的是 /etc/init.d/ 下的設定檔
拜託,很難寫 XD
再來是使用了一陣子的 Upsatrt
設定檔在 /etc/init/ 下
只要將必要的狀況敘述清楚即可
甚至不用自己考慮 pid 之類的
使用上也是很方便,start xxx,stop xxx
對就是這麼無腦
最後就是新的 Systemd
設定檔在 /lib/systemd/system/ 下
在 /etc/system.d/system/ 會有一些檔案,用來描述什麼時候啟動結束之類的,就像 /etc/rcX.d 一樣
使用上呢都得要 systemctl 開頭,什麼 systemctl start xxx,什麼 systemctl stop xxx 的,按 tab 想要打快一點還不行,因為會有 sysctl 很類似會卡住 (棍
算了,抱怨歸抱怨,還是得要用
直接用範例講解比較快
如果原本 Upstart 有一隻設定檔 /etc/init/bigtree.conf
description "BigTree" author "Big Tree " start on runlevel [2345] stop on runlevel [!2345] respawn respawn limit 20 5 script export NODE_ENV=production export PORT=8080 exec node /tmp/bigtree.js end script
轉換成 Systemd /lib/systemd/system/bigtree.service
[Unit] Description=Big Tree [Service] Type=simple Environment="NODE_ENV=production" Environment="PORT=8080" ExecStart=/bin/sh -ec "exec node /tmp/bigtree.js" Restart=on-failure RestartSec=5s [Install] WantedBy=bigtree.target
加上 /etc/systemd/system/bigtree.target
[Install] WantedBy=multi-user.target
先注意的是,副檔名有改變,Upstart 使用 conf 但 Systemd 使用 service
對照的部分
Unit 對到描述部分
Service 對到 Script 部分,也有包含 respawn 等
Install 掌管 enable 跟 disable 的部分
檔案都正確後,執行 systemctl enable bigtree 就會幫你產生 /etc/systemd/system/bigtree.target.wants/bigtree.service 到 /lib/systemd/system/bigtree.service 的 soft link,這樣就可以開機時啟動
還有其他參數
因為我沒用到,就沒寫了
請參考https://wiki.ubuntu.com/SystemdForUpstartUsers
剩下的,我也不是很熟
剛教~沒讀~