在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.
成功在在背景執行。
沒有留言:
張貼留言