Minimalistic service script:
#!/bin/sh /etc/rc.common
USE_PROCD=1
PROCD_DEBUG=1
start_service() {
procd_open_instance
procd_set_param command "/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json"
procd_close_instance
}
If I run the command /usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json
manualy -- it starts correct.
But via script it's finished but no process is started I can't understand wehere error could be, program is written in c-land with pthreads and libevent2-alpha with mbedtls libs.
Sources are there:
root@OpenWrt:~# INIT_TRACE=1 /etc/init.d/pegas start
+ extra_command start 'Start the service'
+ local 'cmd=start'
+ local 'help=Start the service'
+ printf '%-16s%s' start 'Start the service'
+ local 'extra=start Start the service'
+ ALL_HELP='\tstart Start the service\n'
+ ALL_COMMANDS='boot shutdown depends start'
+ extra_command stop 'Stop the service'
+ local 'cmd=stop'
+ local 'help=Stop the service'
+ printf '%-16s%s' stop 'Stop the service'
+ local 'extra=stop Stop the service'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n'
+ ALL_COMMANDS='boot shutdown depends start stop'
+ extra_command restart 'Restart the service'
+ local 'cmd=restart'
+ local 'help=Restart the service'
+ printf '%-16s%s' restart 'Restart the service'
+ local 'extra=restart Restart the service'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart'
+ extra_command reload 'Reload configuration files (or restart if service does not implement reload)'
+ local 'cmd=reload'
+ local 'help=Reload configuration files (or restart if service does not implement reload)'
+ printf '%-16s%s' reload 'Reload configuration files (or restart if service does not implement reload)'
+ local 'extra=reload Reload configuration files (or restart if service does not implement reload)'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload'
+ extra_command enable 'Enable service autostart'
+ local 'cmd=enable'
+ local 'help=Enable service autostart'
+ printf '%-16s%s' enable 'Enable service autostart'
+ local 'extra=enable Enable service autostart'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable'
+ extra_command disable 'Disable service autostart'
+ local 'cmd=disable'
+ local 'help=Disable service autostart'
+ printf '%-16s%s' disable 'Disable service autostart'
+ local 'extra=disable Disable service autostart'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable'
+ extra_command enabled 'Check if service is started on boot'
+ local 'cmd=enabled'
+ local 'help=Check if service is started on boot'
+ printf '%-16s%s' enabled 'Check if service is started on boot'
+ local 'extra=enabled Check if service is started on boot'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n\tenabled Check if service is started on boot\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable enabled'
+ . /etc/init.d/pegas
+ USE_PROCD=1
+ PROCD_DEBUG=1
+ '[' -n 1 ]
+ extra_command running 'Check if service is running'
+ local 'cmd=running'
+ local 'help=Check if service is running'
+ printf '%-16s%s' running 'Check if service is running'
+ local 'extra=running Check if service is running'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n\tenabled Check if service is started on boot\n\trunning Check if service is running\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable enabled running'
+ extra_command status 'Service status'
+ local 'cmd=status'
+ local 'help=Service status'
+ printf '%-16s%s' status 'Service status'
+ local 'extra=status Service status'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n\tenabled Check if service is started on boot\n\trunning Check if service is running\n\tstatus Service status\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable enabled running status'
+ extra_command trace 'Start with syscall trace'
+ local 'cmd=trace'
+ local 'help=Start with syscall trace'
+ printf '%-16s%s' trace 'Start with syscall trace'
+ local 'extra=trace Start with syscall trace'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n\tenabled Check if service is started on boot\n\trunning Check if service is running\n\tstatus Service status\n\ttrace Start with syscall trace\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable enabled running status trace'
+ extra_command info 'Dump procd service info'
+ local 'cmd=info'
+ local 'help=Dump procd service info'
+ printf '%-16s%s' info 'Dump procd service info'
+ local 'extra=info Dump procd service info'
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n\tenabled Check if service is started on boot\n\trunning Check if service is running\n\tstatus Service status\n\ttrace Start with syscall trace\n\tinfo Dump procd service info\n'
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable enabled running status trace info'
+ . /lib/functions/procd.sh
+ . /usr/share/libubox/jshn.sh
+ PROCD_RELOAD_DELAY=1000
+ _PROCD_SERVICE=
+ _procd_wrapper procd_open_service procd_close_service procd_add_instance procd_add_raw_trigger procd_add_config_trigger procd_add_interface_trigger procd_add_mount_trigger procd_add_reload_trigger procd_add_reload_interface_trigger procd_add_action_mount_trigger procd_add_reload_mount_trigger procd_add_restart_mount_trigger procd_open_trigger procd_close_trigger procd_open_instance procd_close_instance procd_open_validate procd_close_validate procd_add_jail procd_add_jail_mount procd_add_jail_mount_rw procd_set_param procd_append_param procd_add_validation procd_set_config_changed procd_kill procd_send_signal
+ procd_lock
+ readlink /etc/init.d/pegas
+ local 'basescript='
+ basename /etc/init.d/pegas
+ local 'service_name=pegas'
+ flock -n 1000
+ '[' 1 '!=' 0 ]
+ exec
+ flock 1000
+ '[' 0 '!=' 0 ]
+ '[' -n procd_open_service ]
+ eval 'procd_open_service() { _procd_call _procd_open_service "$@"; }'
+ shift
+ '[' -n procd_close_service ]
+ eval 'procd_close_service() { _procd_call _procd_close_service "$@"; }'
+ shift
+ '[' -n procd_add_instance ]
+ eval 'procd_add_instance() { _procd_call _procd_add_instance "$@"; }'
+ shift
+ '[' -n procd_add_raw_trigger ]
+ eval 'procd_add_raw_trigger() { _procd_call _procd_add_raw_trigger "$@"; }'
+ shift
+ '[' -n procd_add_config_trigger ]
+ eval 'procd_add_config_trigger() { _procd_call _procd_add_config_trigger "$@"; }'
+ shift
+ '[' -n procd_add_interface_trigger ]
+ eval 'procd_add_interface_trigger() { _procd_call _procd_add_interface_trigger "$@"; }'
+ shift
+ '[' -n procd_add_mount_trigger ]
+ eval 'procd_add_mount_trigger() { _procd_call _procd_add_mount_trigger "$@"; }'
+ shift
+ '[' -n procd_add_reload_trigger ]
+ eval 'procd_add_reload_trigger() { _procd_call _procd_add_reload_trigger "$@"; }'
+ shift
+ '[' -n procd_add_reload_interface_trigger ]
+ eval 'procd_add_reload_interface_trigger() { _procd_call _procd_add_reload_interface_trigger "$@"; }'
+ shift
+ '[' -n procd_add_action_mount_trigger ]
+ eval 'procd_add_action_mount_trigger() { _procd_call _procd_add_action_mount_trigger "$@"; }'
+ shift
+ '[' -n procd_add_reload_mount_trigger ]
+ eval 'procd_add_reload_mount_trigger() { _procd_call _procd_add_reload_mount_trigger "$@"; }'
+ shift
+ '[' -n procd_add_restart_mount_trigger ]
+ eval 'procd_add_restart_mount_trigger() { _procd_call _procd_add_restart_mount_trigger "$@"; }'
+ shift
+ '[' -n procd_open_trigger ]
+ eval 'procd_open_trigger() { _procd_call _procd_open_trigger "$@"; }'
+ shift
+ '[' -n procd_close_trigger ]
+ eval 'procd_close_trigger() { _procd_call _procd_close_trigger "$@"; }'
+ shift
+ '[' -n procd_open_instance ]
+ eval 'procd_open_instance() { _procd_call _procd_open_instance "$@"; }'
+ shift
+ '[' -n procd_close_instance ]
+ eval 'procd_close_instance() { _procd_call _procd_close_instance "$@"; }'
+ shift
+ '[' -n procd_open_validate ]
+ eval 'procd_open_validate() { _procd_call _procd_open_validate "$@"; }'
+ shift
+ '[' -n procd_close_validate ]
+ eval 'procd_close_validate() { _procd_call _procd_close_validate "$@"; }'
+ shift
+ '[' -n procd_add_jail ]
+ eval 'procd_add_jail() { _procd_call _procd_add_jail "$@"; }'
+ shift
+ '[' -n procd_add_jail_mount ]
+ eval 'procd_add_jail_mount() { _procd_call _procd_add_jail_mount "$@"; }'
+ shift
+ '[' -n procd_add_jail_mount_rw ]
+ eval 'procd_add_jail_mount_rw() { _procd_call _procd_add_jail_mount_rw "$@"; }'
+ shift
+ '[' -n procd_set_param ]
+ eval 'procd_set_param() { _procd_call _procd_set_param "$@"; }'
+ shift
+ '[' -n procd_append_param ]
+ eval 'procd_append_param() { _procd_call _procd_append_param "$@"; }'
+ shift
+ '[' -n procd_add_validation ]
+ eval 'procd_add_validation() { _procd_call _procd_add_validation "$@"; }'
+ shift
+ '[' -n procd_set_config_changed ]
+ eval 'procd_set_config_changed() { _procd_call _procd_set_config_changed "$@"; }'
+ shift
+ '[' -n procd_kill ]
+ eval 'procd_kill() { _procd_call _procd_kill "$@"; }'
+ shift
+ '[' -n procd_send_signal ]
+ eval 'procd_send_signal() { _procd_call _procd_send_signal "$@"; }'
+ shift
+ '[' -n ]
+ readlink /etc/init.d/pegas
+ basescript=
+ ALL_COMMANDS='boot shutdown depends start stop restart reload enable disable enabled running status trace info '
+ ALL_HELP='\tstart Start the service\n\tstop Stop the service\n\trestart Restart the service\n\treload Reload configuration files (or restart if service does not implement reload)\n\tenable Enable service autostart\n\tdisable Disable service autostart\n\tenabled Check if service is started on boot\n\trunning Check if service is running\n\tstatus Service status\n\ttrace Start with syscall trace\n\tinfo Dump procd service info\n'
+ list_contains ALL_COMMANDS start
+ local 'var=ALL_COMMANDS'
+ local 'str=start'
+ local val
+ eval 'val=" ${ALL_COMMANDS} "'
+ val=' boot shutdown depends start stop restart reload enable disable enabled running status trace info '
+ '[' ' boot shutdown depends' '!=' ' boot shutdown depends start stop restart reload enable disable enabled running status trace info ' ]
+ start
+ rc_procd start_service
+ local 'method=set'
+ '[' -n ]
+ basename /etc/init.d/pegas
+ procd_open_service pegas /etc/init.d/pegas
+ _procd_call _procd_open_service pegas /etc/init.d/pegas
+ local old_cb
+ json_set_namespace procd old_cb
+ local '_new=procd'
+ local '_old=old_cb'
+ '[' -n old_cb ]
+ _set_var old_cb
+ local '__val='
+ eval 'old_cb="$__val"'
+ old_cb=
+ JSON_PREFIX=procd
+ _procd_open_service pegas /etc/init.d/pegas
+ local 'name=pegas'
+ local 'script=/etc/init.d/pegas'
+ _PROCD_SERVICE=pegas
+ _PROCD_INSTANCE_SEQ=0
+ json_init
+ json_cleanup
+ local unset tmp
+ _json_get_var unset JSON_UNSET
+ eval 'unset="$procdJSON_UNSET"'
+ unset=
+ unset procdU_J_V procdK_J_V procdS_J_V procdT_J_V procdN_J_V procdJ_V
+ unset procdJSON_SEQ procdJSON_CUR procdJSON_UNSET
+ export -n 'procdJSON_SEQ=0'
+ export -- 'procdJSON_CUR=J_V' 'procdK_J_V='
+ json_add_string name pegas
+ local cur
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_V
+ _json_add_generic string name pegas J_V
+ local var
+ '[' J_V '=' J_A ]
+ var=name
+ '[[' name '==' name ]]
+ export -- 'procdJ_V_name=pegas' 'procdT_J_V_name=string'
+ _jshn_append JSON_UNSET J_V_name
+ local '_a_value=J_V_name'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name'
+ _jshn_append K_J_V name
+ local '_a_value=name'
+ eval 'procdK_J_V="${procdK_J_V} $_a_value"'
+ procdK_J_V=' name'
+ '[' -n /etc/init.d/pegas ]
+ json_add_string script /etc/init.d/pegas
+ local cur
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_V
+ _json_add_generic string script /etc/init.d/pegas J_V
+ local var
+ '[' J_V '=' J_A ]
+ var=script
+ '[[' script '==' script ]]
+ export -- 'procdJ_V_script=/etc/init.d/pegas' 'procdT_J_V_script=string'
+ _jshn_append JSON_UNSET J_V_script
+ local '_a_value=J_V_script'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script'
+ _jshn_append K_J_V script
+ local '_a_value=script'
+ eval 'procdK_J_V="${procdK_J_V} $_a_value"'
+ procdK_J_V=' name script'
+ json_add_object instances
+ _json_add_table instances object T
+ local cur seq
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_V
+ _json_inc JSON_SEQ seq
+ let 'procdJSON_SEQ += 1' 'seq = procdJSON_SEQ'
+ local 'table=J_T1'
+ _json_set_var U_J_T1 J_V
+ local '___val=J_V'
+ eval 'procdU_J_T1="$___val"'
+ procdU_J_T1=J_V
+ export -- 'procdK_J_T1='
+ unset procdS_J_T1
+ _json_set_var JSON_CUR J_T1
+ local '___val=J_T1'
+ eval 'procdJSON_CUR="$___val"'
+ procdJSON_CUR=J_T1
+ _jshn_append JSON_UNSET J_T1
+ local '_a_value=J_T1'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1'
+ _json_add_generic object instances J_T1 J_V
+ local var
+ '[' J_V '=' J_A ]
+ var=instances
+ '[[' instances '==' instances ]]
+ export -- 'procdJ_V_instances=J_T1' 'procdT_J_V_instances=object'
+ _jshn_append JSON_UNSET J_V_instances
+ local '_a_value=J_V_instances'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances'
+ _jshn_append K_J_V instances
+ local '_a_value=instances'
+ eval 'procdK_J_V="${procdK_J_V} $_a_value"'
+ procdK_J_V=' name script instances'
+ json_set_namespace
+ local '_new='
+ local '_old='
+ '[' -n ]
+ JSON_PREFIX=
+ start_service
+ procd_open_instance
+ _procd_call _procd_open_instance
+ local old_cb
+ json_set_namespace procd old_cb
+ local '_new=procd'
+ local '_old=old_cb'
+ '[' -n old_cb ]
+ _set_var old_cb
+ local '__val='
+ eval 'old_cb="$__val"'
+ old_cb=
+ JSON_PREFIX=procd
+ _procd_open_instance
+ local 'name='
+ shift
+ _PROCD_INSTANCE_SEQ=1
+ name=instance1
+ json_add_object instance1
+ _json_add_table instance1 object T
+ local cur seq
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_T1
+ _json_inc JSON_SEQ seq
+ let 'procdJSON_SEQ += 1' 'seq = procdJSON_SEQ'
+ local 'table=J_T2'
+ _json_set_var U_J_T2 J_T1
+ local '___val=J_T1'
+ eval 'procdU_J_T2="$___val"'
+ procdU_J_T2=J_T1
+ export -- 'procdK_J_T2='
+ unset procdS_J_T2
+ _json_set_var JSON_CUR J_T2
+ local '___val=J_T2'
+ eval 'procdJSON_CUR="$___val"'
+ procdJSON_CUR=J_T2
+ _jshn_append JSON_UNSET J_T2
+ local '_a_value=J_T2'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2'
+ _json_add_generic object instance1 J_T2 J_T1
+ local var
+ '[' J_T '=' J_A ]
+ var=instance1
+ '[[' instance1 '==' instance1 ]]
+ export -- 'procdJ_T1_instance1=J_T2' 'procdT_J_T1_instance1=object'
+ _jshn_append JSON_UNSET J_T1_instance1
+ local '_a_value=J_T1_instance1'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1'
+ _jshn_append K_J_T1 instance1
+ local '_a_value=instance1'
+ eval 'procdK_J_T1="${procdK_J_T1} $_a_value"'
+ procdK_J_T1=' instance1'
+ '[' -n ]
+ json_set_namespace
+ local '_new='
+ local '_old='
+ '[' -n ]
+ JSON_PREFIX=
+ procd_set_param command '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json'
+ _procd_call _procd_set_param command '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json'
+ local old_cb
+ json_set_namespace procd old_cb
+ local '_new=procd'
+ local '_old=old_cb'
+ '[' -n old_cb ]
+ _set_var old_cb
+ local '__val='
+ eval 'old_cb="$__val"'
+ old_cb=
+ JSON_PREFIX=procd
+ _procd_set_param command '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json'
+ local 'type=command'
+ shift
+ _procd_add_array command '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json'
+ json_add_array command
+ _json_add_table command array A
+ local cur seq
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_T2
+ _json_inc JSON_SEQ seq
+ let 'procdJSON_SEQ += 1' 'seq = procdJSON_SEQ'
+ local 'table=J_A3'
+ _json_set_var U_J_A3 J_T2
+ local '___val=J_T2'
+ eval 'procdU_J_A3="$___val"'
+ procdU_J_A3=J_T2
+ export -- 'procdK_J_A3='
+ unset procdS_J_A3
+ _json_set_var JSON_CUR J_A3
+ local '___val=J_A3'
+ eval 'procdJSON_CUR="$___val"'
+ procdJSON_CUR=J_A3
+ _jshn_append JSON_UNSET J_A3
+ local '_a_value=J_A3'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3'
+ _json_add_generic array command J_A3 J_T2
+ local var
+ '[' J_T '=' J_A ]
+ var=command
+ '[[' command '==' command ]]
+ export -- 'procdJ_T2_command=J_A3' 'procdT_J_T2_command=array'
+ _jshn_append JSON_UNSET J_T2_command
+ local '_a_value=J_T2_command'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command'
+ _jshn_append K_J_T2 command
+ local '_a_value=command'
+ eval 'procdK_J_T2="${procdK_J_T2} $_a_value"'
+ procdK_J_T2=' command'
+ shift
+ _procd_add_array_data '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json'
+ '[' 1 -gt 0 ]
+ json_add_string '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json'
+ local cur
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_A3
+ _json_add_generic string '/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json' J_A3
+ local var
+ '[' J_A '=' J_A ]
+ _json_inc S_J_A3 var
+ let 'procdS_J_A3 += 1' 'var = procdS_J_A3'
+ export -- 'procdJ_A3_1=/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json' 'procdT_J_A3_1=string'
+ _jshn_append JSON_UNSET J_A3_1
+ local '_a_value=J_A3_1'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command J_A3_1'
+ _jshn_append K_J_A3 1
+ local '_a_value=1'
+ eval 'procdK_J_A3="${procdK_J_A3} $_a_value"'
+ procdK_J_A3=' 1'
+ shift
+ '[' 0 -gt 0 ]
+ json_close_array
+ _json_close_table
+ local _s_cur
+ _json_get_var _s_cur JSON_CUR
+ eval '_s_cur="$procdJSON_CUR"'
+ _s_cur=J_A3
+ _json_get_var procdJSON_CUR U_J_A3
+ eval 'procdJSON_CUR="$procdU_J_A3"'
+ procdJSON_CUR=J_T2
+ json_set_namespace
+ local '_new='
+ local '_old='
+ '[' -n ]
+ JSON_PREFIX=
+ procd_close_instance
+ _procd_call _procd_close_instance
+ local old_cb
+ json_set_namespace procd old_cb
+ local '_new=procd'
+ local '_old=old_cb'
+ '[' -n old_cb ]
+ _set_var old_cb
+ local '__val='
+ eval 'old_cb="$__val"'
+ old_cb=
+ JSON_PREFIX=procd
+ _procd_close_instance
+ local respawn_vals
+ _json_no_warning=1
+ json_select respawn
+ local 'target=respawn'
+ local type
+ local cur
+ '[' -z respawn ]
+ '[[' respawn '==' .. ]]
+ json_get_type type respawn
+ local '__dest=type'
+ local __cur
+ _json_get_var __cur JSON_CUR
+ eval '__cur="$procdJSON_CUR"'
+ __cur=J_T2
+ local '__var=procdT_J_T2_respawn'
+ eval 'export -- "type=${procdT_J_T2_respawn}"; [ -n "${procdT_J_T2_respawn+x}" ]'
+ export -- 'type='
+ '[' -n ]
+ '[' -n 1 ]
+ return 1
+ json_close_object
+ _json_close_table
+ local _s_cur
+ _json_get_var _s_cur JSON_CUR
+ eval '_s_cur="$procdJSON_CUR"'
+ _s_cur=J_T2
+ _json_get_var procdJSON_CUR U_J_T2
+ eval 'procdJSON_CUR="$procdU_J_T2"'
+ procdJSON_CUR=J_T1
+ json_set_namespace
+ local '_new='
+ local '_old='
+ '[' -n ]
+ JSON_PREFIX=
+ procd_close_service set
+ _procd_call _procd_close_service set
+ local old_cb
+ json_set_namespace procd old_cb
+ local '_new=procd'
+ local '_old=old_cb'
+ '[' -n old_cb ]
+ _set_var old_cb
+ local '__val='
+ eval 'old_cb="$__val"'
+ old_cb=
+ JSON_PREFIX=procd
+ _procd_close_service set
+ json_close_object
+ _json_close_table
+ local _s_cur
+ _json_get_var _s_cur JSON_CUR
+ eval '_s_cur="$procdJSON_CUR"'
+ _s_cur=J_T1
+ _json_get_var procdJSON_CUR U_J_T1
+ eval 'procdJSON_CUR="$procdU_J_T1"'
+ procdJSON_CUR=J_V
+ _procd_open_trigger
+ let '_procd_trigger_open = _procd_trigger_open + 1'
+ '[' 1 -gt 1 ]
+ json_add_array triggers
+ _json_add_table triggers array A
+ local cur seq
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_V
+ _json_inc JSON_SEQ seq
+ let 'procdJSON_SEQ += 1' 'seq = procdJSON_SEQ'
+ local 'table=J_A4'
+ _json_set_var U_J_A4 J_V
+ local '___val=J_V'
+ eval 'procdU_J_A4="$___val"'
+ procdU_J_A4=J_V
+ export -- 'procdK_J_A4='
+ unset procdS_J_A4
+ _json_set_var JSON_CUR J_A4
+ local '___val=J_A4'
+ eval 'procdJSON_CUR="$___val"'
+ procdJSON_CUR=J_A4
+ _jshn_append JSON_UNSET J_A4
+ local '_a_value=J_A4'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command J_A3_1 J_A4'
+ _json_add_generic array triggers J_A4 J_V
+ local var
+ '[' J_V '=' J_A ]
+ var=triggers
+ '[[' triggers '==' triggers ]]
+ export -- 'procdJ_V_triggers=J_A4' 'procdT_J_V_triggers=array'
+ _jshn_append JSON_UNSET J_V_triggers
+ local '_a_value=J_V_triggers'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command J_A3_1 J_A4 J_V_triggers'
+ _jshn_append K_J_V triggers
+ local '_a_value=triggers'
+ eval 'procdK_J_V="${procdK_J_V} $_a_value"'
+ procdK_J_V=' name script instances triggers'
+ service_triggers
+ return 0
+ _procd_close_trigger
+ let '_procd_trigger_open = _procd_trigger_open - 1'
+ '[' 0 -lt 1 ]
+ json_close_array
+ _json_close_table
+ local _s_cur
+ _json_get_var _s_cur JSON_CUR
+ eval '_s_cur="$procdJSON_CUR"'
+ _s_cur=J_A4
+ _json_get_var procdJSON_CUR U_J_A4
+ eval 'procdJSON_CUR="$procdU_J_A4"'
+ procdJSON_CUR=J_V
+ _procd_open_data
+ let '_procd_data_open = _procd_data_open + 1'
+ '[' 1 -gt 1 ]
+ json_add_object data
+ _json_add_table data object T
+ local cur seq
+ _json_get_var cur JSON_CUR
+ eval 'cur="$procdJSON_CUR"'
+ cur=J_V
+ _json_inc JSON_SEQ seq
+ let 'procdJSON_SEQ += 1' 'seq = procdJSON_SEQ'
+ local 'table=J_T5'
+ _json_set_var U_J_T5 J_V
+ local '___val=J_V'
+ eval 'procdU_J_T5="$___val"'
+ procdU_J_T5=J_V
+ export -- 'procdK_J_T5='
+ unset procdS_J_T5
+ _json_set_var JSON_CUR J_T5
+ local '___val=J_T5'
+ eval 'procdJSON_CUR="$___val"'
+ procdJSON_CUR=J_T5
+ _jshn_append JSON_UNSET J_T5
+ local '_a_value=J_T5'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command J_A3_1 J_A4 J_V_triggers J_T5'
+ _json_add_generic object data J_T5 J_V
+ local var
+ '[' J_V '=' J_A ]
+ var=data
+ '[[' data '==' data ]]
+ export -- 'procdJ_V_data=J_T5' 'procdT_J_V_data=object'
+ _jshn_append JSON_UNSET J_V_data
+ local '_a_value=J_V_data'
+ eval 'procdJSON_UNSET="${procdJSON_UNSET} $_a_value"'
+ procdJSON_UNSET=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command J_A3_1 J_A4 J_V_triggers J_T5 J_V_data'
+ _jshn_append K_J_V data
+ local '_a_value=data'
+ eval 'procdK_J_V="${procdK_J_V} $_a_value"'
+ procdK_J_V=' name script instances triggers data'
+ service_data
+ return 0
+ _procd_close_data
+ let '_procd_data_open = _procd_data_open - 1'
+ '[' 0 -lt 1 ]
+ json_close_object
+ _json_close_table
+ local _s_cur
+ _json_get_var _s_cur JSON_CUR
+ eval '_s_cur="$procdJSON_CUR"'
+ _s_cur=J_T5
+ _json_get_var procdJSON_CUR U_J_T5
+ eval 'procdJSON_CUR="$procdU_J_T5"'
+ procdJSON_CUR=J_V
+ _procd_ubus_call set
+ local 'cmd=set'
+ '[' -n 1 ]
+ json_dump
+ jshn -p procd -w
{ "name": "pegas", "script": "\/etc\/init.d\/pegas", "instances": { "instance1": { "command": [ "\/usr\/bin\/pegas -t 4 -c \/etc\/pegasocks\/settings.json" ] } }, "triggers": [ ], "data": { } }
+ json_dump
+ jshn -p procd -w
+ ubus call service set '{ "name": "pegas", "script": "\/etc\/init.d\/pegas", "instances": { "instance1": { "command": [ "\/usr\/bin\/pegas -t 4 -c \/etc\/pegasocks\/settings.json" ] } }, "triggers": [ ], "data": { } }'
+ json_cleanup
+ local unset tmp
+ _json_get_var unset JSON_UNSET
+ eval 'unset="$procdJSON_UNSET"'
+ unset=' J_V_name J_V_script J_T1 J_V_instances J_T2 J_T1_instance1 J_A3 J_T2_command J_A3_1 J_A4 J_V_triggers J_T5 J_V_data'
+ unset procdU_J_V_name procdK_J_V_name procdS_J_V_name procdT_J_V_name procdN_J_V_name procdJ_V_name
+ unset procdU_J_V_script procdK_J_V_script procdS_J_V_script procdT_J_V_script procdN_J_V_script procdJ_V_script
+ unset procdU_J_T1 procdK_J_T1 procdS_J_T1 procdT_J_T1 procdN_J_T1 procdJ_T1
+ unset procdU_J_V_instances procdK_J_V_instances procdS_J_V_instances procdT_J_V_instances procdN_J_V_instances procdJ_V_instances
+ unset procdU_J_T2 procdK_J_T2 procdS_J_T2 procdT_J_T2 procdN_J_T2 procdJ_T2
+ unset procdU_J_T1_instance1 procdK_J_T1_instance1 procdS_J_T1_instance1 procdT_J_T1_instance1 procdN_J_T1_instance1 procdJ_T1_instance1
+ unset procdU_J_A3 procdK_J_A3 procdS_J_A3 procdT_J_A3 procdN_J_A3 procdJ_A3
+ unset procdU_J_T2_command procdK_J_T2_command procdS_J_T2_command procdT_J_T2_command procdN_J_T2_command procdJ_T2_command
+ unset procdU_J_A3_1 procdK_J_A3_1 procdS_J_A3_1 procdT_J_A3_1 procdN_J_A3_1 procdJ_A3_1
+ unset procdU_J_A4 procdK_J_A4 procdS_J_A4 procdT_J_A4 procdN_J_A4 procdJ_A4
+ unset procdU_J_V_triggers procdK_J_V_triggers procdS_J_V_triggers procdT_J_V_triggers procdN_J_V_triggers procdJ_V_triggers
+ unset procdU_J_T5 procdK_J_T5 procdS_J_T5 procdT_J_T5 procdN_J_T5 procdJ_T5
+ unset procdU_J_V_data procdK_J_V_data procdS_J_V_data procdT_J_V_data procdN_J_V_data procdJ_V_data
+ unset procdU_J_V procdK_J_V procdS_J_V procdT_J_V procdN_J_V procdJ_V
+ unset procdJSON_SEQ procdJSON_CUR procdJSON_UNSET
+ json_set_namespace
+ local '_new='
+ local '_old='
+ '[' -n ]
+ JSON_PREFIX=
+ eval 'type service_started'
BTW init.d script is also working well:
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
START=10
STOP=15
start() {
/usr/bin/pegas -t 4 -c /etc/pegasocks/settings.json &
}
stop() {
killall pegas
# commands to kill application
}