summaryrefslogtreecommitdiffstats
path: root/etc/nodist/nfs-functions
blob: 1f7b05070364fae40787ce3df6e69be6c39a9a61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
#
# An attempt at a simple, distribution-independent daemon management.
#
# Copyright (C) 2000-2001 Mission Critical Linux, Inc.
#

# daemon functions
getpid()
{
    pid=''
    if [ -f /var/run/${base}.pid ] 
    then
        pid=`head -1 /var/run/${base}.pid`
    fi
    if [ "$pid" = "" ]
    then
        pid=`pidof $1`
    fi
    if [ "$pid" = "" ]
    then
        pid=`ps ax | awk 'BEGIN { prog=ARGV[1]; ARGC=1 }
                   { if ((prog == $5) || (("(" prog ")") == $5) ||
                     (("[" prog "]") == $5) ||
                   ((prog ":") == $5)) { print $1 ; exit 0 } }' $1`
    fi

    echo $pid
}

startdaemon()
{
    base=`basename $1`

    # check if it is already running
    pid=`getpid $base`
    [ -n "$pid" ] && ps h $pid >/dev/null 2>&1 && echo " already running." && return

    # don't dump core
    ulimit -c 0

    $* && echo " done." || echo " failed."
}

stopdaemon()
{
    base=`basename $1`
    pid=`getpid $base`

    if [ "$pid" != "" ]
    then
        if ps h $pid>/dev/null 2>&1
        then
            kill -TERM $pid
            if ps h $pid>/dev/null 2>&1
            then
                sleep 1
                if ps h $pid>/dev/null 2>&1
                then
                    sleep 3
                    if ps h $pid>/dev/null 2>&1
                    then
                        kill -KILL $pid
			sleep 2
                    fi
                fi
            fi
        fi
        ps h $pid >/dev/null 2>&1
        RC=$?
        [ $RC -eq 0 ] && echo " failed." || echo " done."
        [ $RC -eq 0 ] || rm -f /var/run/$base.pid >/dev/null 2>&1
    else
        echo " not running."
    fi
}

daemonstatus()
{
    base=`basename $1`
    pid=`getpid $base`
    
    if [ "$pid" != "" ]
    then
        if ps h $pid >/dev/null 2>&1
        then
            echo "$base (pid $pid) is running."
            return 0
        else
            if [ -f /var/run/${base}.pid ]
            then
                echo "$base dead but pid file exists."
                return 1
            else
                echo "$base is stopped."
                return 2
            fi
        fi
    else
        echo "$base is stopped."
        return 3
    fi
}