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 ^Csorun 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 ^Gkesme komutunu değiştirmek için ctrl + g tam olarak ne yaptı^CZaten yapıyordum (yani bu benim terminal emülatörümle ilgili bir sorun olabilir;konsole)yerleştirme
nohup& amp; / veyalessparantez içindeki satır (alt kabuk yapmak için)betiği çalıştırmak
xtermyerinekonsole
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?