lib/pvl/service.sh
author Tero Marttila <terom@paivola.fi>
Sat, 07 Mar 2015 13:41:18 +0200
changeset 730 2073e2e20895
parent 711 36b87b9e6af4
permissions -rw-r--r--
lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     1
SERVICE_NOOP=
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     2
SERVICE_TYPE=
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     3
730
2073e2e20895 lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
Tero Marttila <terom@paivola.fi>
parents: 711
diff changeset
     4
SERVICE_SBIN=/usr/sbin/service
2073e2e20895 lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
Tero Marttila <terom@paivola.fi>
parents: 711
diff changeset
     5
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     6
function service_opt {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     7
    local opt=$1
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     8
    local optarg="$2"
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     9
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    10
    case $opt in
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    11
        n)  SERVICE=0 ;;
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    12
        *)  return 1
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    13
    esac
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    14
}
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    15
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    16
function service_init {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    17
    if [ -e /bin/systemctl ]; then
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    18
        SERVICE_TYPE=systemd
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    19
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    20
    elif [ -e /sbin/initctl ]; then
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    21
        SERVICE_TYPE=upstart
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    22
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    23
    else
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    24
        SERVICE_TYPE=service
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    25
    fi
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    26
}
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    27
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    28
function service_status {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    29
    local service=$1
710
09c6676a90a1 lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
Tero Marttila <tero.marttila@aalto.fi>
parents: 649
diff changeset
    30
    
09c6676a90a1 lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
Tero Marttila <tero.marttila@aalto.fi>
parents: 649
diff changeset
    31
    # native upstart services don't exit with any status, but sysvinit compatibility ones do
09c6676a90a1 lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
Tero Marttila <tero.marttila@aalto.fi>
parents: 649
diff changeset
    32
    if [ $SERVICE_TYPE = upstart -a -e /etc/init/$service.conf ]; then
730
2073e2e20895 lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
Tero Marttila <terom@paivola.fi>
parents: 711
diff changeset
    33
        cmd_test $SERVICE_SBIN $service status | grep -q start
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    34
    else
730
2073e2e20895 lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
Tero Marttila <terom@paivola.fi>
parents: 711
diff changeset
    35
        cmd_test $SERVICE_SBIN $service status > /dev/null
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    36
    fi
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    37
}
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    38
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    39
function service_restart {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    40
    local service=$1
710
09c6676a90a1 lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
Tero Marttila <tero.marttila@aalto.fi>
parents: 649
diff changeset
    41
    
730
2073e2e20895 lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
Tero Marttila <terom@paivola.fi>
parents: 711
diff changeset
    42
    cmd_sudo $SERVICE_SBIN $service restart
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    43
}
711
36b87b9e6af4 lib/pvl/service: service_reload
Tero Marttila <tero.marttila@aalto.fi>
parents: 710
diff changeset
    44
36b87b9e6af4 lib/pvl/service: service_reload
Tero Marttila <tero.marttila@aalto.fi>
parents: 710
diff changeset
    45
function service_reload {
36b87b9e6af4 lib/pvl/service: service_reload
Tero Marttila <tero.marttila@aalto.fi>
parents: 710
diff changeset
    46
    local service=$1
36b87b9e6af4 lib/pvl/service: service_reload
Tero Marttila <tero.marttila@aalto.fi>
parents: 710
diff changeset
    47
    
730
2073e2e20895 lib/pvl/service: use full /usr/sbin/service path, since debian does not have sbin on user $PATH
Tero Marttila <terom@paivola.fi>
parents: 711
diff changeset
    48
    cmd_sudo $SERVICE_SBIN $service reload
711
36b87b9e6af4 lib/pvl/service: service_reload
Tero Marttila <tero.marttila@aalto.fi>
parents: 710
diff changeset
    49
}