lib/pvl/service.sh
author Tero Marttila <tero.marttila@aalto.fi>
Tue, 03 Mar 2015 11:40:02 +0200
changeset 710 09c6676a90a1
parent 649 88ff10dae514
child 711 36b87b9e6af4
permissions -rw-r--r--
lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
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
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     4
function service_opt {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     5
    local opt=$1
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     6
    local optarg="$2"
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     7
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     8
    case $opt in
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     9
        n)  SERVICE=0 ;;
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    10
        *)  return 1
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    11
    esac
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    12
}
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    13
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    14
function service_init {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    15
    if [ -e /bin/systemctl ]; then
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    16
        SERVICE_TYPE=systemd
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    17
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    18
    elif [ -e /sbin/initctl ]; then
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    19
        SERVICE_TYPE=upstart
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    20
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    21
    else
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    22
        SERVICE_TYPE=service
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    23
    fi
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    24
}
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    25
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    26
function service_status {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    27
    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
    28
    
09c6676a90a1 lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
Tero Marttila <tero.marttila@aalto.fi>
parents: 649
diff changeset
    29
    # 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
    30
    if [ $SERVICE_TYPE = upstart -a -e /etc/init/$service.conf ]; then
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    31
        cmd_test service $service status | grep -q start
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    32
    else
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    33
        cmd_test service $service status > /dev/null
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    34
    fi
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    35
}
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    36
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    37
function service_restart {
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    38
    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
    39
    
09c6676a90a1 lib/pvl/service: cmd_sudo restart; workaround more upstart braindamage with service ... status
Tero Marttila <tero.marttila@aalto.fi>
parents: 649
diff changeset
    40
    cmd_sudo service $service restart
633
16eaaf30d218 lib: fixfix
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
    41
}