Kabuktan bir komut çalıştırdığımda ( makebüyük bir projede), işlemi durdurmak ve kabuğa geri dönmek için Ctrl-Z yazabilirim. Daha sonra, fgsü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 -STOPve bir kabuk komut dosyasında öncekinin davranışını nasıl alabilirim?
makeyinelemeli olarak yürütülüyor. Aslında bence birkaç seviye derinlere iniyor.