#!/bin/bash # Copyright 2017 Mycroft AI Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. script=${0} script=${script##*/} DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" SCRIPTS="$DIR/scripts" mkdir -p $SCRIPTS/logs function help() { echo "${script}: Mycroft service stopper" echo "usage: ${script} [service]" echo echo "Service:" echo " (none) ends core services: bus, audio, skills, voice" echo " bus stop the Mycroft messagebus service" echo " audio stop the audio playback service" echo " skills stop the skill service" echo " voice stop voice capture service" echo echo "Examples:" echo " ${script}" echo " ${script} audio" exit 1 } function process-running() { if [[ $( ps aux | grep "[p]ython .*${1}/main.py" ) ]] ; then return 0 else return 1 fi } function end-process() { if process-running $1 ; then pid=$( ps aux | grep "[p]ython .*${1}/main.py" | awk '{print $2}' ) kill ${pid} c=1 while [ $c -le 20 ] do if process-running $1 ; then sleep 0.1 (( c++ )) else c=999 # end loop fi done if process-running $1 ; then kill -9 ${pid} fi fi } OPT=$1 shift case ${OPT} in "") echo "Stopping all mycroft-core services" end-process service end-process skills end-process audio end-process speech ;; "bus") end-process service ;; "audio") end-process audio ;; "skills") end-process skills ;; "voice") end-process speech ;; *) help ;; esac