| LSFD(1) | دستورهای کاربری | LSFD(1) |
نام (NAME)
lsfd - فهرست کردن توصیفکنندههای فایل باز پردازهها
خلاصه دستور (SYNOPSIS)
lsfd [گزینه]
توضیحات (DESCRIPTION)
lsfd به عنوان یک جایگزین مدرن برای lsof(8) در سیستمهای لینوکس در نظر گرفته شده است. برخلاف lsof، lsfd مختص هسته لینوکس است؛ این دستور با کدی سادهتر از قابلیتهای اختصاصی لینوکس مانند فضاهای نام (namespaces) پشتیبانی میکند. lsfd یک جایگزین بیدرنگ و مستقیم (drop-in) برای lsof نیست؛ آنها در رابط خط فرمان و قالبهای خروجی متفاوت هستند.
خروجی پیشفرض ممکن است تغییر کند. بنابراین هر زمان که ممکن است، باید از استفاده از خروجیهای پیشفرض در اسکریپتهای خود خودداری کنید. همیشه در محیطهایی که خروجی پایدار مورد نیاز است، با استفاده از --output columns-list ستونهای مورد انتظار را بهطور صریح مشخص کنید.
lsfd از Libsmartcols برای قالببندی و پالایش خروجی استفاده میکند. برای سفارشیسازی قالب خروجی، توضیحات گزینه --output و برای پالایش، گزینه --filter را ببینید. از lsfd --list-columns برای دریافت فهرستی از تمام ستونهای موجود استفاده کنید.
گزینهها (OPTIONS)
-l, --threads
-J, --json
-n, --noheadings
-o, --output list
فهرست پیشفرض ستونها در صورتی که list در قالب +list مشخص شود، قابل گسترش است (به عنوان مثال، lsfd -o +DELETED).
-r, --raw
--notruncate
-p, --pid list
-i[4|6], --inet[=4|=6]
-Q, --filter expression
گزینه -Q همراه با یک PID (برای مثال: -Q PID==1) و گزینه -p (برای مثال: -p 1) میتوانند برای رسیدن به همان نتیجه استفاده شوند، اما استفاده از گزینه -p بسیار کارآمدتر است زیرا در مرحله بسیار اولیهتری از پردازش نسبت به گزینه -Q عمل میکند.
-C, --counter label:filter_expr
درباره filter_expr به scols-filter(5) مراجعه کنید. label نباید شامل { یا : باشد. میتوانید با مشخص کردن چندباره این گزینه، چندین شمارنده تعریف کنید. همچنین بخش مثالهای شمارنده (COUNTER EXAMPLES) را ببینید.
--summary[=mode]
خلاصه، شمارندهها را گزارش میدهد. یک شمارنده از یک برچسب و یک مقدار عددی صحیح تشکیل شده است. --counter گزینهای برای تعریف یک شمارنده است. اگر کاربر هیچ شمارندهای تعریف نکند، lsfd از تعاریف شمارندههای داخلی از پیش تعریفشده (شمارندههای پیشفرض) برای ایجاد خروجی خلاصه استفاده میکند.
هشدار: استفاده همزمان از --summary و --json ممکن است خروجی را نامعتبر کند. تنها ترکیب --summary=only و --json معتبر است.
--debug-filter
--dump-counters
--hyperlink[=when]
-H, --list-columns
-h, --help
-V, --version
محیط (ENVIRONMENT)
LIBSMARTCOLS_DEBUG=all
LIBSMARTCOLS_DEBUG_PADDING=on
LIBSMARTCOLS_JSON=compact|lines
ستونهای خروجی (OUTPUT COLUMNS)
هر ستون یک نوع دارد. نوعها بین < و > قرار گرفتهاند.
هشدار: نامها و نوعهای ستونها هنوز پایدار نیستند. آنها ممکن است در نسخههای آینده تغییر کنند.
AINODECLASS <string>
ASSOC <string>
BLKDRV <string>
BPF-MAP.ID <number>
BPF-MAP.TYPE <string>
BPF-MAP.TYPE.RAW <number>
BPF.NAME <string>
BPF-PROG.ID <number>
BPF-PROG.TAG <string>
BPF-PROG.TYPE <string>
BPF-PROG.TYPE.RAW <number>
CHRDRV <string>
COMMAND <string>
DELETED <boolean>
DEV <string>
DEVTYPE <string>
ENDPOINTS <string>
دستور lsfd نقاط پایانی را در میان پردازههایی که پیمایش میکند جمعآوری میکند؛ اگر پردازهها را با گزینه -p محدود کنید، lsfd ممکن است برخی از نقاط پایانی را نادیده بگیرد.
قالب این ستون بستگی به شیء مرتبط با توصیفکننده فایل (fd) دارد:
نوع FIFO، نوع mqueue، منابع ptmx و pts
نویسههای پایانی ([-r][-w]) نشاندهنده حالت خواندن و/یا نوشتن نقطه پایانی هستند.
نوع eventfd
UNIX
در یک کانتینر، ممکن است lsfd نتواند ستون ENDPOINTS را پر کند. lsfd از sock_diag(7) برای جمعآوری اطلاعات درباره نقاط پایانی UNIX استفاده میکند. SELinux ممکن است استفاده از sock_diag را در کانتینر محدود کند. میتوانید این محدودیت را با تنظیم مقدار ۱ برای متغیر منطقی virt_sandbox_use_netlink برطرف کنید. برای جزئیات بیشتر به container_selinux(8) مراجعه کنید.
UNIX-STREAM
درباره نویسههای پایانی ([-r?][-w?])، به توضیحات SOCK.SHUTDOWN مراجعه کنید.
EVENTFD.ID <number>
EVENTPOLL.TFDS <string>
FD <number>
FLAGS <string>
FUID <number>
INET.LADDR <string>
INET.RADDR <string>
INET6.LADDR <string>
INET6.RADDR <string>
INODE <number>
INOTIFY.INODES <string>
INOTIFY.INODES.RAW <string>
KNAME <string>
KTHREAD <boolean>
MAJ:MIN <string>
MAPLEN <number>
MISCDEV <string>
MNTID <number>
MODE <string>
NAME <string>
برخی فایلها قالبها و منابع اطلاعاتی ویژهای دارند:
AF_VSOCK
raddr برای سوکتهای در حال گوش دادن (listening) نمایش داده نمیشود.
bpf-map
bpf-prog
eventpoll
eventfd
inotify
misc:tun
NETLINK
PACKET
pidfd
lsfd مقادیر TARGET-PID و TARGET-NSPIDS را از /proc/pid/fdinfo/fd استخراج میکند.
PING
PINGv6
ptmx
lsfd مقدار PTMX.TTY-INDEX را از /proc/pid/fdinfo/fd استخراج میکند.
RAW
RAWv6
signalfd
TCP, TCPv6
timerfd
UDP, UDPv6
اگر UDP.RADDR برابر با 0.0.0.0 و UDP.RPORT برابر با 0 باشد، lsfd مقدار raddr= را پنهان میکند.
UDP-LITE, UDPLITEv6
UNIX-STREAM
UNIX
توجه
داشته
باشید که
نشانگرهای
(deleted) از این
ستون حذف
شدهاند.
برای آگاهی
از قابلیت
خواندن
فایل از
سیستم
فایل، به
KNAME، DELETED یا XMODE
مراجعه
کنید.
NETLINK.GROUPS <number>
NETLINK.LPORT <number>
NETLINK.PROTOCOL <string>
NLINK <number>
NS.NAME <string>
NS.TYPE <string>
OWNER <string>
PACKET.IFACE <string>
PACKET.PROTOCOL <string>
PACKET.PROTOCOL.RAW <number>
PARTITION <string>
PID <number>
PIDFD.COMM <string>
PIDFD.NSPID <string>
نقلقول از kernel/fork.c در درخت کد منبع لینوکس:
اگر فضاهای نام pid پشتیبانی شوند، این تابع همچنین pid مربوط به pidfd مشخصشده را برای تمام فضاهای نام pid فرزند، با شروع از فضای نام pid فعلی نمونه چاپ میکند؛ یعنی فیلد Pid و اولین ورودی در فیلد NSpid یکسان خواهند بود.
توجه
داشته
باشید که
این با
فیلدهای Pid و NSpid
در /proc/<pid>/status
متفاوت
است، جایی
که Pid و NSpid همیشه
نسبت به
فضای نام pid
نمونه procfs
نمایش داده
میشوند.
PIDFD.PID <number>
PING.ID <`number`>
POS <number>
RAW.PROTOCOL <string>
نکته
نوع داده این ستون از نسخه v2.39 تا v2.41 برابر با <number> بود.
RAW.PROTOCOL.RAW <number>
RDEV <string>
SIGNALFD.MASK <string>
SIZE <number>
SOCK.LISTENING <boolean>
SOCK.NETS <number>
SOCK.PROTONAME <string>
SOCK.SHUTDOWN <string>
[-r?]
[-w?]
SOCK.STATE <string>
SOCK.TYPE <string>
SOURCE <string>
STTYPE <string>
TCP.LADDR <string>
TCP.LPORT <number>
TCP.RADDR <string>
TCP.RPORT <number>
TID <number>
TIMERFD.CLOCKID <string>
TIMERFD.INTERVAL <number>
TIMERFD.REMAINING <number>
PTMX.TTY-INDEX <number>
TUN.DEVNETNS <number>
TUN.IFACE <string>
TYPE <string>
اگر lsfd هنگام فراخوانی یک فراخوان سیستمی برای کسب اطلاعات درباره یک توصیفکننده فایل هدف دچار خطا شود، این ستون را برای آن با ERROR پر میکند.
UDP.LADDR <string>
UDP.LPORT <number>
UDP.RADDR <string>
UDP.RPORT <number>
UDPLITE.LADDR <string>
UDPLITE.LPORT <number>
UDPLITE.RADDR <string>
UDPLITE.RPORT <number>
UID <number>
UNIX.IPEER < number >
اگر lsfd در یک کانتینر اجرا شود، ممکن است ستون UNIX.IPEER را پر نکند. برای جزئیات بیشتر به توضیحات UNIX در ستون ENDPOINTS مراجعه کنید.
UNIX.PATH <string>
USER <string>
VSOCK.LADDR <string>, VSOCK.RADDR <string>
شناسههای زمینه (CID) شناختهشده رمزگشایی میشوند: “*”، “hypervisor”، “local” یا “host”. درگاههای شناختهشده رمزگشایی میشوند: “*”.
VSOCK.LCID <number>, VSOCK.RCID <number>
VSOCK.LPORT <number>, VSOCK.RPORT <number>
XMODE <string>
[-r]
[-w]
[-x]
[-D]
[-Ll]
[-m]
مثالهای پالایش (FILTER EXAMPLES)
دستور lsfd گزینههای کمی برای پالایش دارد. در بیشتر موارد، آنچه باید بدانید گزینه -Q (یا --filter) است. در ترکیب با گزینه -o (یا --output)، میتوانید خروجی را همانطور که میخواهید سفارشی کنید.
فهرست کردن فایلهای مرتبط با پردازههای با PID 1 و PID 2:
# lsfd -Q '(PID == 1) or (PID == 2)'
انجام همان کار به روشی جایگزین:
# lsfd -Q '(PID == 1) || (PID == 2)'
انجام همان کار به روشی کارآمدتر:
# lsfd --pid 1,2
میتوان به جای کاما از فاصلهها استفاده کرد:
# lsfd --pid '1 2'
استفاده از pidof(1) برای فهرست کردن فایلهای مرتبط با "firefox":
# lsfd --pid "$(pidof firefox)"
فهرست کردن اولین توصیفکننده فایل بازشده توسط پردازه با PID 1:
# lsfd -Q '(PID == 1) and (FD == 1)'
انجام همان کار به روشی جایگزین:
# lsfd -Q '(PID == 1) && (FD == 1)'
فهرست کردن تمام فایلهای اجرایی در حال اجرا:
# lsfd -Q 'ASSOC == "exe"'
انجام همان کار به روشی جایگزین:
# lsfd -Q 'ASSOC eq "exe"'
انجام همان کار اما چاپ فقط نامهای فایل:
# lsfd -o NAME -Q 'ASSOC eq "exe"' | sort -u
فهرست کردن فایلهای حذفشده مرتبط با پردازهها:
# lsfd -Q 'DELETED'
فهرست کردن فایلهای غیرعادی (غیرمعمولی):
# lsfd -Q 'TYPE != "REG"'
فهرست کردن دستگاههای بلوکی:
# lsfd -Q 'DEVTYPE == "blk"'
انجام همان کار با ستون TYPE:
# lsfd -Q 'TYPE == "BLK"'
فهرست کردن فایلهایی که شاخه "dconf" در نام آنها وجود دارد:
# lsfd -Q 'NAME =~ ".\*/dconf/.*"'
فهرست کردن فایلهای بازشده در یک ماشین مجازی QEMU:
# lsfd -Q '(COMMAND =~ ".\*qemu.*") and (FD >= 0)'
فهرست کردن فایلهای timerfd منقضیشده ظرف ۰٫۵ ثانیه:
# lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)'
فهرست کردن پردازههای در حال ارتباط از طریق سوکتهای جریانی یونیکس:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
فهرست کردن پردازههای در حال ارتباط از طریق یک سوکت جریانی یونیکس مشخص:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
مثالهای شمارنده (COUNTER EXAMPLES)
گزارش تعداد توصیفکنندههای سوکت netlink و توصیفکنندههای سوکت unix:
# lsfd --summary=only \
-C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
-C 'unix sockets':'(NAME =~ "UNIX:.*")'
VALUE COUNTER
57 netlink sockets
1552 unix sockets
انجام همان کار اما چاپ در قالب JSON:
# lsfd --summary=only --json \
-C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
-C 'unix sockets':'(NAME =~ "UNIX:.*")'
{
"lsfd-summary": [
{
"value": 15,
"counter": "netlink sockets"
},{
"value": 798,
"counter": "unix sockets"
}
]
}
تاریخچه (HISTORY)
دستور lsfd از نسخه v2.38 بخشی از بسته util-linux است.
نویسندگان (AUTHORS)
Masatake YAMATO <yamato@redhat.com>, Karel Zak <kzak@redhat.com>
همچنین ببینید (SEE ALSO)
bpftool(8), bps(8), lslocks(8), lsof(8), pidof(1), proc(5), scols-filter(5), socket(2), ss(8), stat(2), vsock(7)
گزارش باگها (REPORTING BUGS)
برای گزارش باگها، از ردیاب مشکلات https://github.com/util-linux/util-linux/issues.
در دسترس بودن (AVAILABILITY)
دستور lsfd بخشی از بسته util-linux است که میتواند از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت شود.
| 2026-09-02 | util-linux 2.42.3 |