Я бегу скрипт, который работает на один или два раза в неделю .. и эта программа работает в течение нескольких часов (зависит от того, как много файлов) в день ..Shell Script Контроль времени
Но проблема в том, Я должен приостановить эту программу в рабочее время. , например, если рабочий час составляет от 1 до 3 часов, тогда вся работа скрипта должна приостановиться и ждать до 3:01 утра, чтобы начать снова. i don ' t должен УБИТЬ текущий текущий процесс, если он работает после 1 часа ночи. , но всякий раз, когда это делается с этим конкретным файлом, я должен сделать паузу для следующих файлов.
в настоящее время это то, что я выяснить
while true
do
curr_time= date +"%H%M%S"
if [ $curr_time -ge 005000 -a $curr_time -le 030000 ]
then
echo "Pause for 12000 seconds"
sleep 12000
else
break;
fi
done
Так начните паузу в 12:50 вместо того, чтобы надеяться, что все может поэтапно, прежде чем 1am и сна в течение 12000 сек, которая составляет около 3 часов и перезапустить ..
Но проблема в том, что по какой-то причине, когда он просыпается с 12000 секунд сна, и это еще не 3 часа ночи, он будет спать еще 12000 секунд. как я могу обойти это?
Я хочу, чтобы он останавливался около 1 часа ночи (каждый процесс файла занимает около 1 минуты, но несколько сотен и тысяч файлов там обрабатываются) и начинает ПРАВО НАЗАД В 3 часа ночи. Мне не нужно его убивать, если он проходит 1 утра .. просто пауза после того, как файл будет обработан.
Просто используйте меньшее время сна ... каждый раз, когда скрипт просыпается, он проверяет, находится ли он в окне «Не обрабатывать». Если это так, он снова будет спать. –
Почему бы просто не отправить сигнал STOP на его pid в 0:59 и сигнал CONT в 3:01? – technosaurus
FYI, я не думаю, что этот скрипт может работать в текущем состоянии. Строковая переменная 'curr_time' не может быть' -ge 245000' и '-le 030000'. Возможно, вы имели в виду '-ge 005000'? – dg99