You are not logged in.
Pages: 1
I've noticed that the vast majority of scripts in /etc/rc.d are essentially the same. They can all be replaced by this script below.
#!/bin/bash
source /etc/rc.conf
source /etc/rc.d/functions
name="$2"; path="`which $name 2> /dev/null`"
_wait='1'
if [ -x /etc/rc.d/$name ]; then
/etc/rc.d/$name $@; exit $?; fi
info="Usage: $0 (start|stop|restart) daemon"
[ -z "$name" ] ||
[ -z "$path" ] &&
echo $info && exit 1
[ -r /etc/conf.d/$name ] &&
source /etc/conf.d/$name
PID=$(pidof -o %PPID "`readlink -f $path`")
case "$1" in
start)
stat_busy "Starting $name Daemon"
[ -z "$PID" ] && $path $OPT &> /dev/null
if [ $? -gt 0 ]; then
stat_fail
else stat_done; add_daemon $name
echo $PID > /var/run/$name.pid
fi ;;
stop)
stat_busy "Stopping $name Daemon"
[ -z "$PID" ] || kill $PID &> /dev/null
if [ $? -gt 0 ]; then
stat_fail
else stat_done; rm_daemon $name
rm -f /var/run/$name.pid; fi ;;
restart) $0 stop; sleep $_wait; $0 start ;;
esac
exit 0Called for example like
./service start crondAnd you could use this script transparently by dropping it in /sbin and patching /etc/rc.d/functions with
--- functions.backup 2010-10-26 01:39:30.660989232 -0400
+++ functions 2010-10-26 01:42:43.740987456 -0400
@@ -183,22 +183,29 @@
ck_depends() {
for daemon in $@; do
if ck_daemon $daemon; then
- /etc/rc.d/$daemon start
+ [ -x /etc/rc.d/$daemon ] && /etc/rc.d/$daemon start
+ /sbin/service start $daemon
fi
done
}
start_daemon() {
- /etc/rc.d/$1 start
+ [ -x /etc/rc.d/$1 ] && /etc/rc.d/$1 start
+ /sbin/service start $1
}
start_daemon_bkgd() {
- stat_bkgd "Starting $1"
- (/etc/rc.d/$1 start) &>/dev/null &
+ stat_bkgd "Starting $1"
+
+ [ -x /etc/rc.d/$1 ] &&
+ (/etc/rc.d/$1 start) &>/dev/null &
+
+ (/sbin/service start $1) &> /dev/null &
}
stop_daemon() {
- /etc/rc.d/$1 stop
+ [ -x /etc/rc.d/$1 ] && /etc/rc.d/$1 stop
+ /sbin/service stop $1
}
# Status functionsThen maintainers who are lazy can just delete the repetitive rc.d scripts and users wouldn't even notice. Any thoughts?
Last edited by kaitocracy (2010-10-30 13:48:44)
Offline
I guess that's similar to what some other distros do but we stick to the good old BSD style ![]()
![]()
Offline
You would need to include something to allow packages to 'override' this script with their own if required (eg, PostgreSQL does database initialization etc, as well as using "pg_ctl" to start instead of the 'postgres' or 'postgresql' commands)
if [ -x /etc/rc.d/$name ] ; then
/etc/rc.d/$name $1
exit $?
fiAre you familiar with our Forum Rules, and How To Ask Questions The Smart Way?
BlueHackers // fscanary // resticctl
Offline
To get feedback from the people who matter, submit this as a feature request on the bugtracker.
Offline
I like this idea. but what fukawi2 said. There are a bunch of scripts that do something custom
< Daenyth> and he works prolifically
4 8 15 16 23 42
Offline
Pages: 1