FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > ArchLinux > ArchLinux General Discussion

 
 
LinkBack Thread Tools
 
Old 07-11-2010, 03:12 PM
Victor Lowther
 
Default Add daemon-functions to the initscripts package.

This file encapsulates most common rc.d daemon script idioms, and should allow
most of then to be about 6 lines long (not including whitespace)

Using it will require some modifications to the /etc/conf.d files, as
the generic functions expect all daemon options to be in $OPTS

Among other things, this will close feature request# 18654

It was written on top of my bashification patch series, but is mostly independent
of it.

---
daemon-functions | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++
functions | 2 +
2 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/daemon-functions b/daemon-functions
new file mode 100755
index 0000000..5f7660a
--- /dev/null
+++ b/daemon-functions
@@ -0,0 +1,72 @@
+#!/bin/bash
+# This file contains helper functions for initscripts in /etc/rc.d.
+# I am keeping it seperate from the main /etc/rc.d/functions for now.
+# Using this file makes most /etc/rc.d files as simple as
+# #!/bin/bash
+# DAEMON=/path/to/daemon
+# case $1 in
+# start|stop|restart|status) $1;;
+# *) usage;;
+# esac
+
+shopt -s extglob
+
+# first, source our usual files.
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+# Next, declare some useful helper functions
+have_daemon() {
+ local f
+ [[ $DAEMON && -x $DAEMON ]] || return 1
+ [[ $DAEMONNAME ]] || DAEMONNAME="${0##*/}"
+ PIDS=($(pidof -o %PPID "$DAEMON"))
+ [[ $DAEMONCONF ]] ||
+ for f in "$DAEMONNAME" "$DAEMONNAME.conf"; do
+ [[ -f /etc/conf.d/$f ]] || continue
+ DAEMONCONF="/etc/conf.d/$f"
+ break
+ done
+ return 0
+}
+
+start() {
+ have_daemon || exit 1
+ [[ -f $DAEMONCONF ]] && . "$DAEMONCONF"
+ stat_busy "Starting $DAEMONNAME"
+ if [[ ! $PIDS ]] && "$DAEMON" $OPTS >/dev/null 2>&1; then
+ add_daemon "$DAEMONNAME"
+ stat_done
+ else
+ stat_fail
+ fi
+}
+
+stop() {
+ have_daemon || exit 1
+ stat_busy "Stopping $DAEMONNAME"
+ if [[ $PIDS ]] && kill "${PIDS[@]}" >/dev/null 2>&1; then
+ rm_daemon "$DAEMONNAME"
+ stat_done
+ else
+ stat_fail
+ fi
+}
+
+restart() {
+ have_daemon || exit 1
+ stat_busy "Restarting $DAEMONNAME"
+ "$0" stop
+ sleep 1
+ "$0" start
+}
+
+status() {
+ have_daemon || exit 1
+ stat_busy "Checking status of $DAEMONNAME"
+ ck_status "$DAEMONNAME"
+}
+
+usage() {
+ echo "Usage: $0 {start|stop|restart|status}"
+}
No newline at end of file
diff --git a/functions b/functions
index 5e9a3b5..83f8fb7 100644
--- a/functions
+++ b/functions
@@ -197,8 +197,10 @@ status_stopped() {
ck_status() {
if ! ck_daemon "$1"; then
status_started
+ return 0
else
status_stopped
+ return 1
fi
}

--
1.7.1.1
 

Thread Tools




All times are GMT. The time now is 07:54 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org