![Crontab - не логировать? Как это сделать правильно?](https://rvso.com/image/1126787/Crontab%20-%20%D0%BD%D0%B5%20%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%3F%20%D0%9A%D0%B0%D0%BA%20%D1%8D%D1%82%D0%BE%20%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%3F.png)
Я искал ответ на свою проблему, но не смог найти правильный. Поэтому я пробую сам.
У меня есть Ubuntu Server и я пытаюсь создать TeamSpeak3 Server - проверьте файл с функцией входа. Этот скрипт должен автоматически запускаться cronjob каждый час.
Мой скрипт проверки (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
Теперь моя запись в 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
Этот crontab загружается, но в файле "cronlog" нет вывода. Он пустой. Также нет вывода в мой "mylog.selfcheck". Но если я вручную запускаю скрипт (selfcheck.sh), есть вывод в "mylog.selfchek".
Извините за мой плохой язык... вы знаете это предложение...
Надеюсь, кто-нибудь сможет мне помочь.
решение1
Если вы установите cron, */1 * * * *
cron будет запускаться каждую минуту. Установите cron * */1 * * *
на запуск в час.
Перезапустите cron после редактирования.
sudo service cron restart
Чтобы проверить работу cron, запустите:
crontab -l | grep -v '^#' | cut -f 6- -d ' ' | while read CMD; do eval $CMD; done
Как вы знаете, журнал может проверить
less /var/log/syslog | grep cron
Редактировать 1
На основе вашего комментария cron работает. Также вы говорите, что когда вы запускаете скрипт, вы получаете вывод в определенном файле журнала LOGFILE='/home/teamspeak/s01/mylog.selfcheck'
в скрипте. Хорошо.
Вы будете иметь тот же контент из mylog.selfcheck
в cronlog
. Затем установите cron, как вы уже сделали, для запуска скрипта selfchek.sh
и добавьте вторую команду в cron, чтобы поместить контент из mylog.selfcheck
вcronlog
* */1 * * * cat /home/teamspeak/s01/mylog.selfcheck >> /home/teamspeak/s01/cronlog
Окончательный код cron
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