2016年11月17日 星期四

CentOS 7 建立 service unit file


在Linux/Unix系統上,背景執行的程式叫做daemon,在CentOS上可以透過指令systemctl或指令chkconfig讓除了在背景執行外,也可以開機時自動執行。

像是:

[root@localhost ~]# systemctl start network.service  # 啟動network.service
[root@localhost ~]# systemctl enable network.service # 設定開機自動執行




現在假如有一個程式「tunneling」要能夠開機自動背景執行,那麼來寫它的組態檔。

service組態都放在這個位置:
/etc/systemd/system/


那麼建一個檔案,叫做「tunneling.service」:
[root@localhost ~]# touch /etc/systemd/system/tunneling.service 
[root@localhost ~]# chmod 664 /etc/systemd/system/tunneling.service 


編輯組態檔:
[root@localhost ~]# vim /etc/systemd/system/tunneling.service 
[Unit]
Description=tunneling Service
After=network.target

[Service]
Type=simple
ExecStartPre=/bin/sh -c '/usr/bin/killall tunneling > /dev/null 2>&1 || :'
ExecStart=/root/tunneling/tunneling -f /root/tunneling/tunnel_config.json
ExecStop=/bin/sh -c '/usr/bin/killall tunneling > /dev/null 2>&1 || :'

[Install]
WantedBy=default.target

[Unit]:基本設定相關。
  • Description:描述。
  • After:執行順序。

[Service]:程式執行相關。
  • Type: 如何執行。
  • ExecStartPre:執行前指令。
  • ExecStart:start時,執行的指令。
  • ExecStop:stop時,執行的指令。

[Install]:其餘設定。
  • WantedBy:當設定成開機自動執行時,所需依賴的service。

這邊只列出我的需求所需要的組態,其他設定這邊有


啟動service(service名稱就是剛剛的檔名)並設定開機自動執行:
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start tunneling.service
[root@localhost ~]# systemctl enable tunneling.service


狀態:
[root@localhost ~]# systemctl status tunneling.service
● tunneling.service - tunneling Service
   Loaded: loaded (/etc/systemd/system/tunneling.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2016-11-17 14:21:56 CST; 22min ago
 Main PID: 11377 (tunneling)
   CGroup: /system.slice/tunneling.service
           └─11377 /root/tunneling/tunneling -f /root/tunneling/tunnel_config.json

11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2247, Original:    60 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2248, Original:   167 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2249, Original:   167 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2250, Original:   167 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2251, Original:    60 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2252, Original:    60 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2253, Original:    60 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2254, Original:    60 bytes...es
11月 17 14:43:55 localhost.localdomain tunneling[11377]: No.       2255, Original:    60 bytes...es
11月 17 14:44:01 localhost.localdomain systemd[1]: Started tunneling Service.
Hint: Some lines were ellipsized, use -l to show in full.


成功在在背景執行。

沒有留言:

張貼留言