Linux cyberpanel 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
LiteSpeed
: 160.191.175.3 | : 216.73.216.114
Cant Read [ /etc/named.conf ]
8.2.29
aodai6801
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
NF
963
B
-rwxr-xr-x
VGAuthService
134.54
KB
-rwxr-xr-x
[
50.44
KB
-rwxr-xr-x
aa-enabled
34.52
KB
-rwxr-xr-x
aa-exec
34.52
KB
-rwxr-xr-x
aa-features-abi
30.52
KB
-rwxr-xr-x
aclocal
35.18
KB
-rwxr-xr-x
aclocal-1.16
35.18
KB
-rwxr-xr-x
add-apt-repository
14.14
KB
-rwxr-xr-x
addpart
14.38
KB
-rwxr-xr-x
addr2line
26.7
KB
-rwxr-xr-x
adminPass
150
B
-rwx------
apport-bug
2.51
KB
-rwxr-xr-x
apport-cli
13.05
KB
-rwxr-xr-x
apport-collect
2.51
KB
-rwxr-xr-x
apport-unpack
2.02
KB
-rwxr-xr-x
apropos
47.28
KB
-rwxr-xr-x
apt
18.38
KB
-rwxr-xr-x
apt-add-repository
14.14
KB
-rwxr-xr-x
apt-cache
82.47
KB
-rwxr-xr-x
apt-cdrom
26.47
KB
-rwxr-xr-x
apt-config
26.39
KB
-rwxr-xr-x
apt-extracttemplates
22.47
KB
-rwxr-xr-x
apt-ftparchive
230.48
KB
-rwxr-xr-x
apt-get
50.47
KB
-rwxr-xr-x
apt-key
27.51
KB
-rwxr-xr-x
apt-mark
50.47
KB
-rwxr-xr-x
apt-sortpkgs
38.4
KB
-rwxr-xr-x
ar
54.48
KB
-rwxr-xr-x
arch
30.51
KB
-rwxr-xr-x
aria_chk
5.15
MB
-rwxr-xr-x
aria_dump_log
468.38
KB
-rwxr-xr-x
aria_ftdump
4.82
MB
-rwxr-xr-x
aria_pack
4.9
MB
-rwxr-xr-x
aria_read_log
5.09
MB
-rwxr-xr-x
as
456.4
KB
-rwxr-xr-x
aspell
142.48
KB
-rwxr-xr-x
aspell-import
2
KB
-rwxr-xr-x
autoconf
14.85
KB
-rwxr-xr-x
autoheader
8.82
KB
-rwxr-xr-x
autom4te
32.69
KB
-rwxr-xr-x
automake
255.91
KB
-rwxr-xr-x
automake-1.16
255.91
KB
-rwxr-xr-x
automat-visualize3
405
B
-rwxr-xr-x
autopoint
26.38
KB
-rwxr-xr-x
autoreconf
26.3
KB
-rwxr-xr-x
autoscan
16.77
KB
-rwxr-xr-x
autoupdate
33.22
KB
-rwxr-xr-x
awk
688.46
KB
-rwxr-xr-x
b2sum
50.52
KB
-rwxr-xr-x
base32
34.51
KB
-rwxr-xr-x
base64
34.51
KB
-rwxr-xr-x
basename
34.51
KB
-rwxr-xr-x
basenc
46.51
KB
-rwxr-xr-x
bash
1.33
MB
-rwxr-xr-x
bashbug
6.66
KB
-rwxr-xr-x
bc
90.82
KB
-rwxr-xr-x
boltctl
122.98
KB
-rwxr-xr-x
bootctl
70.49
KB
-rwxr-xr-x
btrfs
844.13
KB
-rwxr-xr-x
btrfs-convert
483.25
KB
-rwxr-xr-x
btrfs-find-root
439.33
KB
-rwxr-xr-x
btrfs-image
467.25
KB
-rwxr-xr-x
btrfs-map-logical
439.25
KB
-rwxr-xr-x
btrfs-select-super
439.25
KB
-rwxr-xr-x
btrfsck
844.13
KB
-rwxr-xr-x
btrfstune
443.26
KB
-rwxr-xr-x
bunzip2
38.38
KB
-rwxr-xr-x
busctl
90.49
KB
-rwxr-xr-x
busybox
2.09
MB
-rwxr-xr-x
byobu
8.17
KB
-rwxr-xr-x
byobu-config
996
B
-rwxr-xr-x
byobu-ctrl-a
4.66
KB
-rwxr-xr-x
byobu-disable
1.26
KB
-rwxr-xr-x
byobu-disable-prompt
1.31
KB
-rwxr-xr-x
byobu-enable
1.15
KB
-rwxr-xr-x
byobu-enable-prompt
1.42
KB
-rwxr-xr-x
byobu-export
1.32
KB
-rwxr-xr-x
byobu-janitor
6.29
KB
-rwxr-xr-x
byobu-keybindings
1.47
KB
-rwxr-xr-x
byobu-launch
3.25
KB
-rwxr-xr-x
byobu-launcher
1.87
KB
-rwxr-xr-x
byobu-launcher-install
2.4
KB
-rwxr-xr-x
byobu-launcher-uninstall
1.52
KB
-rwxr-xr-x
byobu-layout
3.27
KB
-rwxr-xr-x
byobu-prompt
1.13
KB
-rwxr-xr-x
byobu-quiet
1.38
KB
-rwxr-xr-x
byobu-reconnect-sockets
3.22
KB
-rwxr-xr-x
byobu-screen
8.17
KB
-rwxr-xr-x
byobu-select-backend
1.42
KB
-rwxr-xr-x
byobu-select-profile
5
KB
-rwxr-xr-x
byobu-select-session
1012
B
-rwxr-xr-x
byobu-shell
1.56
KB
-rwxr-xr-x
byobu-silent
1.28
KB
-rwxr-xr-x
byobu-status
5.87
KB
-rwxr-xr-x
byobu-status-detail
1.18
KB
-rwxr-xr-x
byobu-tmux
8.17
KB
-rwxr-xr-x
byobu-ugraph
4.56
KB
-rwxr-xr-x
byobu-ulevel
11.71
KB
-rwxr-xr-x
bzcat
38.38
KB
-rwxr-xr-x
bzcmp
2.17
KB
-rwxr-xr-x
bzdiff
2.17
KB
-rwxr-xr-x
bzegrep
3.69
KB
-rwxr-xr-x
bzexe
4.78
KB
-rwxr-xr-x
bzfgrep
3.69
KB
-rwxr-xr-x
bzgrep
3.69
KB
-rwxr-xr-x
bzip2
38.38
KB
-rwxr-xr-x
bzip2recover
14.3
KB
-rwxr-xr-x
bzless
1.27
KB
-rwxr-xr-x
bzmore
1.27
KB
-rwxr-xr-x
c++
906.82
KB
-rwxr-xr-x
c++filt
22.27
KB
-rwxr-xr-x
c89
428
B
-rwxr-xr-x
c89-gcc
428
B
-rwxr-xr-x
c99
454
B
-rwxr-xr-x
c99-gcc
454
B
-rwxr-xr-x
c_rehash
6.8
KB
-rwxr-xr-x
captoinfo
86.41
KB
-rwxr-xr-x
cat
34.46
KB
-rwxr-xr-x
catman
34.76
KB
-rwxr-xr-x
cautious-launcher
853
B
-rwxr-xr-x
cc
906.82
KB
-rwxr-xr-x
cftp3
956
B
-rwxr-xr-x
cgi-fcgi
18.15
KB
-rwxr-xr-x
chage
70.49
KB
-rwxr-sr-x
chardet
965
B
-rwxr-xr-x
chardetect
965
B
-rwxr-xr-x
chattr
14.31
KB
-rwxr-xr-x
chcon
58.51
KB
-rwxr-xr-x
chfn
71.01
KB
-rwsr-xr-x
chgrp
54.51
KB
-rwxr-xr-x
chmod
54.51
KB
-rwxr-xr-x
choom
22.38
KB
-rwxr-xr-x
chown
58.51
KB
-rwxr-xr-x
chrt
26.38
KB
-rwxr-xr-x
chsh
43.76
KB
-rwsr-xr-x
chvt
14.23
KB
-rwxr-xr-x
ci
807
B
-rwxr-xr-x
ckbcomp
146.31
KB
-rwxr-xr-x
ckeygen3
962
B
-rwxr-xr-x
cksum
34.41
KB
-rwxr-xr-x
clear
14.31
KB
-rwxr-xr-x
clear_console
14.23
KB
-rwxr-xr-x
cloud-id
972
B
-rwxr-xr-x
cloud-init
976
B
-rwxr-xr-x
cloud-init-per
2.06
KB
-rwxr-xr-x
cmp
42.39
KB
-rwxr-xr-x
co
807
B
-rwxr-xr-x
codepage
14.15
KB
-rwxr-xr-x
col
22.38
KB
-rwxr-xr-x
col1
963
B
-rwxr-xr-x
col2
963
B
-rwxr-xr-x
col3
963
B
-rwxr-xr-x
col4
963
B
-rwxr-xr-x
col5
963
B
-rwxr-xr-x
col6
963
B
-rwxr-xr-x
col7
963
B
-rwxr-xr-x
col8
963
B
-rwxr-xr-x
col9
963
B
-rwxr-xr-x
colcrt
14.38
KB
-rwxr-xr-x
colrm
14.38
KB
-rwxr-xr-x
column
34.38
KB
-rwxr-xr-x
comm
34.52
KB
-rwxr-xr-x
compile_et
1.32
KB
-rwxr-xr-x
compose
18.06
KB
-rwxr-xr-x
composer
2.98
MB
-rwxr-xr-x
conch3
958
B
-rwxr-xr-x
corelist
15.01
KB
-rwxr-xr-x
cp
138.51
KB
-rwxr-xr-x
cpan
8.16
KB
-rwxr-xr-x
cpan5.34-x86_64-linux-gnu
8.18
KB
-rwxr-xr-x
cpio
141.64
KB
-rwxr-xr-x
cpio-filter
1.22
KB
-rwxr-xr-x
cpp
906.82
KB
-rwxr-xr-x
cpp-11
906.82
KB
-rwxr-xr-x
crc32
1.04
KB
-rwxr-xr-x
crontab
38.64
KB
-rwxr-sr-x
csplit
106.51
KB
-rwxr-xr-x
ctail
960
B
-rwxr-xr-x
ctstat
22.66
KB
-rwxr-xr-x
curl
254.23
KB
-rwxr-xr-x
curl-config
6.42
KB
-rwxr-xr-x
cut
38.51
KB
-rwxr-xr-x
cvtsudoers
296.4
KB
-rwxr-xr-x
cyberpanel
56.45
KB
-rwx------
cyberpanel_utility
13.36
KB
-rwx------
dash
122.74
KB
-rwxr-xr-x
date
102.51
KB
-rwxr-xr-x
dbilogstrip
1.35
KB
-rwxr-xr-x
dbiprof
6.06
KB
-rwxr-xr-x
dbiproxy
5.27
KB
-rwxr-xr-x
dbus-cleanup-sockets
14.29
KB
-rwxr-xr-x
dbus-daemon
227.32
KB
-rwxr-xr-x
dbus-monitor
26.29
KB
-rwxr-xr-x
dbus-run-session
14.29
KB
-rwxr-xr-x
dbus-send
26.29
KB
-rwxr-xr-x
dbus-update-activation-environ...
14.29
KB
-rwxr-xr-x
dbus-uuidgen
14.29
KB
-rwxr-xr-x
dbxtool
26.3
KB
-rwxr-xr-x
dd
66.52
KB
-rwxr-xr-x
deallocvt
14.23
KB
-rwxr-xr-x
deb-systemd-helper
20.89
KB
-rwxr-xr-x
deb-systemd-invoke
6.01
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-get-selections
1.65
KB
-rwxr-xr-x
debconf-getlang
6.94
KB
-rwxr-xr-x
debconf-gettextize
15.97
KB
-rwxr-xr-x
debconf-loadtemplate
933
B
-rwxr-xr-x
debconf-mergetemplate
5.09
KB
-rwxr-xr-x
debconf-set-selections
2.92
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debconf-updatepo
4.46
KB
-rwxr-xr-x
debian-distro-info
22.95
KB
-rwxr-xr-x
debugedit
64.47
KB
-rwxr-xr-x
delpart
14.38
KB
-rwxr-xr-x
delv
45.32
KB
-rwxr-xr-x
df
83.08
KB
-rwxr-xr-x
dfu-tool
110.3
KB
-rwxr-xr-x
dh
26.21
KB
-rwxr-xr-x
dh_assistant
13.42
KB
-rwxr-xr-x
dh_auto_build
1.37
KB
-rwxr-xr-x
dh_auto_clean
1.51
KB
-rwxr-xr-x
dh_auto_configure
1.63
KB
-rwxr-xr-x
dh_auto_install
3.22
KB
-rwxr-xr-x
dh_auto_test
1.65
KB
-rwxr-xr-x
dh_autoreconf
6.46
KB
-rwxr-xr-x
dh_autoreconf_clean
2.1
KB
-rwxr-xr-x
dh_autotools-dev_restoreconfig
1.79
KB
-rwxr-xr-x
dh_autotools-dev_updateconfig
1.81
KB
-rwxr-xr-x
dh_bash-completion
4.31
KB
-rwxr-xr-x
dh_bugfiles
3.58
KB
-rwxr-xr-x
dh_builddeb
4.96
KB
-rwxr-xr-x
dh_clean
5.03
KB
-rwxr-xr-x
dh_compress
7.67
KB
-rwxr-xr-x
dh_dwz
4.97
KB
-rwxr-xr-x
dh_fixperms
5.29
KB
-rwxr-xr-x
dh_gencontrol
5.88
KB
-rwxr-xr-x
dh_icons
2.04
KB
-rwxr-xr-x
dh_install
12.16
KB
-rwxr-xr-x
dh_installalternatives
6.09
KB
-rwxr-xr-x
dh_installcatalogs
3.33
KB
-rwxr-xr-x
dh_installchangelogs
7.48
KB
-rwxr-xr-x
dh_installcron
1.65
KB
-rwxr-xr-x
dh_installdeb
13.31
KB
-rwxr-xr-x
dh_installdebconf
3.21
KB
-rwxr-xr-x
dh_installdirs
3.09
KB
-rwxr-xr-x
dh_installdocs
14.65
KB
-rwxr-xr-x
dh_installemacsen
3.74
KB
-rwxr-xr-x
dh_installexamples
5.42
KB
-rwxr-xr-x
dh_installgsettings
2.24
KB
-rwxr-xr-x
dh_installifupdown
1.47
KB
-rwxr-xr-x
dh_installinfo
3.38
KB
-rwxr-xr-x
dh_installinit
13.93
KB
-rwxr-xr-x
dh_installinitramfs
2.5
KB
-rwxr-xr-x
dh_installlogcheck
1.94
KB
-rwxr-xr-x
dh_installlogrotate
1.14
KB
-rwxr-xr-x
dh_installman
13.2
KB
-rwxr-xr-x
dh_installmanpages
4.89
KB
-rwxr-xr-x
dh_installmenu
2.15
KB
-rwxr-xr-x
dh_installmime
1.3
KB
-rwxr-xr-x
dh_installmodules
2.66
KB
-rwxr-xr-x
dh_installpam
1.13
KB
-rwxr-xr-x
dh_installppp
1.38
KB
-rwxr-xr-x
dh_installsystemd
14.06
KB
-rwxr-xr-x
dh_installsystemduser
8.36
KB
-rwxr-xr-x
dh_installsysusers
2.73
KB
-rwxr-xr-x
dh_installtmpfiles
3.24
KB
-rwxr-xr-x
dh_installudev
2.1
KB
-rwxr-xr-x
dh_installwm
3.33
KB
-rwxr-xr-x
dh_installxfonts
2.8
KB
-rwxr-xr-x
dh_link
4.32
KB
-rwxr-xr-x
dh_lintian
1.29
KB
-rwxr-xr-x
dh_listpackages
825
B
-rwxr-xr-x
dh_makeshlibs
15.12
KB
-rwxr-xr-x
dh_md5sums
3.44
KB
-rwxr-xr-x
dh_missing
8.75
KB
-rwxr-xr-x
dh_movefiles
4.69
KB
-rwxr-xr-x
dh_perl
4.61
KB
-rwxr-xr-x
dh_perl_dbi
1.17
KB
-rwxr-xr-x
dh_phpcomposer
3.01
KB
-rwxr-xr-x
dh_phppear
5.63
KB
-rwxr-xr-x
dh_prep
1.87
KB
-rwxr-xr-x
dh_shlibdeps
6.24
KB
-rwxr-xr-x
dh_strip
16.93
KB
-rwxr-xr-x
dh_strip_nondeterminism
3.12
KB
-rwxr-xr-x
dh_systemd_enable
9.04
KB
-rwxr-xr-x
dh_systemd_start
8.57
KB
-rwxr-xr-x
dh_testdir
1.31
KB
-rwxr-xr-x
dh_testroot
2.91
KB
-rwxr-xr-x
dh_ucf
2.38
KB
-rwxr-xr-x
dh_update_autotools_config
1.84
KB
-rwxr-xr-x
dh_usrlocal
4.2
KB
-rwxr-xr-x
diff
130.55
KB
-rwxr-xr-x
diff3
54.52
KB
-rwxr-xr-x
dig
150.83
KB
-rwxr-xr-x
dir
134.98
KB
-rwxr-xr-x
dircolors
38.52
KB
-rwxr-xr-x
dirmngr
433.02
KB
-rwxr-xr-x
dirmngr-client
54.92
KB
-rwxr-xr-x
dirname
30.38
KB
-rwxr-xr-x
distro-info
22.89
KB
-rwxr-xr-x
dmesg
70.61
KB
-rwxr-xr-x
dnsdomainname
22.23
KB
-rwxr-xr-x
do-release-upgrade
10.42
KB
-rwxr-xr-x
domainname
22.23
KB
-rwxr-xr-x
doveadm
677.05
KB
-rwxr-xr-x
doveconf
185.57
KB
-rwxr-xr-x
dovecot-sysreport
5.63
KB
-rwxr-xr-x
dpkg
310.69
KB
-rwxr-xr-x
dpkg-architecture
13.51
KB
-rwxr-xr-x
dpkg-buildflags
7.39
KB
-rwxr-xr-x
dpkg-buildpackage
31.67
KB
-rwxr-xr-x
dpkg-checkbuilddeps
7.45
KB
-rwxr-xr-x
dpkg-deb
134.49
KB
-rwxr-xr-x
dpkg-distaddfile
2.72
KB
-rwxr-xr-x
dpkg-divert
118.49
KB
-rwxr-xr-x
dpkg-genbuildinfo
16.71
KB
-rwxr-xr-x
dpkg-genchanges
17.27
KB
-rwxr-xr-x
dpkg-gencontrol
14.24
KB
-rwxr-xr-x
dpkg-gensymbols
10.65
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.71
KB
-rwxr-xr-x
dpkg-mergechangelogs
8.69
KB
-rwxr-xr-x
dpkg-name
6.63
KB
-rwxr-xr-x
dpkg-parsechangelog
4.83
KB
-rwxr-xr-x
dpkg-query
138.52
KB
-rwxr-xr-x
dpkg-realpath
4.09
KB
-rwxr-xr-x
dpkg-scanpackages
8.5
KB
-rwxr-xr-x
dpkg-scansources
8.96
KB
-rwxr-xr-x
dpkg-shlibdeps
30.96
KB
-rwxr-xr-x
dpkg-source
22.56
KB
-rwxr-xr-x
dpkg-split
98.51
KB
-rwxr-xr-x
dpkg-statoverride
46.26
KB
-rwxr-xr-x
dpkg-trigger
42.41
KB
-rwxr-xr-x
dpkg-vendor
3.19
KB
-rwxr-xr-x
dsync
677.05
KB
-rwxr-xr-x
du
146.51
KB
-rwxr-xr-x
dumpkeys
158.71
KB
-rwxr-xr-x
dumpsexp
18.3
KB
-rwxr-xr-x
dvipdf
1007
B
-rwxr-xr-x
dwp
1.82
MB
-rwxr-xr-x
dwz
212.76
KB
-rwxr-xr-x
eatmydata
2.74
KB
-rwxr-xr-x
ec2metadata
8.38
KB
-rwxr-xr-x
echo
34.3
KB
-rwxr-xr-x
ed
54.49
KB
-rwxr-xr-x
edit
18.06
KB
-rwxr-xr-x
editor
276.52
KB
-rwxr-xr-x
egrep
28
B
-rwxr-xr-x
eject
42.23
KB
-rwxr-xr-x
elfedit
34.72
KB
-rwxr-xr-x
enc2xs
40.84
KB
-rwxr-xr-x
encguess
3.01
KB
-rwxr-xr-x
enchant-2
26.29
KB
-rwxr-xr-x
enchant-lsmod-2
18.29
KB
-rwxr-xr-x
env
42.95
KB
-rwxr-xr-x
envsubst
34.38
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
188.45
KB
-rwxr-xr-x
ex
3.61
MB
-rwxr-xr-x
expand
34.53
KB
-rwxr-xr-x
expiry
22.59
KB
-rwxr-sr-x
expr
102.41
KB
-rwxr-xr-x
factor
70.51
KB
-rwxr-xr-x
faillog
22.59
KB
-rwxr-xr-x
faked-sysv
30.39
KB
-rwxr-xr-x
faked-tcp
30.38
KB
-rwxr-xr-x
fakeroot
3.9
KB
-rwxr-xr-x
fakeroot-sysv
3.9
KB
-rwxr-xr-x
fakeroot-tcp
3.9
KB
-rwxr-xr-x
fallocate
22.38
KB
-rwxr-xr-x
false
26.3
KB
-rwxr-xr-x
fgconsole
14.23
KB
-rwxr-xr-x
fgrep
28
B
-rwxr-xr-x
filan
46.48
KB
-rwxr-xr-x
file
26.56
KB
-rwxr-xr-x
finalrd
2.06
KB
-rwxr-xr-x
fincore
22.42
KB
-rwxr-xr-x
find
275.48
KB
-rwxr-xr-x
find-debuginfo
21.28
KB
-rwxr-xr-x
findmnt
63.61
KB
-rwxr-xr-x
firewall-cmd
139.59
KB
-rwxr-xr-x
firewall-offline-cmd
120.73
KB
-rwxr-xr-x
flock
22.48
KB
-rwxr-xr-x
fmt
38.51
KB
-rwxr-xr-x
fold
34.51
KB
-rwxr-xr-x
free
26.23
KB
-rwxr-xr-x
ftff
18.3
KB
-rwxr-xr-x
ftp
178.9
KB
-rwxr-xr-x
ftwhich
18.3
KB
-rwxr-xr-x
funzip
22.3
KB
-rwxr-xr-x
fuser
39.31
KB
-rwxr-xr-x
fusermount
34.38
KB
-rwsr-xr-x
fusermount3
34.38
KB
-rwsr-xr-x
fwupdagent
190.3
KB
-rwxr-xr-x
fwupdate
82.3
KB
-rwxr-xr-x
fwupdmgr
190.3
KB
-rwxr-xr-x
fwupdtool
394.92
KB
-rwxr-xr-x
g++
906.82
KB
-rwxr-xr-x
g++-11
906.82
KB
-rwxr-xr-x
galera_new_cluster
917
B
-rwxr-xr-x
galera_recovery
3.29
KB
-rwxr-xr-x
gapplication
22.38
KB
-rwxr-xr-x
gawk
688.46
KB
-rwxr-xr-x
gcc
906.82
KB
-rwxr-xr-x
gcc-11
906.82
KB
-rwxr-xr-x
gcc-ar
26.54
KB
-rwxr-xr-x
gcc-ar-11
26.54
KB
-rwxr-xr-x
gcc-nm
26.54
KB
-rwxr-xr-x
gcc-nm-11
26.54
KB
-rwxr-xr-x
gcc-ranlib
26.54
KB
-rwxr-xr-x
gcc-ranlib-11
26.54
KB
-rwxr-xr-x
gcore
3.4
KB
-rwxr-xr-x
gcov
400.01
KB
-rwxr-xr-x
gcov-11
400.01
KB
-rwxr-xr-x
gcov-dump
251.84
KB
-rwxr-xr-x
gcov-dump-11
251.84
KB
-rwxr-xr-x
gcov-tool
275.93
KB
-rwxr-xr-x
gcov-tool-11
275.93
KB
-rwxr-xr-x
gdb
9.8
MB
-rwxr-xr-x
gdb-add-index
4.52
KB
-rwxr-xr-x
gdbtui
126
B
-rwxr-xr-x
gdbus
50.38
KB
-rwxr-xr-x
gencat
26.37
KB
-rwxr-xr-x
geoiplookup
14.3
KB
-rwxr-xr-x
geoiplookup6
14.3
KB
-rwxr-xr-x
geqn
188.45
KB
-rwxr-xr-x
getconf
34.29
KB
-rwxr-xr-x
getent
38.65
KB
-rwxr-xr-x
getkeycodes
14.23
KB
-rwxr-xr-x
getopt
22.38
KB
-rwxr-xr-x
gettext
34.38
KB
-rwxr-xr-x
gettext.sh
5.07
KB
-rwxr-xr-x
gettextize
41.28
KB
-rwxr-xr-x
ghostscript
14.15
KB
-rwxr-xr-x
ginstall-info
103.23
KB
-rwxr-xr-x
gio
90.4
KB
-rwxr-xr-x
gio-querymodules
14.3
KB
-rwxr-xr-x
git
3.54
MB
-rwxr-xr-x
git-receive-pack
3.54
MB
-rwxr-xr-x
git-shell
552.58
KB
-rwxr-xr-x
git-upload-archive
3.54
MB
-rwxr-xr-x
git-upload-pack
3.54
MB
-rwxr-xr-x
glib-compile-schemas
50.3
KB
-rwxr-xr-x
gmake
249.7
KB
-rwxr-xr-x
gold
3.04
MB
-rwxr-xr-x
gpasswd
70.38
KB
-rwsr-xr-x
gpg
1
MB
-rwxr-xr-x
gpg-agent
312.96
KB
-rwxr-xr-x
gpg-connect-agent
82.99
KB
-rwxr-xr-x
gpg-error-config
2.04
KB
-rwxr-xr-x
gpg-wks-server
115.05
KB
-rwxr-xr-x
gpg-zip
3.43
KB
-rwxr-xr-x
gpg1
889.02
KB
-rwxr-xr-x
gpg2
1
MB
-rwxr-xr-x
gpgcompose
496.48
KB
-rwxr-xr-x
gpgconf
126.73
KB
-rwxr-xr-x
gpgme-config
4.87
KB
-rwxr-xr-x
gpgme-tool
74.46
KB
-rwxr-xr-x
gpgparsemail
34.38
KB
-rwxr-xr-x
gpgrt-config
13.11
KB
-rwxr-xr-x
gpgsm
418.9
KB
-rwxr-xr-x
gpgsplit
26.55
KB
-rwxr-xr-x
gpgtar
63.39
KB
-rwxr-xr-x
gpgv
271.04
KB
-rwxr-xr-x
gpic
200.04
KB
-rwxr-xr-x
gprof
111.79
KB
-rwxr-xr-x
gpu-manager
78.82
KB
-rwxr-xr-x
grep
178.45
KB
-rwxr-xr-x
gresource
22.3
KB
-rwxr-xr-x
groff
94.5
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
162.55
KB
-rwxr-xr-x
grotty
118.52
KB
-rwxr-xr-x
groups
34.51
KB
-rwxr-xr-x
growpart
26.22
KB
-rwxr-xr-x
grub-editenv
376.95
KB
-rwxr-xr-x
grub-file
816.45
KB
-rwxr-xr-x
grub-fstest
937.92
KB
-rwxr-xr-x
grub-glue-efi
247.86
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
228.13
KB
-rwxr-xr-x
grub-mkfont
272.42
KB
-rwxr-xr-x
grub-mkimage
361.05
KB
-rwxr-xr-x
grub-mklayout
252.17
KB
-rwxr-xr-x
grub-mknetdir
417.66
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
256.2
KB
-rwxr-xr-x
grub-mkrelpath
247.58
KB
-rwxr-xr-x
grub-mkrescue
998.47
KB
-rwxr-xr-x
grub-mkstandalone
493.95
KB
-rwxr-xr-x
grub-mount
760.84
KB
-rwxr-xr-x
grub-ntldr-img
38.24
KB
-rwxr-xr-x
grub-render-label
828.83
KB
-rwxr-xr-x
grub-script-check
275.7
KB
-rwxr-xr-x
grub-syslinux2cfg
781.34
KB
-rwxr-xr-x
gs
14.15
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
30.3
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gtbl
126.48
KB
-rwxr-xr-x
gunzip
2.29
KB
-rwxr-xr-x
gzexe
6.3
KB
-rwxr-xr-x
gzip
91.23
KB
-rwxr-xr-x
h2load
182.49
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.51
KB
-rwxr-xr-x
hardlink
34.43
KB
-rwxr-xr-x
hd
50.39
KB
-rwxr-xr-x
head
42.51
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hexdump
50.39
KB
-rwxr-xr-x
hmac256
18.7
KB
-rwxr-xr-x
host
118.82
KB
-rwxr-xr-x
hostid
30.51
KB
-rwxr-xr-x
hostname
22.23
KB
-rwxr-xr-x
hostnamectl
30.38
KB
-rwxr-xr-x
htop
277.19
KB
-rwxr-xr-x
hwe-support-status
10.58
KB
-rwxr-xr-x
i386
26.65
KB
-rwxr-xr-x
iconv
66.41
KB
-rwxr-xr-x
id
38.51
KB
-rwxr-xr-x
ident
26.45
KB
-rwxr-xr-x
idn2
54.57
KB
-rwxr-xr-x
ifnames
4.08
KB
-rwxr-xr-x
info
301.74
KB
-rwxr-xr-x
infobrowser
301.74
KB
-rwxr-xr-x
infocmp
62.38
KB
-rwxr-xr-x
infotocap
86.41
KB
-rwxr-xr-x
innochecksum
437.73
KB
-rwxr-xr-x
innotop
445.71
KB
-rwxr-xr-x
install
142.52
KB
-rwxr-xr-x
install-info
103.23
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
ionice
18.38
KB
-rwxr-xr-x
ip
702.05
KB
-rwxr-xr-x
ipcmk
22.45
KB
-rwxr-xr-x
ipcrm
18.38
KB
-rwxr-xr-x
ipcs
38.38
KB
-rwxr-xr-x
iptables-xml
96.95
KB
-rwxr-xr-x
ischroot
14.2
KB
-rwxr-xr-x
iscsiadm
398.46
KB
-rwxr-xr-x
ispell-wrapper
7.05
KB
-rwxr-xr-x
join
46.55
KB
-rwxr-xr-x
journalctl
78.39
KB
-rwxr-xr-x
json-patch-jsondiff
1004
B
-rwxr-xr-x
json_pp
4.88
KB
-rwxr-xr-x
jsondiff
1004
B
-rwxr-xr-x
jsonpatch
3.77
KB
-rwxr-xr-x
jsonpointer
1.79
KB
-rwxr-xr-x
jsonschema
397
B
-rwxr-xr-x
kbd_mode
14.52
KB
-rwxr-xr-x
kbdinfo
18.23
KB
-rwxr-xr-x
kbxutil
62.83
KB
-rwxr-xr-x
keep-one-running
3.51
KB
-rwxr-xr-x
kernel-install
4.79
KB
-rwxr-xr-x
keyring
961
B
-rwxr-xr-x
kill
30.23
KB
-rwxr-xr-x
killall
31.34
KB
-rwxr-xr-x
kmod
166.36
KB
-rwxr-xr-x
kmodsign
18.45
KB
-rwxr-xr-x
krb5-config
6.78
KB
-rwxr-xr-x
krb5-config.mit
6.78
KB
-rwxr-xr-x
landscape-sysinfo
624
B
-rwxr-xr-x
last
34.38
KB
-rwxr-xr-x
lastb
34.38
KB
-rwxr-xr-x
lastlog
27.63
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ld
1.66
MB
-rwxr-xr-x
ld.bfd
1.66
MB
-rwxr-xr-x
ld.gold
3.04
MB
-rwxr-xr-x
ldd
5.32
KB
-rwxr-xr-x
less
194.38
KB
-rwxr-xr-x
lessecho
14.31
KB
-rwxr-xr-x
lessfile
8.83
KB
-rwxr-xr-x
lesskey
23.7
KB
-rwxr-xr-x
lesspipe
8.83
KB
-rwxr-xr-x
lexgrog
99.75
KB
-rwxr-xr-x
libassuan-config
2.72
KB
-rwxr-xr-x
libgcrypt-config
4.52
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libtoolize
128.26
KB
-rwxr-xr-x
link
30.51
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
3.99
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
linux32
26.65
KB
-rwxr-xr-x
linux64
26.65
KB
-rwxr-xr-x
ln
58.51
KB
-rwxr-xr-x
lnstat
22.66
KB
-rwxr-xr-x
loadkeys
198.76
KB
-rwxr-xr-x
loadunimap
30.32
KB
-rwxr-xr-x
locale
57.56
KB
-rwxr-xr-x
locale-check
14.15
KB
-rwxr-xr-x
localectl
26.37
KB
-rwxr-xr-x
localedef
326.96
KB
-rwxr-xr-x
logger
34.97
KB
-rwxr-xr-x
login
51.73
KB
-rwxr-xr-x
loginctl
58.48
KB
-rwxr-xr-x
logname
30.51
KB
-rwxr-xr-x
look
18.38
KB
-rwxr-xr-x
lowntfs-3g
114.98
KB
-rwxr-xr-x
ls
134.98
KB
-rwxr-xr-x
lsattr
14.31
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lsblk
122.38
KB
-rwxr-xr-x
lscpu
98.38
KB
-rwxr-xr-x
lshw
901.2
KB
-rwxr-xr-x
lsinitramfs
706
B
-rwxr-xr-x
lsipc
50.38
KB
-rwxr-xr-x
lslocks
30.7
KB
-rwxr-xr-x
lslogins
50.38
KB
-rwxr-xr-x
lsmem
34.38
KB
-rwxr-xr-x
lsmod
166.36
KB
-rwxr-xr-x
lsns
38.38
KB
-rwxr-xr-x
lsof
163.62
KB
-rwxr-xr-x
lspci
92.08
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
lsusb
246.52
KB
-rwxr-xr-x
lto-dump-11
23.73
MB
-rwxr-xr-x
lzcat
82.52
KB
-rwxr-xr-x
lzcmp
6.86
KB
-rwxr-xr-x
lzdiff
6.86
KB
-rwxr-xr-x
lzegrep
5.87
KB
-rwxr-xr-x
lzfgrep
5.87
KB
-rwxr-xr-x
lzgrep
5.87
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
82.52
KB
-rwxr-xr-x
lzmainfo
14.23
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
m4
154.37
KB
-rwxr-xr-x
maildirmake.dovecot
521
B
-rwxr-xr-x
mailmail3
964
B
-rwxr-xr-x
mailq
30.45
KB
-rwxr-xr-x
make
249.7
KB
-rwxr-xr-x
make-first-existing-target
4.79
KB
-rwxr-xr-x
man
117.68
KB
-rwxr-xr-x
man-recode
35.68
KB
-rwxr-xr-x
mandb
139.94
KB
-rwxr-xr-x
manifest
1.9
KB
-rwxr-xr-x
manpath
30.78
KB
-rwxr-xr-x
mapscrn
30.32
KB
-rwxr-xr-x
mariadb
5.16
MB
-rwxr-xr-x
mariadb-access
109.31
KB
-rwxr-xr-x
mariadb-admin
743.18
KB
-rwxr-xr-x
mariadb-analyze
4.83
MB
-rwxr-xr-x
mariadb-binlog
5.07
MB
-rwxr-xr-x
mariadb-check
4.83
MB
-rwxr-xr-x
mariadb-config
14.77
KB
-rwxr-xr-x
mariadb-conv
4.46
MB
-rwxr-xr-x
mariadb-convert-table-format
4.12
KB
-rwxr-xr-x
mariadb-dump
4.93
MB
-rwxr-xr-x
mariadb-dumpslow
8.05
KB
-rwxr-xr-x
mariadb-find-rows
3.21
KB
-rwxr-xr-x
mariadb-fix-extensions
1.22
KB
-rwxr-xr-x
mariadb-hotcopy
34.53
KB
-rwxr-xr-x
mariadb-import
731.38
KB
-rwxr-xr-x
mariadb-install-db
22.13
KB
-rwxr-xr-x
mariadb-optimize
4.83
MB
-rwxr-xr-x
mariadb-plugin
417
KB
-rwxr-xr-x
mariadb-repair
4.83
MB
-rwxr-xr-x
mariadb-report
49.02
KB
-rwxr-xr-x
mariadb-secure-installation
13.49
KB
-rwxr-xr-x
mariadb-service-convert
2.45
KB
-rwxr-xr-x
mariadb-setpermission
17.56
KB
-rwxr-xr-x
mariadb-show
726.02
KB
-rwxr-xr-x
mariadb-slap
748.69
KB
-rwxr-xr-x
mariadb-tzinfo-to-sql
444.4
KB
-rwxr-xr-x
mariadb-upgrade
885.03
KB
-rwxr-xr-x
mariadb-waitpid
388.07
KB
-rwxr-xr-x
mariadb_config
14.77
KB
-rwxr-xr-x
mariadbcheck
4.83
MB
-rwxr-xr-x
mariadbd-multi
26.69
KB
-rwxr-xr-x
mariadbd-safe
30.42
KB
-rwxr-xr-x
mariadbd-safe-helper
379.51
KB
-rwxr-xr-x
mawk
154.79
KB
-rwxr-xr-x
mcookie
26.45
KB
-rwxr-xr-x
md5sum
42.41
KB
-rwxr-xr-x
md5sum.textutils
42.41
KB
-rwxr-xr-x
mdig
50.4
KB
-rwxr-xr-x
memusage
7.32
KB
-rwxr-xr-x
memusagestat
22.37
KB
-rwxr-xr-x
merge
30.45
KB
-rwxr-xr-x
mesg
14.38
KB
-rwxr-xr-x
migrate-pubring-from-classic-g...
2.99
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mkdir
66.51
KB
-rwxr-xr-x
mkfifo
38.51
KB
-rwxr-xr-x
mknod
42.51
KB
-rwxr-xr-x
mksquashfs
254.68
KB
-rwxr-xr-x
mktemp
38.51
KB
-rwxr-xr-x
mlock
14.15
KB
-rwxr-sr-x
mmcli
273.84
KB
-rwxr-xr-x
more
42.38
KB
-rwxr-xr-x
mount
46.38
KB
-rwsr-xr-x
mountpoint
18.38
KB
-rwxr-xr-x
mpicalc
22.3
KB
-rwxr-xr-x
msgattrib
26.38
KB
-rwxr-xr-x
msgcat
26.38
KB
-rwxr-xr-x
msgcmp
26.38
KB
-rwxr-xr-x
msgcomm
26.38
KB
-rwxr-xr-x
msgconv
22.38
KB
-rwxr-xr-x
msgen
22.38
KB
-rwxr-xr-x
msgexec
22.38
KB
-rwxr-xr-x
msgfilter
34.38
KB
-rwxr-xr-x
msgfmt
82.59
KB
-rwxr-xr-x
msggrep
114.46
KB
-rwxr-xr-x
msginit
66.39
KB
-rwxr-xr-x
msgmerge
74.41
KB
-rwxr-xr-x
msgunfmt
34.39
KB
-rwxr-xr-x
msguniq
22.38
KB
-rwxr-xr-x
msql2mysql
1.41
KB
-rwxr-xr-x
mt
66.73
KB
-rwxr-xr-x
mt-gnu
66.73
KB
-rwxr-xr-x
mtr
72.25
KB
-rwxr-xr-x
mtr-packet
38.3
KB
-rwxr-xr-x
mtrace
6.43
KB
-rwxr-xr-x
mv
134.52
KB
-rwxr-xr-x
my_print_defaults
428.49
KB
-rwxr-xr-x
myisam_ftdump
4.69
MB
-rwxr-xr-x
myisamchk
4.93
MB
-rwxr-xr-x
myisamlog
4.72
MB
-rwxr-xr-x
myisampack
4.74
MB
-rwxr-xr-x
mysql
5.16
MB
-rwxr-xr-x
mysql_config
14.77
KB
-rwxr-xr-x
mysql_convert_table_format
4.12
KB
-rwxr-xr-x
mysql_find_rows
3.21
KB
-rwxr-xr-x
mysql_fix_extensions
1.22
KB
-rwxr-xr-x
mysql_install_db
22.13
KB
-rwxr-xr-x
mysql_plugin
417
KB
-rwxr-xr-x
mysql_secure_installation
13.49
KB
-rwxr-xr-x
mysql_setpermission
17.56
KB
-rwxr-xr-x
mysql_tzinfo_to_sql
444.4
KB
-rwxr-xr-x
mysql_upgrade
885.03
KB
-rwxr-xr-x
mysql_waitpid
388.07
KB
-rwxr-xr-x
mysqlaccess
109.31
KB
-rwxr-xr-x
mysqladmin
743.18
KB
-rwxr-xr-x
mysqlanalyze
4.83
MB
-rwxr-xr-x
mysqlbinlog
5.07
MB
-rwxr-xr-x
mysqlcheck
4.83
MB
-rwxr-xr-x
mysqld_multi
26.69
KB
-rwxr-xr-x
mysqld_safe
30.42
KB
-rwxr-xr-x
mysqld_safe_helper
379.51
KB
-rwxr-xr-x
mysqldump
4.93
MB
-rwxr-xr-x
mysqldumpslow
8.05
KB
-rwxr-xr-x
mysqlhotcopy
34.53
KB
-rwxr-xr-x
mysqlimport
731.38
KB
-rwxr-xr-x
mysqloptimize
4.83
MB
-rwxr-xr-x
mysqlrepair
4.83
MB
-rwxr-xr-x
mysqlreport
49.02
KB
-rwxr-xr-x
mysqlshow
726.02
KB
-rwxr-xr-x
mysqlslap
748.69
KB
-rwxr-xr-x
mytop
71.96
KB
-rwxr-xr-x
namei
22.38
KB
-rwxr-xr-x
nano
276.52
KB
-rwxr-xr-x
nawk
688.46
KB
-rwxr-xr-x
nc
38.63
KB
-rwxr-xr-x
nc.openbsd
38.63
KB
-rwxr-xr-x
neqn
913
B
-rwxr-xr-x
netcat
38.63
KB
-rwxr-xr-x
netstat
154.59
KB
-rwxr-xr-x
networkctl
102.38
KB
-rwxr-xr-x
networkd-dispatcher
19.71
KB
-rwxr-xr-x
newaliases
30.45
KB
-rwxr-xr-x
newgrp
39.55
KB
-rwsr-xr-x
ngettext
34.38
KB
-rwxr-xr-x
nghttp
178.74
KB
-rwxr-xr-x
nice
34.51
KB
-rwxr-xr-x
nisdomainname
22.23
KB
-rwxr-xr-x
nl
98.57
KB
-rwxr-xr-x
nm
43.63
KB
-rwxr-xr-x
nohup
34.41
KB
-rwxr-xr-x
nproc
34.51
KB
-rwxr-xr-x
nroff
3.22
KB
-rwxr-xr-x
nsenter
26.6
KB
-rwxr-xr-x
nslookup
118.82
KB
-rwxr-xr-x
nstat
30.38
KB
-rwxr-xr-x
nsupdate
74.55
KB
-rwxr-xr-x
ntfs-3g
159.01
KB
-rwxr-xr-x
ntfs-3g.probe
14.38
KB
-rwxr-xr-x
ntfscat
26.38
KB
-rwxr-xr-x
ntfscluster
38.38
KB
-rwxr-xr-x
ntfscmp
30.38
KB
-rwxr-xr-x
ntfsdecrypt
42.38
KB
-rwxr-xr-x
ntfsfallocate
26.38
KB
-rwxr-xr-x
ntfsfix
34.38
KB
-rwxr-xr-x
ntfsinfo
54.38
KB
-rwxr-xr-x
ntfsls
27.45
KB
-rwxr-xr-x
ntfsmove
30.38
KB
-rwxr-xr-x
ntfsrecover
106.38
KB
-rwxr-xr-x
ntfssecaudit
78.86
KB
-rwxr-xr-x
ntfstruncate
26.3
KB
-rwxr-xr-x
ntfsusermap
18.3
KB
-rwxr-xr-x
ntfswipe
42.91
KB
-rwxr-xr-x
numfmt
54.54
KB
-rwxr-xr-x
nvidia-detector
270
B
-rwxr-xr-x
objcopy
162.54
KB
-rwxr-xr-x
objdump
369.13
KB
-rwxr-xr-x
od
66.51
KB
-rwxr-xr-x
oem-getlogs
8.59
KB
-rwxr-xr-x
on_ac_power
3.7
KB
-rwxr-xr-x
open
18.06
KB
-rwxr-xr-x
opendkim-spam
18.49
KB
-rwxr-xr-x
openssl
977.8
KB
-rwxr-xr-x
openvt
22.59
KB
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
pager
194.38
KB
-rwxr-xr-x
paperconf
14.15
KB
-rwxr-xr-x
partx
58.38
KB
-rwxr-xr-x
passwd
58.57
KB
-rwsr-xr-x
paste
34.41
KB
-rwxr-xr-x
pastebinit
16.12
KB
-rwxr-xr-x
patch
186.52
KB
-rwxr-xr-x
pathchk
34.51
KB
-rwxr-xr-x
pbget
2.51
KB
-rwxr-xr-x
pbput
2.51
KB
-rwxr-xr-x
pbputs
2.51
KB
-rwxr-xr-x
pcre-config
2.29
KB
-rwxr-xr-x
pdb3
61.74
KB
-rwxr-xr-x
pdb3.10
61.74
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdns_control
370.58
KB
-rwxr-xr-x
pdnsutil
3.69
MB
-rwxr-xr-x
pear
793
B
-rwxr-xr-x
peardev
814
B
-rwxr-xr-x
pecl
727
B
-rwxr-xr-x
peekfd
14.3
KB
-rwxr-xr-x
perl
3.63
MB
-rwxr-xr-x
perl5.34-x86_64-linux-gnu
14.3
KB
-rwxr-xr-x
perl5.34.0
3.63
MB
-rwxr-xr-x
perlbug
44.12
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
44.12
KB
-rwxr-xr-x
perror
597.68
KB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pgrep
30.24
KB
-rwxr-xr-x
phar
14.89
KB
-rwxr-xr-x
phar.default
14.89
KB
-rwxr-xr-x
phar.phar
14.89
KB
-rwxr-xr-x
phar.phar.default
14.89
KB
-rwxr-xr-x
phar.phar8.1
14.89
KB
-rwxr-xr-x
phar8.1
14.89
KB
-rwxr-xr-x
phar8.1.phar
14.89
KB
-rwxr-xr-x
php
17.36
MB
-rwxr-xr-x
php.default
5.28
MB
-rwxr-xr-x
php8.1
5.28
MB
-rwxr-xr-x
phpabtpl
8.47
KB
-rwxr-xr-x
pic
200.04
KB
-rwxr-xr-x
pico
276.52
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pidof
30.38
KB
-rwxr-xr-x
pidwait
30.24
KB
-rwxr-xr-x
pinentry
58.65
KB
-rwxr-xr-x
pinentry-curses
58.65
KB
-rwxr-xr-x
ping
76.64
KB
-rwsr-xr-x
ping6
67.7
KB
-rwsr-xr-x
pinky
34.41
KB
-rwxr-xr-x
pip
221
B
-rwxr-xr-x
pip3
221
B
-rwxr-xr-x
pip3.10
221
B
-rwxr-xr-x
pip3.6
221
B
-rwxr-xr-x
pkaction
18.3
KB
-rwxr-xr-x
pkcheck
22.3
KB
-rwxr-xr-x
pkcon
58.3
KB
-rwxr-xr-x
pkexec
30.15
KB
-rwsr-xr-x
pkg-config
50.28
KB
-rwxr-xr-x
pkgtools
1.34
KB
-rwxr-xr-x
pkill
30.24
KB
-rwxr-xr-x
pkmon
22.3
KB
-rwxr-xr-x
pkttyagent
18.3
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.37
KB
-rwxr-xr-x
plymouth
46.3
KB
-rwxr-xr-x
pmap
34.24
KB
-rwxr-xr-x
po2debconf
8.47
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.68
KB
-rwxr-xr-x
pod2text
10.55
KB
-rwxr-xr-x
pod2usage
4.01
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podebconf-display-po
12.67
KB
-rwxr-xr-x
podebconf-report-po
31.76
KB
-rwxr-xr-x
pollinate
8.54
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
pr
66.58
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
54.48
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
14.3
KB
-rwxr-xr-x
print
18.06
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
30.38
KB
-rwxr-xr-x
printf
50.44
KB
-rwxr-xr-x
prlimit
26.89
KB
-rwxr-xr-x
pro
1003
B
-rwxr-xr-x
procan
30.4
KB
-rwxr-xr-x
prove
13.34
KB
-rwxr-xr-x
prtstat
22.38
KB
-rwxr-xr-x
ps
138.45
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
1.23
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.05
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
ps2txt
631
B
-rwxr-xr-x
psfaddtable
26.23
KB
-rwxr-xr-x
psfgettable
26.23
KB
-rwxr-xr-x
psfstriptable
26.23
KB
-rwxr-xr-x
psfxtable
26.23
KB
-rwxr-xr-x
pslog
14.3
KB
-rwxr-xr-x
pstree
35.32
KB
-rwxr-xr-x
pstree.x11
35.32
KB
-rwxr-xr-x
ptar
3.48
KB
-rwxr-xr-x
ptardiff
2.58
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
126.55
KB
-rwxr-xr-x
pure-pw
42.17
KB
-rwxr-xr-x
pure-pwconvert
14.15
KB
-rwxr-xr-x
pure-statsdecode
14.15
KB
-rwxr-xr-x
purge-old-kernels
1.12
KB
-rwxr-xr-x
pv
63.23
KB
-rwxr-xr-x
pwd
34.51
KB
-rwxr-xr-x
pwdx
14.23
KB
-rwxr-xr-x
py3clean
7.63
KB
-rwxr-xr-x
py3compile
12.88
KB
-rwxr-xr-x
py3versions
11.63
KB
-rwxr-xr-x
pybabel
953
B
-rwxr-xr-x
pybabel-python3
953
B
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.10
79
B
-rwxr-xr-x
pygettext3
23.67
KB
-rwxr-xr-x
pygettext3.10
23.67
KB
-rwxr-xr-x
pyhtmlizer3
968
B
-rwxr-xr-x
pyserial-miniterm
975
B
-rwxr-xr-x
pyserial-ports
969
B
-rwxr-xr-x
python3
5.66
MB
-rwxr-xr-x
python3-config
3.05
KB
-rwxr-xr-x
python3.10
5.66
MB
-rwxr-xr-x
python3.10-config
3.05
KB
-rwxr-xr-x
pzstd
702.47
KB
-rwxr-xr-x
quirks-handler
2.4
KB
-rwxr-xr-x
quota
79.59
KB
-rwxr-xr-x
quotasync
62.88
KB
-rwxr-xr-x
ranlib
54.48
KB
-rwxr-xr-x
rbash
1.33
MB
-rwxr-xr-x
rcp
130.59
KB
-rwxr-xr-x
rcs
194.88
KB
-rwxr-xr-x
rcsclean
825
B
-rwxr-xr-x
rcsdiff
822
B
-rwxr-xr-x
rcsmerge
825
B
-rwxr-xr-x
rdma
98.52
KB
-rwxr-xr-x
readelf
758.44
KB
-rwxr-xr-x
readlink
38.41
KB
-rwxr-xr-x
realpath
38.41
KB
-rwxr-xr-x
recode-sr-latin
14.38
KB
-rwxr-xr-x
red
89
B
-rwxr-xr-x
redis-benchmark
730.66
KB
-rwxr-xr-x
redis-check-aof
1.41
MB
-rwxr-xr-x
redis-check-rdb
1.41
MB
-rwxr-xr-x
redis-cli
354.13
KB
-rwxr-xr-x
redis-server
1.41
MB
-rwxr-xr-x
renice
14.38
KB
-rwxr-xr-x
replace
391.47
KB
-rwxr-xr-x
rescan-scsi-bus.sh
38.05
KB
-rwxr-xr-x
reset
26.31
KB
-rwxr-xr-x
resizecons
26.32
KB
-rwxr-xr-x
resizepart
22.38
KB
-rwxr-xr-x
resolve_stack_dump
404.13
KB
-rwxr-xr-x
resolvectl
130.52
KB
-rwxr-xr-x
resolveip
396.1
KB
-rwxr-xr-x
restic
29.44
MB
-rwxr-xr-x
rev
14.38
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rlog
813
B
-rwxr-xr-x
rlogin
827.04
KB
-rwxr-xr-x
rm
58.51
KB
-rwxr-xr-x
rmail
18.3
KB
-rwxr-xr-x
rmdir
42.41
KB
-rwxr-xr-x
rnano
276.52
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rpcgen
94.59
KB
-rwxr-xr-x
rrsync
12.34
KB
-rwxr-xr-x
rsh
827.04
KB
-rwxr-xr-x
rsync
506.13
KB
-rwxr-xr-x
rsync-ssl
5.02
KB
-rwxr-xr-x
rtstat
22.66
KB
-rwxr-xr-x
run-mailcap
18.06
KB
-rwxr-xr-x
run-one
3.51
KB
-rwxr-xr-x
run-one-constantly
3.51
KB
-rwxr-xr-x
run-one-until-failure
3.51
KB
-rwxr-xr-x
run-one-until-success
3.51
KB
-rwxr-xr-x
run-parts
26.54
KB
-rwxr-xr-x
run-this-one
3.51
KB
-rwxr-xr-x
run-with-aspell
57
B
-rwxr-xr-x
runcon
34.51
KB
-rwxr-xr-x
rview
3.61
MB
-rwxr-xr-x
rvim
3.61
MB
-rwxr-xr-x
savelog
10.24
KB
-rwxr-xr-x
sbattach
26.54
KB
-rwxr-xr-x
sbkeysync
34.74
KB
-rwxr-xr-x
sbsiglist
14.6
KB
-rwxr-xr-x
sbsign
34.7
KB
-rwxr-xr-x
sbvarsign
22.73
KB
-rwxr-xr-x
sbverify
34.61
KB
-rwxr-xr-x
scandeps
6.45
KB
-rwxr-xr-x
scp
130.59
KB
-rwxr-xr-x
screen
470.23
KB
-rwxr-xr-x
screendump
14.15
KB
-rwxr-xr-x
script
50.38
KB
-rwxr-xr-x
scriptlive
42.38
KB
-rwxr-xr-x
scriptreplay
34.38
KB
-rwxr-xr-x
scsi_logging_level
8.38
KB
-rwxr-xr-x
scsi_mandat
3.52
KB
-rwxr-xr-x
scsi_readcap
1.3
KB
-rwxr-xr-x
scsi_ready
1.09
KB
-rwxr-xr-x
scsi_satl
3.74
KB
-rwxr-xr-x
scsi_start
1.25
KB
-rwxr-xr-x
scsi_stop
1.44
KB
-rwxr-xr-x
scsi_temperature
936
B
-rwxr-xr-x
sdiff
46.39
KB
-rwxr-xr-x
sed
110.57
KB
-rwxr-xr-x
see
18.06
KB
-rwxr-xr-x
select-default-iwrap
474
B
-rwxr-xr-x
select-editor
2.39
KB
-rwxr-xr-x
sensible-browser
1.26
KB
-rwxr-xr-x
sensible-editor
1.24
KB
-rwxr-xr-x
sensible-pager
565
B
-rwxr-xr-x
sepdebugcrcfix
18.59
KB
-rwxr-xr-x
seq
46.51
KB
-rwxr-xr-x
setarch
26.65
KB
-rwxr-xr-x
setfont
50.32
KB
-rwxr-xr-x
setkeycodes
14.23
KB
-rwxr-xr-x
setleds
18.21
KB
-rwxr-xr-x
setlogcons
14.23
KB
-rwxr-xr-x
setmetamode
14.26
KB
-rwxr-xr-x
setpci
30.38
KB
-rwxr-xr-x
setpriv
38.38
KB
-rwxr-xr-x
setsid
14.38
KB
-rwxr-xr-x
setterm
34.38
KB
-rwxr-xr-x
setupcon
38.31
KB
-rwxr-xr-x
sftp
142.66
KB
-rwxr-xr-x
sg
39.55
KB
-rwsr-xr-x
sg_bg_ctl
14.51
KB
-rwxr-xr-x
sg_compare_and_write
26.91
KB
-rwxr-xr-x
sg_copy_results
23.3
KB
-rwxr-xr-x
sg_dd
54.33
KB
-rwxr-xr-x
sg_decode_sense
14.76
KB
-rwxr-xr-x
sg_emc_trespass
14.3
KB
-rwxr-xr-x
sg_format
39.35
KB
-rwxr-xr-x
sg_get_config
35.39
KB
-rwxr-xr-x
sg_get_elem_status
26.79
KB
-rwxr-xr-x
sg_get_lba_status
22.95
KB
-rwxr-xr-x
sg_ident
14.6
KB
-rwxr-xr-x
sg_inq
119.61
KB
-rwxr-xr-x
sg_logs
150.93
KB
-rwxr-xr-x
sg_luns
22.79
KB
-rwxr-xr-x
sg_map
18.3
KB
-rwxr-xr-x
sg_map26
26.7
KB
-rwxr-xr-x
sg_modes
46.08
KB
-rwxr-xr-x
sg_opcodes
35.01
KB
-rwxr-xr-x
sg_persist
36.08
KB
-rwxr-xr-x
sg_prevent
14.51
KB
-rwxr-xr-x
sg_raw
26.91
KB
-rwxr-xr-x
sg_rbuf
22.73
KB
-rwxr-xr-x
sg_rdac
14.3
KB
-rwxr-xr-x
sg_read
26.31
KB
-rwxr-xr-x
sg_read_attr
36.65
KB
-rwxr-xr-x
sg_read_block_limits
14.54
KB
-rwxr-xr-x
sg_read_buffer
27.56
KB
-rwxr-xr-x
sg_read_long
14.7
KB
-rwxr-xr-x
sg_readcap
22.79
KB
-rwxr-xr-x
sg_reassign
14.66
KB
-rwxr-xr-x
sg_referrals
14.66
KB
-rwxr-xr-x
sg_rep_pip
14.57
KB
-rwxr-xr-x
sg_rep_zones
26.8
KB
-rwxr-xr-x
sg_requests
22.76
KB
-rwxr-xr-x
sg_reset
14.66
KB
-rwxr-xr-x
sg_reset_wp
14.6
KB
-rwxr-xr-x
sg_rmsn
14.51
KB
-rwxr-xr-x
sg_rtpg
14.6
KB
-rwxr-xr-x
sg_safte
22.7
KB
-rwxr-xr-x
sg_sanitize
27.01
KB
-rwxr-xr-x
sg_sat_identify
18.73
KB
-rwxr-xr-x
sg_sat_phy_event
19.01
KB
-rwxr-xr-x
sg_sat_read_gplog
18.73
KB
-rwxr-xr-x
sg_sat_set_features
18.7
KB
-rwxr-xr-x
sg_scan
18.3
KB
-rwxr-xr-x
sg_seek
18.88
KB
-rwxr-xr-x
sg_senddiag
27.2
KB
-rwxr-xr-x
sg_ses
119.97
KB
-rwxr-xr-x
sg_ses_microcode
27.36
KB
-rwxr-xr-x
sg_start
18.85
KB
-rwxr-xr-x
sg_stpg
22.73
KB
-rwxr-xr-x
sg_stream_ctl
18.7
KB
-rwxr-xr-x
sg_sync
14.66
KB
-rwxr-xr-x
sg_test_rwbuf
18.6
KB
-rwxr-xr-x
sg_timestamp
18.83
KB
-rwxr-xr-x
sg_turs
26.7
KB
-rwxr-xr-x
sg_unmap
22.76
KB
-rwxr-xr-x
sg_verify
18.91
KB
-rwxr-xr-x
sg_vpd
114.42
KB
-rwxr-xr-x
sg_wr_mode
22.73
KB
-rwxr-xr-x
sg_write_buffer
27.23
KB
-rwxr-xr-x
sg_write_long
14.76
KB
-rwxr-xr-x
sg_write_same
26.95
KB
-rwxr-xr-x
sg_write_verify
26.79
KB
-rwxr-xr-x
sg_write_x
55.6
KB
-rwxr-xr-x
sg_xcopy
42.32
KB
-rwxr-xr-x
sg_zone
14.86
KB
-rwxr-xr-x
sginfo
72.01
KB
-rwxr-xr-x
sgm_dd
38.31
KB
-rwxr-xr-x
sgp_dd
46.31
KB
-rwxr-xr-x
sh
122.74
KB
-rwxr-xr-x
sha1sum
42.41
KB
-rwxr-xr-x
sha224sum
50.41
KB
-rwxr-xr-x
sha256sum
50.41
KB
-rwxr-xr-x
sha384sum
58.41
KB
-rwxr-xr-x
sha512sum
58.41
KB
-rwxr-xr-x
shasum
9.75
KB
-rwxr-xr-x
showconsolefont
18.23
KB
-rwxr-xr-x
showkey
18.23
KB
-rwxr-xr-x
shred
50.51
KB
-rwxr-xr-x
shtool
138.76
KB
-rwxr-xr-x
shtoolize
15.16
KB
-rwxr-xr-x
shuf
46.51
KB
-rwxr-xr-x
sieve-dump
22.38
KB
-rwxr-xr-x
sieve-filter
34.38
KB
-rwxr-xr-x
sieve-test
34.38
KB
-rwxr-xr-x
sievec
30.38
KB
-rwxr-xr-x
size
30.45
KB
-rwxr-xr-x
skill
30.23
KB
-rwxr-xr-x
slabtop
22.23
KB
-rwxr-xr-x
sleep
34.51
KB
-rwxr-xr-x
slogin
827.04
KB
-rwxr-xr-x
snap
19.09
MB
-rwxr-xr-x
snapctl
6.26
MB
-rwxr-xr-x
snapfuse
38.23
KB
-rwxr-xr-x
snice
30.23
KB
-rwxr-xr-x
socat
383.62
KB
-rwxr-xr-x
soelim
30.48
KB
-rwxr-xr-x
sort
98.8
KB
-rwxr-xr-x
sos
612
B
-rwxr-xr-x
sos-collector
1.1
KB
-rwxr-xr-x
sosreport
1.09
KB
-rwxr-xr-x
sotruss
4.21
KB
-rwxr-xr-x
splain
18.96
KB
-rwxr-xr-x
split
50.97
KB
-rwxr-xr-x
splitfont
14.15
KB
-rwxr-xr-x
sprof
34.37
KB
-rwxr-xr-x
sqfscat
131.9
KB
-rwxr-xr-x
sqfstar
254.68
KB
-rwxr-xr-x
ss
125.07
KB
-rwxr-xr-x
ssh
827.04
KB
-rwxr-xr-x
ssh-add
166.42
KB
-rwxr-xr-x
ssh-agent
286.43
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
12.38
KB
-rwxr-xr-x
ssh-import-id
985
B
-rwxr-xr-x
ssh-import-id-gh
785
B
-rwxr-xr-x
ssh-import-id-lp
785
B
-rwxr-xr-x
ssh-keygen
446.44
KB
-rwxr-xr-x
ssh-keyscan
190.44
KB
-rwxr-xr-x
stat
78.52
KB
-rwxr-xr-x
static-sh
2.09
MB
-rwxr-xr-x
stdbuf
42.51
KB
-rwxr-xr-x
strace
1.88
MB
-rwxr-xr-x
strace-log-merge
1.78
KB
-rwxr-xr-x
streamzip
7.75
KB
-rwxr-xr-x
strings
30.61
KB
-rwxr-xr-x
strip
162.57
KB
-rwxr-xr-x
stty
74.51
KB
-rwxr-xr-x
su
54.38
KB
-rwsr-xr-x
sudo
226.97
KB
-rwsr-xr-x
sudoedit
226.97
KB
-rwsr-xr-x
sudoreplay
87.64
KB
-rwxr-xr-x
sum
34.41
KB
-rwxr-xr-x
sync
34.41
KB
-rwxr-xr-x
systemctl
1.06
MB
-rwxr-xr-x
systemd
1.76
MB
-rwxr-xr-x
systemd-analyze
1.73
MB
-rwxr-xr-x
systemd-ask-password
18.48
KB
-rwxr-xr-x
systemd-cat
18.38
KB
-rwxr-xr-x
systemd-cgls
22.48
KB
-rwxr-xr-x
systemd-cgtop
38.39
KB
-rwxr-xr-x
systemd-cryptenroll
50.53
KB
-rwxr-xr-x
systemd-delta
26.37
KB
-rwxr-xr-x
systemd-detect-virt
18.37
KB
-rwxr-xr-x
systemd-escape
22.37
KB
-rwxr-xr-x
systemd-hwdb
118.66
KB
-rwxr-xr-x
systemd-id128
26.37
KB
-rwxr-xr-x
systemd-inhibit
22.39
KB
-rwxr-xr-x
systemd-machine-id-setup
18.48
KB
-rwxr-xr-x
systemd-mount
50.59
KB
-rwxr-xr-x
systemd-notify
22.38
KB
-rwxr-xr-x
systemd-path
18.37
KB
-rwxr-xr-x
systemd-run
62.57
KB
-rwxr-xr-x
systemd-socket-activate
26.37
KB
-rwxr-xr-x
systemd-stdio-bridge
22.38
KB
-rwxr-xr-x
systemd-sysext
46.49
KB
-rwxr-xr-x
systemd-sysusers
62.68
KB
-rwxr-xr-x
systemd-tmpfiles
98.57
KB
-rwxr-xr-x
systemd-tty-ask-password-agent
34.37
KB
-rwxr-xr-x
systemd-umount
50.59
KB
-rwxr-xr-x
tabs
18.3
KB
-rwxr-xr-x
tac
98.41
KB
-rwxr-xr-x
tail
66.52
KB
-rwxr-xr-x
tar
505.81
KB
-rwxr-xr-x
taskset
22.38
KB
-rwxr-xr-x
tbl
126.48
KB
-rwxr-xr-x
tclsh
14.15
KB
-rwxr-xr-x
tclsh8.6
14.15
KB
-rwxr-xr-x
tcpdump
1.27
MB
-rwxr-xr-x
tee
34.51
KB
-rwxr-xr-x
telnet
107.56
KB
-rwxr-xr-x
telnet.netkit
107.56
KB
-rwxr-xr-x
tempfile
14.02
KB
-rwxr-xr-x
test
42.44
KB
-rwxr-xr-x
tic
86.41
KB
-rwxr-xr-x
time
26.52
KB
-rwxr-xr-x
timedatectl
46.37
KB
-rwxr-xr-x
timeout
38.95
KB
-rwxr-xr-x
tkconch3
962
B
-rwxr-xr-x
tload
18.24
KB
-rwxr-xr-x
tmux
948.55
KB
-rwxr-xr-x
tnftp
178.9
KB
-rwxr-xr-x
toe
22.3
KB
-rwxr-xr-x
top
130.06
KB
-rwxr-xr-x
touch
90.51
KB
-rwxr-xr-x
tput
26.34
KB
-rwxr-xr-x
tr
46.51
KB
-rwxr-xr-x
tracepath
18.15
KB
-rwxr-xr-x
trial3
958
B
-rwxr-xr-x
troff
718.61
KB
-rwxr-xr-x
true
26.3
KB
-rwxr-xr-x
truncate
34.51
KB
-rwxr-xr-x
tset
26.31
KB
-rwxr-xr-x
tsort
46.51
KB
-rwxr-xr-x
tty
30.51
KB
-rwxr-xr-x
twist3
958
B
-rwxr-xr-x
twistd3
960
B
-rwxr-xr-x
tzselect
15.02
KB
-rwxr-xr-x
ua
1003
B
-rwxr-xr-x
ubuntu-advantage
1003
B
-rwxr-xr-x
ubuntu-bug
2.51
KB
-rwxr-xr-x
ubuntu-distro-info
22.89
KB
-rwxr-xr-x
ubuntu-drivers
16.36
KB
-rwxr-xr-x
ubuntu-security-status
22.25
KB
-rwxr-xr-x
ucf
40.9
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
uclampset
26.38
KB
-rwxr-xr-x
udevadm
1.08
MB
-rwxr-xr-x
udisksctl
58.38
KB
-rwxr-xr-x
ul
22.38
KB
-rwxr-xr-x
umount
34.38
KB
-rwsr-xr-x
uname
34.51
KB
-rwxr-xr-x
unattended-upgrade
97.21
KB
-rwxr-xr-x
unattended-upgrades
97.21
KB
-rwxr-xr-x
uncompress
2.29
KB
-rwxr-xr-x
unexpand
34.53
KB
-rwxr-xr-x
unicode_start
2.7
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
42.51
KB
-rwxr-xr-x
unlink
30.51
KB
-rwxr-xr-x
unlzma
82.52
KB
-rwxr-xr-x
unmkinitramfs
3.69
KB
-rwxr-xr-x
unshare
30.6
KB
-rwxr-xr-x
unsquashfs
131.9
KB
-rwxr-xr-x
unxz
82.52
KB
-rwxr-xr-x
unzip
170.42
KB
-rwxr-xr-x
unzipsfx
78.42
KB
-rwxr-xr-x
unzstd
854.59
KB
-rwxr-xr-x
update-alternatives
58.24
KB
-rwxr-xr-x
update-mime-database
58.23
KB
-rwxr-xr-x
upower
22.3
KB
-rwxr-xr-x
uptime
14.23
KB
-rwxr-xr-x
usb-devices
4.33
KB
-rwxr-xr-x
usbhid-dump
30.38
KB
-rwxr-xr-x
usbreset
14.3
KB
-rwxr-xr-x
users
34.51
KB
-rwxr-xr-x
utmpdump
22.38
KB
-rwxr-xr-x
uuidgen
18.38
KB
-rwxr-xr-x
uuidparse
22.38
KB
-rwxr-xr-x
vcs-run
6.75
KB
-rwxr-xr-x
vdir
134.98
KB
-rwxr-xr-x
vi
3.61
MB
-rwxr-xr-x
view
3.61
MB
-rwxr-xr-x
vigpg
2.58
KB
-rwxr-xr-x
vim
3.61
MB
-rwxr-xr-x
vim.basic
3.61
MB
-rwxr-xr-x
vim.tiny
1.45
MB
-rwxr-xr-x
vimdiff
3.61
MB
-rwxr-xr-x
vimtutor
2.1
KB
-rwxr-xr-x
virtualenv
239
B
-rwxr-xr-x
vm-support
9.83
KB
-rwxr-xr-x
vmhgfs-fuse
46.73
KB
-rwxr-xr-x
vmstat
38.24
KB
-rwxr-xr-x
vmtoolsd
74.56
KB
-rwxr-xr-x
vmware-alias-import
42.52
KB
-rwxr-xr-x
vmware-checkvm
14.38
KB
-rwxr-xr-x
vmware-hgfsclient
14.38
KB
-rwxr-xr-x
vmware-namespace-cmd
22.3
KB
-rwxr-xr-x
vmware-rpctool
18.3
KB
-rwxr-xr-x
vmware-toolbox-cmd
58.59
KB
-rwxr-xr-x
vmware-vgauth-cmd
18.3
KB
-rwxr-xr-x
vmware-vmblock-fuse
18.78
KB
-rwxr-xr-x
vmware-xferlogs
32.33
KB
-rwxr-xr-x
w
22.23
KB
-rwxr-xr-x
wall
22.38
KB
-rwxr-xr-x
watch
26.6
KB
-rwxr-xr-x
watchgnupg
18.3
KB
-rwxr-xr-x
wc
42.42
KB
-rwxr-xr-x
wdctl
30.4
KB
-rwxr-xr-x
wget
459.02
KB
-rwxr-xr-x
whatis
47.28
KB
-rwxr-xr-x
whereis
30.84
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
which.debianutils
946
B
-rwxr-xr-x
whichman
18.3
KB
-rwxr-xr-x
whiptail
30.16
KB
-rwxr-xr-x
who
50.52
KB
-rwxr-xr-x
whoami
30.51
KB
-rwxr-xr-x
wifi-status
2.06
KB
-rwxr-xr-x
word-list-compress
14.3
KB
-rwxr-xr-x
write
22.38
KB
-rwxr-xr-x
write.ul
22.38
KB
-rwxr-xr-x
wsrep_sst_common
66.86
KB
-rwxr-xr-x
wsrep_sst_mariabackup
49.23
KB
-rwxr-xr-x
wsrep_sst_mysqldump
8.11
KB
-rwxr-xr-x
wsrep_sst_rsync
29.72
KB
-rwxr-xr-x
wsrep_sst_rsync_wan
29.72
KB
-rwxr-xr-x
x86_64
26.65
KB
-rwxr-xr-x
x86_64-linux-gnu-addr2line
26.7
KB
-rwxr-xr-x
x86_64-linux-gnu-ar
54.48
KB
-rwxr-xr-x
x86_64-linux-gnu-as
456.4
KB
-rwxr-xr-x
x86_64-linux-gnu-c++filt
22.27
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-11
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-dwp
1.82
MB
-rwxr-xr-x
x86_64-linux-gnu-elfedit
34.72
KB
-rwxr-xr-x
x86_64-linux-gnu-g++
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-g++-11
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-11
906.82
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar
26.54
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-11
26.54
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm
26.54
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-11
26.54
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib
26.54
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-11
26.54
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov
400.01
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-11
400.01
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump
251.84
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-11
251.84
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool
275.93
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-11
275.93
KB
-rwxr-xr-x
x86_64-linux-gnu-gold
3.04
MB
-rwxr-xr-x
x86_64-linux-gnu-gprof
111.79
KB
-rwxr-xr-x
x86_64-linux-gnu-ld
1.66
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.bfd
1.66
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.gold
3.04
MB
-rwxr-xr-x
x86_64-linux-gnu-lto-dump-11
23.73
MB
-rwxr-xr-x
x86_64-linux-gnu-nm
43.63
KB
-rwxr-xr-x
x86_64-linux-gnu-objcopy
162.54
KB
-rwxr-xr-x
x86_64-linux-gnu-objdump
369.13
KB
-rwxr-xr-x
x86_64-linux-gnu-pkg-config
2.18
KB
-rwxr-xr-x
x86_64-linux-gnu-python3-confi...
3.05
KB
-rwxr-xr-x
x86_64-linux-gnu-python3.10-co...
3.05
KB
-rwxr-xr-x
x86_64-linux-gnu-ranlib
54.48
KB
-rwxr-xr-x
x86_64-linux-gnu-readelf
758.44
KB
-rwxr-xr-x
x86_64-linux-gnu-size
30.45
KB
-rwxr-xr-x
x86_64-linux-gnu-strings
30.61
KB
-rwxr-xr-x
x86_64-linux-gnu-strip
162.57
KB
-rwxr-xr-x
x86_64-pc-linux-gnu-pkg-config
50.28
KB
-rwxr-xr-x
xargs
62.41
KB
-rwxr-xr-x
xauth
54.96
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-update
26.23
KB
-rwxr-xr-x
xgettext
297.01
KB
-rwxr-xr-x
xsubpp
5.05
KB
-rwxr-xr-x
xxd
18.28
KB
-rwxr-xr-x
xz
82.52
KB
-rwxr-xr-x
xzcat
82.52
KB
-rwxr-xr-x
xzcmp
6.86
KB
-rwxr-xr-x
xzdiff
6.86
KB
-rwxr-xr-x
xzegrep
5.87
KB
-rwxr-xr-x
xzfgrep
5.87
KB
-rwxr-xr-x
xzgrep
5.87
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yes
30.38
KB
-rwxr-xr-x
ypdomainname
22.23
KB
-rwxr-xr-x
zcat
1.94
KB
-rwxr-xr-x
zcmp
1.64
KB
-rwxr-xr-x
zdiff
5.76
KB
-rwxr-xr-x
zdump
26.21
KB
-rwxr-xr-x
zegrep
29
B
-rwxr-xr-x
zfgrep
29
B
-rwxr-xr-x
zforce
2.03
KB
-rwxr-xr-x
zgrep
7.91
KB
-rwxr-xr-x
zip
198.99
KB
-rwxr-xr-x
zipcloak
70.4
KB
-rwxr-xr-x
zipdetails
58.66
KB
-rwxr-xr-x
zipgrep
2.89
KB
-rwxr-xr-x
zipinfo
170.42
KB
-rwxr-xr-x
zipnote
62.4
KB
-rwxr-xr-x
zipsplit
58.4
KB
-rwxr-xr-x
zless
2.15
KB
-rwxr-xr-x
zmore
1.8
KB
-rwxr-xr-x
znew
4.47
KB
-rwxr-xr-x
zone2json
998.61
KB
-rwxr-xr-x
zone2sql
1.01
MB
-rwxr-xr-x
zstd
854.59
KB
-rwxr-xr-x
zstdcat
854.59
KB
-rwxr-xr-x
zstdgrep
3.78
KB
-rwxr-xr-x
zstdless
30
B
-rwxr-xr-x
zstdmt
854.59
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : mytop
#!/usr/bin/env perl # # $Id: mytop,v 1.99-maria6 2019/10/22 14:53:51 jweisbuch Exp $ =pod =head1 NAME mytop - display MariaDB/MySQL server performance info like `top' =cut ## most of the POD is at the bottom of the file use 5.005; use strict; use warnings; use DBI; use Getopt::Long; use Socket; use List::Util qw(min max); use File::Basename; $main::VERSION = "1.99-maria6"; my $path_for_script = dirname($0); $| = 1; $0 = 'mytop'; my $WIN = ($^O eq 'MSWin32') ? 1 : 0; ## Test for color support. eval { require Term::ANSIColor; }; my $HAS_COLOR = $@ ? 0 : 1; $HAS_COLOR = 0 if $WIN; ## Test of Time::HiRes support eval { require Time::HiRes }; my $HAS_TIME = $@ ? 0 : 1; my $debug = 0; ## Try to lower our priority (which, who, pri) setpriority(0,0,10) unless $WIN; ## Prototypes sub Clear(); sub GetData(); sub GetQPS(); sub FullQueryInfo($); sub Explain($); sub PrintTable(@); sub PrintHelp(); sub Sum(@); sub commify($); sub make_short($); sub Hashes($); sub Execute($); sub StringOrRegex($); sub GetInnoDBStatus(); sub GetCmdSummary(); sub GetShowVariables(); sub GetShowStatus(); sub cmd_s; sub cmd_S; sub cmd_q; ## Default Config Values my %config = ( batchmode => 0, color => 1, db => '', database => '', delay => 5, filter_user => qr/.?/, filter_db => qr/.?/, filter_host => qr/.?/, filter_state => qr/.?/, header => 1, help => 0, host => 'localhost', idle => 1, long => 120, long_nums => 0, mode => 'top', prompt => 0, pass => '', password => '', port => 3306, resolve => 0, slow => 10, ## slow query time socket => '', sort => 1, ## default or reverse sort ("s") user => 'root', fullqueries => 0, ## shows untruncated queries usercol_width => 8, ## User column width dbcol_width => 9, ## DB column width hide_progress => 0 ## hide the "%" column when available ); my %qcache = (); ## The query cache--used for full query info support. my %ucache = (); ## The user cache--used for full killing by user my %dbcache = (); ## The db cache. This should be merged at some point. my %statcache = (); ## The show status cache for GetShowStatus() my (%STATUS, %OLD_STATUS); # header stuff. my $CLEAR = $WIN ? '': `clear`; ## Term::ReadKey values my $RM_RESET = 0; my $RM_NOBLKRD = 3; ## using 4 traps Ctrl-C :-( ## Add options from .my.cnf first my $my_print_defaults; if (!defined($my_print_defaults=my_which("my_print_defaults"))) { print "Warning: Can't find my_print_defaults. Please add it to your PATH!\n"; exit(1); } unshift @ARGV, split "\n", `$my_print_defaults client mytop`; ## Read the user's config file, if it exists. my $config = "$ENV{HOME}/.mytop"; if (-e $config) { if (open CFG, "<$config") { while (<CFG>) { next if /^\s*($|#)/; ## skip blanks and comments chomp; if (/(\S+)\s*=\s*(.*\S)/) { my ($k, $v) = ($1, $2); if ($k =~ /^filter_/i) { $config{lc $k} = StringOrRegex($v) if exists $config{lc $k}; } else { $config{lc $k} = $v if exists $config{lc $k}; } } } close CFG; } ## map database/password onto db/pass ## short version gets precedence for historical reasons $config{'db'} = $config{'database'} unless $config{'db'}; $config{'pass'} = $config{'password'} unless $config{'pass'}; } ## Command-line args. use vars qw($opt_foo); Getopt::Long::Configure('no_ignore_case', 'bundling'); GetOptions( "color!" => \$config{color}, "user|u=s" => \$config{user}, "pass|password|p=s" => \$config{pass}, "database|db|d=s" => \$config{db}, "host|h=s" => \$config{host}, "port|P=i" => \$config{port}, "socket|S=s" => \$config{socket}, "delay|s=i" => \$config{delay}, "batch|batchmode|b" => \$config{batchmode}, "header!" => \$config{header}, "idle|i!" => \$config{idle}, "resolve|r!" => \$config{resolve}, "prompt!" => \$config{prompt}, "long=i" => \$config{long}, "long_nums!" => \$config{long_nums}, "mode|m=s" => \$config{mode}, "slow=i" => \$config{slow}, "sort=s" => \$config{sort}, "fullqueries|L!" => \$config{fullqueries}, "usercol_width=i" => \$config{usercol_width}, "dbcol_width=i" => \$config{dbcol_width}, "hide_progress|a!" => \$config{hide_progress} ); ## User may have put the port with the host. if ($config{host} =~ s/:(\d+)$//) { $config{port} = $1; } ## Don't use Term::ReadKey unless running interactively. if (not $config{batchmode}) { require Term::ReadKey; Term::ReadKey->import(); } ## User may want to disable color. if ($HAS_COLOR and not $config{color}) { $HAS_COLOR = 0; } if ($HAS_COLOR) { import Term::ANSIColor ':constants'; } else { *RESET = sub { }; *YELLOW = sub { }; *RED = sub { }; *MAGENTA = sub { }; *GREEN = sub { }; *BLUE = sub { }; *WHITE = sub { }; *BOLD = sub { }; } my $RESET = RESET() || ''; my $YELLOW = YELLOW() || ''; my $RED = RED() || ''; my $MAGENTA = MAGENTA() || ''; my $GREEN = GREEN() || ''; my $BLUE = BLUE() || ''; my $WHITE = WHITE() || ''; my $BOLD = BOLD() || ''; ## Connect my $dsn; ## Socket takes precedence. my $prefix= 'mysql'; if (eval {DBI->install_driver("MariaDB")}) { $dsn = "DBI:MariaDB:database=$config{db};mariadb_read_default_group=mytop;"; $prefix= 'mariadb' } else { $dsn = "DBI:mysql:database=$config{db};mysql_read_default_group=mytop;"; } if ($config{socket} and -S $config{socket}) { $dsn .= "${prefix}_socket=$config{socket}"; } else { $dsn .= "host=$config{host};port=$config{port}"; } if ($config{prompt}) { print "Password: "; ReadMode(2); chomp($config{pass} = <STDIN>); ReadMode(0); print "\n"; } my $dbh = DBI->connect($dsn, $config{user}, $config{pass}, { PrintError => 0 }); if (not ref $dbh) { my $Error = <<EODIE Cannot connect to MariaDB/MySQL server. Please check the: * database you specified "$config{db}" (default is "") * username you specified "$config{user}" (default is "root") * password you specified "$config{pass}" (default is "") * hostname you specified "$config{host}" (default is "localhost") * port you specified "$config{port}" (default is 3306) * socket you specified "$config{socket}" (default is "") The options my be specified on the command-line or in a ~/.mytop or ~/.my.cnf config file. See the manual (perldoc mytop) for details. Here's the exact error from DBI. It might help you debug: $DBI::errstr EODIE ; die $Error; } ReadMode($RM_RESET) unless $config{batchmode}; ## Get static data my $db_version; my $db_release; my $server = "MySQL"; my $have_query_cache; my @variables = Hashes("SHOW VARIABLES"); foreach (@variables) { if ($_->{Variable_name} eq "version") { $db_version = $_->{Value}; $db_version =~ /^(\d+)/; $db_release = $1; $server = "MariaDB" if ($db_version =~ /maria/i); # Get the version number only $db_version = $1 if($db_version =~ m/(.*?)-/); next; } if ($_->{Variable_name} eq "have_query_cache") { if ($_->{Value} ne 'NO') { $have_query_cache = 1; } else { $have_query_cache = 0; } next; } } my ($has_is_processlist, $has_time_ms, $has_progress); $has_is_processlist = $has_time_ms = $has_progress = 0; ## Check if the server has the INFORMATION_SCHEMA.PROCESSLIST table ## for backward compatibility $has_is_processlist = Execute("SELECT /*mytop*/ 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'PROCESSLIST';")->rows; if ($has_is_processlist == 1) { ## Check if the server has the TIME_MS column on the I_S.PROCESSLIST table ## If it is the case, it will fetch the query time with decimal precision ## for queries that has been running for less than 10k seconds $has_time_ms = Execute("SELECT /*mytop*/ 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'PROCESSLIST' AND COLUMN_NAME = 'TIME_MS';")->rows; if ($has_time_ms == 1) { ## Check if the server has the STAGE column on the I_S.PROCESSLIST ## table (MariaDB) to retreive query completion information $has_progress = Execute("SELECT /*mytop*/ 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'PROCESSLIST' AND COLUMN_NAME = 'STAGE';")->rows; } } ######################################################################### ## ## The main loop ## ######################################################################### ReadMode($RM_NOBLKRD) unless $config{batchmode}; while (1) { my $key; if ($config{mode} eq 'qps') { GetQPS(); $key = ReadKey(1); next unless $key; if ($key =~ /t/i) { $config{mode} = 'top'; } if ($key =~ /q/) { cmd_q(); } next; } if ($config{mode} eq 'top') { GetData(); last if $config{batchmode}; $key = ReadKey($config{delay}); next unless $key; } elsif ($config{mode} eq 'cmd') { GetCmdSummary(); last if $config{batchmode}; $key = ReadKey($config{delay}); next unless $key; } elsif ($config{mode} eq 'innodb') { GetInnoDBStatus(); last if $config{batchmode}; print "InnoDB Status [hit t to exit this mode or q to exit the application]\n"; $key = ReadKey($config{delay}); next unless $key; } elsif ($config{mode} eq 'status') { GetShowStatus(); last if $config{batchmode}; $key = ReadKey($config{delay}); next unless $key; } ## ## keystroke command processing (if we get this far) ## if ($key eq '!') { Execute("STOP /*mytop*/ SLAVE;"); Execute("SET /*mytop*/ GLOBAL sql_slave_skip_counter=1"); Execute("START /*mytop*/ SLAVE"); } # t - top if ($key =~ /t/i) { $config{mode} = 'top'; } ## q - quit if ($key eq 'q') { cmd_q(); } if ($key eq 'D') { require Data::Dumper; print Data::Dumper::Dumper([\%config]); ReadKey(0); } ## l - change long running hightling if ($key eq 'l') { cmd_l(); next; } ## m - mode switch to qps if ($key eq 'm') { $config{mode} = 'qps'; Clear() unless $config{batchmode}; print "Queries Per Second [hit t to exit this mode or q to exit the application]\n"; next; } ## c - mode switch to command summary if ($key eq 'c') { $config{mode} = 'cmd'; Clear() unless $config{batchmode}; print "Command Summary\n"; next; } ## C - change Color on and off if ($key eq 'C') { if ($HAS_COLOR) { $HAS_COLOR = 0; } else { $HAS_COLOR = 1; } } ## s - seconds of delay if ($key eq 's') { cmd_s(); next; } if ($key eq 'S') { cmd_S(); next; } ## R - resolve hostnames if ($key eq 'R') { if ($config{resolve}) { $config{resolve} = 0; } else { $config{resolve} = 1; } } ## t - username based filter if ($key eq 't') { ReadMode($RM_RESET); print RED(), "Which state (blank for all, /.../ for regex): ", RESET(); $config{filter_state} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## u - username based filter if ($key eq 'u') { ReadMode($RM_RESET); print RED(), "Which user (blank for all, /.../ for regex): ", RESET(); $config{filter_user} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## d - database name based filter if ($key eq 'd') { ReadMode($RM_RESET); print RED(), "Which database (blank for all, /.../ for regex): ", RESET(); $config{filter_db} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## h - hostname based filter if ($key eq 'h') { ReadMode($RM_RESET); print RED(), "Which hostname (blank for all, /.../ for regex): ", RESET(); $config{filter_host} = StringOrRegex(ReadLine(0)); ReadMode($RM_NOBLKRD); next; } ## E - Show full Replication Error if ($key eq 'E') { my ($data) = Hashes('SHOW /*mytop*/ SLAVE STATUS'); Clear(); print "Error is: $data->{Last_Error}\n"; print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); next; } ## F - remove all filters if ($key eq 'F') { $config{filter_host} = qr/.?/; $config{filter_db} = qr/.?/; $config{filter_user} = qr/.?/; $config{filter_state} = qr/.?/; print RED(), "-- display unfiltered --", RESET(); sleep 1; next; } ## p - pause if ($key eq 'p') { print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); next; } ## i - idle toggle if ($key =~ /i/) { if ($config{idle}) { $config{idle} = 0; $config{sort} = 1; print RED(), "-- idle (sleeping) processed filtered --", RESET(); sleep 1; } else { $config{idle} = 1; $config{sort} = 0; print RED(), "-- idle (sleeping) processed unfiltered --", RESET(); sleep 1; } } ## I - InnoDB status if ($key =~ 'I') { $config{mode} = 'innodb'; Clear() unless $config{batchmode}; print "InnoDB Status\n"; next; } ## o - sort order if ($key =~ /o/) { if ($config{sort}) { $config{sort} = 0; print RED(), "-- sort order reversed --", RESET(); sleep 1; } else { $config{sort} = 1; print RED(), "-- sort order reversed --", RESET(); sleep 1; } } ## ? - help if ($key eq '?') { Clear(); PrintHelp(); ReadKey(0); next; } ## k - kill if ($key eq 'k') { ReadMode($RM_RESET); print RED(), "Thread id to kill: ", RESET(); my $id = ReadLine(0); $id =~ s/\s//g; if ($id =~ /^\d+$/) { Execute("KILL /*mytop*/ $id"); } else { print RED(), "-- invalid thread id --", RESET(); sleep 1; } ReadMode($RM_NOBLKRD); next; } ## K - kill based on a username if ($key =~ /K/) { ReadMode($RM_RESET); print RED(), "User to kill: ", RESET(); my $user = ReadLine(0); $user =~ s/\s//g; if ($user =~ /^\S+$/) { for my $pid (keys %ucache) { next unless $ucache{$pid} eq $user; Execute("KILL /*mytop*/ $pid"); select(undef, undef, undef, 0.2); } } else { print RED(), "-- invalid thread id --", RESET(); sleep 1; } ReadMode($RM_NOBLKRD); } ## f - full info if ($key =~ /f/) { ReadMode($RM_RESET); print RED(), "Full query for which thread id: ", RESET(); my $id = ReadLine(0); chomp $id; FullQueryInfo($id); ReadMode($RM_NOBLKRD); print RED(), "-- paused. press any key to resume or (e) to explain --", RESET(); my $key = ReadKey(0); if ($key eq 'e') { Explain($id); print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); } next; } ## e - explain if ($key =~ /e/) { ReadMode($RM_RESET); print RED(), "Explain which query (id): ", RESET(); my $id = ReadLine(0); chomp $id; Explain($id); ReadMode($RM_NOBLKRD); print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); next; } ## r - reset status counters if ($key =~ /r/) { Execute("FLUSH /*mytop*/ STATUS"); print RED(), "-- counters reset --", RESET(); sleep 1; next; } ## H - header toggle if ($key eq 'H') { if ($config{header}) { $config{header} = 0; } else { $config{header}++; } } ## # - magic debug key if ($key eq '#') { $debug = 1; } if ($key eq 'V') { GetShowVariables(); print RED(), "-- paused. press any key to resume --", RESET(); ReadKey(0); } ## M - switch to SHOW STATUS mode if ($key eq 'M') { $config{mode} = 'status'; } ## L - full queries toggle if ($key eq 'L') { if ($config{fullqueries}) { $config{fullqueries} = 0; print RED(), "-- full queries OFF --", RESET(); sleep 1; } else { $config{fullqueries} = 1; print RED(), "-- full queries ON --", RESET(); sleep 1; } } ## w - change columns width for the "User" and "Database" columns if ($key eq 'w') { ReadMode($RM_RESET); print RED(), "Width for the 'User' column (the actual value is ". $config{usercol_width}."): "; my $readWidth = ReadLine(0); chomp($readWidth); if (defined($readWidth) && $readWidth ne "") { if ($readWidth > 4 && $readWidth < 60) { $config{usercol_width} = $readWidth; } else { print RED(), "-- Invalid value ($readWidth), the previous value". "has been kept, press a key to resume --"; ReadKey(0); } } print RESET(), RED(), "Width for the 'DB' column (the actual value is ". $config{dbcol_width}."): ", RESET(); $readWidth = ReadLine(0); chomp($readWidth); if (defined($readWidth) && $readWidth ne "") { if ($readWidth > 2 && $readWidth < 60) { $config{dbcol_width} = $readWidth } else { print RED(), "-- Invalid value ($readWidth), the previous value". "has been kept, press a key to resume --", RESET(); ReadKey(0); } } undef $readWidth; ReadMode($RM_NOBLKRD); next; } ## a - progress column toggle (the column is only displayed ## if progress information are available from the processlist) if ($key eq 'a') { if ($config{hide_progress}) { $config{hide_progress} = 0; print RED(), "-- progress display ON --", RESET(); sleep 1; } else { $config{hide_progress} = 1; print RED(), "-- progress display OFF --", RESET(); sleep 1; } } } ReadMode($RM_RESET) unless $config{batchmode}; exit; ####################################################################### sub Clear() { if (not $WIN) { print "$CLEAR" } else { print "\n" x 90; ## dumb hack for now. Anyone know how to ## clear the screen in dos window on a Win32 ## system?? } } my $last_time; sub GetData() { ## Get terminal info my $now_time; %qcache = (); ## recycle memory %dbcache = (); my ($width, $height, $wpx, $hpx, $lines_left); if (not $config{batchmode}) { ($width, $height, $wpx, $hpx) = GetTerminalSize(); $lines_left = $height - 2; } else { $height = 999_999; ## I hope you don't have more than that! $lines_left = 999_999; $width = 80; } ## ## Header stuff. ## if ($config{header}) { my @recs = ""; if ($db_release > 4) { @recs = Hashes("SHOW /*mytop*/ GLOBAL STATUS"); } else { @recs = Hashes("SHOW /*mytop*/ STATUS"); } ## if the server died or we lost connectivity if (not @recs) { ReadMode($RM_RESET); exit 1; } ## get high-res or low-res time my ($t_delta); if ($HAS_TIME) { $now_time = Time::HiRes::gettimeofday(); } else { $now_time = time; } if ($last_time and $last_time != $now_time) { $t_delta = $now_time - $last_time; } %OLD_STATUS = %STATUS; # Set some status that may not exist in all versions $STATUS{Handler_tmp_write} = 0; $STATUS{Handler_tmp_update} = 0; $STATUS{Rows_tmp_read} = 0; foreach my $ref (@recs) { my $key = $ref->{Variable_name}; my $val = $ref->{Value}; $STATUS{$key} = $val; } ## Compute Key Cache Hit Stats $STATUS{Key_read_requests} ||= 1; ## can't divide by zero next my $cache_hits_percent = (100-($STATUS{Key_reads}/$STATUS{Key_read_requests}) * 100); $cache_hits_percent = sprintf("%2.2f",$cache_hits_percent); ## Query Cache info for <= Ver. 4.1 ## ## mysql> show status like 'qcache%'; ## +-------------------------+----------+ ## | Variable_name | Value | ## +-------------------------+----------+ ## | Qcache_queries_in_cache | 81 | ## | Qcache_inserts | 4961668 | ## | Qcache_hits | 1374170 | ## | Qcache_not_cached | 5656249 | ## | Qcache_free_memory | 33164800 | ## | Qcache_free_blocks | 2 | ## | Qcache_total_blocks | 168 | ## +-------------------------+----------+ ## ## Query Cache info for => Ver. 5.0 ## ## mysql> show status like 'qcache%'; ## +-------------------------+------------+ ## | Variable_name | Value | ## +-------------------------+------------+ ## | Qcache_free_blocks | 37652 | ## | Qcache_free_memory | 110289712 | ## | Qcache_hits | 1460617356 | ## | Qcache_inserts | 390563495 | ## | Qcache_lowmem_prunes | 6414172 | ## | Qcache_not_cached | 93002420 | ## | Qcache_queries_in_cache | 66558 | ## | Qcache_total_blocks | 192031 | ## +-------------------------+------------+ my $query_cache_hits = 0; my $query_cache_hits_per_sec = 0; my $now_query_cache_hits_per_sec = 0; if ($have_query_cache) { $query_cache_hits = $STATUS{Qcache_hits}; $query_cache_hits_per_sec = $STATUS{Qcache_hits} / $STATUS{Uptime}; if (defined $last_time and $last_time != $now_time) { my $q_delta = $STATUS{Qcache_hits} - $OLD_STATUS{Qcache_hits}; $now_query_cache_hits_per_sec = sprintf "%.2f", $q_delta / $t_delta; } } my $l; if (-e "/proc/loadavg") { ## To avoid warnings if the OS is not Linux open (my $fh, "<", "/proc/loadavg"); ## Only the first 3 values are interresting $l = join(" ", (split /\s+/, <$fh>)[0..2]); close $fh; } $last_time = $now_time; ## Server Uptime in meaningful terms... my $time = $STATUS{Uptime}; my ($d,$h,$m,$s) = (0, 0, 0, 0); $d += int($time / (60*60*24)); $time -= $d * (60*60*24); $h += int($time / (60*60)); $time -= $h * (60*60); $m += int($time / (60)); $time -= $m * (60); $s += int($time); my $uptime = sprintf("%d+%02d:%02d:%02d", $d, $h, $m, $s); ## Queries per second... my $avg_queries_per_sec = sprintf("%.2f", $STATUS{Questions} / $STATUS{Uptime}); my $num_queries = $STATUS{Questions}; my @t = localtime(time); my $current_time = sprintf "[%02d:%02d:%02d]", $t[2], $t[1], $t[0]; my $host_width = length("$server $db_version on $config{host}"); my $up_width = $width - $host_width - 1; Clear() unless $config{batchmode}; print RESET(); printf "%-.${host_width}s %${up_width}s\n", "$server $db_version on $config{host}", defined($l) ? "load ($l) up $uptime $current_time" : "up $uptime $current_time"; $lines_left--; printf " Queries: %-7s qps: %4.0f Slow: %7s Se/In/Up/De(%%): %02.0f/%02.0f/%02.0f/%02.0f\n", make_short( $STATUS{Questions} ), # q total $STATUS{Questions} / $STATUS{Uptime}, # qps, average make_short( $STATUS{Slow_queries} ), # slow # hmm. a Qcache hit is really a select and should be counted. 100 * ($STATUS{Com_select} + ($STATUS{Qcache_hits}||0) ) / $STATUS{Questions}, 100 * ($STATUS{Com_insert} + $STATUS{Com_replace} ) / $STATUS{Questions}, 100 * ($STATUS{Com_update} ) / $STATUS{Questions}, 100 * $STATUS{Com_delete} / $STATUS{Questions}; $lines_left--; if ($t_delta) { my $q_diff = ( $STATUS{Questions} - $OLD_STATUS{Questions} ); # print("q_diff: $STATUS{Questions} - $OLD_STATUS{Questions} / $t_delta = $q_diff\n"); printf(" Sorts: %6.0f qps now: %4.0f Slow qps: %3.1f Threads: %4.0f (%4.0f/%4.0f) %02.0f/%02.0f/%02.0f/%02.0f\n", ( $STATUS{Sort_rows} - $OLD_STATUS{Sort_rows} ) / $t_delta, ( $STATUS{Questions} - $OLD_STATUS{Questions} ) / $t_delta, ( # slow now (qps) ($STATUS{Slow_queries} ) ? ( $STATUS{Slow_queries} - $OLD_STATUS{Slow_queries} ) / $t_delta : 0 ), $STATUS{Threads_connected}, $STATUS{Threads_running}, $STATUS{Threads_cached}, (100 * ($STATUS{Com_select} - $OLD_STATUS{Com_select} + ($STATUS{Qcache_hits}||0) - ($OLD_STATUS{Qcache_hits}||0) ) ) / ($q_diff ), (100 * ($STATUS{Com_insert} - $OLD_STATUS{Com_insert} + $STATUS{Com_replace} - $OLD_STATUS{Com_replace} ) ) / ($q_diff ), (100 * ($STATUS{Com_update} - $OLD_STATUS{Com_update}) ) / ($q_diff ), (100 * ($STATUS{Com_delete} - $OLD_STATUS{Com_delete}) ) / ($q_diff ), ); } else { print "\n"; } $lines_left--; if ($have_query_cache and $STATUS{Com_select} and $query_cache_hits) { printf(" Cache Hits: %-5s Hits/s: %4.1f Hits now: %5.1f Ratio: ", make_short($STATUS{Qcache_hits}), # cache hits $STATUS{Qcache_hits} / $STATUS{Uptime}, # hits / sec ($t_delta) ? ($STATUS{Qcache_hits} - $OLD_STATUS{Qcache_hits}) / $t_delta : 0, # Hits Now ); my ($Ratio) = 100 * ($STATUS{Qcache_hits}) / ($STATUS{Qcache_hits} + $STATUS{Com_select} ); if ($HAS_COLOR) { print YELLOW() if ($Ratio < 80.0); print RED() if ($Ratio < 50.0); print MAGENTA() if ($Ratio < 20.0); } printf("%4.1f%% ",$Ratio); if ($HAS_COLOR) { print RESET(); } print " Ratio now: "; my ($Ratio_now) = ($t_delta) ? # ratio now 100 * ($STATUS{Qcache_hits} - $OLD_STATUS{Qcache_hits} ) / ( ($STATUS{Com_select} + $STATUS{Qcache_hits} - ($OLD_STATUS{Qcache_hits} + $OLD_STATUS{Com_select}) ) || 1) : 0; if ($HAS_COLOR) { print GREEN() if ($Ratio_now >= 80.0); print YELLOW() if ($Ratio_now < 80.0); print RED() if ($Ratio_now < 50.0); print MAGENTA() if ($Ratio_now < 20.0); } printf("%4.1f%% \n",$Ratio_now); if ($HAS_COLOR) { print RESET(); } $lines_left--; } if ($t_delta) { my $rows_read; if (defined($STATUS{Rows_read})) { $rows_read= $STATUS{Rows_read} - $OLD_STATUS{Rows_read}; } else { $rows_read= ($STATUS{Handler_read_first} + $STATUS{Handler_read_key} + $STATUS{Handler_read_next} + $STATUS{Handler_read_prev} + $STATUS{Handler_read_rnd} + $STATUS{Handler_read_rnd_next} - $OLD_STATUS{Handler_read_first} - $OLD_STATUS{Handler_read_key} - $OLD_STATUS{Handler_read_next} - $OLD_STATUS{Handler_read_prev} - $OLD_STATUS{Handler_read_rnd} - $OLD_STATUS{Handler_read_rnd_next}); } printf(" Handler: (R/W/U/D) %5d/%5d/%5d/%5d Tmp: R/W/U: %5d/%5d/%5d\n", $rows_read/$t_delta, ($STATUS{Handler_write} - $OLD_STATUS{Handler_write}) / $t_delta, ($STATUS{Handler_update} - $OLD_STATUS{Handler_update}) / $t_delta, ($STATUS{Handler_delete} - $OLD_STATUS{Handler_delete}) / $t_delta, ($STATUS{Rows_tmp_read} - $OLD_STATUS{Rows_tmp_read}) / $t_delta, ($STATUS{Handler_tmp_write} -$OLD_STATUS{Handler_tmp_write})/$t_delta, ($STATUS{Handler_tmp_update} - $OLD_STATUS{Handler_tmp_update})/$t_delta); } else { print "\n"; } $lines_left--; printf(" MyISAM Key Cache Efficiency: %2.1f%% Bps in/out: %5s/%5s ", $cache_hits_percent, make_short($STATUS{Bytes_received} / $STATUS{Uptime} ), make_short($STATUS{Bytes_sent} / $STATUS{Uptime})); printf("Now in/out: %5s/%5s", make_short(($STATUS{Bytes_received} - $OLD_STATUS{Bytes_received}) / $t_delta ), make_short(($STATUS{Bytes_sent} - $OLD_STATUS{Bytes_sent}) / $t_delta )) if ($t_delta); print "\n"; $lines_left--; my ($data) = Hashes('SHOW /*mytop*/ GLOBAL VARIABLES LIKE "read_only"'); if ($data->{Value} ne "OFF") { print RED() if ($HAS_COLOR) ; print " ReadOnly"; RESET() if ($HAS_COLOR); } ($data) = Hashes('SHOW /*mytop*/ SLAVE STATUS'); if (defined($data->{Master_Host})) { if (defined($data->{Seconds_Behind_Master})) { if ($HAS_COLOR) { print GREEN(); print YELLOW() if ($data->{Seconds_Behind_Master} > 60); print MAGENTA() if ($data->{Seconds_Behind_Master} > 360); } } print " Replication "; print "IO:$data->{Slave_IO_Running} "; print "SQL:$data->{Slave_SQL_Running} "; print RESET() if ($HAS_COLOR); if (defined($data->{Seconds_Behind_Master})) { if ($HAS_COLOR) { print GREEN(); print YELLOW() if ($data->{Seconds_Behind_Master} > 60); print MAGENTA() if ($data->{Seconds_Behind_Master} > 360); } print "Delay: $data->{Seconds_Behind_Master} sec."; } else { my $free = $width - 45; my $Err = substr $data->{Last_Error},0 ,$free; printf(" ERR: %-${free}s", $Err) if ($Err ne ""); } print WHITE() if ($HAS_COLOR); print "\n"; $lines_left--; } print "\n"; } if (not $config{batchmode} and not $config{header}) { Clear(); print RESET(); } ## ## Threads ## my $proc_cmd; ## Query used to fetch the processlist my $time_format = "6d"; if ($has_is_processlist == 1) { if ($has_time_ms == 1) { $time_format = "6.6s"; if ($has_progress == 1) { ## To have a computed value of "Progress" like the ## "SHOW PROCESSLIST" one, the Progress column of the query ## must be replaced by : ## "CASE WHEN Max_Stage < 2 THEN Progress ELSE ## (Stage-1)/Max_Stage*100+Progress/Max_Stage END AS Progress" $proc_cmd = "SELECT /*mytop*/ Id, User, Host, db, Command, CASE WHEN TIME > 10000 THEN Time ELSE ROUND(TIME_MS/1000, 1) END AS Time, State, Info, Progress, Stage, Max_Stage FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID();"; } else { $proc_cmd = "SELECT /*mytop*/ Id, User, Host, db, Command, CASE WHEN TIME > 10000 THEN Time ELSE ROUND(TIME_MS/1000, 1) END AS Time, State, Info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID();"; } } else { $proc_cmd = "SELECT /*mytop*/ Id, User, Host, db, Command, Time, State, Info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID != CONNECTION_ID();"; } } else { $proc_cmd = "SHOW /*mytop*/ FULL PROCESSLIST;"; } ## Minimal width values for columns with a dynamic width if ($config{usercol_width} < 4) { $config{usercol_width} = 4; } if ($config{dbcol_width} < 2) { $config{dbcol_width} = 2; } my @sz = (9, $config{usercol_width}, 15, $config{dbcol_width}, 6, 6, 8); if ($has_progress == 1 && !$config{hide_progress}) { push @sz, 5; }; my $used = scalar(@sz) + Sum(@sz); undef(@sz); ## If the terminal width <= 80, the state column will have a width of 6 ## chars else it will be between 6 and 15 depending on the terminal width my $state = $width <= 80 ? 6 : int(min(6+($width-80)/3, 15)); ## $free = The number of chars between the beginning of the "Query" ## column and the end of the line my $free = $width - $used - ($state - 6); my $format= "%9s %$config{usercol_width}s %15s %$config{dbcol_width}s %6s "; if ($has_progress == 1 && !$config{hide_progress}) { $format .= "%5s "; } $format .= "%6s %${state}s %-.${free}s\n"; my $format2 = "%9d %$config{usercol_width}.$config{usercol_width}s %15.15s %$config{dbcol_width}.$config{dbcol_width}s %${time_format} "; if ($has_progress == 1 && !$config{hide_progress}) { $format2 .= "%5.1f "; } $format2 .= "%6.6s %${state}.${state}s "; if ($config{fullqueries}) { $format2 .= "%-${free}s\n"; } else { $format2 .= "%-${free}.${free}s\n"; } print BOLD() if ($HAS_COLOR); if ($has_progress == 1 && !$config{hide_progress}) { printf $format, 'Id','User','Host/IP','DB','Time', '%', 'Cmd', 'State', 'Query'; } else { printf $format, 'Id','User','Host/IP','DB','Time', 'Cmd', 'State', 'Query'; } print RESET() if ($HAS_COLOR); ## Id User Host DB if ($has_progress == 1 && !$config{hide_progress}) { printf $format, '--','----','-------','--','----', '-', '---', '-----', '----------'; } else { printf $format, '--','----','-------','--','----', '---', '-----', '----------'; } $lines_left -= 2; my @data = Hashes($proc_cmd); foreach my $thread (@data) { last if not $lines_left; ## Drop Domain Name, unless it looks like an IP address. If ## it's an IP, we'll strip the port number because it's rarely ## interesting. my $is_ip = 0; if ($thread->{Host} =~ /^(\d{1,3}\.){3}(\d{1,3})(:\d+)?$/) { $thread->{Host} =~ s/:.*$//; $is_ip = 1; } else { $thread->{Host} =~ s/^([^.]+).*/$1/; } ## Otherwise, look up the IP (if resolve is set) and strip the ## name if ($is_ip and $config{resolve}) { $thread->{Host} =~ s/:\d+$//; my $host = gethostbyaddr(inet_aton($thread->{Host}), AF_INET); if ($host) { ## Only the hostname part of the DNS is kept $host =~ s/^([^.]+).*/$1/; } $thread->{Host} = $host; } ## Fix possible undefs $thread->{db} ||= ''; $thread->{Info} ||= ''; $thread->{Time} ||= 0 ; $thread->{Id} ||= 0 ; $thread->{User} ||= ''; $thread->{Command} ||= ''; $thread->{Host} ||= ''; $thread->{State} ||= ""; $thread->{Progress} ||= 0; ## Alter double hyphen comments so they don't break ## the query when newlines are removed - http://freshmeat.net/users/jerjones $thread->{Info} =~ s~\s--(.*)$~ /* $1 */ ~mg; ## Normalize spaces -- mostly disabled for now. This can ## break EXPLAIN if you try to explain a mangled query. It ## may be re-enabled later as an option. ## Replace newlines and carriage returns with a space $thread->{Info} =~ tr/\n\r/ /; ## Leading space removal $thread->{Info} =~ s/^\s*//; ## Strip non printing control symbols $thread->{Info} =~ tr/[[:cntrl:]]//; ## Collpase whitespace $thread->{Info} =~ s/\s+/ /g; ## Trailing space removal $thread->{Info} =~ s/\s$//; ## Put the first letter of the query uppercase for a better readability ## with long State strings $thread->{Info} = ucfirst $thread->{Info}; ## Stow it in the cache $qcache{$thread->{Id}} = $thread->{Info}; $dbcache{$thread->{Id}} = $thread->{db}; $ucache{$thread->{Id}} = $thread->{User}; ## If Progress information is available and a multi-stage query is ## running, the actual stage and the total number of stages of the ## thread are shown at the beginning of the State column if ($has_progress == 1 && $thread->{Max_Stage} && $thread->{Max_Stage} > 1) { $thread->{State} = $thread->{Stage}."/". $thread->{Max_Stage}." ".$thread->{State}; } } ## Sort by idle time (closest thing to CPU usage I can think of). my @sorted; if (not $config{sort}) { @sorted = sort { $a->{Time} <=> $b->{Time} } @data } else { @sorted = sort { $b->{Time} <=> $a->{Time} } @data } foreach my $thread (@sorted) { ## Check to see if we can skip out. ## We skip out if we know the given line doesn't match. next if (($thread->{Command} eq "Sleep") and (not $config{idle})); next if (($thread->{Command} eq "Binlog Dump") and (not $config{idle})); next if (($thread->{Command} eq "Daemon") and (not $config{idle})); next if ($thread->{User} !~ $config{filter_user}); next if ($thread->{db} !~ $config{filter_db}); next if ($thread->{Host} !~ $config{filter_host}); next if ($thread->{State} !~ $config{filter_state}); ## Otherwise, print. my $smInfo; if ($thread->{Info}) { if ($config{fullqueries}) { $smInfo = $thread->{Info}; if (length($smInfo) > $free) { $lines_left -= int((length($smInfo) - $free)/$width) + 1; } } else { $smInfo = substr $thread->{Info}, 0, $free; } } # if ($thread->{State}) # { # $smInfo = substr $thread->{State}, 0, $free; # } else { $smInfo = ""; } $lines_left--; if ($lines_left < 0) { print WHITE(), "-- Truncated query list -- "; last; } if ($HAS_COLOR) { print YELLOW() if $thread->{Command} eq 'Query'; print WHITE() if $thread->{Command} eq 'Sleep'; print GREEN() if $thread->{Command} eq 'Connect'; print BOLD() if $thread->{Time} > $config{slow}; print MAGENTA() if $thread->{Time} > $config{long}; } if ($has_progress == 1 && !$config{hide_progress}) { printf $format2, $thread->{Id}, $thread->{User}, $thread->{Host}, $thread->{db}, $thread->{Time}, $thread->{Progress}, $thread->{Command}, $thread->{State}, $smInfo; } else { printf $format2, $thread->{Id}, $thread->{User}, $thread->{Host}, $thread->{db}, $thread->{Time}, $thread->{Command}, $thread->{State}, $smInfo; } print RESET() if $HAS_COLOR; } } ########################################################################### my $questions; sub GetQPS() { my ($data) = Hashes('SHOW /*mytop*/ STATUS LIKE "Questions"'); my $num = $data->{Value}; if (not defined $questions) ## first time? { $questions = $num; return; } my $qps = $num - $questions; $questions = $num; print "$qps\n"; } ########################################################################### sub GetInnoDBStatus() { if (not $config{pager}) { if (not $config{pager} = my_which('less')) { $config{pager} = my_which('more'); } } my @data = Hashes("SHOW /*mytop*/ ENGINE INNODB STATUS"); open P, "|$config{pager}" or die "$!"; print keys %{$data[0]}; print $data[0]->{Status},"\n"; close P; } ########################################################################### my %prev_data; sub GetCmdSummary() { my ($width, $height, $wpx, $hpx, $lines_left); if (not $config{batchmode}) { ($width, $height, $wpx, $hpx) = GetTerminalSize(); $lines_left = $height - 2; } else { $height = 999_999; ## I hope you don't have more than that! $lines_left = 999_999; $width = 80; } ## Variable_name and Value pairs come back... my @data = Hashes("SHOW /*mytop*/ STATUS LIKE 'Com\\_%'"); my %cmd_data; my %cmd_delta; my %cmd_pct; my %cmd_delta_pct; my $total; my $delta_total; for my $item (@data) { next unless $item->{Value}; $item->{Variable_name} =~ s/^Com_//; $item->{Variable_name} =~ s/_/ /g; $cmd_data{$item->{Variable_name}} = $item->{Value}; $total += $item->{Value}; } ## Populate other stats for my $item (keys %cmd_data) { $cmd_delta{$item} = $cmd_data{$item} - ($prev_data{$item} || $cmd_data{$item} - 1); $delta_total += $cmd_delta{$item}; $cmd_pct{$item} = int(($cmd_data{$item} / $total) * 100); } for my $item (keys %cmd_data) { $cmd_delta_pct{$item} = int(($cmd_delta{$item} / $delta_total) * 100); } ## Display Clear() unless $config{batchmode}; print RESET(); printf "%18s %10s %4s | %5s %4s\n", 'Command', 'Total', 'Pct', 'Last', 'Pct'; printf "%18s %10s %4s | %5s %4s\n", '-------', '-----', '---', '----', '---'; $lines_left -= 2; for my $item (sort { $cmd_data{$b} <=> $cmd_data{$a} } keys %cmd_data) { printf "%18s %10d %4s | %5d %4s\n", $item, $cmd_data{$item}, $cmd_pct{$item} . "%", $cmd_delta{$item}, $cmd_delta_pct{$item} . "%"; last if not $lines_left; $lines_left -= 1; } %prev_data = %cmd_data; } ########################################################################### sub GetShowVariables() { if (not $config{pager}) { if (not $config{pager} = my_which('less')) { $config{pager} = my_which('more'); } } my @rows = Hashes("SHOW /*mytop*/ VARIABLES"); open P, "|$config{pager}" or die "$!"; for my $row (@rows) { my $name = $row->{Variable_name}; my $value = $row->{Value}; printf P "%32s: %s\n", $name, $value; } close P; } ########################################################################### sub GetShowStatus() { Clear() unless $config{batchmode}; my @rows = Hashes("SHOW /*mytop*/ STATUS"); printf "%32s %10s %10s Toggle idle with 'i'\n", 'Counter', 'Total', 'Change'; printf "%32s %10s %10s\n", '-------', '-----', '------'; for my $row (@rows) { my $name = $row->{Variable_name}; my $value = $row->{Value}; my $old = $statcache{$name}; my $delta = 0; next if $name =~ m/^Com_/; ## skip Com_ stats next if $value =~ m/^[^0-9]*$/; ## skip non-numeric ## TODO: if Qcache is off, we should skip Qcache_ values if ($HAS_COLOR and defined $old and $old =~ /^\d/) { if ($value > $old) { print YELLOW(); $delta = $value - $old; } elsif ($value < $old) { print RED(); $delta = $value - $old; } if (not $config{idle} and $value == $old) { ## filter unchanging stats, maybe print RESET(); next; } } printf "%32s: %10s %10s\n", $name, $value, $delta; print RESET() if $HAS_COLOR; $statcache{$name} = $value; } } ########################################################################### sub FullQueryInfo($) { my $id = shift; if (not exists $qcache{$id} or not defined $qcache{$id}) { print "*** Invalid id. ***\n"; return; } my $sql = $qcache{$id}; print $CLEAR; print "Thread $id was executing following query:\n\n"; print YELLOW(), $sql,"\n\n", RESET(); } ########################################################################### sub Explain($) { my $id = shift; if (not exists $qcache{$id} or not defined $qcache{$id}) { print "*** Invalid id. ***\n"; return; } my $sql = $qcache{$id}; my $db = $dbcache{$id}; Execute("USE /*mytop*/ $db"); my @info = Hashes("EXPLAIN $sql"); print $CLEAR; print "EXPLAIN $sql:\n\n"; PrintTable(@info); } ########################################################################### sub PrintTable(@) { my $cnt = 1; my @cols = qw(table type possible_keys key key_len ref rows Extra); for my $row (@_) { print "*** row $cnt ***\n"; for my $key (@cols) { my $val = $row->{$key} || 'NULL'; printf "%15s: %s\n", $key, $val; } $cnt++; } } ########################################################################### sub StringOrRegex($) { my $input = shift; chomp $input; if (defined $input) { ## regex, strip /.../ and use via qr// if ($input =~ m{^/} and $input =~ m{/$}) { $input =~ s{^/}{} if $config{filter_user}; $input =~ s{/$}{} if $config{filter_user}; $input = qr/$input/; } ## reset to match anything elsif ($input eq '') { $input = qr/.*/; } ## string, build a simple regex else { $input = '^' . $input . '$'; $input = qr/$input/; } } ## reset to match anything else { $input = qr/.*/; } return $input; } ########################################################################### sub cmd_l { ReadMode($RM_RESET); print RED(), "Seconds for long queries: ", RESET(); my $secs = ReadLine(0); if ($secs =~ /^\s*(\d+)/) { $config{long} = $1; if ($config{long} < 1) { $config{long} = 1; } } ReadMode($RM_NOBLKRD); } sub cmd_s { ReadMode($RM_RESET); print RED(), "Seconds of Delay: ", RESET(); my $secs = ReadLine(0); if ($secs =~ /^\s*(\d+)/) { $config{delay} = $1; if ($config{delay} < 1) { $config{delay} = 1; } } ReadMode($RM_NOBLKRD); } sub cmd_S { ReadMode($RM_RESET); print RED(), "Seconds for Slow queries: ", RESET(); my $secs = ReadLine(0); if ($secs =~ /^\s*(\d+)/) { $config{slow} = $1; if ($config{slow} < 1) { $config{slow} = 1; } } ReadMode($RM_NOBLKRD); } sub cmd_q { ReadMode($RM_RESET); print "\n"; exit; } sub trim($) { my $string = shift; $string =~ s/^\s+//; $string =~ s/\s+$//; return $string; } ########################################################################### sub PrintHelp() { my $help = qq[Help for mytop version $main::VERSION by Jeremy D. Zawodny <${YELLOW}Jeremy\@Zawodny.com${RESET}> with updates by Mark Grennan <${YELLOW}mark\@grennan.com${RESET}> and Jean Weisbuch <${YELLOW}jean\@phpnet.org${RESET}> ? - display this screen # - debug mode (toggle) c - command summary view (based on Com_* counters) C - turn color on and off d - show only a specific database e - explain the query that a thread is running E - display current replication error f - show full query info for a given thread F - unfilter the display h - show only a specifc host's connections H - toggle the mytop header i - toggle the display of idle (sleeping) threads I - show innodb status k - kill a thread p - pause the display l - change long running queries hightlighing m - switch [mode] to qps (queries/sec) scrolling view M - switch [mode] to status o - reverse the sort order (toggle) q - quit r - reset the status counters (via FLUSH STATUS on your server) R - change reverse IP lookup s - change the delay between screen updates S - change slow query hightlighting t - switch to thread view (default) u - show only a specific user V - show variables : - enter a command (not yet implemented) ! - Skip an error that has stopped replications (at your own risk) L - show full queries (do not strip to terminal width) w - adjust the User and DB columns width a - toggle the progress column Base version from ${GREEN}http://www.mysqlfanboy.com/mytop-3${RESET} This version comes as part of the ${GREEN}MariaDB${RESET} distribution. ]; print $help; } sub Sum(@) { my $sum; while (my $val = shift @_) { $sum += $val; } return $sum; } ## A useful routine from perlfaq sub commify($) { local $_ = shift; return 0 unless defined $_; 1 while s/^([-+]?\d+)(\d{3})/$1,$2/; return $_; } ## Compact numeric representation (10,000 -> 10.0k) sub make_short($) { my $number = shift; return commify($number) if $config{long_nums}; my $n = 0; while ($number > 1_025) { $number /= 1024; $n++; }; return sprintf "%.1f%s", $number, ('','k','M','G', 'T')[$n]; } ## Run a query and return the records has an array of hashes. sub Hashes($) { my $sql = shift; my @records; if (my $sth = Execute($sql)) { while (my $ref = $sth->fetchrow_hashref) { print "record\n" if $debug; push @records, $ref; } } return @records; } ## Execute an SQL query and return the statement handle. sub Execute($) { my $sql = shift; $sql =~ s/\n/ /sg; my $sth = $dbh->prepare($sql); if (not $sth) { ReadMode($RM_RESET); die $DBI::errstr; } my $ReturnCode = $sth->execute; if (not $ReturnCode) { if ($debug) { print "query failed\n"; sleep 10; } return undef; } return $sth; } #### #### my_which is used, because we can't assume that every system has the #### which command. my_which can take only one argument at a time. #### Return values: requested system command with the first found path, #### or undefined, if not found. #### sub my_which { my ($command) = @_; my (@paths, $path); return $command if (-f $command && -x $command); ## Check first if this is a source distribution, then if this binary distribution and last in the path push @paths, "./extra"; push @paths, $path_for_script; push @paths, split(':', $ENV{'PATH'}); foreach $path (@paths) { $path .= "/$command"; return $path if (-f $path && -x $path); } return undef(); } =pod =head1 SYNOPSIS B<mytop> [options] =head1 AVAILABILITY Base version from B<http://www.mysqlfanboy.com/mytop-3>. This version comes as part of the B<MariaDB> distribution. See B<https://mariadb.org/>. And older (the original) version B<mytop> is available from http://www.mysqlfanboy.com/mytop-3/ it B<might> also be on CPAN as well. =head1 REQUIREMENTS In order for B<mytop> to function properly, you must have the following: * Perl 5.005 or newer * Getopt::Long * DBI and DBD::MariaDB or DBD::mysql * Term::ReadKey from CPAN Most systems are likely to have all of those installed--except for Term::ReadKey. You will need to pick that up from the CPAN. You can pick up Term::ReadKey here: http://search.cpan.org/search?dist=TermReadKey And you obviously need access to a MariaDB server with the necessary security to run the I<SHOW PROCESSLIST> and I<SHOW STATUS> commands. If you are a Windows user, using ActiveState's Perl, you can use PPM (the Perl Package Manager) to install the MariaDB/MySQL and Term::ReadKey modules. =head2 Optional Color Support In additon, if you want a color B<mytop> (recommended), install Term::ANSIColor from the CPAN: http://search.cpan.org/search?dist=ANSIColor Once you do, B<mytop> will automatically use it. However, color is not yet working on Windows. Patches welcome. :-) =head2 Optional Hi-Res Timing If you want B<mytop> to provide more accurate real-time queries-per-second statistics, install the Time::HiRes module from CPAN. B<mytop> will automatically notice that you have it and use it rather than the standard timing mechanism. =head2 Platforms B<mytop> is known to work on: * Linux (2.2.x, 2.4.x) * FreeBSD (2.2, 3.x, 4.x) * Mac OS X * BSDI 4.x * Solaris 2.x * Windows NT 4.x (ActivePerl) If you find that it works on another platform, please let me know. Given that it is all Perl code, I expect it to be rather portable to Unix and Unix-like systems. Heck, it I<might> even work on Win32 systems. =head1 DESCRIPTION Help is always welcome in improving this software. Feel free to contact the author (see L<"AUTHOR"> below) with bug reports, fixes, suggestions, and comments. Additionally L<"BUGS"> will provide a list of things this software is not able to do yet. Having said that, here are the details on how it works and what you can do with it. =head2 The Basics B<mytop> was inspired by the system monitoring tool B<top>. I routinely use B<top> on Linux, FreeBSD, and Solaris. You are likely to notice features from each of them here. B<mytop> will connect to a MariaDB server and periodically run the I<SHOW PROCESSLIST> and I<SHOW STATUS> commands and attempt to summarize the information from them in a useful format. =head2 The Display The B<mytop> display screen is really broken into two parts. The top 4 lines (header) contain summary information about your MariaDB server. For example, you might see something like: MariaDB 10.5.0 on localhost load (3.89 3.86 3.91) up 7+23:56:31 [16:33:01] Queries: 353.4M qps: 531 Slow: 4.5k Se/In/Up/De(%): 87/02/02/00 Sorts: 2390 qps now: 651 Slow qps: 0.0 Threads: 11 ( 1/ 13) 88/01/03/00 Handler: (R/W/U/D) 82138/ 5884/ 20/ 1 Tmp: R/W/U: 13623/29501/ 79 MyISAM Key Cache Efficiency: 99.9% Bps in/out: 157.4k/ 2.2M Now in/out: 554.8k/ 2.6M The first line identifies the hostname of the server (localhost) and the version of MariaDB it is running. The right hand side shows the uptime of the MariaDB server process in days+hours:minutes:seconds format (much like FreeBSD's top) as well as the current time. The second line displays the total number of queries the server has processed, the average number of queries per second, the number of slow queries, and the percentage of Select, Insert, Update, and Delete queries. The third real-time values. First is the number of queries per second, then the number of slow queries, followed by query precentages (like on the previous line). And the fourth line displays key buffer efficiency (how often keys are read from the buffer rather than disk) and the number of bytes that MariaDB has sent and received, both over all and in the last cycle. You can toggle the header by hitting B<H> when running B<mytop>. The second part of the display lists as many threads as can fit on screen. By default they are sorted according to their idle time (least idle first). The display looks like: Id User Host Dbase Time Cmd Query or State -- ---- ---- ----- ---- --- -------------- 61 jzawodn localhost music 0 Query show processlist As you can see, the thread id, username, host from which the user is connecting, database to which the user is connected, number of seconds of idle time, the command the thread is executing, and the query info are all displayed. Often times the query info is what you are really interested in, so it is good to run B<mytop> in an xterm that is wider than the normal 80 columns if possible. The thread display color-codes the threads if you have installed color support. The current color scheme only works well in a window with a dark (like black) background. The colors are selected according to the C<Command> column of the display: Query - Yellow Sleep - White Connect - Green Slow - Bright Long - Magenta Those are purely arbitrary and will be customizable in a future release. If they annoy you just start B<mytop> with the B<--nocolor> flag or adjust your config file appropriately. =head2 Arguments B<mytop> handles long and short command-line arguments. Not all options have both long and short formats, however. The long arguments have two dashes `--'. Short arguments only have one '-'. =over =item B<-u> or B<--user> username Username to use when logging in to the MariaDB server. Default: ``B<root>''. =item B<-p> or B<--pass> or B<--password> I<password> Password to use when logging in to the MariaDB server. Default: none. WARNING: This is insecure as the password is visible for anyone. See B<--prompt> instead! =item B<-h> or B<--host> I<hostname>[B<:>I<port>] Hostname of the MariaDB server. The hostname may be followed by an option port number. Note that the port is specified separate from the host when using a config file. Default: ``B<localhost>''. =item B<--port> or B<-P> I<port> If you're running MariaDB on a non-standard port, use this to specify the port number. Default: B<3306>. =item B<-s> or B<--delay> I<seconds> How long between display refreshes. Default: B<5> =item B<-d> or B<--db> or B<--database> I<database> Use if you'd like B<mytop> to connect to a specific database by default. Default: none. =item B<-b> or B<--batch> or B<--batchmode> In batch mode, mytop runs only once, does not clear the screen, and places no limit on the number of lines it will print. This is suitable for running periodically (perhaps from B<cron>) to capture the information into a file for later viewing. You might use batch mode in a CGI script to occasionally display your MariaDB server status on the web. Default: unset. =item B<-S> or B<--socket> I</path/to/socket> If you're running B<mytop> on the same host as MariaDB/MySQL, you may wish to have it use the MariaDB/MySQL socket directly rather than a standard TCP/IP connection. If you do,just specify one. Note that specifying a socket will make B<mytop> ignore any host and/or port that you might have specified. If the socket does not exist (or the file specified is not a socket), this option will be ignored and B<mytop> will use the hostname and port number instead. Default: none. =item B<--header> or B<--noheader> Specify if you want the header to display or not. You can toggle this with the B<h> key while B<mytop> is running. Default: header. =item B<--color> or B<--nocolor> Specify if you want a color display. This has no effect if you don't have color support available. Default: If you have color support, B<mytop> will try color unless you tell it not to. =item B<-i> or B<--idle> or B<--noi> or B<--noidle> Specify if you want idle (sleeping) threads to appear in the list. If sleeping threads are omitted, the default sorting order is reversed so that the longest running queries appear at the top of the list. Default: idle. =item B<--prompt> or B<--noprompt> Specify if you want to be prompted to type in your database password. This provides a little bit more security since it not only prevents the password from viewable in a process list, but also doesn't require the password to be stored in plain text in your C<~/.mytop> config file. You will B<only> be prompted if a password has not been specified in your config file or through another command line option. Default: noprompt. =item B<--resolve> If you have skip-resolve set on MariaDB (to keep it from doing a reverse DNS lookup on each inbound connection), mytop can replace IP addresses with hostnames but toggling this option. Default: noresolve =item B<--long> or B<--nolong> For large numbers print all digits (e.g. 10.000) instead of using a more compact approximation (e.g. 10.0k). Default: nolong. =item B<-m> or B<--mode> I<mode> Specify initial mode B<qps>(queries/second), B<top>(overview), B<cmd>(command summary), B<innodb>(InnoDB status) or B<status>(). Default: B<top> =item B<--sort> or B<--nosort> Reverse sort order from ascending to descending using Idle time. Default: nosort. =back Command-line arguments will always take precedence over config file options. That happens because the config file is read I<BEFORE> the command-line arguments are applied. =head2 Config File Instead of always using bulky command-line parameters, you can also use a config files for the default value of your options. mytop will first read the [client] and [mytop] sections from your my.cnf files. After that it will read the (C<~/.mytop>) file from your home directory (if present). These are read I<before> any of your command-line arguments are processed, so your command-line arguments will override directives in the config file. Here is a sample config file C<~/.mytop> which implements the defaults described above. user=root pass= host=localhost db=test delay=5 port=3306 slow=10 socket= batchmode=0 header=1 color=1 idle=1 long=120 Using a config file will help to ensure that your database password isn't visible to users on the command-line. Just make sure that the permissions on C<~/.mytop> are such that others cannot read it (unless you want them to, of course). You may have white space on either side of the C<=> in lines of the config file. =head2 Shortcut Keys The following keys perform various actions while B<mytop> is running. Those which have not been implemented are listed as such. They are included to give the user idea of what is coming. =over =item B<?> Display help. =item B<c> Show "command counters" based on the Com_* values in SHOW STATUS. This is a new feature. Feedback welcome. =item B<C> Turn display color on and off. Default is on. =item B<d> Show only threads connected to a particular database. =item B<f> Given a thread id, display the entire query that thread was (and still may be) running. =item B<F> Disable all filtering (host, user, and db). =item B<h> Only show queries from a particular host. =item B<H> Toggle the header display. You can also specify either C<header=0> or C<header=1> in your config file to set the default behavior. =item B<i> Toggle the display of idle (sleeping) threads. If sleeping threads are filtered, the default sorting order is reversed so that the longest running queries appear at the top of the list. =item B<I> Switch to InnoDB Status mode. The output of "SHOW ENGINE INNODB STATUS" will be displayed every cycle. In a future version, this may actually summarize that data rather than producing raw output. =item B<k> Kill a thread. =item B<m> Toggle modes. Currently this switches from `top' mode to `qps' (Queries Per Second Mode). In this mode, mytop will write out one integer per second. The number written reflects the number of queries executed by the server in the previous one second interval. More modes may be added in the future. =item B<o> Reverse the default sort order. =item B<p> Pause display. =item B<q> Quit B<mytop> =item B<r> Reset the server's status counters via a I<FLUSH STATUS> command. =item B<R> Togle IP reverse lookup. Default is on. =item B<s> Change the sleep time (number of seconds between display refreshes). =item B<S> Set the number of seconds a query will need to run before it is considered old and will be highlighted. =item B<u> Show only threads owned by a giver user. =back The B<s> key has a command-line counterpart: B<-s>. The B<h> key has two command-line counterparts: B<--header> and B<--noheader>. =head1 BUGS This is more of a BUGS + WishList. Some performance information is not available when talking to a version 3.22.x MySQL server. Additional information (about threads mostly) was added to the output of I<SHOW STATUS> in MySQL 3.23.x and B<mytop> makes use of it. If the information is not available, you will simply see zeros where the real numbers should be. Simply running this program will increase your overall counters (such as the number of queries run). But you may or may not view that as a bug. B<mytop> consumes too much CPU time when running (verified on older versions of Linux and FreeBSD). It's likely a problem related to Term::ReadKey. I haven't had time to investigate yet, so B<mytop> now automatically lowers its priority when you run it. You may also think about running B<mytop> on another workstation instead of your database server. However, C<mytop> on Solaris does B<not> have this problem. Newer versions of Linux and FreeBSD seem to have fixed this. You can't specify the maximum number of threads to list. If you have many threads and a tall xterm, B<mytop> will always try to display as many as it can fit. The size of most of the columns in the display has a small maximum width. If you have fairly long database/user/host names the display may appear odd. I have no good idea as to how best to deal with that yet. Suggestions are welcome. It'd be nice if you could just add B<mytop> configuration directives in your C<my.cnf> file instead of having a separate config file. You should be able to specify the columns you'd like to see in the display and the order in which they appear. If you only have one username that connects to your database, it's probably not worth having the User column appear, for example. =head1 AUTHOR mytop was developed and is maintained by Jeremy D. Zawodny (Jeremy@Zawodny.com). If you wish to e-mail me regarding this software, B<PLEASE> subscribe to the B<mytop> mailing list. See the B<mytop> homepage for details. =head1 DISCLAIMER While I use this software in my job at Yahoo!, I am solely responsible for it. Yahoo! does not necessarily support this software in any way. It is merely a personal idea which happened to be very useful in my job. =head1 SEE ALSO Please check the MariaDB manual if you're not sure where some of the output of B<mytop> is coming from. =head1 COPYRIGHT Copyright (C) 2000-2010, Jeremy D. Zawodny. =head1 CREDITS Fix a bug. Add a feature. See your name here! Many thanks go to these fine folks: =over =item Jean Weisbuch (jean@phpnet.org) Added --fullqueries and --sort options, dynamic user and database columns width, reading of .my.cnf, state/progress column that can be disabled dynamically (when available) and various small fixes. =item Michael "Monty" Widenius <monty@askmonty.org> Fixed a couple of minor bugs that gave warnings on startup. Added support for MariaDB (show MariaDB at top and % done). Cut long server version names to display width. Made 'State' length dynamic. =item Mark Grennan (mark@grennan.com) www.linuxfangoy.com Added updates for MySQL 5.x. Added 'S' (slow) highlighting. Added 'C' to turn on and off Color. Added 'l' command to change color for long running queries. Fixed a few documentation issues. Monitors Slave status. Added color to Queue hit ratio. Added number of rows sorted per second. Created release 1.7. =item Sami Ahlroos (sami@avis-net.de) Suggested the idle/noidle stuff. =item Jan Willamowius (jan@janhh.shnet.org) Minor bug report. Documentation fixes. =item Alex Osipov (alex@acky.net) Long command-line options, Unix socket support. =item Stephane Enten (tuf@grolier.fr) Suggested batch mode. =item Richard Ellerbrock (richarde@eskom.co.za) Bug reports and usability suggestions. =item William R. Mattil (wrm@newton.irngtx.tel.gte.com) Bug report about empty passwords not working. =item Benjamin Pflugmann (philemon@spin.de) Suggested -P command-line flag as well as other changes. =item Justin Mecham <justin@aspect.net> Suggested setting $0 to `mytop'. =item Thorsten Kunz <thorsten.kunz@de.tiscali.com> Provided a fix for cases when we try remove the domain name from the display even if it is actually an IP address. =item Sasha Pachev <sasha@mysql.com> Provided the idea of real-time queries per second in the main display. =item Paul DuBois <paul@snake.net> Pointed out some option-handling bugs. =item Mike Wexler <mwexler@tias.com> Suggested that we don't mangle (normalize) whitespace in query info by default. =item Mark Zweifel <markez@yahoo-inc.com> Make the --idle command-line argument negatable. =item Axel Schwenke <schwenke@jobpilot.de> Noticed the incorrect formula for query cache hit percentages in version 1.2. =item Steven Roussey <sroussey@network54.com> Supplied a patch to help filter binary junk in queries so that terminals don't freak out. =item Jon R. Luini <falcon@chime.com> Supplied a patch that formed the basis for C<--prompt> support. Sean Leach <sleach@wiggum.com> submitted a similar patch. =item Yogish Baliga <baliga@yahoo-inc.com> Supplied a patch that formed the basis for C<--resolve> support. =item Per Andreas Buer <perbu@linpro.no> Supplied an excellent patch to tidy up the top display. This includes showing most values in short form, such as 10k rather than 10000. =back See the Changes file on the B<mytop> distribution page for more details on what has changed. =head1 LICENSE B<mytop> is licensed under the GNU General Public License version 2. For the full license information, please visit http://www.gnu.org/copyleft/gpl.html =cut __END__
Close