Когда я запускаю команду ( make
для большого проекта) из оболочки, я могу нажать Ctrl-Z, чтобы остановить процесс и вернуться в оболочку. Впоследствии я могу бежать, fg
чтобы продолжить процесс.
Я пытаюсь написать сценарий оболочки, чтобы автоматизировать это (в частности, проверять температуру моего процессора каждые несколько секунд и останавливать процесс, если он становится слишком горячим, так как мой компьютер подвержен перегреву). Моя первая попытка работала так (упрощенно):
make &
subpid="$!"
sleep 2
# If the CPU temperature is too high...
kill -STOP "$subpid"
sleep 2
# If the CPU temperature has dropped to safe levels...
kill -CONT "$subpid"
wait "$subpid"
К сожалению, это не сработало; отправка SIGSTOP процессу не приостановила его (что стало очевидным из продолжения отправки вывода на терминал). Я запустил make &
командную строку, отправил SIGSTOP и проверил состояние процесса с помощью ps
; он был указан как остановленный (и снова начался, когда я отправлял SIGCONT), но он все еще извергал выходной поток и повышал температуру ядра! Остановка с помощью Ctrl-Z никогда не имела этой проблемы, но я не знаю, как это сделать в скрипте.
Чем отличается Ctrl-Z от других kill -STOP
, и как я могу получить поведение первого в сценарии оболочки?
make
запускается рекурсивно. На самом деле, я думаю, что это несколько уровней.