Crontab - não logar? Como posso fazer certo?

1

Eu pesquisei uma resposta do meu problema, mas não consigo encontrar o caminho certo. Então eu tento eu mesmo.

Eu tenho um servidor Ubuntu e tento criar um servidor TeamSpeak3 - verifique o arquivo com a função loggin. Este script deve ser auto startet por um cronjob a cada hora.

Meu script de verificação (selfcheck.sh):

#!/bin/bash

cd /home/teamspeak/s01
LOGFILE='/home/teamspeak/s01/mylog.selfcheck'

function logg(){
        echo -n 'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' >>$LOGFILE
        echo " | 'basename $0' $1" >>$LOGFILE
}


#COMMANDLINE_PARAMETERS="${1}" #add any command line parameters you want to pass here
DIR=/home/teamspeak/s01/
USER=teamspeak

logg "### GESTARTET ###"

if [ -e ts3server.pid ]; then
    if ( kill -0 $(cat ts3server.pid) 2> /dev/null ); then
        echo ""
        echo "      ###################"
        echo "      #Server is running#"
        echo "      ###################"
        echo ""
        status=1

        echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | Server is running" >>$LOGFILE

    else
        echo ""
        echo "      ###########################"
        echo "      #Server seems to have died#"
        echo "      ###########################"
        echo ""
        status=2

        echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | Server seems to have died" >>$LOGFILE

    fi
else
    echo ""
    echo "      ##########################"
    echo "      #The server isn't running#"
    echo "      ##########################"
    echo ""
    status=3

    echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | The server isn't running" >>$LOGFILE

fi

if [ $status = "2" ]; then
    echo ""
    echo "      ##############"
    echo "      #Status ist "$status"#"
    echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | Status ist "$status >>LOGFILE
    echo "      ###RE-START###"
    echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | RE-START" >>LOGFILE
    echo "      ##############"
    echo ""
    echo ""
    echo "      ######################"
    echo "      #Stopping the Server!#"
    echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | Stopping the Server!" >>LOGFILE
    echo "      ######################"
    echo ""
    ./ts3server_startscript.sh stop inifile=ts3server.ini
    echo ""
    echo "      ######################"
    echo "      #Starting the Server!#"
    echo "'date +\%d.\%m.\%Y' 'date +\%H:\%M:\%S' | Starting the Server!" >>LOGFILE
    echo "      ######################"
    echo ""
    ./ts3server_startscript.sh start inifile=ts3server.ini


fi

logg "###  BEENDET  ###"

exit 0

Agora minha entrada no crontab:

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
# m h  dom mon dow   command
  */1 *   *   *   *    /home/teamspeak/s01/selfchek.sh >> /home/teamspeak/s01/cronlog

Este crontab está carregando, mas não há saída no arquivo "cronlog". Está vazio. Também não há saída para o meu "mylog.selfcheck". Mas se eu executar o script (selfcheck.sh) manualmente, há uma saída para "mylog.selfchek".

Sinto muito pela minha linguagem ruim ... você sabe essa frase ...

Espero que alguém possa me ajudar.

    
por Chuckl0r 26.05.2015 / 21:11

1 resposta

0

Se você definir o cron */1 * * * * cron será executado a cada min. Defina o cron * */1 * * * para executar na hora.

Reinicie o cron após editar

sudo service cron restart

Para verificar como o trabalho cron funciona

crontab -l | grep -v '^#' | cut -f 6- -d ' ' | while read CMD; do eval $CMD; done

Como você sabe, o log pode verificar

less /var/log/syslog | grep cron

Editar 1

Baseado no seu trabalho cron do comentário. Além disso, você diz, quando você executa o script, você tem saída no arquivo de log definido LOGFILE='/home/teamspeak/s01/mylog.selfcheck' no script. Ok.

Você não vai ao mesmo conteúdo de mylog.selfcheck in cronlog . Então configure o cron, como você já, para executar o script selfchek.sh e adicionar segundo comando no cron para colocar o conteúdo de mylog.selfcheck to cronlog

 * */1 * * * cat /home/teamspeak/s01/mylog.selfcheck >> /home/teamspeak/s01/cronlog

Código do cron final

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
# m h  dom mon dow   command
  * */1 * * *    /home/teamspeak/s01/selfchek.sh
  * */1 * * *    cat /home/teamspeak/s01/mylog.selfcheck >> /home/teamspeak/s01/cronlog
    
por 2707974 26.05.2015 / 21:35