
내 문제에 대한 답변을 검색했지만 올바른 답변을 찾을 수 없습니다. 그래서 제가 직접 시도해봅니다.
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.selfcheck
를cronlog
* */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