1. 程式人生 > >在Ubuntu18下編寫開機啟動服務及指令碼

在Ubuntu18下編寫開機啟動服務及指令碼

Ubuntu18採用systemctl來管理開機啟動的指令碼,但是這裡面有一些坑需要注意
舉例來說

[Unit]
After=network.target

[Service]
Type=simple 
ExecStart=/usr/local/xxx.sh

[Install]
WantedBy=multi-user.target

1.編寫的指令碼/usr/local/xxx.sh的第一行一定要加上一行

#!/bin/sh

如果想讓指令碼在執行到過程中碰到錯誤就不往下面執行,將其改為

#!/bin/sh -e

如果不加上這一行,會出現莫名奇妙的錯誤,如圖:
systemctl出錯圖片

10月 13 20:06:38 systemd[1]: Started .service.
10月 13 20:06:38  systemd[5542]: .service: Failed to execute command: Exec format error
10月 13 20:06:38  systemd[5542]: .service: Failed at step EXEC spawning /usr/local/.sh: Exec format error
10月 13 20:06:38 systemd[1]: .service: Main process exited, code=exited, status=203/EXEC
10月 13 20:06:38 systemd[1]: .service: Failed with result 'exit-code'.