![Crontab - não registra? Como posso fazer isso direito?](https://rvso.com/image/1126787/Crontab%20-%20n%C3%A3o%20registra%3F%20Como%20posso%20fazer%20isso%20direito%3F.png)
Procurei uma resposta para o meu problema, mas não consigo encontrar a resposta certa. Então eu tento sozinho.
Eu tenho um servidor Ubuntu e tento criar um servidor TeamSpeak3 - verifique o arquivo com a função de login. Este script deve ser iniciado automaticamente 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. Além disso, não há saída para o meu "mylog.selfcheck". Mas se eu executar o script (selfcheck.sh) manualmente, haverá uma saída para "mylog.selfchek".
Sinto muito pela minha linguagem imprópria ... você conhece esta frase ...
Espero que alguém possa me ajudar.
Responder1
Se você definir o cron, */1 * * * *
o cron será executado a cada minuto. Defina o cron * */1 * * *
para ser executado de hora em hora.
Reinicie o cron, após editar
sudo service cron restart
Para verificar como o trabalho do cron é executado
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
Com base no seu comentário, cron work. Além disso, você diz que, ao executar o script, você obtém a saída em um arquivo de log definido LOGFILE='/home/teamspeak/s01/mylog.selfcheck'
no script. OK.
Você terá o mesmo conteúdo mylog.selfcheck
em cronlog
. Em seguida, defina o cron, como você já fez, para executar o script selfchek.sh
e adicione o segundo comando no cron para colocar o conteúdo de mylog.selfcheck
paracronlog
* */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