Tweaks to start/stop scripts
Several minor changes: * Add mycroft-start and mycroft-stop, which can be used as commands anywhere if the user has added this to the PATH. They are shortcuts to the start-mycroft.sh and stop-mycroft.sh scripts. * Add to the mycroft-help command reference * Add "reset" parameter for start-mycroft.sh, which forces a service restart. If a service is currently running, it will not restart by default anymore. * Make the 'enclosure' service part of 'all' regardless of platform. This makes sense not that it can handle a remote GUI connection. * BUG: mycroft-stop would sometimes show odd messages if the skill process had active child processes.pull/1935/head
							parent
							
								
									8b71b89cf8
								
							
						
					
					
						commit
						dd697cb765
					
				| 
						 | 
					@ -25,6 +25,8 @@ echo "Mycroft-specific commands you can use from the Linux command prompt:"
 | 
				
			||||||
echo "  mycroft-cli-client       command line client, useful for debugging"
 | 
					echo "  mycroft-cli-client       command line client, useful for debugging"
 | 
				
			||||||
echo "  mycroft-msm              Mycroft Skills Manager, to manage your Skills"
 | 
					echo "  mycroft-msm              Mycroft Skills Manager, to manage your Skills"
 | 
				
			||||||
echo "  mycroft-msk              Mycroft Skills Kit, create and share Skills"
 | 
					echo "  mycroft-msk              Mycroft Skills Kit, create and share Skills"
 | 
				
			||||||
 | 
					echo "  mycroft-start            Launch/restart Mycroft services"
 | 
				
			||||||
 | 
					echo "  mycroft-stop             Stop Mycroft services"
 | 
				
			||||||
echo
 | 
					echo
 | 
				
			||||||
echo "Scripting Utilities:"
 | 
					echo "Scripting Utilities:"
 | 
				
			||||||
echo "  mycroft-speak <phr>      have Mycroft speak a phrase to the user"
 | 
					echo "  mycroft-speak <phr>      have Mycroft speak a phrase to the user"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright 2019 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE="${BASH_SOURCE[0]}"
 | 
				
			||||||
 | 
					cd -P "$( dirname "$SOURCE" )"/..
 | 
				
			||||||
 | 
					DIR="$( pwd )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. "$DIR/start-mycroft.sh" $@
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright 2019 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE="${BASH_SOURCE[0]}"
 | 
				
			||||||
 | 
					cd -P "$( dirname "$SOURCE" )"/..
 | 
				
			||||||
 | 
					DIR="$( pwd )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					. "$DIR/stop-mycroft.sh" $@
 | 
				
			||||||
| 
						 | 
					@ -24,13 +24,11 @@ VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${DIR}/.venv"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function help() {
 | 
					function help() {
 | 
				
			||||||
    echo "${script}:  Mycroft command/service launcher"
 | 
					    echo "${script}:  Mycroft command/service launcher"
 | 
				
			||||||
    echo "usage: ${script} [command] [params]"
 | 
					    echo "usage: ${script} [COMMAND] [restart] [params]"
 | 
				
			||||||
    echo
 | 
					    echo
 | 
				
			||||||
    echo "Services:"
 | 
					    echo "Services COMMANDs:"
 | 
				
			||||||
    echo "  all                      runs core services: bus, audio, skills, voice"
 | 
					    echo "  all                      runs core services: bus, audio, skills, voice"
 | 
				
			||||||
    echo "  debug                    runs core services, then starts the CLI"
 | 
					    echo "  debug                    runs core services, then starts the CLI"
 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    echo "Services:"
 | 
					 | 
				
			||||||
    echo "  audio                    the audio playback service"
 | 
					    echo "  audio                    the audio playback service"
 | 
				
			||||||
    echo "  bus                      the messagebus service"
 | 
					    echo "  bus                      the messagebus service"
 | 
				
			||||||
    echo "  skills                   the skill service"
 | 
					    echo "  skills                   the skill service"
 | 
				
			||||||
| 
						 | 
					@ -38,18 +36,22 @@ function help() {
 | 
				
			||||||
    # echo "  wifi                     wifi setup service"
 | 
					    # echo "  wifi                     wifi setup service"
 | 
				
			||||||
    echo "  enclosure                mark_1 enclosure service"
 | 
					    echo "  enclosure                mark_1 enclosure service"
 | 
				
			||||||
    echo
 | 
					    echo
 | 
				
			||||||
    echo "Tools:"
 | 
					    echo "Tool COMMANDs:"
 | 
				
			||||||
    echo "  cli                      the Command Line Interface"
 | 
					    echo "  cli                      the Command Line Interface"
 | 
				
			||||||
    echo "  unittest                 run mycroft-core unit tests (requires pytest)"
 | 
					    echo "  unittest                 run mycroft-core unit tests (requires pytest)"
 | 
				
			||||||
    echo "  skillstest               run the skill autotests for all skills (requires pytest)"
 | 
					    echo "  skillstest               run the skill autotests for all skills (requires pytest)"
 | 
				
			||||||
    echo
 | 
					    echo
 | 
				
			||||||
    echo "Utils:"
 | 
					    echo "Util COMMANDs:"
 | 
				
			||||||
    echo "  audiotest                attempt simple audio validation"
 | 
					    echo "  audiotest                attempt simple audio validation"
 | 
				
			||||||
    echo "  audioaccuracytest        more complex audio validation"
 | 
					    echo "  audioaccuracytest        more complex audio validation"
 | 
				
			||||||
    echo "  sdkdoc                   generate sdk documentation"
 | 
					    echo "  sdkdoc                   generate sdk documentation"
 | 
				
			||||||
    echo
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "Options:"
 | 
				
			||||||
 | 
					    echo "  restart                  (optional) Force the service to restart if running"
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
    echo "Examples:"
 | 
					    echo "Examples:"
 | 
				
			||||||
    echo "  ${script} all"
 | 
					    echo "  ${script} all"
 | 
				
			||||||
 | 
					    echo "  ${script} all restart"
 | 
				
			||||||
    echo "  ${script} cli"
 | 
					    echo "  ${script} cli"
 | 
				
			||||||
    echo "  ${script} unittest"
 | 
					    echo "  ${script} unittest"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,6 +104,7 @@ function launch-process() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function require-process() {
 | 
					function require-process() {
 | 
				
			||||||
 | 
					    # Launch process if not found
 | 
				
			||||||
    name-to-script-path ${1}
 | 
					    name-to-script-path ${1}
 | 
				
			||||||
    if ! pgrep -f "python3 -m ${_module}" > /dev/null ; then
 | 
					    if ! pgrep -f "python3 -m ${_module}" > /dev/null ; then
 | 
				
			||||||
        # Start required process
 | 
					        # Start required process
 | 
				
			||||||
| 
						 | 
					@ -115,8 +118,13 @@ function launch-background() {
 | 
				
			||||||
    # Check if given module is running and start (or restart if running)
 | 
					    # Check if given module is running and start (or restart if running)
 | 
				
			||||||
    name-to-script-path ${1}
 | 
					    name-to-script-path ${1}
 | 
				
			||||||
    if pgrep -f "python3 -m ${_module}" > /dev/null ; then
 | 
					    if pgrep -f "python3 -m ${_module}" > /dev/null ; then
 | 
				
			||||||
        echo "Restarting: ${1}"
 | 
					        if ($_force_restart) ; then
 | 
				
			||||||
        "${DIR}/stop-mycroft.sh" ${1}
 | 
					            echo "Restarting: ${1}"
 | 
				
			||||||
 | 
					            "${DIR}/stop-mycroft.sh" ${1}
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            # Already running, no need to restart
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        echo "Starting background service $1"
 | 
					        echo "Starting background service $1"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
| 
						 | 
					@ -138,15 +146,7 @@ function launch-all() {
 | 
				
			||||||
    launch-background skills
 | 
					    launch-background skills
 | 
				
			||||||
    launch-background audio
 | 
					    launch-background audio
 | 
				
			||||||
    launch-background voice
 | 
					    launch-background voice
 | 
				
			||||||
 | 
					    launch-background enclosure
 | 
				
			||||||
    # Determine platform type
 | 
					 | 
				
			||||||
    if [[ -r /etc/mycroft/mycroft.conf ]] ; then
 | 
					 | 
				
			||||||
        mycroft_platform=$( jq -r ".enclosure.platform" < /etc/mycroft/mycroft.conf )
 | 
					 | 
				
			||||||
        if [[ $mycroft_platform = "mycroft_mark_1" ]] ; then
 | 
					 | 
				
			||||||
            # running on a Mark 1, start enclosure service
 | 
					 | 
				
			||||||
            launch-background enclosure
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function check-dependencies() {
 | 
					function check-dependencies() {
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,16 @@ function check-dependencies() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_opt=$1
 | 
					_opt=$1
 | 
				
			||||||
 | 
					_force_restart=false
 | 
				
			||||||
shift
 | 
					shift
 | 
				
			||||||
 | 
					if [[ "${1}" == "restart" ]] || [[ "${_opt}" == "restart" ]] ; then
 | 
				
			||||||
 | 
					    _force_restart=true
 | 
				
			||||||
 | 
					    if [[ "${_opt}" == "restart" ]] ; then
 | 
				
			||||||
 | 
					        # Support "start-mycroft.sh restart all" as well as "start-mycroft.sh all restart"
 | 
				
			||||||
 | 
					        _opt=$1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    shift
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
_params=$@
 | 
					_params=$@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check-dependencies
 | 
					check-dependencies
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ function help() {
 | 
				
			||||||
    echo "  audio     stop the audio playback service"
 | 
					    echo "  audio     stop the audio playback service"
 | 
				
			||||||
    echo "  skills    stop the skill service"
 | 
					    echo "  skills    stop the skill service"
 | 
				
			||||||
    echo "  voice     stop voice capture service"
 | 
					    echo "  voice     stop voice capture service"
 | 
				
			||||||
    echo "  enclosure stop mark_1 enclosure service"
 | 
					    echo "  enclosure stop enclosure (hardware/gui interface) service"
 | 
				
			||||||
    echo
 | 
					    echo
 | 
				
			||||||
    echo "Examples:"
 | 
					    echo "Examples:"
 | 
				
			||||||
    echo "  ${script}"
 | 
					    echo "  ${script}"
 | 
				
			||||||
| 
						 | 
					@ -50,8 +50,9 @@ function process-running() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function end-process() {
 | 
					function end-process() {
 | 
				
			||||||
    if process-running $1 ; then
 | 
					    if process-running $1 ; then
 | 
				
			||||||
        echo -n "Stopping $1..."
 | 
					        # Find the process by name, only returning the oldest if it has children
 | 
				
			||||||
        pid=$( pgrep -f "python3 -m mycroft.*${1}" )
 | 
					        pid=$( pgrep -o -f "python3 -m mycroft.*${1}" )
 | 
				
			||||||
 | 
					        echo -n "Stopping $1 (${pid})..."
 | 
				
			||||||
        kill -SIGINT ${pid}
 | 
					        kill -SIGINT ${pid}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Wait up to 5 seconds (50 * 0.1) for process to stop
 | 
					        # Wait up to 5 seconds (50 * 0.1) for process to stop
 | 
				
			||||||
| 
						 | 
					@ -67,7 +68,8 @@ function end-process() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if process-running $1 ; then
 | 
					        if process-running $1 ; then
 | 
				
			||||||
            echo "failed to stop."
 | 
					            echo "failed to stop."
 | 
				
			||||||
            echo -n "  Killing $1..."
 | 
					            pid=$( pgrep -o -f "python3 -m mycroft.*${1}" )            
 | 
				
			||||||
 | 
					            echo -n "  Killing $1 (${pid})..."
 | 
				
			||||||
            kill -9 ${pid}
 | 
					            kill -9 ${pid}
 | 
				
			||||||
            echo "killed."
 | 
					            echo "killed."
 | 
				
			||||||
            result=120
 | 
					            result=120
 | 
				
			||||||
| 
						 | 
					@ -96,15 +98,7 @@ case ${OPT} in
 | 
				
			||||||
        end-process skills
 | 
					        end-process skills
 | 
				
			||||||
        end-process audio
 | 
					        end-process audio
 | 
				
			||||||
        end-process speech
 | 
					        end-process speech
 | 
				
			||||||
 | 
					        end-process enclosure
 | 
				
			||||||
        # determine platform type
 | 
					 | 
				
			||||||
        if [[ -r /etc/mycroft/mycroft.conf ]] ; then
 | 
					 | 
				
			||||||
            mycroft_platform=$( jq -r ".enclosure.platform" < /etc/mycroft/mycroft.conf )
 | 
					 | 
				
			||||||
            if [[ $mycroft_platform == "mycroft_mark_1" ]] ; then
 | 
					 | 
				
			||||||
                # running on a Mark 1, stop enclosure service
 | 
					 | 
				
			||||||
                end-process enclosure
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    "bus")
 | 
					    "bus")
 | 
				
			||||||
        end-process messagebus.service
 | 
					        end-process messagebus.service
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue