![Crontab - nicht protokollieren? Wie mache ich das richtig?](https://rvso.com/image/1126787/Crontab%20-%20nicht%20protokollieren%3F%20Wie%20mache%20ich%20das%20richtig%3F.png)
Ich habe nach einer Antwort auf mein Problem gesucht, aber nicht die richtige gefunden. Also versuche ich es selbst.
Ich habe einen Ubuntu-Server und versuche, einen TeamSpeak3-Server zu erstellen - Datei mit Logging-Funktion prüfen. Dieses Skript sollte stündlich automatisch durch einen Cronjob gestartet werden.
Mein Check-Skript (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
Nun mein Crontab-Eintrag:
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
Diese Crontab wird geladen, aber es gibt keine Ausgabe in der Datei „cronlog“. Sie ist leer. Auch gibt es keine Ausgabe in meinem „mylog.selfcheck“. Aber wenn ich das Skript (selfcheck.sh) manuell ausführe, gibt es eine Ausgabe in „mylog.selfchek“.
Es tut mir leid, dass ich mich so ausdrücke... Sie kennen diesen Satz...
Ich hoffe, dass mir jemand helfen kann.
Antwort1
Wenn Sie „cron“ festlegen, */1 * * * *
wird „cron“ jede Minute ausgeführt. Stellen Sie „cron“ so ein, * */1 * * *
dass es stündlich ausgeführt wird.
Starten Sie cron nach der Bearbeitung neu
sudo service cron restart
So überprüfen Sie, wie Cron ausgeführt wird
crontab -l | grep -v '^#' | cut -f 6- -d ' ' | while read CMD; do eval $CMD; done
Wie Sie wissen, können Sie das Protokoll überprüfen
less /var/log/syslog | grep cron
Bearbeiten 1
Basierend auf Ihrem Kommentar funktioniert Cron. Sie sagen auch, wenn Sie ein Skript ausführen, erhalten Sie eine Ausgabe in einer definierten Protokolldatei LOGFILE='/home/teamspeak/s01/mylog.selfcheck'
im Skript. Ok.
Sie möchten den gleichen Inhalt von mylog.selfcheck
in cronlog
. Dann setzen Sie cron, wie Sie es bereits tun, um das Skript auszuführen selfchek.sh
und fügen Sie einen zweiten Befehl in cron hinzu, um den Inhalt von mylog.selfcheck
in zu setzencronlog
* */1 * * * cat /home/teamspeak/s01/mylog.selfcheck >> /home/teamspeak/s01/cronlog
Endgültiger Cron-Code
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