ทำไมไฟล์ทุบตีนี้ถึงหยุด Tomcat ของฉันถ้าเซสชั่นปิด?


0

สคริปต์ทุบตีต่อไปนี้จะเริ่ม Apache Tomcat และทำการล็อกไฟล์เข้ากับหน้าจอ:

#!/bin/bash
~/tomcats/TC1_8083/bin/startup.sh
tail -f ~/tomcats/TC1_8083/logs/catalina.out

หากฉัน CTRL-C ส่วนท้ายสคริปต์ทุบตีจะสิ้นสุดลงและ Tomcat ยังคงทำงานได้อย่างถูกต้องแม้ว่าฉันจะออกจากระบบ อย่างไรก็ตามหากเซสชั่นของฉันตาย (เช่นผ่านการตัดการเชื่อมต่อเครือข่าย) ในขณะที่หางยังคงทำงานอยู่ Tomcat ก็หยุดเช่นกัน ถ้าฉันมี CTRL-C'ed หางแล้ว Tomcat จะไม่หยุดจนกว่าฉันจะเลือกที่จะฆ่ามัน

ฉันไม่สนใจที่จะรักษาหางให้มีชีวิตอยู่กับการตัดการเชื่อมต่อเครือข่ายฉันต้องการให้ Tomcat ทำงานต่อไปโดยไม่คำนึงถึง

ฉันไม่เข้าใจพฤติกรรมนี้ ใครช่วยอธิบายหน่อยได้ไหม? ฉันจะเปลี่ยนสคริปต์อย่างไรเพื่อให้ Tomcat ทำงานต่อไปแม้ว่าเครือข่ายจะถูกตัดการเชื่อมต่อ?


เมื่อเชลล์ตาย (เช่นเมื่อออกจากระบบ) อาจ ส่งสัญญาณให้เด็ก ๆ ของพวกเขาเพื่อให้พวกเขาหยุดอย่างสง่างาม นี่เป็นสิ่งที่ต้องการในสมัยก่อนเมื่อสายโมเด็มมักจะตก วันนี้มันสามารถกำหนดค่าได้ ดู shopt huponexit
Hennes

คำตอบ:


0

เมื่อคุณเรียกสคริปต์จากสคริปต์อื่นสคริปต์จะทำงานในพื้นหลัง (ไม่เช่นนั้นคุณจะมีสคริปต์สองสคริปต์ที่ทำงานในเบื้องหน้าพร้อมกันทั้งสองพยายามส่งออกไปยังหน้าจอ)

เมื่อคุณกด Ctrl-C คุณกำลังส่งสัญญาณขัดจังหวะไปยังสคริปต์ของคุณ (ไม่ใช่แค่ส่วนท้าย) แต่สคริปต์ tomcat ยังคงทำงานในพื้นหลังเนื่องจากเป็นสคริปต์แยกต่างหาก

เมื่อเซสชันของคุณตายสคริปต์ที่ทำงานทั้งหมดจะถูกยกเลิกรวมถึงสคริปต์ที่ทำงานในพื้นหลัง

หากคุณต้องการให้สคริปต์ทำงานต่อเมื่อคุณตัดการเชื่อมต่อจากเครือข่าย (โดยเจตนาหรืออย่างอื่น) ฉันแนะนำ tmux หรือหน้าจอ


ฉันไม่ต้องการให้หางคงอยู่ถ้าเซสชั่นตายดังนั้นไม่จำเป็นต้องใช้ tmux หรือหน้าจอ อย่างไรก็ตามถ้าฉันเรียกใช้ startup.sh จากบรรทัดคำสั่ง startup.sh จะทำงานและยังคงทำงานต่อไปแม้ว่าฉันจะออกจากระบบหรือตัดการเชื่อมต่อ ดังนั้นทำไมมันหยุดแน่นอนถ้าสคริปต์ของฉันตาย? คุณกล่าวว่า: "เมื่อเซสชันของคุณตายสคริปต์ที่ทำงานอยู่ทั้งหมดจะถูกยกเลิกรวมถึงสคริปต์ที่ทำงานอยู่เบื้องหลัง" คุณหมายถึง "เมื่อเซสชั่นของคุณตายสคริปต์ที่ทำงานทั้งหมดจะถูกยกเลิกรวมถึงสคริปต์เหล่านั้นที่เกิดจากสคริปต์ที่รันอยู่"? ถ้าเป็นเช่นนั้นฉันจะแก้ไขสคริปต์เพื่อให้ startup.sh ยังมีชีวิตอยู่ได้อย่างไร การเพิ่มเครื่องหมายและไม่ทำงาน
Phil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.