start on runlevel [2345]
stop on shutdown
respawn
respawn limit 3 30

script
exec su - <%=@user%> -c "/opt/chef/embedded/bin/chef-rundeck -c <%=@chef_config%> -f <%=@project_config%> -w <%=@chef_webui_url%> -o <%=@chef_rundeck_host%> -p <%=@chef_rundeck_port%> -u <%= node['rundeck']['user'] %> -t <%= @chef_rundeck_cachetime %> <% if @chef_rundeck_partial_search %>--partial-search true<% end %> 2>&1" > <%=@log_dir%>/server.log
end script

start on runlevel [2345]
stop on shutdown
respawn
respawn limit 3 30

exec su - <%=@user%> -c 'exec "$0" "$@"' -- "/opt/chef/embedded/bin/chef-rundeck" -c <%=@chef_config%> -f <%=@project_config%> -w <%=@chef_webui_url%> -o <%=@chef_rundeck_host%> -p <%=@chef_rundeck_port%> -u <%= node['rundeck']['user'] %> -t <%= @chef_rundeck_cachetime %> <% if @chef_rundeck_partial_search %>--partial-search true<% end %> 2>&1 > <%=@log_dir%>/server.log

Use 'exec' to substitute calling process instead of forking.
Use 'exec' to substitute calling process instead of forking.

Restarting the process does not kill the child process, so new configuration are not loaded unless someone kills the child process manually.
Proposed change fixes the restarting issue.