浏览代码

improve:isrunning function and wait for no bin

rufengsuixing 5 年之前
父节点
当前提交
9c851b044c
共有 1 个文件被更改,包括 20 次插入4 次删除
  1. 20 4
      root/etc/init.d/AdGuardHome

+ 20 - 4
root/etc/init.d/AdGuardHome

@@ -7,11 +7,12 @@ STOP=01
 
 CONFIGURATION=AdGuardHome
 CRON_FILE=/etc/crontabs/root
-EXTRA_COMMANDS="do_redirect testbackup test_crontab force_reload"
+EXTRA_COMMANDS="do_redirect testbackup test_crontab force_reload isrunning"
 EXTRA_HELP="        do_redirect 0 or 1\
         testbackup backup or restore\
 		test_crontab
-		force_reload"
+		force_reload
+		isrunning"
 set_forward_dnsmasq()
 {
 	local PORT="$1"
@@ -124,8 +125,22 @@ service_triggers() {
 	procd_add_reload_trigger "$CONFIGURATION"
 	[ "$(uci get AdGuardHome.AdGuardHome.redirect)" == "redirect" ] && procd_add_reload_trigger firewall
 }
+isrunning(){
+config_load "${CONFIGURATION}"
+_isrunning
+local r=$?
+([ "$r" == "0" ] && echo "running") || ([ "$r" == "1" ] && echo "not run" ) || echo "no bin"
+return $r
+}
+_isrunning(){
+	config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome"
+	[ ! -f "$binpath" ] && return 2
+	pgrep $binpath 2>&1 >/dev/null && return 0
+	return 1
+}
 force_reload(){
-	procd_send_signal "$CONFIGURATION"
+	config_load "${CONFIGURATION}"
+	_isrunning && procd_send_signal "$CONFIGURATION" || start
 }
 get_tz()
 {
@@ -324,7 +339,8 @@ boot_service() {
 	config_load "${CONFIGURATION}"
 	config_get waitonboot $CONFIGURATION waitonboot "0"
 	config_get_bool enabled $CONFIGURATION enabled 0
-	start_service
+	config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome"
+	[ -f "$binpath" ] && start_service
 	if [ "$enabled" == "1" ] && [ "$waitonboot" == "1" ]; then
 		procd_open_instance "waitnet"
 		procd_set_param command "/usr/share/AdGuardHome/waitnet.sh"