| LSFD(1) | أوامر المستخدم | LSFD(1) |
الاسم
lsfd - سرد واصفات الملفات
موجز
lsfd [خيار]
الوصف
صُمم lsfd ليكون بديلاً حديثاً لـ lsof(8) على أنظمة لينكس. وبخلاف lsof، فإن lsfd متخصص في نواة لينكس؛ حيث يدعم ميزات لينكس الخاصة مثل مساحات الأسماء (namespaces) برمجية أبسط. لا يعد lsfd بديلاً مطابقاً لـ lsof؛ فهما يختلفان في واجهة سطر الأوامر وتنسيقات الخرج.
إن الخرج المبدئي عرضة للتغيير. لذا، كلما أمكن، يجب تجنب استخدام المخرجات المبدئية في نصوصك البرمجية. حدد دائماً الأعمدة المتوقعة صراحةً باستخدام --output columns-list في البيئات التي تتطلب خرجاً مستقراً.
يستخدم lsfd مكتبة Libsmartcols لتنسيق الخرج وترشيحه. راجع وصف خيار --output لتخصيص تنسيق الخرج، وخيار --filter للترشيح. استخدم lsfd --list-columns للحصول على قائمة بكافة الأعمدة المتاحة.
الخيارات
-l، --threads
-J، --json
-n، --noheadings
-o، --output قائمة
يمكن توسيع قائمة الأعمدة المبدئية إذا حُددت قائمة في التنسيق +قائمة (مثال: 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 لصيقة:تعبير_تصفية
انظر scols-filter(5) حول filter_expr. يجب ألا تتضمن اللصيقة label المحرف { ولا المحرف : . يمكنك تعريف عدادات متعددة بتحديد هذا الخيار عدة مرات. انظر أيضاً COUNTER EXAMPLES.
--summary[=mode]
يُبلغ الملخص عن العدادات. يتكون العداد من وسم وقيمة صحيحة. --counter هو الخيار لتعريف العداد. إذا لم يعرف المستخدم أي عداد، يستخدم lsfd تعريفات العدادات المدمجة مسبقًا (العدادات المبدئية) لإنشاء مخرجات الملخص.
تنبيه: استخدام --summary و --json قد يؤدي لعطب المخرجات. فقط الجمع بين --summary=only و --json هو الصحيح.
--debug-filter
--dump-counters
--hyperlink[=متى]
-H، --list-columns
-h، --help
-V، --version
البيئة
LIBSMARTCOLS_DEBUG=all
LIBSMARTCOLS_DEBUG_PADDING=on
أعمدة المخرجات
لكل عمود نوع. تحاط الأنواع بالعلامتين < و >.
تنبيه: أسماء الأعمدة وأنواعها ليست مستقرة بعد. قد تُغيّر في الإصدارات المستقبلية.
AINODECLASS <سلسلة_نصية>
ASSOC <سلسلة_نصية>
BLKDRV <سلسلة_نصية>
BPF-MAP.ID <رقم>
BPF-MAP.TYPE <سلسلة_نصية>
BPF-MAP.TYPE.RAW <رقم>
BPF.NAME <سلسلة_نصية>
BPF-PROG.ID <رقم>
BPF-PROG.TAG <سلسلة_نصية>
BPF-PROG.TYPE <سلسلة_نصية>
BPF-PROG.TYPE.RAW <رقم>
CHRDRV <سلسلة_نصية>
COMMAND <سلسلة_نصية>
DELETED <منطقي>
DEV <سلسلة_نصية>
DEVTYPE <سلسلة_نصية>
ENDPOINTS <سلسلة_نصية>
يجمع lsfd نقاط النهاية داخل العمليات التي يفحصها lsfd؛ وقد يفتقد lsfd بعض نقاط النهاية إذا حُصرت العمليات باستخدام الخيار -p.
يعتمد تنسيق العمود على الكائن المرتبط بـ fd:
نوع FIFO, نوع mqueue, مصادر ptmx و pts
تمثل الأحرف الأخيرة ([-r][-w]) وضع القراءة و/أو الكتابة لنقطة النهاية.
نوع eventfd
UNIX
داخل حاوية، قد لا يملأ lsfd عمود ENDPOINTS. يستخدم lsfd الأداة sock_diag(7) لجمع معلومات حول نهايات اتصال UNIX. قد يحد SELinux من استخدام sock_diag داخل الحاوية. يمكنك إزالة هذا القيد بضبط القيمة 1 للمتغير المنطقي virt_sandbox_use_netlink. انظر container_selinux(8) لمزيد من التفاصيل.
UNIX-STREAM
بخصوص الأحرف الأخيرة ([-r?][-w?])، راجع وصف SOCK.SHUTDOWN.
EVENTFD.ID <رقم>
EVENTPOLL.TFDS <سلسلة_نصية>
FD <رقم>
FLAGS <سلسلة_نصية>
FUID <رقم>
INET.LADDR <سلسلة_نصية>
INET.RADDR <سلسلة_نصية>
INET6.LADDR <سلسلة_نصية>
INET6.RADDR <سلسلة_نصية>
INODE <رقم>
INOTIFY.INODES <سلسلة_نصية>
INOTIFY.INODES.RAW <سلسلة_نصية>
KNAME <سلسلة_نصية>
KTHREAD <منطقي>
MAJ:MIN <سلسلة_نصية>
MAPLEN <رقم>
MISCDEV <سلسلة_نصية>
MNTID <رقم>
MODE <سلسلة_نصية>
NAME <سلسلة_نصية>
بعض الملفات لها تنسيقات ومصادر معلومات خاصة:
AF_VSOCK
raddr لا يظهر لمقابس الاستماع.
bpf-map
bpf-prog
eventpoll
eventfd
inotify
misc:tun
NETLINK
PACKET
pidfd
يستخرج lsfd كلاً من TARGET-PID و TARGET-NSPIDS من /proc/معرّف-العملية/fdinfo/fd.
PING
PINGv6
ptmx
يستخرج lsfd المَعلمة PTMX.TTY-INDEX من /proc/معرّف-العملية/fdinfo/fd.
RAW
RAWv6
signalfd
TCP, TCPv6
timerfd
UDP, UDPv6
يخفي lsfd القيمة raddr= إذا كان UDP.RADDR هو 0.0.0.0 وكان UDP.RPORT هو 0.
UDP-LITE, UDPLITEv6
UNIX-STREAM
UNIX
لاحظ أن
علامات
(deleted) تُزال
من هذا
العمود.
راجع KNAME، أو
DELETED، أو XMODE
لمعرفة
قابلية
قراءة
الملف من
نظام
الملفات.
NETLINK.GROUPS <رقم>
NETLINK.LPORT <رقم>
NETLINK.PROTOCOL <سلسلة_نصية>
NLINK <رقم>
NS.NAME <سلسلة_نصية>
NS.TYPE <سلسلة_نصية>
OWNER <سلسلة_نصية>
PACKET.IFACE <سلسلة_نصية>
PACKET.PROTOCOL <سلسلة_نصية>
PACKET.PROTOCOL.RAW <رقم>
PARTITION <سلسلة_نصية>
PID <رقم>
PIDFD.COMM <سلسلة_نصية>
PIDFD.NSPID <سلسلة_نصية>
مقتبس من kernel/fork.c في شجرة مصدر لينكس:
إذا كانت مساحات أسماء pid متاحة، فستطبع هذه الدالة أيضًا الـ pid الذي يشير إليه pidfd معين لجميع مساحات أسماء pid المنحدرة بدءًا من مساحة أسماء pid الحالية للمثيل، أي أن حقل Pid والمدخل الأول في حقل NSpid سيكونان متطابقين.
لاحظ أن
هذا يختلف
عن حقلي Pid و NSpid
في /proc/<pid>/status حيث
يُعرض Pid و NSpid
دائمًا
بالنسبة
لمساحة
أسماء pid
الخاصة
بمثيل procfs.
PIDFD.PID <رقم>
PING.ID <`number`>
POS <رقم>
RAW.PROTOCOL <سلسلة نصية>
Note
نوع بيانات هذا العمود كان <عدد> من الإصدار v2.39 إلى v2.41.
RAW.PROTOCOL.RAW <رقم>
RDEV <سلسلة_نصية>
SIGNALFD.MASK <سلسلة_نصية>
SIZE <رقم>
SOCK.LISTENING <منطقي>
SOCK.NETS <رقم>
SOCK.PROTONAME <سلسلة_نصية>
SOCK.SHUTDOWN <سلسلة_نصية>
[-r?]
[-w?]
SOCK.STATE <سلسلة_نصية>
SOCK.TYPE <سلسلة_نصية>
SOURCE <سلسلة_نصية>
STTYPE <سلسلة_نصية>
TCP.LADDR <سلسلة_نصية>
TCP.LPORT <رقم>
TCP.RADDR <سلسلة_نصية>
TCP.RPORT <رقم>
TID <رقم>
TIMERFD.CLOCKID <سلسلة_نصية>
TIMERFD.INTERVAL <رقم>
TIMERFD.REMAINING <رقم>
PTMX.TTY-INDEX <رقم>
TUN.DEVNETNS <عدد>
TUN.IFACE <سلسلة_نصية>
TYPE <سلسلة_نصية>
إذا واجه lsfd خطأ عند استدعاء نظام لمعرفة معلومات عن واصف ملف مستهدف، يملأ lsfd هذا العمود بالقيمة ERROR.
UDP.LADDR <سلسلة_نصية>
UDP.LPORT <رقم>
UDP.RADDR <سلسلة_نصية>
UDP.RPORT <رقم>
UDPLITE.LADDR <سلسلة_نصية>
UDPLITE.LPORT <رقم>
UDPLITE.RADDR <سلسلة_نصية>
UDPLITE.RPORT <رقم>
UID <رقم>
UNIX.IPEER < عدد >
إذا كان lsfd يعمل داخل حاوية، فقد لا يملأ عمود UNIX.IPEER. انظر وصف UNIX في عمود ENDPOINTS لمزيد من التفاصيل.
UNIX.PATH <سلسلة_نصية>
USER <سلسلة_نصية>
VSOCK.LADDR <سلسلة_نصية>, VSOCK.RADDR <سلسلة_نصية>
سيُجرى فك ترميز معرفات سياق (CIDs) المعروفة: “*”، أو “hypervisor”، أو “local”، أو “host”. كما سيُجرى فك ترميز المنافذ المعروفة: “*”.
VSOCK.LCID <رقم>, VSOCK.RCID <رقم>
VSOCK.LPORT <رقم>, VSOCK.RPORT <رقم>
XMODE <سلسلة_نصية>
[-r]
[-w]
[-x]
[-D]
[-Ll]
[-m]
أمثلة المرشحات
يحتوي 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 المنتهية خلال 0.5 ثانية:
# lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)'
اسرد العمليات التي تتواصل عبر مقابس unix stream:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
اسرد العمليات التي تتواصل عبر مقبس unix stream محدد:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
أمثلة العدادات
بلّغ عن أعداد واصفات مقابس 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"
}
]
}
تاريخ
الأمر lsfd جزء من حزمة util-linux منذ الإصدار v2.38.
المؤلفين
Masatake YAMATO <yamato@redhat.com>، Karel Zak <kzak@redhat.com>
انظر أيضاً
bpftool(8)، bps(8)، lslocks(8)، lsof(8)، pidof(1)، proc(5)، scols-filter(5)، socket(2)، ss(8)، stat(2)، vsock(7)
التبليغ عن الأخطاء
لتقارير العِلل، استخدم مُتتبع المشكلات https://github.com/util-linux/util-linux/issues.
التوفر
الأمر lsfd جزء من حزمة util-linux التي يمكن تنزيلها من أرشيف نواة لينكس https://www.kernel.org/pub/linux/utils/util-linux/.
| 2026-05-18 | util-linux 2.42.1 |