Kabuktan bir komut çalıştırdığımda ( make
büyük bir projede), işlemi durdurmak ve kabuğa geri dönmek için Ctrl-Z yazabilirim. Daha sonra, fg
sürece devam etmek için koşabilirim .
Bunu otomatikleştirmek için bir kabuk komut dosyası yazmaya çalışıyorum (özellikle, her birkaç saniyede bir CPU sıcaklığımı kontrol etmek ve çok ısınırsa işlemi durdurmak için, bilgisayarım aşırı ısınmaya eğilimli olduğundan). İlk denemem bu şekilde çalıştı (basitleştirilmiş):
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"
Ne yazık ki, bu işe yaramadı; SIGSTOP'un sürece gönderilmesi işlemi duraklatmadı (terminale çıktı göndermeye devam etmesiyle açıkça görüldüğü gibi). make &
Komut satırında koştum , SIGSTOP gönderdim ve işlem durumunu ps
; durduruldu (ve SIGCONT'u gönderdiğimde yeniden başladı) olarak listelendi, ancak yine de çıktıyı püskürttü ve çekirdek sıcaklığımı artırıyordu! Ctrl-Z ile durdurmak hiç bu problem yaşamadım, ama bunu bir senaryoda nasıl yapacağımı bilmiyorum.
Ctrl-Z'yi farklı kılan nedir kill -STOP
ve bir kabuk komut dosyasında öncekinin davranışını nasıl alabilirim?
make
yinelemeli olarak yürütülüyor. Aslında bence birkaç seviye derinlere iniyor.