#!/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?