Crontab - 기록하지 않습니까? 어떻게 해야 제대로 할 수 있나요?

Crontab - 기록하지 않습니까? 어떻게 해야 제대로 할 수 있나요?

내 문제에 대한 답변을 검색했지만 올바른 답변을 찾을 수 없습니다. 그래서 제가 직접 시도해봅니다.

Ubuntu 서버가 있고 TeamSpeak3 서버를 생성하려고 합니다. 로그인 기능으로 파일을 확인하세요. 이 스크립트는 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이 1분마다 실행됩니다. * */1 * * *정시에 실행되도록 cron을 설정합니다 .

편집 후 cron을 다시 시작하십시오.

sudo service cron restart

크론 작업이 어떻게 실행되는지 확인하려면

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.selfcheckcronlog

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

최종 크론 코드

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

관련 정보