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 dash
iş kontrolünü bile destekliyor (etkileşimli olarak veya birlikte çalışırken -m
).
interaktif
- Ctrl+ zmevcut planlanmış programı askıya alacaktır
bg
En son askıya alınan programın arka planını
( bg %2
kontrol 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 + zsh
ile dolaylı olarak çalıştırmak için bir anahtar bağlama yazabilirsiniz :fg
Ctrlz
_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 %1
yerine örneğin yerine takip etmek istiyorum bg
ve 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 sudo
komutlar 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 CONT
bir programa sinyal ile durduruldu Ctrl+ z(ve bg
size sanki, 'd) (ön planda) ilerlemesini devam eder aynı fg
o.
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 fg
Enteryeterli 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, STOP
yukarı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 clear
veya Ctrl+ L), böylece jobs
iş tanımlayıcısını bulmak için koşabilir ve ardından bu numaranın fg %N
olduğu yerde koşabilirsiniz N
.