วิธีปิด IPython Notebook อย่างถูกต้อง?
ตอนนี้ฉันแค่ปิดแท็บเบราว์เซอร์แล้วใช้Ctrl+C
ในเทอร์มินัล
น่าเสียดายที่การทำเครื่องหมายexit()
หรือKill kernel upon exit
ไม่ช่วยอะไร (พวกเขาฆ่าเคอร์เนล แต่ไม่ออกจาก iPython)
วิธีปิด IPython Notebook อย่างถูกต้อง?
ตอนนี้ฉันแค่ปิดแท็บเบราว์เซอร์แล้วใช้Ctrl+C
ในเทอร์มินัล
น่าเสียดายที่การทำเครื่องหมายexit()
หรือKill kernel upon exit
ไม่ช่วยอะไร (พวกเขาฆ่าเคอร์เนล แต่ไม่ออกจาก iPython)
คำตอบ:
ขณะนี้ยังไม่มีวิธีที่ดีไปกว่า Ctrl + C ในเทอร์มินัล
เรากำลังคิดว่าจะปิดระบบอย่างชัดเจนได้อย่างไร แต่มีความตึงเครียดระหว่างโน้ตบุ๊กในฐานะแอปพลิเคชันผู้ใช้คนเดียวโดยที่ผู้ใช้มีอิสระที่จะหยุดมันและในฐานะเซิร์ฟเวอร์ผู้ใช้หลายคนซึ่งมีเพียงผู้ดูแลระบบเท่านั้นที่สามารถทำได้ เพื่อหยุดมัน เรายังไม่ได้หาวิธีจัดการกับความแตกต่าง
(สำหรับผู้อ่านในอนาคตนี่คือสถานการณ์ที่มีการเปิดตัว 0.12 และ 0.13 ในการพัฒนา)
อัปเดตธันวาคม 2560
IPython Notebook ได้กลายเป็น Jupyter Notebook เวอร์ชันล่าสุดได้เพิ่มjupyter notebook stop
คำสั่งเชลล์ซึ่งจะปิดเซิร์ฟเวอร์ที่ทำงานบนระบบนั้น คุณสามารถส่งหมายเลขพอร์ตได้ที่บรรทัดคำสั่งหากไม่ใช่พอร์ตเริ่มต้น 8888
คุณยังสามารถใช้nbmanagerซึ่งเป็นแอปพลิเคชันบนเดสก์ท็อปที่สามารถแสดงเซิร์ฟเวอร์ที่กำลังทำงานอยู่และปิดเครื่องได้
ในที่สุดเรากำลังดำเนินการเพิ่ม:
jupyter notebook &
เป็นความคิดที่ไม่ดีเนื่องจากCtrl
+ C
ใช้ไม่ได้กับสถานการณ์นี้
ถ้าคุณเรียกใช้ jupyter ในพื้นหลังเหมือนฉัน:
jupyter notebook &> /dev/null &
จากนั้นในการออกจาก jupyter โดยสมบูรณ์แทนที่จะเป็น Ctl-C ให้สร้างคำสั่ง alias:
echo 'alias quitjupyter="kill $(pgrep jupyter)"' >> ~/.bashrc
รีสตาร์ทเทอร์มินัลของคุณ ฆ่าอินสแตนซ์ jupyter ทั้งหมด:
quitjupyter
หมายเหตุ: ใช้เครื่องหมายคำพูดคู่ภายในเครื่องหมายคำพูดเดี่ยวตามที่แสดงด้านบน ในทางกลับกันจะประเมินนิพจน์ก่อนที่จะเขียนลงใน. bashrc ของคุณ (คุณต้องการเขียนคำสั่งไม่ใช่ 'kill 1430' หรือหมายเลขกระบวนการใด ๆ ที่อาจเชื่อมโยงกับอินสแตนซ์ jupyter ปัจจุบัน) แน่นอนคุณสามารถใช้นามแฝงที่คุณต้องการได้ ฉันใช้ 'qjup' จริง:
echo 'alias qjup="kill $(pgrep jupyter)"' >> ~/.bashrc
รีสตาร์ทเทอร์มินัลของคุณ ฆ่าอินสแตนซ์ jupyter ทั้งหมด:
qjup
kill $(pgrep jupyter)
ด้วยตัวเองเป็นอย่างดี ฉันกำลังเรียกใช้jupyter notebook
จากเทอร์มินัลระยะไกลที่ขัดข้อง - วิธี CTRL + C นั้นเป็นไปไม่ได้เลยเมื่อกลับเข้าสู่ระบบการบันทึกตัวเลือกนิวเคลียร์ของการรีสตาร์ทรีโมตนี่เป็นสิ่งที่ดีมาก
pkill jupyter
? pkill
เป็นpgreb
แต่สำหรับกระบวนการฆ่า
ฉันคิดว่าคำตอบที่ได้รับการยอมรับล้าสมัยและใช้ไม่ได้อีกต่อไป
คุณสามารถยกเลิกสมุดบันทึก jupyter จากเว็บอินเตอร์เฟสในรายการเมนูไฟล์
เมื่อคุณเลื่อนเคอร์เซอร์ของเมาส์ไปที่ "ปิดและหยุด" คุณจะเห็นคำอธิบายต่อไปนี้
และเมื่อคุณคลิก "ปิดและหยุด" คุณจะเห็นข้อความต่อไปนี้บนหน้าจอเทอร์มินัล
ขั้นตอนแรกคือการบันทึกสมุดบันทึกที่เปิดอยู่ทั้งหมด จากนั้นคิดเกี่ยวกับการปิดเครื่อง Jupyter Notebook ที่กำลังทำงานอยู่ คุณสามารถใช้คำสั่งง่ายๆนี้:
$ jupyter notebook stop
Shutting down server on port 8888 ...
ซึ่งใช้หมายเลขพอร์ตเป็นอาร์กิวเมนต์และคุณสามารถปิดสมุดบันทึก jupyter ได้อย่างสวยงาม
เช่น:
jupyter notebook stop 8889
Shutting down server on port 8889 ...
นอกจากนี้หากต้องการทราบว่าอินสแตนซ์ juypter ปัจจุบันของคุณกำลังทำงานอยู่ให้ตรวจสอบคำสั่งด้านล่าง:
shell> juypter notebook list
Currently running servers:
http://localhost:8888/?token=ef12021898c435f865ec706d7c9af8607a7ba58bbee98632 :: /Users/username/jupyter-notebooks [/code]
คำสั่งเหล่านี้ใช้ได้ผลสำหรับฉัน:
jupyter notebook list # shows the running notebooks and their port-numbers
# (for instance: 8080)
lsof -n -i4TCP:[port-number] # shows PID.
kill -9 [PID] # kill the process.
ลองฆ่ากระบวนการ pythonw จากตัวจัดการงาน (ถ้าเป็น Windows) หากไม่มีอะไรทำงาน
Linux (Ubuntu 14.04)
ดังที่ได้กล่าวไว้ให้พยายามฆ่ากระบวนการโน้ตบุ๊ก ipython อย่างถูกต้องโดยไปที่แท็บ "running" ในเซสชันเบราว์เซอร์ ipynb / jupyter ก่อนจากนั้นตรวจสอบเทอร์มินัลที่เปิดอยู่บนคอนโซลของคุณและปิดด้วย ctrl-c อย่างหลังควรหลีกเลี่ยงถ้าเป็นไปได้
หากคุณเรียกใช้ipython notebook list
และยังคงเห็นการรันเซิร์ฟเวอร์ ipython ที่พอร์ตต่างๆให้จดบันทึกว่าพอร์ตใดที่โน้ตบุ๊กที่มีอยู่จะถูกส่งไปยัง จากนั้นปิดพอร์ต TCP ของคุณ:
fuser -k 'port#'/tcp
ฉันไม่แน่ใจว่ามีความเสี่ยงอื่น ๆ ที่เกี่ยวข้องกับการทำเช่นนี้หรือไม่ ถ้าเป็นเช่นนั้นแจ้งให้เราทราบ
สิ่งแวดล้อม
ระบบปฏิบัติการของฉันคือ Ubuntu 16.04 และ jupyter คือ 4.3.0
วิธี
ขั้นแรกฉันออกจากระบบ jupyter ที่หน้าแรกบนเบราว์เซอร์ (ปุ่มออกจากระบบอยู่ที่ด้านบนขวา)
ประการที่สองพิมพ์ในCtrl + C
เทอร์มินัลของคุณและจะแสดง:
[I 15: 59: 48.407 NotebookApp] ขัดจังหวะการให้บริการสมุดบันทึกจากไดเร็กทอรีภายใน: / home / Username 0 เคอร์เนลที่ใช้งานอยู่
Jupyter Notebook กำลังทำงานที่: http: // localhost: 8888 /? token = a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82
ปิดเซิร์ฟเวอร์โน้ตบุ๊กนี้ (y / [n]) หรือไม่
ขั้นตอนสุดท้ายพิมพ์y
ภายใน 5 วินาทีและหากแสดง:
[C 15: 59: 50.407 NotebookApp] ยืนยันการปิดเครื่องแล้ว
[I 15: 59: 50.408 NotebookApp] กำลังปิดเมล็ด
ยินดีด้วย! คุณปิด jupyter ของคุณสำเร็จ
ที่จริงฉันเชื่อว่ามีวิธีที่สะอาดกว่าการฆ่ากระบวนการโดยใช้ kill หรือ task manager
ใน Jupyter Notebook Dashboard (อินเทอร์เฟซของเบราว์เซอร์ที่คุณเห็นเมื่อคุณเปิดตัว 'jupyter notebook' เป็นครั้งแรก) เรียกดูตำแหน่งของไฟล์สมุดบันทึกที่คุณปิดไว้ในเบราว์เซอร์ แต่เคอร์เนลที่อาจยังทำงานอยู่
ไฟล์ iPython Notebook จะปรากฏพร้อมกับไอคอนหนังสือแสดงเป็นสีเขียวหากมีเคอร์เนลที่กำลังทำงานอยู่หรือเป็นสีเทาหากเคอร์เนลไม่ทำงาน
เพียงแค่เลือกกล่องกาเครื่องหมายถัดจากไฟล์ที่กำลังทำงานอยู่จากนั้นคลิกที่ปุ่มปิดเครื่องที่ปรากฏด้านบน
การดำเนินการนี้จะปิดเคอร์เนลที่เชื่อมโยงกับโน้ตบุ๊กนั้นอย่างเหมาะสม
ในเซสชั่นเบราว์เซอร์ที่คุณสามารถไปยังแล้วคลิกKernel
Restart and Clear Output
ฉันคัดลอกการวางจากเอกสารคู่มือเริ่มต้นใช้งานฉบับย่อของโน้ตบุ๊ค Jupyter / IPython เผยแพร่เมื่อ 13 ก.พ. 2018 http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html
1.3.3 ปิดโน้ตบุ๊ก: ปิดเคอร์เนลเมื่อเปิดโน้ตบุ๊ก "กลไกการคำนวณ" (เรียกว่าเคอร์เนล) จะเริ่มทำงานโดยอัตโนมัติ การปิดแท็บเบราว์เซอร์โน้ตบุ๊กจะไม่ปิดเคอร์เนล แต่เคอร์เนลจะทำงานต่อไปจนกว่าจะปิดลงอย่างชัดเจน ในการปิดเคอร์เนลให้ไปที่สมุดบันทึกที่เกี่ยวข้องและคลิกที่เมนูไฟล์ -> ปิดและหยุด หรืออีกวิธีหนึ่งคือ Notebook Dashboard มีแท็บชื่อ Running ซึ่งจะแสดงสมุดบันทึกที่กำลังทำงานอยู่ทั้งหมด (เช่นเคอร์เนล) และอนุญาตให้ปิดเครื่องได้ (โดยคลิกที่ปุ่มปิดเครื่อง)
สรุป: ก่อนอื่นให้ปิดและหยุดการทำงานของโน้ตบุ๊ก
1.3.2 ปิดแอพ Jupyter Notebook การปิดเบราว์เซอร์ (หรือแท็บ) จะไม่ปิดแอพ Jupyter Notebook หากต้องการปิดเครื่องโดยสมบูรณ์คุณต้องปิดเทอร์มินัลที่เกี่ยวข้อง ในรายละเอียดเพิ่มเติม Jupyter Notebook App เป็นเซิร์ฟเวอร์ที่ปรากฏในเบราว์เซอร์ของคุณตามที่อยู่เริ่มต้น ( http: // localhost: 8888 ) การปิดเบราว์เซอร์จะไม่ปิดเซิร์ฟเวอร์ คุณสามารถเปิดที่อยู่ก่อนหน้านี้อีกครั้งและแอพ Jupyter Notebook จะแสดงขึ้นมาอีกครั้ง คุณสามารถเรียกใช้แอพ Jupyter Notebook ได้หลายชุดและจะแสดงในที่อยู่ที่คล้ายกัน (เฉพาะตัวเลขหลัง“:” ซึ่งเป็นพอร์ตเท่านั้นที่จะเพิ่มขึ้นสำหรับสำเนาใหม่แต่ละชุด) เนื่องจากด้วยแอพ Jupyter Notebook เพียงแอพเดียวคุณจึงสามารถเปิดสมุดบันทึกจำนวนมากได้เราจึงไม่แนะนำให้เรียกใช้แอพ Jupyter Notebook หลายสำเนา
สรุป: ประการที่สองออกจากเทอร์มินัลที่คุณยิง Jupyter
ขั้นตอนที่ 1 - บนเชลล์เพียงแค่ทำการควบคุม + z (control + c) ขั้นตอนที่ 2 _ ปิดเว็บเบราว์เซอร์
ps -ax
top
ดังนั้นจึงสามารถเลือกหยุดเคอร์เนลได้ด้วย [สิทธิ์ระดับผู้ดูแลระบบ] เพื่อยุติกระบวนการนั้น: # kill PID-of-ki สิ่งนี้ไม่อนุญาตให้มีขั้นตอนการปิดระบบภายในสำหรับเคอร์เนล แต่ไม่บังคับประเภท Ctl-C .... มีใครรู้บ้าง ถ้าสิ่งนี้ถูกวางแผนไว้สำหรับ jupyter?