O script Bash é executado apenas às vezes, se não for

0
#!/bin/bash

set -o nounset
set -o errtrace
set -o pipefail

SCR="bunny"
SCRIPT="/home/../run.sh" 

function main() {
    if find_screen $SCR >/dev/null; then
        close_screen
        start_script
    fi
}

function start_script {
    echo "Starting script with new screen"
    screen -d -m -S $SCR sh $SCRIPT
}

function close_screen {
    if find_screen $SCR >/dev/null; then
        echo "Found! Deleting $SCR"
        screen -S $target_screen -X quit
    fi
}

function find_screen {

    result=$(screen -ls "$1" | grep -o "^\s*[0-9]*\.$1[ "$'\t'"](" --color=NEVER -m 1 | grep -oh "[0-9]*\.$1" --color=NEVER -m 1)

    if [ -z $result ]; then
      echo "$1"
      return 1
    else
        echo $result
        return 0
    fi
}
target_screen=$(find_screen $SCR)
main "$@"

Eu tenho tentado trabalhar neste script para que eu possa usá-lo no cronjob e em um aplicativo nodejs que permitirá que ele seja executado em um intervalo, como a cada X minutos.

No entanto, parece que este script quase nunca funciona, a menos que seja executado manualmente com ./script.sh e, mesmo assim, tenho que repetir o comando algumas vezes. O que está acontecendo?

    
por kinx 30.03.2017 / 07:26

0 respostas