Bunun SO'ya ait olup olmadığını bilmiyordum (kodlama hatası olduğu için), ancak kullanılan yazılımın inceliklerini hakkında daha bilgili olacağınızı düşündüm (bu nedenle belki de U & L;
İşte minimal kod betiği (tam betiğin düzenlemelerine bakın, bu şekilde yapmamın bir nedeni var);
#/bin/bash
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 &
less +F currentOutput.log
Yapmaya çalıştığı şey, arka planda bir günlük dosyasına çıkan bir sunucuyu çalıştırmaktır.
Sonra ben follow
o günlük dosyasını kullanarak less +F
. Yaptığınız gibi, bundan çıkmak için vurmanız gerekir. ctrl + c vurmadan önce S .
Ne olur, ne zaman ben ctrl + c içinde less
komut (durdurmak için tailing
) bir şekilde sunucuyu başlattığında öldürür nohup
zirvede! Başka hiçbir şey etkilenmedi. yapabilirim vardiya + f günlüğü yeniden yazmaya başlamak için (sunucu öldürüldüğünden beri yeni bilgi gelmez) S betiğin geri kalanı normal şekilde çalışır.
Bunun neden olduğunu biliyor musun? Nasıl kullanmalıyım / kullanmam gereken başka bir şey?
Not;
Sunucu programı bir ^C
sorun olabilir; Bunu durdurmak için yapabileceğim bir şey var mı? Mesela ben kaçtığımda {SERVERCOMMAND}
kendi başına (engelleyici şekilde) vurabilirim ctrl + c , derhal onu öldürmez; yazdırır Received ^C signal, shutting down
(ve sonra kendini öldürür). Bu ben olduğumda olan şey. ^C
içinde less
(Bir final Received ^C signal, shutting down
günlüğe yazılır).
P.P.S
Birkaç şey denedim (hiçbiri işe yaramadı);
değiştirerek stdin komut dosyasını kesmeye çalışıyor
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 & to nohup echo '' | {SERVERCOMMAND} > currentOutput.log 2>&1 & or nohup cat /dev/null/ | {SERVERCOMMAND} > currentOutput.log 2>&1 &
kullanma
stty intr ^G
kesme komutunu değiştirmek için ctrl + g tam olarak ne yaptı^C
Zaten yapıyordum (yani bu benim terminal emülatörümle ilgili bir sorun olabilir;konsole
)yerleştirme
nohup
& amp; / veyaless
parantez içindeki satır (alt kabuk yapmak için)betiği çalıştırmak
xterm
yerinekonsole
nohup
sürecin alınmasını önler SIGHUP
CTRL + C gönderirken sinyal SIGINT
sinyali. Bu yüzden nohup
Beklediğin etkisi yok.
I think it is due to the handling within the database software, not on the shell
. Bir program bunu nasıl yapar? O zaman nasıl durdurabilirim?