[Bash] Crontab 못쓸때 작업 예약해놓고 퇴근하기
금요일 저녁 늦은 시간 하던 bash 작업이 다 끝나지 않았을 때, 다음주 월요일에 출근했을 때 작업이 끝나있기를 바라는 마음에서 만들어봤는데 꽤 유용하게 쓸 수 있을 것 같다. crontab 이란 좋은 유틸이 있기는 해도 내 맘대로 막 등록하고 할 수는 없으니까
꼭 금요일이 아니더라도, 새벽 배치 집중시간을 피해 출근 전에 무언가 준비되었으면 할 때에 종종 써먹을 수 있을 듯.
#!/bin/bash
# timer.sh
while true;do
NOW=`date "+%Y%m%d%H%M%S"`
CHK="${NOW:0:13}"
if [ "$CHK" -eq "2020011804000" ];then
echo "RIGHT NOW!"
# Your Command Here
break
fi
echo $NOW "Not now"
sleep 5
done
초단위로 루프를 돌면 혹시나 한 루프 도는 데에 1초가 넘어버려서 안타깝게도 if 조건
에 걸리지 않는 경우가 있을 수 있어 0:13
으로 잘라 10초 단위로 검사한다.
실제 활용할 때에는 10초단위로 자를 필요 없이 30초 루프를 분단위로 체크해서 break 해버리면 될텐데, 11시 넘어 급하게 만들면서 또 테스트하면서 바로바로 확인하려다 보니 이렇게 된 것 같다. 굳이 10초 단위로 예약해야 한다면 이렇게 하면 되겠다.
실행 권한을 부여하고 nohup ./timer.sh 2>/dev/null > timer.log &
명령으로 실행.