รัน Jar ในพื้นหลังบน Linux


12

ฉันมีไหที่ทำงานตลอดไป (วนซ้ำไม่สิ้นสุดกับซ็อกเก็ตฟังด้าย) และต้องการให้ทำงานในพื้นหลังตลอดเวลา ตัวอย่างจะเป็น: "java -jar test.jar" ฉันจะทำสิ่งนี้ได้อย่างไร ขอบคุณล่วงหน้า!

คำตอบ:


8

หลายวิธี:

  1. ต่อท้าย&ที่ด้านหลัง อย่างไรก็ตามการใช้สิ่งนี้โปรแกรมจะยังคงถูกยกเลิกหากคุณปิดเทอร์มินัลที่เริ่มต้นโปรแกรม

  2. เริ่มscreenเซสชันและเริ่มโปรแกรมภายใน คุณสามารถแยกscreenเซสชั่นและปิดสถานี ในภายหลังคุณสามารถแนบกับเซสชันอีกครั้งและพบว่าตัวเองกลับมาที่คอนโซลราวกับว่าคุณอยู่ที่นั่นมาตลอด อย่างไรก็ตามคุณจะต้องเริ่มต้นเซสชันหน้าจอก่อนเรียกใช้โปรแกรมและหากคุณลืมที่จะทำเช่นนั้นคุณจะไม่สามารถทำอะไรได้เลย

  3. ใช้disownการควบคุมงานจากเปลือกของคุณ สิ่งนี้จะแยกงานออกจาก tty ของคุณและโปรแกรมของคุณจะไม่ถูกยกเลิกเมื่อปิด tty อย่างไรก็ตามฉันไม่คิดว่าจะมีวิธีใดที่จะกลับไปทำงานที่ถูกปฏิเสธอีกครั้ง


13

พรอมต์บรรทัดคำสั่งที่ฉันใช้มาเป็นระยะเวลานานในการล็อกออฟคือ "nohup" ดังนั้นในกรณีของคุณ

nohup java -jar test.jar &

ปุ่ม & เป็นสิ่งสำคัญเพื่อให้คุณสามารถเรียกใช้เชลล์อื่นได้ ฉันเชื่อว่าสิ่งนี้จะไม่ผ่านการรีบูต


7

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

java -jar test.jar> / dev / null 2> & 1 &

เป็น /etc/rc.local (หรือแทนที่ / dev / null ด้วยไฟล์บันทึกที่คุณชื่นชอบ)

ดีกว่าคือการสร้างสคริปต์ init.d ที่เริ่มต้นใน runlevels ที่เหมาะสม (เช่นคุณอาจไม่ต้องการมันใน runlevel 0, 1 หรือ 6 เป็นต้น) ด้วยวิธีนี้คุณสามารถให้มันเริ่มต้นใหม่โดยอัตโนมัติถ้ามันตายและมีอินเทอร์เฟซที่ดีกว่าเพื่อหยุดมันชั่วคราว

ตัวอย่างเล็ก ๆ ที่http://www.howtoforge.com/forums/archive/index.php/t-3628.html

คำอธิบายขนาดใหญ่ที่http://developer.novell.com/wiki/index.php/Writing_Init_Scripts


ความเป็นไปได้อีกอย่างหนึ่งถ้าคุณต้องการให้มันรันด้วย user perms เพียงแค่ใส่ cron และใช้ '@reboot' เป็นเวลาในการรัน ดู 'man 5 crontab' สำหรับรายละเอียด
pjz

3
java -jar test.jar &

ผู้ประกอบการ & จะบังคับให้กระบวนการทำงานในพื้นหลังคุณสามารถเรียกใช้คำสั่ง 'บน' หลังจากนั้นเพื่อดูว่ามันกำลังทำงานอยู่


1

คุณสามารถรันงานใด ๆ ในพื้นหลังบน Linux โดยการใส่สัญลักษณ์ '&' ต่อท้ายบรรทัดคำสั่งเช่น

java -jar test.jar &


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.