Bash belgelerinden alıntı yapmak (kimden man bash
):
JOB CONTROL
Job control refers to the ability to selectively stop
(suspend) the execution of processes and continue (resume)
their execution at a later point. A user typically employs
this facility via an interactive interface supplied jointly
by the operating system kernel's terminal driver and bash.
Yani, oldukça basit bir şekilde, set -m
(etkileşimli kabuklar için varsayılan) sahip olmak, fg
ve gibi bg
devre dışı bırakılacak olan yerleşik set +m
olmayanları (etkileşimli olmayan kabuklar için varsayılan ) kullanmanıza izin verir .
Bununla birlikte, iş kontrolü ve çıkışta arka plan süreçlerini öldürme arasındaki bağlantının ne olduğu açık değil, ancak bir tane olduğunu doğrulayabilirim: set -m; (sleep 10 ; touch control-on) &
bir komut yazdıktan hemen sonra kabuktan çıkarsa, çalışan dosya oluşturur, ancak set +m; (sleep 10 ; touch control-off) &
olmaz.
Cevabın aşağıdaki belgelerin geri kalanında olduğunu düşünüyorum set -m
:
-m Monitor mode. [...] Background pro‐
cesses run in a separate process group and a line con‐
taining their exit status is printed upon their comple‐
tion.
Bu, altında başlatılan arka plan işlerinin set +m
gerçek "arka plan işlemleri" olmadığı anlamına gelir ("Arka plan işlemleri, işlem grubu kimliği terminalden farklı olanlardır"): kendi işlemlerine sahip olmak yerine, kendilerini başlatan kabukla aynı işlem grubu kimliğini paylaşırlar. süreç grubu gibi uygun arka plan süreçleri. Bu, kabuk bazı arka plan işlerinden önce kesildiğinde gözlenen davranışı açıklar: doğru anlarsam, bırakırken, kabukla aynı işlem grubundaki işlemlere bir sinyal gönderilir (böylece öldürme arka plan işleri altından başlar set +m
), ancak diğer süreç gruplarınınkine (böylece tek başına gerçek arka plan süreçlerini bırakmak set -m
).
Yani, sizin durumunuzda, startup.sh
komut dosyası muhtemelen bir arka plan işi başlatır. Bu komut dosyası, bağlandığınız sorudaki gibi SSH üzerinden etkileşimli olmayan bir şekilde çalıştırıldığında, iş denetimi devre dışı bırakıldığında, "arka plan" işi uzak kabuğun işlem grubunu paylaşır ve böylece kabuk çıkar çıkmaz öldürülür. Tersine, bu kabukta iş denetimini etkinleştirerek, arka plan işi kendi işlem grubunu alır ve üst kabuğu çıktığında öldürülmez.
tomcat/bin/startup.sh
ilişkinfg
/ 'bg
?