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-msm Mycroft Skills Manager, to manage your 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 "Scripting Utilities:"
|
||||
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() {
|
||||
echo "${script}: Mycroft command/service launcher"
|
||||
echo "usage: ${script} [command] [params]"
|
||||
echo "usage: ${script} [COMMAND] [restart] [params]"
|
||||
echo
|
||||
echo "Services:"
|
||||
echo "Services COMMANDs:"
|
||||
echo " all runs core services: bus, audio, skills, voice"
|
||||
echo " debug runs core services, then starts the CLI"
|
||||
echo
|
||||
echo "Services:"
|
||||
echo " audio the audio playback service"
|
||||
echo " bus the messagebus service"
|
||||
echo " skills the skill service"
|
||||
|
|
@ -38,18 +36,22 @@ function help() {
|
|||
# echo " wifi wifi setup service"
|
||||
echo " enclosure mark_1 enclosure service"
|
||||
echo
|
||||
echo "Tools:"
|
||||
echo "Tool COMMANDs:"
|
||||
echo " cli the Command Line Interface"
|
||||
echo " unittest run mycroft-core unit tests (requires pytest)"
|
||||
echo " skillstest run the skill autotests for all skills (requires pytest)"
|
||||
echo
|
||||
echo "Utils:"
|
||||
echo "Util COMMANDs:"
|
||||
echo " audiotest attempt simple audio validation"
|
||||
echo " audioaccuracytest more complex audio validation"
|
||||
echo " sdkdoc generate sdk documentation"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " restart (optional) Force the service to restart if running"
|
||||
echo
|
||||
echo "Examples:"
|
||||
echo " ${script} all"
|
||||
echo " ${script} all restart"
|
||||
echo " ${script} cli"
|
||||
echo " ${script} unittest"
|
||||
|
||||
|
|
@ -102,6 +104,7 @@ function launch-process() {
|
|||
}
|
||||
|
||||
function require-process() {
|
||||
# Launch process if not found
|
||||
name-to-script-path ${1}
|
||||
if ! pgrep -f "python3 -m ${_module}" > /dev/null ; then
|
||||
# Start required process
|
||||
|
|
@ -115,8 +118,13 @@ function launch-background() {
|
|||
# Check if given module is running and start (or restart if running)
|
||||
name-to-script-path ${1}
|
||||
if pgrep -f "python3 -m ${_module}" > /dev/null ; then
|
||||
echo "Restarting: ${1}"
|
||||
"${DIR}/stop-mycroft.sh" ${1}
|
||||
if ($_force_restart) ; then
|
||||
echo "Restarting: ${1}"
|
||||
"${DIR}/stop-mycroft.sh" ${1}
|
||||
else
|
||||
# Already running, no need to restart
|
||||
return
|
||||
fi
|
||||
else
|
||||
echo "Starting background service $1"
|
||||
fi
|
||||
|
|
@ -138,15 +146,7 @@ function launch-all() {
|
|||
launch-background skills
|
||||
launch-background audio
|
||||
launch-background voice
|
||||
|
||||
# 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
|
||||
launch-background enclosure
|
||||
}
|
||||
|
||||
function check-dependencies() {
|
||||
|
|
@ -177,7 +177,16 @@ function check-dependencies() {
|
|||
}
|
||||
|
||||
_opt=$1
|
||||
_force_restart=false
|
||||
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=$@
|
||||
|
||||
check-dependencies
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ function help() {
|
|||
echo " audio stop the audio playback service"
|
||||
echo " skills stop the skill service"
|
||||
echo " voice stop voice capture service"
|
||||
echo " enclosure stop mark_1 enclosure service"
|
||||
echo " enclosure stop enclosure (hardware/gui interface) service"
|
||||
echo
|
||||
echo "Examples:"
|
||||
echo " ${script}"
|
||||
|
|
@ -50,8 +50,9 @@ function process-running() {
|
|||
|
||||
function end-process() {
|
||||
if process-running $1 ; then
|
||||
echo -n "Stopping $1..."
|
||||
pid=$( pgrep -f "python3 -m mycroft.*${1}" )
|
||||
# Find the process by name, only returning the oldest if it has children
|
||||
pid=$( pgrep -o -f "python3 -m mycroft.*${1}" )
|
||||
echo -n "Stopping $1 (${pid})..."
|
||||
kill -SIGINT ${pid}
|
||||
|
||||
# Wait up to 5 seconds (50 * 0.1) for process to stop
|
||||
|
|
@ -67,7 +68,8 @@ function end-process() {
|
|||
|
||||
if process-running $1 ; then
|
||||
echo "failed to stop."
|
||||
echo -n " Killing $1..."
|
||||
pid=$( pgrep -o -f "python3 -m mycroft.*${1}" )
|
||||
echo -n " Killing $1 (${pid})..."
|
||||
kill -9 ${pid}
|
||||
echo "killed."
|
||||
result=120
|
||||
|
|
@ -96,15 +98,7 @@ case ${OPT} in
|
|||
end-process skills
|
||||
end-process audio
|
||||
end-process speech
|
||||
|
||||
# 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
|
||||
end-process enclosure
|
||||
;;
|
||||
"bus")
|
||||
end-process messagebus.service
|
||||
|
|
|
|||
Loading…
Reference in New Issue