BCC - ເຄື່ອງມືຄົ້ນຫາແບບເຄື່ອນໄຫວ ສຳ ລັບການກວດສອບການເຮັດວຽກຂອງ Linux, ການສ້າງເຄືອຂ່າຍແລະອື່ນໆ
BCC (BPF Compiler Collection) ແມ່ນຊຸດທີ່ມີປະສິດທິພາບຂອງເຄື່ອງມືແລະເອກະສານທີ່ເປັນຕົວຢ່າງທີ່ ເໝາະ ສົມ ສຳ ລັບການສ້າງໂປແກຼມຊອກຫາແລະການ ໝູນ ໃຊ້ແກ່ນທີ່ມີປະໂຫຍດ. ມັນ ນຳ ໃຊ້ BPF ທີ່ຂະຫຍາຍ (Berkeley Packet Filters), ທີ່ຮູ້ກັນໃນເບື້ອງຕົ້ນວ່າ eBPF ເຊິ່ງແມ່ນ ໜຶ່ງ ໃນຄຸນລັກສະນະ ໃໝ່ ໃນ Linux 3.15.
ການປະຕິບັດ, ສ່ວນປະກອບສ່ວນໃຫຍ່ທີ່ໃຊ້ໂດຍ BCC ຕ້ອງໃຊ້ Linux 4.1 ຂຶ້ນໄປ, ແລະຄຸນລັກສະນະທີ່ ໜ້າ ສັງເກດລວມມີ:
<
ເໝາະ ສົມທີ່ສຸດ ສຳ ລັບຜູ້ ນຳ ໃຊ້ Linux ຂັ້ນສູງ, BCC ເຮັດໃຫ້ມັນງ່າຍຕໍ່ການຂຽນໂປແກຼມ BPF ໂດຍ ນຳ ໃຊ້ເຄື່ອງມື ສຳ ລັບເມັດ C, ແລະດ້ານ ໜ້າ ໃນ Python ແລະ lua. ນອກຈາກນັ້ນ, ມັນສະ ໜັບ ສະ ໜູນ ວຽກຫຼາຍຢ່າງເຊັ່ນ: ການວິເຄາະການປະຕິບັດ, ການຕິດຕາມກວດກາ, ການຄວບຄຸມການຈະລາຈອນທາງເຄືອຂ່າຍບວກກັບອີກຫລາຍຢ່າງ.
ວິທີການຕິດຕັ້ງ BCC ໃນ Linux Systems
ຈື່ໄວ້ວ່າ BCC ໃຊ້ຄຸນລັກສະນະຕ່າງໆທີ່ເພີ່ມເຂົ້າໃນ Linux kernel version 4.1 ຫຼືສູງກວ່າ, ແລະຕາມຄວາມຕ້ອງການ, ແກ່ນຄວນໄດ້ຖືກລວບລວມກັບທຸງທີ່ໄດ້ ກຳ ນົດໄວ້ຂ້າງລຸ່ມນີ້:
CONFIG_BPF=y CONFIG_BPF_SYSCALL=y # [optional, for tc filters] CONFIG_NET_CLS_BPF=m # [optional, for tc actions] CONFIG_NET_ACT_BPF=m CONFIG_BPF_JIT=y CONFIG_HAVE_BPF_JIT=y # [optional, for kprobes] CONFIG_BPF_EVENTS=y
ເພື່ອກວດສອບທຸງແກ່ນຂອງທ່ານ, ເບິ່ງເອກະສານ /proc/config.gz ຫຼືເອີ້ນໃຊ້ ຄຳ ສັ່ງດັ່ງໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:
[email ~ $ grep CONFIG_BPF= /boot/config-`uname -r` CONFIG_BPF=y [email ~ $ grep CONFIG_BPF_SYSCALL= /boot/config-`uname -r` CONFIG_BPF_SYSCALL=y [email ~ $ grep CONFIG_NET_CLS_BPF= /boot/config-`uname -r` CONFIG_NET_CLS_BPF=m [email ~ $ grep CONFIG_NET_ACT_BPF= /boot/config-`uname -r` CONFIG_NET_ACT_BPF=m [email ~ $ grep CONFIG_BPF_JIT= /boot/config-`uname -r` CONFIG_BPF_JIT=y [email ~ $ grep CONFIG_HAVE_BPF_JIT= /boot/config-`uname -r` CONFIG_HAVE_BPF_JIT=y [email ~ $ grep CONFIG_BPF_EVENTS= /boot/config-`uname -r` CONFIG_BPF_EVENTS=y
ຫຼັງຈາກກວດສອບທຸງແກ່ນ, ມັນເຖິງເວລາແລ້ວທີ່ຈະຕິດຕັ້ງເຄື່ອງມື BCC ໃນລະບົບ Linux.
ມີພຽງແຕ່ການຫຸ້ມຫໍ່ກາງຄືນເທົ່ານັ້ນທີ່ຖືກສ້າງຂື້ນ ສຳ ລັບ Ubuntu 16.04, ແຕ່ ຄຳ ແນະ ນຳ ໃນການຕິດຕັ້ງແມ່ນກົງໄປກົງມາ. ບໍ່ ຈຳ ເປັນຕ້ອງມີການຍົກລະດັບແກ່ນແທ້ຫລືລວບລວມມັນຈາກແຫຼ່ງຂໍ້ມູນ.
$ echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | sudo tee /etc/apt/sources.list.d/iovisor.list $ sudo apt-get update $ sudo apt-get install bcc-tools
ເລີ່ມຕົ້ນໂດຍການຕິດຕັ້ງ Linux kernel ທີ່ມີຂະ ໜາດ 4.3+, ຈາກ http://kernel.ubuntu.com/~kernel-ppa/mainline.
ຍົກຕົວຢ່າງ, ຂຽນສະຄິບແກະນ້ອຍ“ bcc-install.sh” ດ້ວຍເນື້ອຫາຂ້າງລຸ່ມ.
ໝາຍ ເຫດ: ປັບປຸງຄຸນຄ່າ PREFIX ໃຫ້ກັບວັນທີລ້າສຸດ, ແລະຍັງສາມາດຄົ້ນຫາເອກະສານທີ່ຢູ່ໃນ urE PREFIX ທີ່ໃຫ້ເພື່ອໃຫ້ໄດ້ມູນຄ່າ REL ຕົວຈິງ, ປ່ຽນແທນພວກມັນໃນ script shell.
#!/bin/bash VER=4.5.1-040501 PREFIX=http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.5.1-wily/ REL=201604121331 wget ${PREFIX}/linux-headers-${VER}-generic_${VER}.${REL}_amd64.deb wget ${PREFIX}/linux-headers-${VER}_${VER}.${REL}_all.deb wget ${PREFIX}/linux-image-${VER}-generic_${VER}.${REL}_amd64.deb sudo dpkg -i linux-*${VER}.${REL}*.deb
ບັນທຶກເອກະສານແລະອອກ. ເຮັດໃຫ້ມັນສາມາດປະຕິບັດໄດ້, ຫຼັງຈາກນັ້ນດໍາເນີນການດັ່ງທີ່ສະແດງ:
$ chmod +x bcc-install.sh $ sh bcc-install.sh
ຫລັງຈາກນັ້ນ, ເປີດລະບົບຂອງທ່ານຄືນ ໃໝ່.
$ reboot
ຕໍ່ໄປ, ດຳ ເນີນ ຄຳ ສັ່ງຂ້າງລຸ່ມເພື່ອຕິດຕັ້ງແພັກເກດ BCC ທີ່ເຊັນ:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D4284CDD $ echo "deb https://repo.iovisor.org/apt trusty main" | sudo tee /etc/apt/sources.list.d/iovisor.list $ sudo apt-get update $ sudo apt-get install binutils bcc bcc-tools libbcc-examples python-bcc
ຕິດຕັ້ງລະບົບເຄນ 4.2+ ຈາກ http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug, ຖ້າລະບົບຂອງທ່ານມີລຸ້ນຕ່ ຳ ກວ່າສິ່ງທີ່ຕ້ອງການ. ຂ້າງລຸ່ມນີ້ແມ່ນຕົວຢ່າງຂອງວິທີເຮັດແນວນັ້ນ:
$ sudo dnf config-manager --add-repo=http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo $ sudo dnf update $ reboot
ຫຼັງຈາກນັ້ນ, ເພີ່ມບ່ອນເກັບຂໍ້ມູນເຄື່ອງມືຂອງ BBC, ປັບປຸງລະບົບຂອງທ່ານແລະຕິດຕັ້ງເຄື່ອງມືຕ່າງໆໂດຍການປະຕິບັດ ຄຳ ສັ່ງຊຸດຕໍ່ໄປ:
$ echo -e '[iovisor]\nbaseurl=https://repo.iovisor.org/yum/nightly/f23/$basearch\nenabled=1\ngpgcheck=0' | sudo tee /etc/yum.repos.d/iovisor.repo $ sudo dnf update $ sudo dnf install bcc-tools
ທ່ານຄວນເລີ່ມຕົ້ນໂດຍການຍົກລະດັບເມັດຂອງທ່ານໃຫ້ເປັນລຸ້ນຢ່າງ ໜ້ອຍ 4.3.1-1, ຕໍ່ມາຕິດຕັ້ງແພກເກດຢູ່ລຸ່ມນີ້ໂດຍໃຊ້ຜູ້ຈັດການແພັກເກດ Arch ເຊັ່ນ: pacaur, yaourt, cower, ແລະອື່ນໆ.
bcc bcc-tools python-bcc python2-bcc
ວິທີການໃຊ້ເຄື່ອງມື BCC ໃນ Linux Systems
ເຄື່ອງມື BCC ທັງ ໝົດ ຖືກຕິດຕັ້ງຢູ່ພາຍໃຕ້ລະບົບ /usr/share/bcc/tools
. ເຖິງຢ່າງໃດກໍ່ຕາມ, ທ່ານສາມາດເອີ້ນໃຊ້ພວກມັນໄດ້ຈາກບ່ອນເກັບຮັກສາ BCC Github ພາຍໃຕ້ /tools
ບ່ອນທີ່ພວກມັນສິ້ນສຸດດ້ວຍການຂະຫຍາຍ .py
.
$ ls /usr/share/bcc/tools argdist capable filetop offwaketime stackcount vfscount bashreadline cpudist funccount old stacksnoop vfsstat biolatency dcsnoop funclatency oomkill statsnoop wakeuptime biosnoop dcstat gethostlatency opensnoop syncsnoop xfsdist biotop doc hardirqs pidpersec tcpaccept xfsslower bitesize execsnoop killsnoop profile tcpconnect zfsdist btrfsdist ext4dist mdflush runqlat tcpconnlat zfsslower btrfsslower ext4slower memleak softirqs tcpretrans cachestat filelife mysqld_qslower solisten tplist cachetop fileslower offcputime sslsniff trace
ພວກເຮົາຕ້ອງກວມເອົາສອງສາມຕົວຢ່າງທີ່ຢູ່ພາຍໃຕ້ການຕິດຕາມ - ກວດກາການເຮັດວຽກແລະລະບົບເຄືອຂ່າຍ Linux ທົ່ວໄປ.
ເລີ່ມຕົ້ນໂດຍການຕິດຕາມທັງ ໝົດ ທີ່ເປີດ() syscalls ໂດຍໃຊ້ opennoop. ນີ້ຊ່ວຍໃຫ້ພວກເຮົາສາມາດບອກພວກເຮົາໄດ້ວ່າໂປແກຼມຕ່າງໆເຮັດວຽກໄດ້ແນວໃດໂດຍການ ກຳ ນົດໄຟລ໌ຂໍ້ມູນຂອງພວກເຂົາ, ແຟ້ມເອກະສານ config ແລະອີກຫຼາຍໆຢ່າງ:
$ cd /usr/share/bcc/tools $ sudo ./opensnoop PID COMM FD ERR PATH 1 systemd 35 0 /proc/self/mountinfo 2797 udisksd 13 0 /proc/self/mountinfo 1 systemd 35 0 /sys/devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0/block/sda/sda1/uevent 1 systemd 35 0 /run/udev/data/b8:1 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount 1 systemd -1 2 /usr/local/lib/systemd/system/sys-kernel-debug-tracing.mount 2247 systemd 15 0 /proc/self/mountinfo 1 systemd -1 2 /lib/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /usr/lib/systemd/system/sys-kernel-debug-tracing.mount 1 systemd -1 2 /run/systemd/generator.late/sys-kernel-debug-tracing.mount 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /usr/local/lib/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /usr/local/lib/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /lib/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /lib/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /usr/lib/systemd/system/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /usr/lib/systemd/system/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /run/systemd/generator.late/sys-kernel-debug-tracing.mount.wants 1 systemd -1 2 /run/systemd/generator.late/sys-kernel-debug-tracing.mount.requires 1 systemd -1 2 /etc/systemd/system/sys-kernel-debug-tracing.mount.d 1 systemd -1 2 /run/systemd/system/sys-kernel-debug-tracing.mount.d 1 systemd -1 2 /run/systemd/generator/sys-kernel-debug-tracing.mount.d ....
ໃນຕົວຢ່າງນີ້, ມັນສະແດງໃຫ້ເຫັນການແບ່ງປັນໄລຍະເວລາຂອງການແຈກຈ່າຍ disk I/O ໂດຍໃຊ້ biolatecncy. ຫຼັງຈາກປະຕິບັດ ຄຳ ສັ່ງ, ລໍຖ້າສອງສາມນາທີແລະກົດປຸ່ມ Ctrl-C ເພື່ອຢຸດມັນແລະເບິ່ງຜົນໄດ້ຮັບ.
$ sudo ./biolatecncy Tracing block device I/O... Hit Ctrl-C to end. ^C usecs : count distribution 0 -> 1 : 0 | | 2 -> 3 : 0 | | 4 -> 7 : 0 | | 8 -> 15 : 0 | | 16 -> 31 : 0 | | 32 -> 63 : 0 | | 64 -> 127 : 0 | | 128 -> 255 : 3 |****************************************| 256 -> 511 : 3 |****************************************| 512 -> 1023 : 1 |************* |
ໃນພາກນີ້, ພວກເຮົາຈະຍ້າຍໄປຕິດຕາມຂະບວນການ ໃໝ່ໆ ໃນການປະຕິບັດໂດຍໃຊ້ເຄື່ອງມື execsnoop. ໃນແຕ່ລະຄັ້ງທີ່ຂະບວນການໃດ ໜຶ່ງ ຖືກສ້ອມແປງໂດຍ fork()
ແລະ exec()
syscalls, ມັນຈະຖືກສະແດງຢູ່ໃນຜົນຜະລິດ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ບໍ່ແມ່ນຂະບວນການທັງ ໝົດ ຖືກຈັບ.
$ sudo ./execsnoop PCOMM PID PPID RET ARGS gnome-screensho 14882 14881 0 /usr/bin/gnome-screenshot --gapplication-service systemd-hostnam 14892 1 0 /lib/systemd/systemd-hostnamed nautilus 14897 2767 -2 /home/tecmint/bin/net usershare info nautilus 14897 2767 -2 /home/tecmint/.local/bin/net usershare info nautilus 14897 2767 -2 /usr/local/sbin/net usershare info nautilus 14897 2767 -2 /usr/local/bin/net usershare info nautilus 14897 2767 -2 /usr/sbin/net usershare info nautilus 14897 2767 -2 /usr/bin/net usershare info nautilus 14897 2767 -2 /sbin/net usershare info nautilus 14897 2767 -2 /bin/net usershare info nautilus 14897 2767 -2 /usr/games/net usershare info nautilus 14897 2767 -2 /usr/local/games/net usershare info nautilus 14897 2767 -2 /snap/bin/net usershare info compiz 14899 14898 -2 /home/tecmint/bin/libreoffice --calc compiz 14899 14898 -2 /home/tecmint/.local/bin/libreoffice --calc compiz 14899 14898 -2 /usr/local/sbin/libreoffice --calc compiz 14899 14898 -2 /usr/local/bin/libreoffice --calc compiz 14899 14898 -2 /usr/sbin/libreoffice --calc libreoffice 14899 2252 0 /usr/bin/libreoffice --calc dirname 14902 14899 0 /usr/bin/dirname /usr/bin/libreoffice basename 14903 14899 0 /usr/bin/basename /usr/bin/libreoffice ...
ການໃຊ້ ext4slower ເພື່ອຕິດຕາມລະບົບແຟ້ມ ext4 ທີ່ ດຳ ເນີນການ ທຳ ມະດາທີ່ຊ້າກ່ວາ 10ms, ເພື່ອຊ່ວຍໃຫ້ພວກເຮົາສາມາດ ກຳ ນົດແຜ່ນ I/O ຊ້າລົງຢ່າງເປັນອິດສະຫຼະຜ່ານລະບົບແຟ້ມເອກະສານ.
ມັນມີພຽງແຕ່ການ ດຳ ເນີນງານທີ່ເກີນຂອບເຂດ:
$ sudo ./execslower Tracing ext4 operations slower than 10 ms TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME 11:59:13 upstart 2252 W 48 1 10.76 dbus.log 11:59:13 gnome-screensh 14993 R 144 0 10.96 settings.ini 11:59:13 gnome-screensh 14993 R 28 0 16.02 gtk.css 11:59:13 gnome-screensh 14993 R 3389 0 18.32 gtk-main.css 11:59:25 rs:main Q:Reg 1826 W 156 60 31.85 syslog 11:59:25 pool 15002 R 208 0 14.98 .xsession-errors 11:59:25 pool 15002 R 644 0 12.28 .ICEauthority 11:59:25 pool 15002 R 220 0 13.38 .bash_logout 11:59:27 dconf-service 2599 S 0 0 22.75 user.BHDKOY 11:59:33 compiz 2548 R 4096 0 19.03 firefox.desktop 11:59:34 compiz 15008 R 128 0 27.52 firefox.sh 11:59:34 firefox 15008 R 128 0 36.48 firefox 11:59:34 zeitgeist-daem 2988 S 0 0 62.23 activity.sqlite-wal 11:59:34 zeitgeist-fts 2996 R 8192 40 15.67 postlist.DB 11:59:34 firefox 15008 R 140 0 18.05 dependentlibs.list 11:59:34 zeitgeist-fts 2996 S 0 0 25.96 position.tmp 11:59:34 firefox 15008 R 4096 0 10.67 libplc4.so 11:59:34 zeitgeist-fts 2996 S 0 0 11.29 termlist.tmp ...
ຕໍ່ໄປ, ໃຫ້ຂຽນເຂົ້າໃນການພິມສາຍຕໍ່ແຜ່ນ/I ໃນແຕ່ລະວິນາທີ, ໂດຍມີລາຍລະອຽດຕ່າງໆເຊັ່ນ: ID ຂອງຂະບວນການ, ຂະ ແໜງ, ໄບ, ໄລຍະເວລາອື່ນໃນການໃຊ້ biosnoop:
$ sudo ./biosnoop TIME(s) COMM PID DISK T SECTOR BYTES LAT(ms) 0.000000000 ? 0 R -1 8 0.26 2.047897000 ? 0 R -1 8 0.21 3.280028000 kworker/u4:0 14871 sda W 30552896 4096 0.24 3.280271000 jbd2/sda1-8 545 sda W 29757720 12288 0.40 3.298318000 jbd2/sda1-8 545 sda W 29757744 4096 0.14 4.096084000 ? 0 R -1 8 0.27 6.143977000 ? 0 R -1 8 0.27 8.192006000 ? 0 R -1 8 0.26 8.303938000 kworker/u4:2 15084 sda W 12586584 4096 0.14 8.303965000 kworker/u4:2 15084 sda W 25174736 4096 0.14 10.239961000 ? 0 R -1 8 0.26 12.292057000 ? 0 R -1 8 0.20 14.335990000 ? 0 R -1 8 0.26 16.383798000 ? 0 R -1 8 0.17 ...
ຫລັງຈາກນັ້ນ, ພວກເຮົາ ດຳ ເນີນການ ນຳ ໃຊ້ cachestat ເພື່ອສະແດງ ໜຶ່ງ ເສັ້ນຂອງສະຖິຕິສະຫຼຸບຈາກ cache ຂອງລະບົບທຸກໆວິນາທີ. ນີ້ສາມາດເຮັດໃຫ້ການ ດຳ ເນີນການປັບລະບົບໄດ້ໂດຍການຊີ້ໃຫ້ເຫັນອັດຕາສ່ວນຂອງການຕີຊ້າແລະອັດຕາການພາດສູງ:
$ sudo ./cachestat HITS MISSES DIRTIES READ_HIT% WRITE_HIT% BUFFERS_MB CACHED_MB 0 0 0 0.0% 0.0% 19 544 4 4 2 25.0% 25.0% 19 544 1321 33 4 97.3% 2.3% 19 545 7476 0 2 100.0% 0.0% 19 545 6228 15 2 99.7% 0.2% 19 545 0 0 0 0.0% 0.0% 19 545 7391 253 108 95.3% 2.7% 19 545 33608 5382 28 86.1% 13.8% 19 567 25098 37 36 99.7% 0.0% 19 566 17624 239 416 96.3% 0.5% 19 520 ...
ຕິດຕາມກວດກາການເຊື່ອມຕໍ່ TCP ທຸກໆວິນາທີໂດຍໃຊ້ tcpconnect. ຜົນຜະລິດຂອງມັນລວມມີທີ່ຢູ່ແລະທີ່ຢູ່ປາຍທາງ, ແລະ ໝາຍ ເລກພອດ. ເຄື່ອງມືນີ້ແມ່ນມີປະໂຫຍດ ສຳ ລັບການຕິດຕາມການເຊື່ອມຕໍ່ TCP ທີ່ບໍ່ຄາດຄິດ, ໂດຍການຊ່ວຍພວກເຮົາໃນການ ກຳ ນົດປະສິດທິພາບໃນການຕັ້ງຄ່າໂປແກຼມຫຼືຜູ້ໂຈມຕີ.
$ sudo ./tcpconnect PID COMM IP SADDR DADDR DPORT 15272 Socket Threa 4 10.0.2.15 91.189.89.240 80 15272 Socket Threa 4 10.0.2.15 216.58.199.142 443 15272 Socket Threa 4 10.0.2.15 216.58.199.142 80 15272 Socket Threa 4 10.0.2.15 216.58.199.174 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 117.18.237.29 80 15272 Socket Threa 4 10.0.2.15 216.58.199.142 80 15272 Socket Threa 4 10.0.2.15 216.58.199.131 80 15272 Socket Threa 4 10.0.2.15 216.58.199.131 443 15272 Socket Threa 4 10.0.2.15 52.222.135.52 443 15272 Socket Threa 4 10.0.2.15 216.58.199.131 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 54.200.62.216 443 15272 Socket Threa 4 10.0.2.15 216.58.199.132 443 15272 Socket Threa 4 10.0.2.15 216.58.199.131 443 15272 Socket Threa 4 10.0.2.15 216.58.199.142 443 15272 Socket Threa 4 10.0.2.15 54.69.17.198 443 15272 Socket Threa 4 10.0.2.15 54.69.17.198 443 ...
ເຄື່ອງມືທັງ ໝົດ ທີ່ກ່າວມາຂ້າງເທິງນີ້ຍັງສາມາດ ນຳ ໃຊ້ກັບຕົວເລືອກຕ່າງໆ, ເພື່ອເຮັດໃຫ້ ໜ້າ ຊ່ວຍເຫຼືອ ສຳ ລັບເຄື່ອງມືທີ່ໃຫ້, ໃຫ້ໃຊ້ຕົວເລືອກ -h
, ຍົກຕົວຢ່າງ:
$ sudo ./tcpconnect -h usage: tcpconnect [-h] [-t] [-p PID] [-P PORT] Trace TCP connects optional arguments: -h, --help show this help message and exit -t, --timestamp include timestamp on output -p PID, --pid PID trace this PID only -P PORT, --port PORT comma-separated list of destination ports to trace. examples: ./tcpconnect # trace all TCP connect()s ./tcpconnect -t # include timestamps ./tcpconnect -p 181 # only trace PID 181 ./tcpconnect -P 80 # only trace port 80 ./tcpconnect -P 80,81 # only trace port 80 and 81
ເພື່ອຕິດຕາມ syscalls ຂອງ exec() ທີ່ລົ້ມເຫລວ, ໃຫ້ເລືອກຕົວເລືອກ -x
ດ້ວຍ opennoop ດັ່ງລຸ່ມນີ້:
$ sudo ./opensnoop -x PID COMM FD ERR PATH 15414 pool -1 2 /home/.hidden 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpu/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpu/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpuacct/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/cpuacct/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/blkio/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/blkio/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/memory/system.slice/systemd-hostnamed.service/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/memory/system.slice/cgroup.procs 15415 (ostnamed) -1 2 /sys/fs/cgroup/pids/system.slice/systemd-hostnamed.service/cgroup.procs 2548 compiz -1 2 15416 systemd-cgroups -1 2 /run/systemd/container 15416 systemd-cgroups -1 2 /sys/fs/kdbus/0-system/bus 15415 systemd-hostnam -1 2 /run/systemd/container 15415 systemd-hostnam -1 13 /proc/1/environ 15415 systemd-hostnam -1 2 /sys/fs/kdbus/0-system/bus 1695 dbus-daemon -1 2 /run/systemd/users/0 15415 systemd-hostnam -1 2 /etc/machine-info 15414 pool -1 2 /home/tecmint/.hidden 15414 pool -1 2 /home/tecmint/Binary/.hidden 2599 dconf-service -1 2 /run/user/1000/dconf/user ...
ຕົວຢ່າງສຸດທ້າຍຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວິທີການປະຕິບັດການເຮັດວຽກຕາມຮີດຄອງປະເພນີ. ພວກເຮົາ ກຳ ລັງຕິດຕາມຂະບວນການສະເພາະໃດ ໜຶ່ງ ໂດຍໃຊ້ PID ຂອງມັນ.
ທຳ ອິດ ກຳ ນົດຂະບວນການ ID:
$ pidof firefox 15437
ຕໍ່ມາໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງຕາມຮອຍທີ່ ກຳ ນົດເອງ. ໃນ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້: -p
ລະບຸລະຫັດ ID ຂອງຂະບວນການ, do_sys_open()
ແມ່ນ ໜ້າ ທີ່ຂອງແກ່ນແກ່ນທີ່ຖືກຄົ້ນຫາແບບເຄື່ອນໄຫວລວມທັງການໂຕ້ຖຽງຄັ້ງທີສອງເປັນສາຍ.
$ sudo ./trace -p 4095 'do_sys_open "%s", arg2' TIME PID COMM FUNC - 12:17:14 15437 firefox do_sys_open /run/user/1000/dconf/user 12:17:14 15437 firefox do_sys_open /home/tecmint/.config/dconf/user 12:18:07 15437 firefox do_sys_open /run/user/1000/dconf/user 12:18:07 15437 firefox do_sys_open /home/tecmint/.config/dconf/user 12:18:13 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:13 15437 firefox do_sys_open /dev/urandom 12:18:13 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /usr/share/fonts/truetype/liberation/LiberationSans-Italic.ttf 12:18:14 15437 firefox do_sys_open /usr/share/fonts/truetype/liberation/LiberationSans-Italic.ttf 12:18:14 15437 firefox do_sys_open /usr/share/fonts/truetype/liberation/LiberationSans-Italic.ttf 12:18:14 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:14 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:15 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /sys/devices/system/cpu/present 12:18:15 15437 firefox do_sys_open /dev/urandom 12:18:15 15437 firefox do_sys_open /dev/urandom ....
ບົດສະຫຼຸບ
BCC ແມ່ນຊຸດເຄື່ອງມືທີ່ມີປະສິດທິພາບແລະງ່າຍຕໍ່ການໃຊ້ງານ ສຳ ລັບວຽກງານການບໍລິຫານລະບົບຕ່າງໆເຊັ່ນ: ການກວດສອບການເຮັດວຽກຂອງລະບົບ, ຕິດຕາມອຸປະກອນ block I/O, TCP, ການເຮັດວຽກຂອງລະບົບແຟ້ມເອກະສານ, syscalls, Node.js probes, ບວກກັບອີກຫລາຍຢ່າງ. ສິ່ງທີ່ ສຳ ຄັນ, ມັນຂົນສົ່ງພ້ອມດ້ວຍເອກະສານຕົວຢ່າງແລະຫລາຍ ໜ້າ ສຳ ລັບເຄື່ອງມືໃນການ ນຳ ພາທ່ານ, ເຮັດໃຫ້ມັນເປັນມິດແລະເຊື່ອຖືໄດ້.
ສຸດທ້າຍ, ທ່ານສາມາດກັບມາຫາພວກເຮົາໂດຍການແລກປ່ຽນຄວາມຄິດຂອງທ່ານກ່ຽວກັບເລື່ອງ, ຖາມ ຄຳ ຖາມ, ໃຫ້ ຄຳ ແນະ ນຳ ທີ່ເປັນປະໂຫຍດຫຼື ຄຳ ຕຳ ນິຕິຊົມທີ່ສ້າງສັນໃດໆຜ່ານພາກ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.
ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມແລະການ ນຳ ໃຊ້: https://iovisor.github.io/bcc/