İşi donmadan arka plana yerleştir


9

İşe böyle başladığını söyle

foo

ve daha sonra arka plana yerleştirmek istediğiniz arzusu. Ctrl+ ZVe sonra yazmak bghile yapar ancak + ve fooarasında donar . Foo'yu önce dondurmadan arka plana nasıl yerleştirebilirim?CtrlZbg


7
Kullanım durumu nedir? Sürecin kısa bir süre donması neden bir sorundur?
l0b0

Yanıtlar:


4

Teknik olarak foozaten arka planda çalışır. İkinci bir terminal oturumu başlatabilirsiniz ve birincisi foobaşka şeyler yaparken çalışmaya devam eder .

X'te, bu sadece ikinci bir terminal uygulaması başlatmayı veya seçtiğiniz terminal emülatörünüzde bu gibi özellikler varsa başka bir sekme açmayı içerir.

Konsolda, planlamadıysanız, farklı bir sanal terminale geçmeniz ve tekrar giriş yapmanız gerekir.

Gibi bir terminal çoklayıcı kullanıyorsanız screenveya tmuxiçinde başka bir oturum başlatabilirsiniz. Örneğin, ekranda bu kullanılarak yapılır Ctrl+ Ahemen ardından Ctrl+ C. Bunlar arasında geçiş yapmak için Ca Cn ve Ca Cp tuşlarını kullanarak terminal oturumları arasında gidip gelin.


Yani bashta mümkün değil.
user877329

1
Bu cevap, bir arka plan işi kavramının yanlış anlaşılmasına dayanıyor gibi görünüyor. Bir terminal, genellikle kabuk tarafından ayarlanan ve bu gruptaki işlemlerin terminalden okuyabilmesini ve SIGINT gibi tty ile ilişkili sinyalleri alabilmesini sağlayan bir "ön plan süreç grubu" özelliğine sahiptir. Terminalde çalışan ve ön plan süreç grubunda olmayan tüm işlemler arka plan süreçleridir. Yeni bir terminal oluşturduğunuzda, ona bakmasanız bile, orijinal terminalin ön plan işi yine de o terminaldeki ön plan işidir.

@ WumpusQ.Wumbley Cevabım, bash çalıştırabilen (tüm?) Sistemlerin çoğunun doğası gereği çoklu görevler olmasıdır. Böyle bir sistemde, bir süreç, örneğin girdi odağı olsa bile, sürecin kendisinde doğal olarak “ön plan” diye bir şey yoktur ; foo kendisi (vahşi olarak tahmin ediyorum, nadir ve varolmayan arasında bir yerde olduğunu tahmin yok), en üst pencerede çalışan ya da çıktısını gösteren bir şey olsa bile umursamıyor.
CVn

1
Demek istediğim, soru özellikle "her ikisi de POSIX işlem grubu çerçevesi tarafından tanımlanan anlamlara sahip teknik terimler olan" arka plan "ve" iş "sözcüklerinden ve Ctrl-Z ve bg mekanizmalarından bahsediyorsa, süreç grupları üzerinde çalışın - ve cevabınız süreç grubu işlevini hiç kullanmamanızı önerir ve "arka plan" kelimesini gerçek tanımıyla eşleşmeyecek şekilde kullanırsınız - sorunuzu cevaplamıyorsunuz demektir. Ve başlamak için "Teknik olarak foozaten arka planda çalışır" ... sadece ... Hayır. Teknik olarak.

@ WumpusQ.Wumbley Bir şekilde OP'nin POSIX standardını okuduğunu ve "hmm, bunu kullanmak istiyorum, ama fooşimdi başladım, şimdi ne yapacağım?" Diye düşünmüyorum. Bu yanıtı (ya da diğer cevaplar) hissetmek soruya cevap kullanışlı değilse, senin oylama ayrıcalıkları egzersiz için teşvik edecek hem de sizsiniz doğru açıyı hissederken bir daha soruya cevap kendi cevap bırakarak yerine hakkında tartışmaya biri soru üzerine sol cevapların. Belki l0b0'ın cevabının daha iyi olduğunu düşünüyorsunuz, ancak cevabım OP'nin en azından istediklerini kabaca yapmanın bir yolunu sunuyor .
CVn

3

&( foo &) Komutundan sonra bir işaret eklenmesi hemen arka plana işaret edecektir. Ancak, standart bir terminal / kabuk yapılandırmasında, bir şey ön plana çıkarıldığında hemen arka plan oluşturmanın bir yolu olmadığına inanıyorum .


3

Bir uygulamayı ön plandan arka plana göndermek, hem terminalden hem de kabuktan işbirliği gerektirir. Terminal bunu tek başına yapamaz, çünkü kabuğun ön plan süreç grubunu ayarlaması gerekir. Kabuk tek başına yapamaz çünkü terminal tuşa basmayı işlemek zorundadır (kabuk ön planda değildir, bu yüzden tuşa basamaz).

+ Arka arkaya + tuşuna iki kez basabileceğim bir zsh konfigürasyonum var ; ilk basış işlemi askıya alır ve ikinci basış arka planda devam eder. Bunu bash'a nasıl taşıyacağımı bilmiyorum.CtrlZ

Tuş vuruşlarını enjekte etmenizi sağlayan bir terminal öykünücüsünde çalışıyorsanız, enjekte edebilirsiniz ^Zbg^M( ^kontrol karakterleri için gösterimi kullanarak ). Örneğin, bir X11 terminal emülatörüyle, 1234'ün terminal emülatörünün xdotool --window 1234 Ctrl_L+Z b g Returnpencere kimliği olduğu yerde çalıştırın . Ekran ile, ekran oturumunun adı ve pencere tanıtıcısı olan run screen -S foo -p 12 -X stuff $'\032bg\r'komutunu çalıştırın .foo12


2

kill -s SIGSTOP 1023 && kill -s SIGCONT 1023Yazmanız vaka için yeterince hızlı değilse , başka bir kabuktan çalıştırılır ve hedef PID olarak 1023 varsayar.

YASAL UYARI: Ruslan'ın muhtemelen bildiği gibi, bu dizi aslında işi çok hızlı bir şekilde yeniden başlatır, bashfark etmez.


İşi arka plana nasıl yerleştirir?
Ruslan

Ne kadar hızlı?
user877329
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.