Let Diyelim ki hem GNU eksikliği söylemek screen
ve tmux
(ve X11, ve sanal konsolları) ama bir giriş kabuğu ve başka interaktif kabuk arasında geçiş yapmak istiyorum.
Öncelikle konsolda oturum açarsınız ve ardından oturum açma kabuğunu geçici olarak engelleyen yeni bir kabuk başlatırsınız. Giriş kabuğunun orada bir şeyler yapmasını sağlamak için yapardınız suspend
. O zaman fg
orada ne yaparsanız yapın devam etmek için etkileşimli kabuğu geri almak istiyorsunuz.
Aslında, iş kontrolü ile, giriş kabuğu fg %1
, fg %2
vb. İle geçiş yapabileceğiniz arka plan işleri olarak bir dizi etkileşimli kabuk oluşturabilir , ancak giriş kabuğuna geri dönmek suspend
için manuel olarak istemediğiniz sürece kullanmanız gerekir kill -s STOP $$
.
Ayrıca , etkileşimli bir kabuktaki istemde Ctrl+ işaretinin Zonu askıya almayacağını da unutmayın .
DÜZENLEME: Başlangıçta suspend
bir komut dosyasında kullanımı hakkında uzun bir varsayımsal bölüm vardı , ancak komut iş kontrolü gerektirdiğinden ve etkileşimli olmayan kabuklar genellikle iş kontrolüne sahip olmadığından bu bölümü sildim.
İle bölüm silinmiş suspend
yerine kill -s STOP $$
(bu gerçekten değil artık cevap aittir, ama yine de başkalarına ilginç olabilir):
Bir komut dosyasında bir arka plan işleminiz (komut dosyası) olduğunu ve bazı aşamalardaki bu arka plan işleminin durması ve üst sürecin devam etmesini beklemesi gerektiğini varsayalım. Bu, ebeveynin dosyaları ayıklamak ve yerine taşımak için zamana veya benzeri bir şeye sahip olması için olabilir.
Alt komut dosyası askıya alınır ( kill -s STOP $$
) ve üst komut dosyası, CONT
devam etmek uygun olduğunda ona bir sinyal gönderir .
Bir ana işlem ve bir alt süreç arasında bir tür senkronizasyon uygulama fırsatı verir (ana kabuk işlemi çok az olsa da, alt işlemin askıya alındığını tahmin etmek gerekir, ancak bu, çocuğa sahip olarak düzeltilebilir. yakalayın CONT
ve bu sinyal çok erken alınırsa askıya alınmayın).
fork/exec
sistem çağrısı gerektiren bir komut çalıştırır