1. 程式人生 > >Debian 新增自啟動服務

Debian 新增自啟動服務

1. 新建指令碼檔案

  • 在 /etc/init.d 下加入指令碼檔案
sudo vi /etc/init.d/aria2c
  • 輸入內容:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          Aria2
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop::    $network $local_fs $remote_fs
# Should-Start:      $all
# Should-Stop:       $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 - Download Manager # Description: Aria2 - Download Manager ### END INIT INFO NAME=aria2c USER=pi ARIA2C=/usr/bin/$NAME PIDFILE=/var/run/$NAME.pid CONF=/home/$USER/.aria2/aria2.conf ARGS="--conf-path=${CONF}" test -f $ARIA2C || exit 0 . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting aria2c"
"aria2c" start-stop-daemon -S -q -b -m -p $PIDFILE -c $USER -a $ARIA2C -- $ARGS log_end_msg $? ;; stop) log_daemon_msg "Stopping aria2c" "aria2c" start-stop-daemon -K -q -p $PIDFILE log_end_msg $? ;; restart|reload|force-reload) log_daemon_msg "Restarting aria2c"
"aria2c" start-stop-daemon -K -R 5 -q -p $PIDFILE start-stop-daemon -S -q -b -m -p $PIDFILE -c $USER -a $ARIA2C -- $ARGS log_end_msg $? ;; status) status_of_proc -p $PIDFILE $ARIA2C aria2c && exit 0 || exit $? ;; *) log_action_msg "Usage: /etc/init.d/aria2c {start|stop|restart|reload|force-reload|status}" exit 2 ;; esac exit 0

以上指令碼 ### BEGIN INIT INFO - ### END INIT INFO 為啟動指令碼需要定義的 metadata 資訊,不定義會報錯

啟用指令碼使用 start-stop-daemon 命令,引數為:

  • -S, --start 啟動服務
  • -K, --stop 停止服務
  • -q, --quiet 靜默啟動,不輸出日誌
  • -b, --background 後臺啟動
  • -m, --make-pidfile 建立 pid 檔案
  • -p, --pidfile 指定 pid 檔案
  • -c, --chuid 指定啟動使用者
  • -a, --startas pathname 程序路徑
  • -R, --retry timeout|schedule 重試次數

需要將 USER 修改為自己的使用者名稱稱
配置檔案位於 /home/$USER/.aria2/aria2.conf

更多引數含義可以通過 man start-stop-daemon 進行檢視

  • 修改指令碼許可權
sudo chmod +x /etc/init.d/aria2c
  • 測試指令碼
sudo /etc/init.d/aria2c start
sudo /etc/init.d/aria2c status
sudo /etc/init.d/aria2c stop
sudo /etc/init.d/aria2c status
sudo /etc/init.d/aria2c restart

2. 使用 insserv 設定自動啟動

  • 新增服務
sudo insserv /etc/init.d/aria2c #新增服務
sudo insserv -r /etc/init.d/aria2c #刪除服務
  • 重啟測試
sudo reboot
sudo /etc/init.d/aria2c status