![Crontab: ¿no iniciar sesión? ¿Cómo puedo hacerlo bien?](https://rvso.com/image/1126787/Crontab%3A%20%C2%BFno%20iniciar%20sesi%C3%B3n%3F%20%C2%BFC%C3%B3mo%20puedo%20hacerlo%20bien%3F.png)
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.selfcheck
desde cronlog
. Luego configure cron, como ya lo hizo, para ejecutar el script selfchek.sh
y agregue un segundo comando en cron para colocar el contenido de mylog.selfcheck
acronlog
* */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