diff --git a/src/main/bash/codiki.bash b/src/main/bash/codiki.bash index 0c36283..aaf9e24 100755 --- a/src/main/bash/codiki.bash +++ b/src/main/bash/codiki.bash @@ -3,6 +3,7 @@ codikiScreenName='codiki' lockFile='/opt/codiki/bin/lock' deadFile='/opt/codiki/bin/dead' +screenRegex='codiki.\(([0-9]{2}/){2}[0-9]{4} [0-9]{2}(:[0-9]{2}){2}\)' start() { screen -dmS $codikiScreenName java -jar /opt/codiki/bin/codiki.jar @@ -17,26 +18,31 @@ start() { } stop() { - screen -dr $codikiScreenName -X -S quit - if [ $? -eq 0 ] + if [ $(status_by_screen) -eq 1 ] && [ -f $lockFile ] then - rm -f $lockFile - date > $deadFile + screen -dr $codikiScreenName -X -S quit + if [ $? -eq 0 ] + then + rm -f $lockFile + date > $deadFile + else + echo "Service failed to stop..." + exit 1 + fi else - echo "Service failed to stop..." - exit 1 + echo "Service is not running." fi } status() { - if [ -f /var/lock/subsys/codiki ] + if [ -f $lockFile ] && [ $(status_by_screen) -eq 1 ] then - cat << EOF + tput setaf 2; cat << EOF codiki.service - The Codiki web app server Active: active (running) since $(cat $lockFile) EOF else - cat << EOF + tput setaf 1; cat << EOF codiki.service - The Codiki web app server Active: inactive (dead) since $(cat $deadFile) EOF @@ -51,6 +57,10 @@ restart() { start } +status_by_screen() { + echo $(screen -ls | egrep -o "$screenRegex" | wc -l) +} + case "$1" in start) start @@ -68,4 +78,4 @@ case "$1" in echo "Usage: $0 {start|stop|status}" exit 1 esac -exit 0 \ No newline at end of file +exit 0