이상한 동작을 하는 cron으로 예약된 bash 스크립트가 있습니다. 제목에서 알 수 있듯이 스크립트가 실행된 후 크론 일정에 따라 비어 있거나 비어 있는 변수가 있습니다. * * * * *
또는 매분마다 실행 하면 */1 * * * *
변수가 채워지고 스크립트가 작동합니다. 5분, 10분, 15분마다 마찬가지입니다. as를 사용하여 30분으로 이동하거나 */30 * * * *
as를 사용하여 시간별 상단으로 이동하면 0 * * * *
변수가 비어 있습니다.
스크립트 자체는 변수 값을 동일한 파일에 추가하기 전에 "날짜"의 출력을 파일에 추가하는 것 외에는 어떤 방식으로도 시간을 사용하지 않습니다.
스크립트는 수동으로 실행될 때 예상대로 작동합니다. 매시간 또는 30분마다 실행되기를 원하지만 cron에서 이러한 변경을 수행하면 빈 변수로 인해 스크립트가 실패합니다.
크론 빈도가 이런 식으로 스크립트에 어떤 영향을 미치는지 모르겠습니다. 스크립트는 정적입니다. cron 항목만 변경되었습니다. 아이디어가 있나요? 미리 감사드립니다.
스크립트:
#!/bin/bash
# declare variables
resultsdir="/share/CACHEDEV1_DATA/Ian/Documents/IT/Speedtest"
dl="00.00"
#run the download speedtest and grep the Mbit/s result into $dl
dl=$(speedtest --no-upload | grep bit)
#if the $dl variable is empty notify and exit
if [ -z "$dl" ]
then
/sbin/notice_log_tool -a "Speedtest failed due to empty dl variable" --severity=6
exit
else
:
fi
#append the date and time to speedtest.txt
date>>$resultsdir/speedtest.txt
#append the download speed after the date to speedtest.txt
echo $dl>>$resultsdir/speedtest.txt
#append the speedtest Mbit/s numerics to speedtest_numerics.txt
echo $dl | tr -d ' aA-zZ:/'>>$resultsdir/speedtest_numerics.txt
#notify of script completion
/sbin/notice_log_tool -a "Speedtest completed - ${dl}." --severity=6
exit
작업 크론 항목의 예:
* * * * * /share/CACHEDEV1_DATA/TFTP/Scripts/speedtest.sh >/dev/null 2>&1
실패한 cron 입력의 예:
*/30 * * * * /share/CACHEDEV1_DATA/TFTP/Scripts/speedtest.sh >/dev/null 2>&1
$dl
성공적인 실행 중 grep의 var 일치 예:
Retrieving speedtest.net configuration...
Testing from ISP (IP)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by ISP [response]
Testing download speed...
Download: X Mbit/s
$dl
작업이 실행될 때 0 * * * *
var에는 무엇이 포함됩니까 */30 * * * *
?
Retrieving speedtest.net configuration...
Testing from ISP (IP)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
speedtest
내가 정의한 완료에 따르면 스크립트는 완료될 때까지 계속됩니다. 어쩌면 일종의 시간 초과가 있을 수도 있습니다. 하루에 1시간 또는 30분 단위로 작업이 10개 정도만 실행되므로 로드 문제는 아닌 것 같습니다. 성능 지표가 좋아 보입니다. 이 상자의 주요 임무는 NAS 및 Plex 미디어 서버 역할을 하는 것이므로 하루 중 95%는 유휴 상태라고 할 수 있습니다. 예약된 클라우드 백업 등이 없습니다.
1분마다 실행되도록 예약했는데 1시간 30분을 제외하고는 성공적으로 실행됩니다.
다르게 예약하거나 speedtest
다운로드 지표를 얻을 때까지 반복적으로 실행할 수 있지만 이는 원인을 파악하지 못한 해결 방법입니다.