Bu, gerçekten eski bir kabukla uğraşmadığınız sürece (çoğunlukla) alabileceğiniz iş kontrolü olan herhangi bir kabuk için geçerli olmalıdır. POSIX standardında olduğu için dashiş kontrolünü bile destekliyor (etkileşimli olarak veya birlikte çalışırken -m).
interaktif
- Ctrl+ zmevcut planlanmış programı askıya alacaktır
bgEn son askıya alınan programın arka planını
( bg %2kontrol edebileceğiniz iş numarasıyla birlikte kullanın jobs)
fg en son askıya alınmış programı ön plana çıkaracak
İçinde istemi başka bir + zshile dolaylı olarak çalıştırmak için bir anahtar bağlama yazabilirsiniz :fgCtrlz
_zsh_cli_fg() { fg; }
zle -N _zsh_cli_fg
bindkey '^Z' _zsh_cli_fg
Muhtemelen bg, askıya alınma konusunda dolaylı olarak koşmanın akıllıca bir yolu vardır , ancak bu mantıksız görünüyor; en azından benim için Ctrl+ zkullanımımın çoğunluğu Ctrl+ ckırılmadığı için; Bunu kill %1yerine örneğin yerine takip etmek istiyorum bgve kesinlikle öldürmeyi varsayılan yapmak istemiyorum! (Bu mantık, artık bu anahtar bağlamayı neden artık kullanmadığımı da içeriyor: Bir işlemi durdurmak için Ctrl+ ' zya çarpıyorsam, yapmak istediğim son şey devam etmektir!)
Sigara interaktif
Farklı bir kabuk örneğindeyseniz (veya bazen sudokomutlar da dahil olmak üzere farklı bir kullanıcıysanız ), iş numaralarını kullanamazsınız.
İşlem kimliğini (PID) öğrendikten sonra, başka bir işleme devam edebilirsiniz. PID'yi pgrep …veya ile ps aux |grep …(veya aynı kabuktan jobs -l, veya $!) alabilir ve sonra çalıştırabilirsiniz:
kill -STOP $PID # suspend
kill -CONT $PID # continue (resume)
İşlem kimliğini bilmiyorsanız ve işlemin diğer örneklerini ada göre askıya alma konusunda endişelenmiyorsanız, bunlardan birine sinyal iletebilirsiniz:
killall -STOP program_name
pkill -STOP program_name
pkill -f -STOP program_name_or_args
A CONTbir programa sinyal ile durduruldu Ctrl+ z(ve bgsize sanki, 'd) (ön planda) ilerlemesini devam eder aynı fgo.
Re: Standart Hata
Bu sorunun düzeltilmesi standart hata hakkında bilgi veriyor:
İşlem stderr'e çıkar fg <jobid>. İşlem terminale çıkarken komutu nasıl vermeliyim?
Söz konusu işin arka planlı bileşenleri (veya tüm iş arka plan, belki de üzerinden geçmiş kill -CONT) olmadıkça , askıya alınırken çıktıyı görmemelisiniz.
Hala veri çıktısı alıyorsa (standart çıktıya veya standart hataya göre), terminalinizi görsel olarak karışık bir hale getirecektir, ancak girişinizin bir parçası olmadığından bu çıktının tümü göz ardı edilir. Bu, herhangi bir yazım hatası girmediğinizi bilmeyi zorlaştırabilir, ancak (kör) yazmanın fgEnteryeterli olması gerekir (birden fazla işiniz yoksa ve söz konusu olanın en yenisi olmadığı sürece, bu durumda iş tanımlayıcısına ihtiyacınız olacak. ).
İş tanımlayıcısını bulmanız gerekiyorsa, STOPyukarıdaki etkileşimli olmayan yöntemlerle sinyal göndermek için başka bir terminal kullanın . Bu, ekranınızı serbest bırakmalıdır (belki Enterbirkaç kez vurmak veya koşmak clearveya Ctrl+ L), böylece jobsiş tanımlayıcısını bulmak için koşabilir ve ardından bu numaranın fg %Nolduğu yerde koşabilirsiniz N.