For scripts (perl, shell, whatever...), prefix ${pexp} with the script's
interpretor path as defined by the script.

No need to override ${pexp} in the daemon's rc file.


Index: rc.subr
===================================================================
RCS file: /cvs/src/etc/rc.d/rc.subr,v
retrieving revision 1.70
diff -u -r1.70 rc.subr
--- rc.subr     11 Jul 2013 09:34:33 -0000      1.70
+++ rc.subr     16 Sep 2013 10:26:09 -0000
@@ -221,4 +221,9 @@
 unset _rcflags _rcuser
 
 pexp="${daemon}${daemon_flags:+ ${daemon_flags}}"
+file ${daemon} | fgrep -q script &&
+{
+       shebang=$(head -n 1 ${daemon} | cut -d! -f2)
+       pexp="${shebang} ${pexp}"
+}
 rcexec="su -l -c ${daemon_class} -s /bin/sh ${daemon_user} -c"





e.g. Remove pexp= from /etc/rc.d/greyscanner:


--- greyscanner.pkg     Mon Aug 19 14:46:01 2013
+++ greyscanner Mon Sep 16 11:30:33 2013
@@ -6,7 +6,6 @@
 
 . /etc/rc.d/rc.subr
 
-pexp="/usr/bin/perl ${daemon}"
 rc_reload=NO
 
 rc_cmd $1




$ sudo /etc/rc.d/greyscanner restart
greyscanner(ok)
greyscanner(ok)

$ cat /var/run/rc.d/greyscanner
/usr/bin/perl /usr/local/sbin/greyscanner

$ ps auxwww | fgrep greyscanner
root     25280  0.0  0.6  4896  2920 ??  Is    11:35AM    0:00.04 /usr/bin/perl 
/usr/local/sbin/greyscanner

Cheers,
-- 
Craig Skinner | http://twitter.com/Craig_Skinner | http://linkd.in/yGqkv7

Reply via email to