วิธีการเรียกใช้โปรแกรมเป็นบริการ (เงียบ)?


23

ฉันมีเซิร์ฟเวอร์ที่ใช้ python ซึ่งฉันเริ่มจากเทอร์มินัล อินสแตนซ์เฉพาะของเทอร์มินัลนี้จะให้การควบคุมโปรแกรมและโปรแกรมใช้เป็นหน้าต่างบันทึกการทำงานจนกระทั่งปิด เป็นเรื่องปกติหรือฉันควรพยายามเริ่มโปรแกรมด้วยวิธีอื่นที่จะแสดงเป็นกระบวนการที่ใช้งานอยู่หรือไม่? หากฉันปิดเทอร์มินัลที่ฉันเริ่มโปรแกรมโปรแกรมจะหยุดทำงาน

ขอขอบคุณ


PHP ถูกกล่าวถึงในคำตอบนี้ แต่มันก็ใช้ได้กับ Python เช่นกัน: askubuntu.com/questions/26555/running-php-cli-server/…

คำตอบ:


9

แม้แต่ทุบตีเก่าก็ใช้ & สำหรับส่งกระบวนการไปที่แบ็คกราวน์ แต่ก็มีวิธีอื่นเช่นกัน ..

1.)$~ your_command > outputfile_for_stdout &
        # runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
        # & goes at the end of row      


2.)$~ your_command > outputfile_for_stdout 
        # this will run your program normally
        # press  Ctrl + Z then program will pause
   $~ bg
        # now your program is running in background
   $~ fg
        # now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
   $~ screen
   $~ run_all_your_commands
       # Ctrl + A + D will then detach this screen
   $~ screen -r will reattach it

คำสั่งที่มีประโยชน์อื่น ๆ :

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window

อืมฉันใช้คำสั่ง 'top' เพื่อดูกระบวนการจนถึงตอนนี้
U2ros

ทางออกที่ดี มีวิธีแก้ไขตัวเลือก 1. เพื่อให้ pid ถูกบันทึกไปยังไฟล์หรือไม่ ดังนั้นไฟล์บันทึกและไฟล์ pid จะถูกสร้างขึ้น
Oguz Bilgic

27

เปลี่ยนเป็นภูต (บริการ)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh


7
$ servicename &

การใช้&ทำให้โปรแกรมรันในพื้นหลังแทนที่จะบล็อกเชลล์จนกว่าโปรแกรมจะจบ


ไม่เลย เช่น. dixon@dixon-vaio:~$ nautilus & [1] 11835. จะส่งคืนรหัสกระบวนการและคุณจะแจ้งให้เปลือกใหม่ นอกจากนี้ยังตรวจสอบเรื่องนี้: http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and
dixoncx

1
ฉันยืนแก้ไขแล้ว ลบการโหวตลงแล้ว
Scott Severance


0

จากสถานีที่คุณยังสามารถเรียกใช้หรือติดตามคำสั่งที่คุณมีscreen &วิธีที่ง่ายต่อการเรียกใช้กระบวนการต่อเนื่อง


เพียงใช้&พื้นหลังกระบวนการในกรณีนี้คือน้อยในความคิดของฉัน OP ระบุว่าเซิร์ฟเวอร์ของเขาเข้าสู่ระบบโดยที่&เทอร์มินัลของเขาจะเต็มไปด้วยเอาต์พุต นอกจากนี้เนื่องจาก OP กล่าวถึงการปิดเทอร์มินัล OP จะไม่สามารถประมวลผลเบื้องหน้าอีกครั้งและบันทึกเอาท์พุททั้งหมดจะหายไป ดีกว่าอย่างน้อยก็เพื่อเปลี่ยนเส้นทางไปยังไฟล์บันทึกหรือติดscreenตั้ง - แต่โปรดอธิบายพื้นฐานของ screenการใช้ OP (ถอด / แนบ / ฯลฯ )
Robert Riedl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.