DMESG(1) دستورهای کاربری DMESG(1)

dmesg - چاپ یا کنترل بافر حلقه‌ای هسته

dmesg [options]

dmesg --clear

dmesg --read-clear [options]

dmesg --console-level level

dmesg --console-on

dmesg --console-off

دستور dmesg برای بررسی یا کنترل بافر حلقه‌ای هسته (kernel ring buffer) به کار می‌رود.

عملکرد پیش‌فرض، نمایش تمام پیام‌های موجود در بافر حلقه‌ای هسته است.

گزینه‌های --clear، --read-clear، --console-on، --console-off و --console-level مانعة‌الجمع هستند.

-C, --clear

پاک‌سازی بافر حلقه‌ای.

-c, --read-clear

پاک‌سازی بافر حلقه‌ای پس از چاپ محتویات آن.

-D, --console-off

غیرفعال کردن چاپ پیام‌ها روی کنسول.

-d, --show-delta

نمایش برچسب زمانی و اختلاف زمان سپری‌شده بین پیام‌ها. اگر همراه با --notime استفاده شود، تنها اختلاف زمانی بدون برچسب زمانی چاپ می‌شود.

-E, --console-on

فعال کردن چاپ پیام‌ها روی کنسول.

-e, --reltime

نمایش زمان محلی و اختلاف زمانی در قالبی خوانا برای انسان. توجه داشته باشید که تبدیل به زمان محلی ممکن است دقیق نباشد (برای جزئیات بیشتر به -T مراجعه کنید).

-F, --file file

خواندن پیام‌های گزارش سیستم (syslog) از file مشخص‌شده. توجه داشته باشید که -F از پیام‌های در قالب kmsg پشتیبانی نمی‌کند. به جای آن به -K مراجعه کنید.

-f, --facility list

محدود کردن خروجی به list مشخص‌شده (جداشده با کاما) از تسهیلات (facilities). برای نمونه:

dmesg --facility=daemon

تنها پیام‌های مربوط به دیمن‌های سیستم را چاپ می‌کند. برای مشاهده تمام تسهیلات موجود، خروجی --help را ببینید.

-H, --human

فعال کردن خروجی خوانا برای انسان. همچنین گزینه‌های --color، --reltime و --nopager را ببینید.

-J, --json

استفاده از قالب خروجی JSON. قالب خروجی زمان تنها به صورت "sec.usec" است، سطح اولویت گزارش به‌طور پیش‌فرض رمزگشایی نمی‌شود (از --decode برای تفکیک تسهیلات و اولویت استفاده کنید)، و سایر گزینه‌های قالب‌بندی خروجی یا قالب زمان بدون هشدار نادیده گرفته می‌شوند.

-K, --kmsg-file file

خواندن پیام‌های /dev/kmsg از file مشخص‌شده. انتظار می‌رود رکوردهای مختلف با بایت NULL از یکدیگر جدا شده باشند.

-k, --kernel

چاپ پیام‌های هسته.

-L, --color[=when]

رنگ‌آمیزی خروجی. آرگومان اختیاری when می‌تواند auto (خودکار)، never (هرگز) یا always (همیشه) باشد. اگر آرگومان when حذف شود، به‌طور پیش‌فرض روی auto تنظیم می‌شود. رنگ‌ها را می‌توان غیرفعال کرد؛ برای مشاهده مقدار پیش‌فرض تعبیه‌شدهٔ فعلی به خروجی --help مراجعه کنید. همچنین بخش رنگ‌ها (COLORS) را در ادامه ببینید.

-l, --level list

محدود کردن خروجی به list مشخص‌شده (جداشده با کاما) از سطوح (levels). برای نمونه:

dmesg --level=err,warn

تنها پیام‌های خطا و هشدار را چاپ می‌کند. برای مشاهده تمام سطوح موجود، خروجی --help را ببینید.

افزودن علامت مثبت + به انتهای نام یک سطح، تمام سطوح بالاتر را نیز شامل می‌شود. برای نمونه:

dmesg --level=err+

سطوح err، crit، alert و emerg را چاپ خواهد کرد.

افزودن علامت مثبت به ابتدای نام سطح، تمام سطوح پایین‌تر را شامل می‌شود.

-n, --console-level level

تنظیم level (سطحی) که پیام‌ها در آن روی کنسول چاپ می‌شوند. مقدار level یک عدد سطح یا نام اختصاری سطح است. برای مشاهده تمام سطوح موجود به خروجی --help مراجعه کنید.

برای نمونه، -n 1 یا -n emerg از نمایش تمام پیام‌ها روی کنسول، به جز پیام‌های اضطراری (وحشت هسته)، جلوگیری می‌کند. تمام سطوح پیام‌ها همچنان در /proc/kmsg نوشته می‌شوند، بنابراین هنوز می‌توان از syslogd(8) برای کنترل دقیق محل نمایش پیام‌های هسته استفاده کرد. هنگام استفاده از گزینهٔ -n، دستور dmesg بافر حلقه‌ای هسته را چاپ نکرده و آن را پاک نخواهد کرد.

--noescape

کاراکترهای غیرقابل‌چاپ و بالقوه ناامن (مانند دنباله‌های چندبایتی معیوب، کاراکترهای کنترلی ترمینال و غیره) به دلایل امنیتی به‌طور پیش‌فرض به صورت \x<hex> گریزدهی می‌شوند. این گزینه این قابلیت را کاملاً غیرفعال می‌کند. این ویژگی مثلاً برای مقاصد اشکال‌زدایی همراه با گزینهٔ --raw مفید است. با احتیاط استفاده کنید و آن را به‌طور پیش‌فرض به کار نبرید.

-P, --nopager

خروجی به صفحه‌بند (pager) فرستاده نشود. صفحه‌بند به‌طور پیش‌فرض برای خروجی --human فعال است.

-p, --force-prefix

افزودن اطلاعات تسهیلات، سطح، یا برچسب زمانی به هر خط در پیام‌های چندخطی.

-r, --raw

چاپ بافر پیام خام؛ یعنی پیشوندهای سطح گزارش حذف نمی‌شوند، اما تمام کاراکترهای غیرقابل‌چاپ همچنان گریزدهی می‌شوند (همچنین به --noescape مراجعه کنید).

توجه داشته باشید که قالب خام واقعی به روشی که dmesg پیام‌های هسته را می‌خواند بستگی دارد. دستگاه /dev/kmsg از قالبی متفاوت با syslog(2) استفاده می‌کند. برای سازگاری با نسخه‌های پیشین، dmesg همیشه داده‌ها را در قالب syslog(2) بازمی‌گرداند. خواندن داده‌های خام واقعی از /dev/kmsg برای نمونه با دستور 'dd if=/dev/kmsg iflag=nonblock' امکان‌پذیر است.

-S, --syslog

اجبار dmesg به استفاده از رابط هستهٔ syslog(2) برای خواندن پیام‌های هسته. حالت پیش‌فرض از زمان هستهٔ 3.5.0 استفاده از /dev/kmsg به جای syslog(2) است.

-s, --buffer-size size

استفاده از بافری با اندازهٔ size برای پرس‌وجو از بافر حلقه‌ای هسته. این اندازه به‌طور پیش‌فرض 16392 است. (اندازهٔ بافر پیش‌فرض syslog هسته در ابتدا 4096 بود، از نسخهٔ 1.3.54 به 8192 و از نسخهٔ 2.1.113 به 16384 تغییر یافت.) اگر بافر هسته را بزرگ‌تر از مقدار پیش‌فرض تنظیم کرده‌اید، می‌توان از این گزینه برای مشاهدهٔ کامل بافر استفاده کرد.

-T, --ctime

چاپ برچسب‌های زمانی خوانا برای انسان.

توجه داشته باشید که برچسب زمانی ممکن است دقیق نباشد! منبع زمان مورد استفاده برای گزارش‌ها، پس از تعلیق (SUSPEND) یا ازسرگیری (RESUME) سیستم به‌روزرسانی نمی‌شود. برچسب‌های زمانی بر اساس اختلاف فعلی بین ساعت زمان راه‌اندازی و ساعت یکنواخت (monotonic) تنظیم می‌شوند و این سازوکار تنها برای پیام‌هایی کار می‌کند که پس از آخرین ازسرگیری چاپ شده‌اند.

--since time

نمایش گزارش‌ها از زمان مشخص‌شده. دقت کسری از ثانیه در دسترس است. تعیین زمان به صورت مطلق و همچنین با قالب نسبی (برای نمونه '1 hour ago') امکان‌پذیر است. توجه داشته باشید که ممکن است برچسب زمانی دقیق نباشد و برای جزئیات بیشتر به --ctime مراجعه کنید.

--until time

نمایش گزارش‌ها تا زمان مشخص‌شده. دقت کسری از ثانیه در دسترس است. تعیین زمان به صورت مطلق و همچنین با قالب نسبی (برای نمونه '1 hour ago') امکان‌پذیر است. توجه داشته باشید که ممکن است برچسب زمانی دقیق نباشد و برای جزئیات بیشتر به --ctime مراجعه کنید.

-t, --notime

عدم چاپ برچسب‌های زمانی هسته.

--time-format format

چاپ برچسب‌های زمانی با استفاده از قالب مشخص‌شدهٔ format، که می‌تواند ctime، reltime، delta، iso یا raw باشد. سه قالب نخست نام‌های مستعار برای گزینه‌های مشخص قالب زمان هستند. قالب raw از قالب برچسب زمانی پیش‌فرض استفاده می‌کند که ثانیه‌های سپری‌شده از زمان راه‌اندازی را نمایش می‌دهد. قالب iso پیاده‌سازی قالب برچسب زمانی ISO-8601 در dmesg است. هدف از این قالب، آسان کردن مقایسهٔ برچسب‌های زمانی بین دو سیستم و هرگونه تحلیل دیگر است. تعریف برچسب زمانی iso عبارت است از: YYYY-MM-DD<T>HH:MM:SS,<microseconds>←+><timezone offset from UTC>.

قالب iso همان مشکل ctime را دارد: در صورت تعلیق و ازسرگیری سیستم ممکن است زمان نادرست باشد.

می‌توان از --time-format چندین بار با مقادیر مختلف برای format استفاده کرد تا هر یک از قالب‌های مشخص‌شده چاپ شوند.

در صورت تعیین هم‌زمان، delta همیشه بعد از ctime یا raw می‌آید.

-u, --userspace

چاپ پیام‌های فضای کاربری (userspace).

-w, --follow

انتظار برای پیام‌های جدید. این قابلیت تنها در سیستم‌هایی که /dev/kmsg در آن‌ها قابل خواندن است (از هستهٔ 3.5.0 به بعد) پشتیبانی می‌شود.

-W, --follow-new

انتظار و چاپ تنها پیام‌های جدید.

-x, --decode

رمزگشایی شماره‌های تسهیلات و سطح (اولویت) به پیشوندهای خوانا برای انسان.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

رنگ‌آمیزی خروجی بر اساس قابلیت‌های terminal-colors.d(5) پیاده‌سازی شده است. رنگ‌آمیزی ضمنی را می‌توان با ایجاد یک پروندهٔ خالی

/etc/terminal-colors.d/dmesg.disable

برای دستور dmesg یا برای تمامی ابزارها با ایجاد پروندهٔ

/etc/terminal-colors.d/disable

غیرفعال کرد.

از نسخهٔ 2.41، متغیر محیطی $NO_COLOR نیز برای غیرفعال‌سازی رنگ‌آمیزی خروجی پشتیبانی می‌شود، مگر اینکه صراحتاً با گزینه‌ای در خط فرمان فعال شده باشد.

تنظیمات کاربر در مسیرهای $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d بر تنظیمات سراسری سیستم اولویت دارند.

توجه داشته باشید که ممکن است رنگ‌آمیزی خروجی به‌طور پیش‌فرض فعال باشد و در این صورت نیازی به وجود پیشین شاخه‌های terminal-colors.d نیست.

نام‌های منطقی رنگ‌ها که توسط dmesg پشتیبانی می‌شوند عبارتند از:

subsys

پیشوند زیرسیستم پیام (برای نمونه: "ACPI:").

time

برچسب زمانی پیام.

timebreak

برچسب زمانی پیام در قالب کوتاه ctime در خروجی‌های --reltime یا --human.

alert

متن پیام با اولویت گزارش هشدار.

crit

متن پیام با اولویت گزارش بحرانی.

err

متن پیام با اولویت گزارش خطا.

warn

متن پیام با اولویت گزارش اخطار.

segfault

متن پیامی که خطای نقص بخش‌بندی حافظه (segmentation fault) را گزارش می‌کند.

دستور dmesg ممکن است با خطای عدم دسترسی (permission denied) مواجه شود. این مورد معمولاً به دلیل تنظیم هستهٔ dmesg_restrict است؛ لطفاً برای جزئیات بیشتر به syslog(2) مراجعه کنید.

Karel Zak <kzak@redhat.com>

دستور dmesg در ابتدا توسط Theodore Ts’o <tytso@athena.mit.edu>. نوشته شده است.

terminal-colors.d(5), syslogd(8)

برای گزارش باگ‌ها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues. استفاده کنید.

دستور dmesg بخشی از بستهٔ util-linux است که می‌توان آن را از آرشیو هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت کرد.

2026-09-02 util-linux 2.42.3