คำสั่ง journalctl: วิธีใช้ ล็อกแยกตามบริการ และการจัดการขนาด journal

สภาพแวดล้อมทดสอบตระกูล RHELAlmaLinux 9.8systemd 252บัญชี rootDebian 12 บัญชีผู้ใช้ทั่วไปตรวจสอบเมื่อ 2026-11-05

คำสั่ง journalctl คือเครื่องมือสำหรับเลือกอ่านล็อกที่บริการและเคอร์เนลทิ้งไว้ใน journal ของ systemd บน Linux ที่ใช้ systemd นั้น systemd-journald จะรวบรวมล็อกเหล่านี้ไว้ใน journal เมื่อเลือกอ่านล็อกตามบริการ เวลา และระดับความสำคัญบนเซิร์ฟเวอร์ AlmaLinux 9 และเซิร์ฟเวอร์ Debian 12 พบว่าบัญชีทั่วไปเห็นเฉพาะล็อกของตัวเอง และเซิร์ฟเวอร์ที่เก็บ journal ไว้ในหน่วยความจำเลือกการบูตก่อนหน้าไม่ได้

ผลลัพธ์ด้านล่างมาจากเซิร์ฟเวอร์ทั้งสองเครื่อง ชื่อโฮสต์ บัญชี ID การบูต หมายเลขโพรเซสของเซิร์ฟเวอร์ AlmaLinux และรุ่นของแพ็กเกจ systemd ถูกแทนด้วยค่าตัวอย่าง และเซิร์ฟเวอร์ทั้งสองแสดงเวลาเป็น UTC

1️⃣ วิธีใช้คำสั่ง journalctl และดูล็อกล่าสุด

ถ้ารัน journalctl โดยไม่ใส่ตัวเลือก journal จะเปิดในหน้าจอ less ตั้งแต่บรรทัดที่เก่าที่สุด ดังนั้นเวลาจะดูล็อกล่าสุดให้กำหนดจำนวนบรรทัดด้วย -n ถ้าไม่ใส่ตัวเลขหลัง -n จะได้ 10 บรรทัด

journalctl -n 3
Oct 28 07:14:06 server1 systemd[1]: session-3017.scope: Deactivated successfully.
Oct 28 07:14:06 server1 systemd[1]: session-3017.scope: Consumed 3.934s CPU time.
Oct 28 07:14:07 server1 sudo[851987]: pam_unix(sudo:session): session closed for user user

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

journalctl -r -u crond -n 3
Oct 28 07:01:01 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
Oct 28 07:01:01 server1 CROND[841388]: (root) CMD (run-parts /etc/cron.hourly)

-f จะไม่จบหลังแสดงบรรทัดสุดท้าย แต่จะแสดงบรรทัดใหม่ที่เข้ามาต่อไปเรื่อย ๆ บนเซิร์ฟเวอร์ Debian 12 ใช้ -q และ -t myapp ค้างบรรทัดสุดท้ายของ logger ไว้บนหน้าจอ แล้วเขียนเพิ่มอีกสองบรรทัดด้วย logger ทั้งสองบรรทัดก็ต่อท้ายอยู่ด้านล่างทันที

journalctl -q -f -n 1 -t myapp
Oct 28 07:12:46 server2 myapp[347704]: journalctl error test
Oct 28 07:14:35 server2 myapp[347881]: follow line 1
Oct 28 07:14:36 server2 myapp[347877]: follow line 2

-f จะไม่หยุดจนกว่าจะกด Ctrl+C จึงใช้เฝ้าดูล็อกระหว่างที่บริการกำลังรีสตาร์ต

ในหน้าจอ less บรรทัดที่ยาวกว่าความกว้างหน้าจอจะถูกตัดทางขวา และดูส่วนที่ถูกตัดได้ด้วยปุ่มลูกศร ผลลัพธ์ที่ส่งต่อไปยังไปป์หรือไฟล์จะไม่ผ่าน less ถ้าต้องการแสดงบนเทอร์มินัลทันทีโดยไม่ผ่าน less ให้ใส่ --no-pager

2️⃣ ล็อกแยกตามบริการด้วย journalctl

บรรทัดล่าสุดจะมีล็อกของหลายบริการปนกัน ดังนั้นเวลาจะดูล็อกของบริการเดียวให้ระบุชื่อยูนิตด้วย -u ส่วน .service ท้ายชื่อยูนิตละไว้ได้

journalctl -u crond -n 4
Oct 28 06:01:01 server1 CROND[802926]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 CROND[841388]: (root) CMD (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
Oct 28 07:01:01 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)

ถ้าเขียน -u สองครั้ง ล็อกของสองบริการจะออกมาปนกันตามลำดับเวลา เมื่อเลือก crond และ nginx พร้อมกันช่วง 08:00 ถึง 08:15 ของวันที่ 18 ตุลาคมบนเซิร์ฟเวอร์ AlmaLinux หลังบรรทัด crond สี่บรรทัดเวลา 08:01 ตามด้วยบรรทัด nginx reload สองบรรทัดเวลา 08:12

journalctl -u nginx -u crond --since '2026-10-18 08:00' --until '2026-10-18 08:15'
Oct 18 08:01:01 server1 CROND[381522]: (root) CMD (run-parts /etc/cron.hourly)
Oct 18 08:01:01 server1 run-parts[381528]: (/etc/cron.hourly) starting 0anacron
Oct 18 08:01:01 server1 run-parts[381534]: (/etc/cron.hourly) finished 0anacron
Oct 18 08:01:01 server1 CROND[381518]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 18 08:12:30 server1 systemd[1]: Reloading nginx - high performance web server...
Oct 18 08:12:30 server1 systemd[1]: Reloaded nginx - high performance web server.

systemctl status แสดงล็อกล่าสุดเพียง 10 บรรทัดใต้สถานะบริการ ล็อกที่เก่ากว่านั้นจึงต้องดูด้วย journalctl -u หลังรัน systemctl restart กับบริการแล้ว ให้รัน journalctl -u ทันทีเพื่อตรวจสอบล็อกการเริ่มทำงาน

ล็อกที่สคริปต์หรืองาน cron เขียนด้วย logger ให้ค้นด้วยแท็ก (ตัวระบุ) ไม่ใช่ด้วยยูนิต หลัง -t ให้เขียนชื่อเดียวกับที่ใส่ใน -t ของ logger

logger -t myapp 'journalctl test message'

บนเซิร์ฟเวอร์ Debian 12 logger ไม่แสดงอะไรบนหน้าจอเลย และบรรทัดที่เขียนไว้หาเจอได้ด้วย -t myapp

journalctl -q -t myapp
Oct 28 07:12:44 server2 myapp[347693]: journalctl test message

-g จะเหลือเฉพาะบรรทัดที่ข้อความมีคำที่กำหนด ถ้าเขียนคำที่ค้นหาเป็นตัวพิมพ์เล็กทั้งหมด จะไม่แยกตัวพิมพ์ใหญ่และเล็ก

journalctl -u crond -g anacron -n 2
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron

-n นับบรรทัดก่อนที่ -g จะกรอง ดังนั้นจากบรรทัด crond สองบรรทัดสุดท้ายจึงเหลือเพียงบรรทัดเดียวที่มี anacron

3️⃣ ล็อกตามช่วงเวลาและตามการบูต

--since และ --until กำหนดจุดเริ่มและจุดสิ้นสุดของช่วงเวลาที่จะแสดง ถ้ามีช่องว่างระหว่างวันที่และเวลา ให้ครอบค่าด้วยเครื่องหมายอัญประกาศเดี่ยว

ค่า --sinceความหมายและเมื่อไรควรใช้
'2026-10-28 06:00'ตั้งแต่ 06:00:00 ของวันนั้น (ถ้าไม่ใส่วินาทีจะเป็น 00) เมื่อรู้เวลาที่ปัญหาเกิด
todayตั้งแต่ 00:00:00 ของวันนี้ เมื่อต้องการดูเฉพาะล็อกวันนี้
yesterdayตั้งแต่ 00:00:00 ของเมื่อวานจนถึงตอนนี้ ถ้าต้องการดูเฉพาะเมื่อวานให้ใส่ --until today ด้วย
'-2h'ตั้งแต่ 2 ชั่วโมงก่อน เมื่อต้องการดูสิ่งที่เพิ่งเกิด (วัดจริงด้านล่าง)
'1 hour ago'ตั้งแต่ 1 ชั่วโมงก่อน ความหมายเดียวกับ -1h

บนเซิร์ฟเวอร์ AlmaLinux ช่วง 2 ชั่วโมงล่าสุดเริ่มจากบรรทัด crond ที่เขียนเวลา 06:01 ด้านล่างคือสี่บรรทัดแรก

journalctl -u crond --since '-2h' | head -4
Oct 28 06:01:01 server1 CROND[802930]: (root) CMD (run-parts /etc/cron.hourly)
Oct 28 06:01:01 server1 run-parts[802936]: (/etc/cron.hourly) starting 0anacron
Oct 28 06:01:01 server1 CROND[802926]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 CROND[841388]: (root) CMD (run-parts /etc/cron.hourly)

-b จะเหลือเฉพาะล็อกตั้งแต่การบูตปัจจุบัน เวลาหาสาเหตุที่เซิร์ฟเวอร์รีสตาร์ต ให้ดูรายการการบูตก่อนว่ายังมีล็อกของการบูตก่อนหน้าเหลืออยู่หรือไม่

journalctl -b -u crond -n 2
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
Oct 28 07:01:01 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)

--list-boots แสดงหมายเลข ID การบูต และเวลาของบรรทัดแรกและบรรทัดสุดท้าย ของการบูตแต่ละครั้งที่เหลืออยู่ใน journal

journalctl --list-boots
IDX BOOT ID                          FIRST ENTRY                 LAST ENTRY
  0 4f1c2a9be0d34c7a8e6b5d20c1f3a7e9 Sat 2026-10-17 08:29:26 UTC Wed 2026-10-28 07:16:10 UTC

เซิร์ฟเวอร์ AlmaLinux ไม่ได้เก็บ journal ไว้บนดิสก์ จึงมีบันทึกการบูตเพียงครั้งเดียว ดังนั้น -b -1 ที่ระบุการบูตก่อนหน้าจึงแสดงแค่ข้อความแจ้งแล้วจบไป

journalctl -b -1
Specifying boot ID or boot offset has no effect, no persistent journal was found.

ล็อกของการบูตก่อนหน้าอ่านด้วย -b -1 ได้เฉพาะบนเซิร์ฟเวอร์ที่เก็บ journal ไว้บนดิสก์ (/var/log/journal)

4️⃣ ล็อกข้อผิดพลาดและล็อกเคอร์เนลด้วย journalctl

-p เลือกบรรทัดตามระดับความสำคัญของล็อก ถ้าเขียนระดับเดียว จะแสดงระดับนั้นและทุกระดับที่สำคัญกว่า และเขียนระดับเป็นชื่อหรือตัวเลขก็ได้

ระดับตัวเลขความหมาย
emerg0ระบบใช้งานไม่ได้
alert1ต้องแก้ไขทันที
crit2ข้อผิดพลาดร้ายแรง
err3ข้อผิดพลาด
warning4คำเตือน
notice5ปกติแต่ควรสังเกต ระดับของบรรทัดที่ logger เขียนโดยไม่ใส่ -p
info6ข้อมูล
debug7ข้อความดีบัก

หลังจากเขียนบรรทัดระดับ err หนึ่งบรรทัดด้วย logger แล้วเลือกด้วย -p err บรรทัดระดับ notice ที่มีแท็กเดียวกัน (journalctl test message) ก็หายไป เหลือเพียงบรรทัด err

logger -t myapp -p user.err 'journalctl error test'; journalctl -q -t myapp -p err
Oct 28 07:12:46 server2 myapp[347704]: journalctl error test

ถ้าเชื่อมสองระดับด้วยจุดสองจุด จะแสดงเฉพาะช่วงนั้น เลือก warning..err แล้วจะเหลือเฉพาะระดับคำเตือนและข้อผิดพลาด

journalctl -q -t myapp -p warning..err
Oct 28 07:12:46 server2 myapp[347704]: journalctl error test

-k จะเหลือเฉพาะข้อความเคอร์เนล และแสดงเฉพาะบรรทัดตั้งแต่การบูตปัจจุบัน

journalctl -k -n 3
Oct 26 10:14:25 server1 systemd-rc-local-generator[96245]: /etc/rc.d/rc.local is not marked executable, skipping.
Oct 27 10:47:57 server1 systemd-rc-local-generator[512078]: /etc/rc.d/rc.local is not marked executable, skipping.
Oct 27 11:01:10 server1 systemd-rc-local-generator[520023]: /etc/rc.d/rc.local is not marked executable, skipping.

บรรทัด -k สามบรรทัดสุดท้ายบนเซิร์ฟเวอร์ AlmaLinux เป็นบรรทัดของ systemd-rc-local-generator ทั้งหมด บรรทัดเหล่านี้เป็นข้อความที่เขียนลงบัฟเฟอร์ล็อกของเคอร์เนล จึงถูกเก็บด้วยค่า _TRANSPORT เป็น kernel และออกมาใน -k ด้วย

5️⃣ รูปแบบผลลัพธ์ของ journalctl

-o เปลี่ยนรูปแบบของแต่ละบรรทัด ค่าเริ่มต้น short เกือบเหมือนไฟล์ syslog ส่วน short-iso เปลี่ยนเวลาเป็นรูปแบบ ISO 8601 พร้อมเขตเวลา เมื่อเปลี่ยนเป็น short-iso บนเซิร์ฟเวอร์ AlmaLinux ท้ายเวลามี +0000 เพิ่มขึ้น

journalctl -u crond -n 2 -o short-iso
2026-10-28T07:01:01+0000 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
2026-10-28T07:01:01+0000 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)

cat ตัดเวลาและชื่อโฮสต์ออกทั้งหมด แสดงแต่ข้อความ จึงใช้เมื่อส่งข้อความต่อให้ grep หรือโปรแกรมอื่น

journalctl -u crond -n 2 -o cat
(/etc/cron.hourly) starting 0anacron
(root) CMDEND (run-parts /etc/cron.hourly)

json และ json-pretty แสดงฟิลด์ที่เก็บใน journal เป็นชื่อและค่า เมื่อเลือกฟิลด์ด้วย --output-fields ฟิลด์เคอร์เซอร์ เวลา และ ID การบูตจะตามมาด้วยเสมอ แม้เลือกเพียงสี่ฟิลด์บนเซิร์ฟเวอร์ Debian 12 ก็ยังมี __CURSOR, _BOOT_ID และฟิลด์เวลาสองฟิลด์ออกมาด้วย

journalctl -q -t myapp -n 1 -o json-pretty --output-fields=MESSAGE,PRIORITY,SYSLOG_IDENTIFIER,_PID
{
	"__REALTIME_TIMESTAMP" : "1793171676664200",
	"_PID" : "347877",
	"SYSLOG_IDENTIFIER" : "myapp",
	"MESSAGE" : "follow line 2",
	"__CURSOR" : "s=2a6f0c1d9e8b47a3b5c4d3e2f1a0b9c8;i=1a2b3;b=b7e3d1a04c9f4e2a8d6c5b1f0e2a9c47;m=17cf8fe36f5;t=65ee150cf1188;x=1f2e3d4c5b6a7980",
	"_BOOT_ID" : "b7e3d1a04c9f4e2a8d6c5b1f0e2a9c47",
	"PRIORITY" : "5",
	"__MONOTONIC_TIMESTAMP" : "1636264982261"
}

6️⃣ ตำแหน่งที่เก็บ journal และการจัดการขนาด

journal อยู่ในหน่วยความจำหรือบนดิสก์ขึ้นกับค่า Storage= ใน journald.conf ค่าเริ่มต้น auto จะเก็บบนดิสก์ถ้ามีโฟลเดอร์ /var/log/journal และเก็บในหน่วยความจำ (/run/log/journal) ถ้าไม่มี

🖥️ ฝั่งที่เขียนล็อกบริการ เคอร์เนล logger
systemd-journaldเก็บล็อกที่ได้รับลงไฟล์ journal
/run/log/journalStorage=auto (ไม่มีโฟลเดอร์) หน่วยความจำ หายเมื่อรีบูต
/var/log/journalStorage=persistent หรือ auto (มีโฟลเดอร์) ดิสก์ ยังอยู่หลังรีบูต
🖥️ journalctlอ่านและแสดงไฟล์ journal ของทั้งสองโฟลเดอร์

เซิร์ฟเวอร์ AlmaLinux ไม่มีโฟลเดอร์ /var/log/journal journal จึงอยู่เฉพาะใน /run/log/journal

ls -ld /var/log/journal /run/log/journal
ls: cannot access '/var/log/journal': No such file or directory
drwxr-sr-x+ 4 root systemd-journal 80 Oct 17 08:30 /run/log/journal

เซิร์ฟเวอร์ Debian 12 มีทั้งสองโฟลเดอร์ และ journal กำลังสะสมอยู่บนดิสก์

ls -ld /var/log/journal /run/log/journal
drwxr-sr-x+ 2 root systemd-journal   40 Oct  9 08:43 /run/log/journal
drwxr-sr-x+ 4 root systemd-journal 4096 Sep 24 12:52 /var/log/journal

ถ้าต้องการให้ล็อกยังอยู่หลังรีบูต ให้เปลี่ยน Storage= ใน journald.conf เป็น persistent แล้วรีสตาร์ต systemd-journald ตามคู่มือทางการ โฟลเดอร์ /var/log/journal จะถูกสร้างเองเมื่อจำเป็น บทความนี้ไม่ได้เปลี่ยนการตั้งค่า

journal ที่เก็บบนดิสก์ก็เหมือนกล่องดำของเครื่องบินที่นำออกมาอ่านหลังเกิดเหตุ

--disk-usage แสดงขนาดรวมของไฟล์ journal ที่เก็บถาวรและไฟล์ที่กำลังใช้อยู่ บนบัญชีทั่วไปของเซิร์ฟเวอร์ Debian 12 เมื่อซ่อนข้อความ [Hint] ด้านบนด้วย -q ผลลัพธ์คือบรรทัดเดียว 6.6M

journalctl -q --disk-usage
Archived and active journals take up 6.6M in the file system.

ขนาดสูงสุดของ journal ที่เก็บบนดิสก์กำหนดด้วย SystemMaxUse= ถ้าไม่ใส่ค่า ขีดจำกัดคือร้อยละ 10 ของขนาดระบบไฟล์ (สูงสุด 4G) และใน journald.conf ของเซิร์ฟเวอร์ Debian 12 เขียนไว้ 50M

grep -v '^#' /etc/systemd/journald.conf | grep -v '^$'
[Journal]
SystemMaxUse=50M

ถ้าต้องการลด journal เก่าทันที ให้กำหนดขนาดที่จะเก็บด้วย --vacuum-size หรือระยะเวลาที่จะเก็บด้วย --vacuum-time ทั้งสองคำสั่งลบไฟล์ journal บทความนี้จึงไม่ได้รัน

journalctl --vacuum-size=200M

--vacuum-size=200M ลบไฟล์ journal ที่เก็บถาวรโดยเริ่มจากไฟล์เก่าสุด จนขนาดรวมต่ำกว่า 200M

journalctl --vacuum-time=2weeks

--vacuum-time=2weeks ลบไฟล์เก็บถาวรที่มีแต่บรรทัดเก่ากว่า 2 สัปดาห์

vacuum ลบเฉพาะไฟล์ที่เก็บถาวรและเหลือไฟล์ที่กำลังใช้อยู่ไว้ ดังนั้นแม้รันแล้ว ตัวเลข --disk-usage ก็อาจไม่ลดลงถึงขนาดที่กำหนด

ล็อกข้อความใต้ /var/log เขียนโดย rsyslogซึ่งทำงานแยกจาก journald ล็อกทั้งสองแบบจึงมีวิธีอ่านและวิธีจัดการขนาดต่างกัน

รายการjournald(journalctl)rsyslog
วิธีอ่านjournalctlcat, less, grep
ที่เก็บ/run/log/journal หรือ /var/log/journal/var/log/messages (ตระกูล RHEL) หรือ /var/log/syslog (ตระกูล Debian)
การจัดการขนาดSystemMaxUse และอื่น ๆ ใน journald.conflogrotate

7️⃣ สิทธิ์การอ่านและตัวเลือกของคำสั่ง journalctl

  • ↪️ เมื่อบัญชีทั่วไปมองไม่เห็นล็อก

🔲 สิทธิ์การอ่าน

ถ้ารัน journalctl ด้วยบัญชีที่ไม่ใช่ root จะมีข้อความ [Hint] ขึ้นด้านบน และเห็นเฉพาะล็อกที่บัญชีนั้นเขียน เมื่อค้นล็อก nginx ด้วยบัญชีทั่วไปบนเซิร์ฟเวอร์ Debian 12 หลังข้อความแจ้งมีเพียง [-- No entries --]

journalctl -u nginx -n 5
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
-- No entries --

ตามผลของ id -nG บัญชีนี้อยู่ในกลุ่มเดียว และไม่อยู่ในกลุ่ม adm หรือ systemd-journal ที่ข้อความแจ้งพูดถึง

id -nG
user

คู่มือทางการอธิบายว่าบัญชีในกลุ่ม systemd-journal, adm และ wheel อ่าน journal ได้ทั้งหมด adm และ wheel ยังมีสิทธิ์อื่นที่ดิสทริบิวชันกำหนดติดมาด้วย และ wheel มักทำงานดูแลระบบได้ด้วย สำหรับบัญชีที่อ่านล็อกอย่างเดียวจึงเหมาะกับกลุ่ม systemd-journal

usermod -aG systemd-journal user

บทความนี้ไม่ได้รันคำสั่ง usermod ที่เพิ่มกลุ่ม หลังเพิ่มกลุ่มแล้วให้ล็อกอินใหม่และตรวจสอบกลุ่มด้วย id -nG บัญชีที่มีสิทธิ์ผู้ดูแลระบบรันด้วย sudo journalctl ก็เห็นล็อกทั้งหมดเช่นกัน

ข้อความ [Hint] ซ่อนได้ด้วย -q แต่ถึงใส่ -q ล็อกที่เห็นก็ยังเป็นเฉพาะบรรทัดที่บัญชีนั้นเขียน --user อ่าน journal ผู้ใช้ของบัญชีนั้น และใช้ได้เฉพาะบนเซิร์ฟเวอร์ที่เก็บ journal ไว้บนดิสก์ บนเซิร์ฟเวอร์ Debian 12 ที่เก็บ journal บนดิสก์ มีบรรทัด systemd และบรรทัด logger ของบัญชีนั้นออกมา

journalctl --user -n 3
Oct 28 07:12:35 server2 systemd[347665]: Reached target default.target - Main User Target.
Oct 28 07:12:35 server2 systemd[347665]: Startup finished in 181ms.
Oct 28 07:12:44 server2 myapp[347693]: journalctl test message

🔲 ตัวเลือกของคำสั่ง journalctl

📌 ตัวเลือกหลัก: ผลที่รันในบทความนี้

ตัวเลือกหน้าที่ผลที่เห็นในบทความนี้
-n จำนวนบรรทัดแสดงเฉพาะไม่กี่บรรทัดสุดท้าย ไม่ใส่ตัวเลขจะได้ 10 บรรทัด-n 3 แสดงสามบรรทัดสุดท้าย
-rกลับลำดับ ให้บรรทัดล่าสุดอยู่บนสุดในล็อก crond บรรทัด CMDEND ที่เขียนหลังสุดอยู่บนสุด
-fแสดงบรรทัดใหม่ที่เข้ามาหลังบรรทัดสุดท้ายต่อไปเรื่อย ๆสองบรรทัดที่เขียนด้วย logger ต่อท้ายด้านล่างทันที
-qซ่อนข้อความแจ้งอย่าง [Hint]ผลลัพธ์ --disk-usage ของบัญชีทั่วไปใน Debian 12 เหลือบรรทัดเดียว 6.6M
-u ยูนิตแสดงเฉพาะล็อกของบริการนั้นเขียน -u สองครั้ง หลังบรรทัด crond สี่บรรทัดจะตามด้วยบรรทัด nginx reload สองบรรทัดตามลำดับเวลา
-t แท็กแสดงเฉพาะล็อกที่มีแท็กที่ใส่ใน logger -t-t myapp แสดงบรรทัดที่ logger เขียน
-g คำแสดงเฉพาะบรรทัดที่ข้อความมีคำนั้นจากบรรทัด crond สองบรรทัดสุดท้าย เหลือเพียงบรรทัดที่มี anacron
--since, --untilจุดเริ่มและจุดสิ้นสุดของช่วงเวลาที่จะแสดง--since '-2h' เริ่มจากบรรทัด crond ที่เขียนเวลา 06:01
-bเฉพาะล็อกตั้งแต่การบูตปัจจุบัน ส่วน -b -1 คือการบูตก่อนหน้าบนเซิร์ฟเวอร์ AlmaLinux ที่ไม่เก็บ journal บนดิสก์ -b -1 แสดงเพียงข้อความ [no persistent journal was found]
--list-bootsรายการการบูตที่เหลืออยู่ใน journalเซิร์ฟเวอร์ AlmaLinux มีบันทึกการบูตเพียงครั้งเดียว
-p ระดับแสดงเฉพาะระดับความสำคัญนั้นและระดับที่สำคัญกว่า-p err ตัดบรรทัด notice ออก เหลือเพียงบรรทัด err และ warning..err ก็ได้บรรทัดเดียวกัน
-kแสดงเฉพาะข้อความเคอร์เนลของการบูตปัจจุบันสามบรรทัดสุดท้ายเป็นบรรทัดของ systemd-rc-local-generator ทั้งหมด
-o รูปแบบเปลี่ยนรูปแบบผลลัพธ์ของแต่ละบรรทัดshort-iso เติม +0000 ท้ายเวลา ส่วน cat เหลือแต่ข้อความ
--output-fields ฟิลด์เลือกฟิลด์ในผลลัพธ์ jsonแม้เลือกเพียงสี่ฟิลด์ก็ยังมี __CURSOR, _BOOT_ID และฟิลด์เวลาสองฟิลด์ตามมาด้วย
--disk-usageแสดงขนาดรวมที่ไฟล์ journal ใช้6.6M บนบัญชีทั่วไปของเซิร์ฟเวอร์ Debian 12
--userอ่าน journal ผู้ใช้ของบัญชีนั้นบนเซิร์ฟเวอร์ Debian 12 มีบรรทัด systemd และบรรทัด logger ของบัญชีนั้นออกมา
--utcแสดงเวลาเป็น UTCแม้บนเซิร์ฟเวอร์ AlmaLinux ที่ตั้งเขตเวลาแยกไว้ เวลาในล็อก crond ก็เปลี่ยนเป็น UTC
ฟิลด์=ค่าแสดงเฉพาะบรรทัดที่มีค่าฟิลด์นั้น_PID=347704 แสดงเพียงบรรทัด err ที่ logger เขียน

📎 ตัวเลือกอื่น: ตามคู่มือทางการ

ตัวเลือกหน้าที่
--no-pagerแสดงบนเทอร์มินัลทันทีโดยไม่ผ่าน less
-e, --pager-endเปิดหน้าจอ less ที่ท้าย journal ถ้าไม่ใส่ -n จะได้ 1000 บรรทัด
-x, --catalogเติมข้อความอธิบายจากแคตตาล็อกข้อความต่อท้ายบรรทัดล็อก
-a, --allแสดงฟิลด์แบบเต็ม แม้มีอักขระที่แสดงไม่ได้หรือยาวมาก
-N, --fieldsแสดงชื่อฟิลด์ทั้งหมดที่ใช้ใน journal
-F, --field= ฟิลด์แสดงค่าทั้งหมดที่ฟิลด์นั้นมี
-D โฟลเดอร์อ่าน journal ในโฟลเดอร์ที่กำหนดแทนตำแหน่งเริ่มต้น
--file= ไฟล์อ่านไฟล์ journal ที่กำหนด เขียนได้หลายครั้ง
--vacuum-size= ขนาดลบไฟล์ journal ที่เก็บถาวรโดยเริ่มจากไฟล์เก่าสุดจนต่ำกว่าขนาดที่กำหนด
--vacuum-time= ระยะเวลาลบไฟล์เก็บถาวรที่มีแต่บรรทัดเก่ากว่าระยะเวลาที่กำหนด
--vacuum-files= จำนวนลบไฟล์ journal ที่เก็บถาวร ให้เหลือเพียงจำนวนที่กำหนด
--rotateเปลี่ยนไฟล์ journal ที่ใช้อยู่เป็นไฟล์เก็บถาวรแล้วเริ่มไฟล์ใหม่
--flushย้าย journal จากหน่วยความจำ (/run/log/journal) ไปยังดิสก์ (/var/log/journal) เมื่อเก็บแบบ persistent

🔲 ตัวจำลองคำสั่ง journalctl

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

ตัวจำลองคำสั่ง journalctlsystemd 252
[root@server work]#
ทำงานเฉพาะในเบราว์เซอร์ บรรทัดที่เขียนด้วย logger จะหายเมื่อรีเฟรชหน้า และใช้ ↑↓ เรียกคำสั่งที่พิมพ์ไว้ก่อนหน้ากลับมาได้

🔢 FAQ & เนื้อหาแนะนำ

ใส่ --utc แล้วเวลาจะแสดงเป็น UTC โดยไม่ขึ้นกับการตั้งเขตเวลาของเซิร์ฟเวอร์ แม้บนเซิร์ฟเวอร์ AlmaLinux ที่ตั้งเขตเวลาแยกไว้ ล็อก crond ที่ใส่ --utc ก็แสดงเวลาตาม UTC

ถ้าเขียนชื่อฟิลด์กับค่าเชื่อมด้วยเครื่องหมายเท่ากับ เช่น journalctl _PID=347704 จะเหลือเฉพาะบรรทัดที่มีค่านั้น เมื่อค้นด้วยหมายเลขโพรเซสของบรรทัด err ที่ logger เขียน ก็ออกมาเพียงบรรทัดนั้น และถ้าเขียนร่วมกับ -u จะแสดงเฉพาะบรรทัดที่ตรงทั้งสองเงื่อนไข

🧭 คำสั่งข้อมูลระบบ · การตั้งค่า: เนื้อหาแนะนำ บทความ 8 · อ้างอิง 2
🗂️ คำสั่งข้อมูลระบบ · การตั้งค่า
📄 ข้อมูล CPU · RAM · ดิสก์ · OS 📄 uname · เวอร์ชันเคอร์เนล 📄 คำสั่ง free 📄 คำสั่ง uptime
📄 คำสั่ง timedatectl 📄 คำสั่ง localectl
📄 logrotate 📄 คำสั่ง journalctl
พื้นฐาน Linux (The Linux Foundation)
Linux · ข้อมูลระบบ
คำสั่งตรวจสอบ CPU ของ Linux: พร้อมข้อมูล RAM·ดิสก์·OS
บน Linux จำนวนคอร์ CPU ดูได้ทันทีด้วยบรรทัดเดียว [nproc]
อ่านบทความ →เนื้อหาปัจจุบัน
ระบบปฏิบัติการ = เคอร์เนลและโปรแกรมระบบ (ปกติคือเชลล์)
Linux · ข้อมูลระบบ
คำสั่งตรวจสอบเวอร์ชันเคอร์เนล Linux และวิธีตรวจสอบเวอร์ชันดิสทริบิวชัน
เวลาดูแล Linux บางครั้งต้องตรวจสอบเวอร์ชันเคอร์เนล Linux และเวอร์ชันของดิสทริบิวชัน
อ่านบทความ →เนื้อหาปัจจุบัน
อินเทอร์เฟซบรรทัดคำสั่งของ Linux (Linux command line Interface-CLI)
Linux · ข้อมูลระบบ
คำสั่ง free บน Linux: ตรวจสอบสถานะหน่วยความจำ
คำสั่ง free บน Linux ใช้ดูการใช้หน่วยความจำและหน่วยความจำที่ว่างของเซิร์ฟเวอร์ โดยอ่านข้อมูลหน่วยความจำจาก /proc/meminfo
อ่านบทความ →เนื้อหาปัจจุบัน
พื้นฐาน Linux (The Linux Foundation)
Linux · ข้อมูลระบบ
คำสั่ง uptime ของ Linux (ตรวจเวลาที่เซิร์ฟเวอร์ทำงาน&โหลดเฉลี่ย 1, 5, 15 นาที)
คำสั่ง uptime ของ Linux ใช้ตรวจโหลดเฉลี่ยของระบบและระยะเวลาที่เซิร์ฟเวอร์ทำงาน
อ่านบทความ →เนื้อหาปัจจุบัน

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 6   +   4   =