Crontab: ¿no iniciar sesión? ¿Cómo puedo hacerlo bien?

Crontab: ¿no iniciar sesión? ¿Cómo puedo hacerlo bien?

He buscado una respuesta a mi problema pero no encuentro la correcta. Así que lo pruebo yo mismo.

Tengo un servidor Ubuntu e intento crear un servidor TeamSpeak3; verifique el archivo con la función de inicio de sesión. Este script debe iniciarse automáticamente mediante un cronjob cada hora.

Mi script de verificación (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

Ahora mi entrada de 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 se está cargando pero no hay resultados en el archivo "cronlog". Esta vacio. Además, no hay resultados en mi "mylog.selfcheck". Pero si ejecuto el script (selfcheck.sh) manualmente, aparece un resultado en "mylog.selfchek".

Perdón por mi mala lengua... ya conoces esta frase...

Espero que alguien pueda ayudarme.

Respuesta1

Si configura cron, */1 * * * *cron se ejecutará cada minuto. Configure cron * */1 * * *para que se ejecute cada hora.

Reiniciar cron, después de editar

sudo service cron restart

Para comprobar cómo se ejecuta el trabajo cron

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

Como usted sabe, el registro puede comprobarlo.

less /var/log/syslog | grep cron

Editar 1

Basado en tu comentario, trabajo cron. También dice que cuando ejecuta el script, obtiene resultados en un archivo de registro definido LOGFILE='/home/teamspeak/s01/mylog.selfcheck'en el script. De acuerdo.

No verás el mismo contenido mylog.selfcheckdesde cronlog. Luego configure cron, como ya lo hizo, para ejecutar el script selfchek.shy agregue un segundo comando en cron para colocar el contenido de mylog.selfcheckacronlog

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

Código 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

información relacionada