ถ้าฉันทำ:
journalctl -u my-service
จากนั้นShift-F
ให้ทำตามในขณะที่เพจจิ้งฉันจะ(interrupt to abort)
ไม่ออกเพจเจอร์ได้อย่างไร
ด้วยless
ปกติฉันแค่^C
แต่ถ้าฉันทำเช่นนั้นใน journalctl มันจะออกจากเพจเจอร์ทั้งหมด
ถ้าฉันทำ:
journalctl -u my-service
จากนั้นShift-F
ให้ทำตามในขณะที่เพจจิ้งฉันจะ(interrupt to abort)
ไม่ออกเพจเจอร์ได้อย่างไร
ด้วยless
ปกติฉันแค่^C
แต่ถ้าฉันทำเช่นนั้นใน journalctl มันจะออกจากเพจเจอร์ทั้งหมด
คำตอบ:
คุณจะใช้less
ที่จุดนั้น แต่ ^ C journalctl
มีพฤติกรรมที่แตกต่างกันเนื่องจากวิธีการที่มันจะถูกเรียกโดย ค่าสถานะที่ journalctl ส่งผ่านเพื่อless
รวมค่าเริ่มต้นต่อไปนี้:
FRSXMK
ของเหล่านี้ฉันคิดว่าตัวเลือก "K" ใช้กับที่นี่:
-K หรือ --quit-on-intr ทำให้น้อยลงเพื่อออกทันที (ด้วยสถานะ 2) เมื่อพิมพ์อักขระขัดจังหวะ (ปกติ ^ C) ถูกพิมพ์ โดยปกติแล้วอักขระขัดจังหวะทำให้น้อยลงที่จะหยุดสิ่งที่มันทำและกลับไปที่พรอมต์คำสั่งของมัน โปรดทราบว่าการใช้ตัวเลือกนี้ทำให้ไม่สามารถกลับไปที่พรอมต์คำสั่งจากคำสั่ง "F"
ดังนั้นการตั้งค่า $ SYSTEMD_LESS ในสภาพแวดล้อมของคุณและการเว้นตัวเลือก "K" ควรแก้ไขปัญหามันไม่สามารถใช้กับการทดสอบบน Ubuntu 16.04 ได้:
SYSTEMD_LESS="FRSXM"journalctl -u nginx
อย่างไรก็ตามคุณสามารถรับพฤติกรรมที่คุณต้องการยืนยันได้ว่าธง K นั้นสัมพันธ์กันโดยการเปรียบเทียบพฤติกรรมของรูปแบบต่อไปนี้:
# ^C after Shift-F does not completely quit
journalctl -u nginx | less -FRSXM
# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK
ฉันเพิ่งเจอกับเหตุการณ์ที่น่ารำคาญนี้
การตั้งค่าSYSTEMD_LESS
ไม่ทำงานเนื่องจาก journalctl จะส่ง a SIGTERM
ไปยังเพจเจอร์เมื่อได้รับ ^ C
"ทางออก" ของฉันคือใช้นามแฝงทุบตีเช่นนี้
alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'
สิ่งนี้จะแทนที่เพจเจอร์เริ่มต้นและจะไม่ออกเมื่อคุณขัดจังหวะการติดตาม
ตัวแปรสภาพแวดล้อมน่าจะเป็นวิธีเดียวที่จะมีสีและให้น้อยทำงานหลังจากที่SYSTEMD_COLORS
SIGINT
สิ่งนี้ใช้ได้กับการติดตั้ง Debian 9 ของฉัน
journalctl | less
อาจเป็นบั๊ก
SYSTEMD_LESS
แต่ฉันได้รับการยืนยันนี้จะless
เปลี่ยนธงที่ส่งไปยัง คุณสามารถตรวจสอบโดยการหา PID ของและการทำless
มองหาตัวแปรสภาพแวดล้อมhd /proc/<pid>/environ
LESS
มันจะอยู่ที่นั่น แต่ว่างเปล่า (โดยปกติจะเป็นFRSXMK
) คุณสามารถพิมพ์_K
ตัวเองน้อยลงเพื่อดูว่ามีการตั้งค่าสถานะนั้นหรือไม่ โดยปกติมันเป็น ถ้าคุณผ่านSYSTEMD_LESS=
มันไม่ได้ ฉันคิดว่ากระบวนการ journalctl คือการส่งสัญญาณวิทยุติดตามตัวเมื่อมันได้รับSIGINT
ซึ่งเป็นเหตุผลที่less
ตายโดยไม่คำนึงถึงการตั้งค่าที่