Linux ns8.secondary29.go.th 2.6.32-754.28.1.el6.x86_64 #1 SMP Wed Mar 11 18:38:45 UTC 2020 x86_64
Apache/2.2.15 (CentOS)
: 122.154.134.11 | : 122.154.134.9
Cant Read [ /etc/named.conf ]
5.6.40
apache
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
.fipscheck.hmac
65
B
-rw-r--r--
.ssh.hmac
65
B
-rw-r--r--
411toppm
11.26
KB
-rwxr-xr-x
5250keys
876
B
-rwxr-xr-x
GET
14.18
KB
-rwxr-xr-x
HEAD
14.18
KB
-rwxr-xr-x
Mail
381.95
KB
-rwxr-xr-x
POST
14.18
KB
-rwxr-xr-x
[
36.13
KB
-rwxr-xr-x
a2p
109.27
KB
-rwxr-xr-x
a2ping
91.65
KB
-rwxr-xr-x
ab
49.54
KB
-rwxr-xr-x
abrt-action-analyze-backtrace
21.81
KB
-rwxr-xr-x
abrt-action-analyze-c
20.66
KB
-rwxr-xr-x
abrt-action-analyze-ccpp-local
1.28
KB
-rwxr-xr-x
abrt-action-analyze-core
6.52
KB
-rwxr-xr-x
abrt-action-analyze-oops
21.26
KB
-rwxr-xr-x
abrt-action-analyze-python
19.73
KB
-rwxr-xr-x
abrt-action-generate-backtrace
21.13
KB
-rwxr-xr-x
abrt-action-generate-core-back...
19.93
KB
-rwxr-xr-x
abrt-action-install-debuginfo
7.02
KB
-rwxr-xr-x
abrt-action-list-dsos
2.69
KB
-rwxr-xr-x
abrt-action-notify
8.66
KB
-rwxr-xr-x
abrt-action-save-kernel-data
1.26
KB
-rwxr-xr-x
abrt-action-save-package-data
29.41
KB
-rwxr-xr-x
abrt-action-trim-files
24.56
KB
-rwxr-xr-x
abrt-cli
31.16
KB
-rwxr-xr-x
abrt-cli-root
8.67
KB
-rwxr-xr-x
abrt-dedup-client
36.2
KB
-rwxr-xr-x
abrt-dump-oops
28.66
KB
-rwxr-xr-x
abrt-handle-upload
8.79
KB
-rwxr-xr-x
ac
24.23
KB
-rwxr-xr-x
aclocal
30.45
KB
-rwxr-xr-x
aclocal-1.11
30.45
KB
-rwxr-xr-x
aconnect
22.37
KB
-rwxr-xr-x
acpi_listen
14.63
KB
-rwxr-xr-x
addftinfo
25.52
KB
-rwxr-xr-x
addr2line
29.16
KB
-rwxr-xr-x
afs5log
76.61
KB
-rwxr-xr-x
aleph
458.53
KB
-rwxr-xr-x
allcm
3.3
KB
-rwxr-xr-x
allec
3.3
KB
-rwxr-xr-x
allneeded
903
B
-rwxr-xr-x
alsa-info
27.22
KB
-rwxr-xr-x
alsa-info.sh
27.22
KB
-rwxr-xr-x
alsaloop
1.49
MB
-rwxr-xr-x
alsamixer
74.68
KB
-rwxr-xr-x
amidi
22.94
KB
-rwxr-xr-x
amixer
54.85
KB
-rwxr-xr-x
amstex
650.74
KB
-rwxr-xr-x
anytopnm
11.11
KB
-rwxr-xr-x
aplay
76.96
KB
-rwxr-xr-x
aplaymidi
25.51
KB
-rwxr-xr-x
apropos
1.74
KB
-rwxr-xr-x
ar
59.55
KB
-rwxr-xr-x
arecord
76.96
KB
-rwxr-xr-x
arecordmidi
28.36
KB
-rwxr-xr-x
as
529.23
KB
-rwxr-xr-x
asciitopgm
10.2
KB
-rwxr-xr-x
aseqdump
20.84
KB
-rwxr-xr-x
aseqnet
21.88
KB
-rwxr-xr-x
aserver
32.12
KB
-rwxr-xr-x
assistant-qt4
947.75
KB
-rwxr-xr-x
assistant_adp
603.22
KB
-rwxr-xr-x
at
53.19
KB
-rwsr-xr-x
atktopbm
11.36
KB
-rwxr-xr-x
atq
53.19
KB
-rwsr-xr-x
atrm
53.19
KB
-rwsr-xr-x
attr
13.52
KB
-rwxr-xr-x
aulast
18.31
KB
-rwxr-xr-x
aulastlog
12.88
KB
-rwxr-xr-x
ausyscall
11.02
KB
-rwxr-xr-x
autoconf
14.29
KB
-rwxr-xr-x
autoheader
8.29
KB
-rwxr-xr-x
autom4te
31.04
KB
-rwxr-xr-x
automake
251.04
KB
-rwxr-xr-x
automake-1.11
251.04
KB
-rwxr-xr-x
autopoint
18.32
KB
-rwxr-xr-x
autoreconf
19.76
KB
-rwxr-xr-x
autoscan
16.67
KB
-rwxr-xr-x
autoupdate
32.97
KB
-rwxr-xr-x
auvirt
34.01
KB
-rwxr-xr-x
awk
373.78
KB
-rwxr-xr-x
b2m
10.87
KB
-rwxr-xr-x
b43-fwcutter
26.95
KB
-rwxr-xr-x
base64
32.08
KB
-rwxr-xr-x
bashbug-64
6.77
KB
-rwxr-xr-x
batch
137
B
-rwxr-xr-x
bc
85.78
KB
-rwxr-xr-x
bdftopcf
10.91
KB
-rwxr-xr-x
bdftops
292
B
-rwxr-xr-x
berkeley_db_svc
74.05
KB
-rwxr-xr-x
bibtex
100.58
KB
-rwxr-xr-x
bibtex8
126.81
KB
-rwxr-xr-x
bioradtopgm
10.41
KB
-rwxr-xr-x
bison
296.2
KB
-rwxr-xr-x
blkiomon
24.82
KB
-rwxr-xr-x
blkparse
46.11
KB
-rwxr-xr-x
blkrawverify
15.17
KB
-rwxr-xr-x
blktrace
38.83
KB
-rwxr-xr-x
bmp2tiff
17.5
KB
-rwxr-xr-x
bmptopnm
22.91
KB
-rwxr-xr-x
bmptoppm
22.91
KB
-rwxr-xr-x
bno_plot.py
3.38
KB
-rwxr-xr-x
brushtopbm
9.32
KB
-rwxr-xr-x
btrace
891
B
-rwxr-xr-x
btrecord
16.55
KB
-rwxr-xr-x
btreplay
26.84
KB
-rwxr-xr-x
btt
72.35
KB
-rwxr-xr-x
build-classpath
1.5
KB
-rwxr-xr-x
build-classpath-directory
383
B
-rwxr-xr-x
build-jar-repository
1.54
KB
-rwxr-xr-x
bunzip2
35.48
KB
-rwxr-xr-x
byacc
76.46
KB
-rwxr-xr-x
bzcat
35.48
KB
-rwxr-xr-x
bzcmp
2.08
KB
-rwxr-xr-x
bzdiff
2.08
KB
-rwxr-xr-x
bzgrep
1.64
KB
-rwxr-xr-x
bzip2
35.48
KB
-rwxr-xr-x
bzip2recover
13.14
KB
-rwxr-xr-x
bzless
1.23
KB
-rwxr-xr-x
bzmore
1.23
KB
-rwxr-xr-x
c++
264.98
KB
-rwxr-xr-x
c++filt
28.54
KB
-rwxr-xr-x
c2ph
35.74
KB
-rwxr-xr-x
c89
224
B
-rwxr-xr-x
c99
215
B
-rwxr-xr-x
ca-legacy
1.61
KB
-rwxr-xr-x
cal
21.09
KB
-rwxr-xr-x
callgrind_annotate
39.92
KB
-rwxr-xr-x
callgrind_control
11.25
KB
-rwxr-xr-x
cameratopam
110.96
KB
-rwxr-xr-x
cancel
14.33
KB
-rwxr-xr-x
cancel.cups
14.33
KB
-rwxr-xr-x
captoinfo
52.52
KB
-rwxr-xr-x
cas
17.01
KB
-rwxr-xr-x
cas-admin
9.84
KB
-rwxr-xr-x
catchsegv
3.3
KB
-rwxr-xr-x
cc
265.34
KB
-rwxr-xr-x
ccache-swig
49.04
KB
-rwxr-xr-x
certmaster-getcert
130.03
KB
-rwxr-xr-x
certutil
172.66
KB
-rwxr-xr-x
certwatch
18.33
KB
-rwxr-xr-x
cg_annotate
31.42
KB
-rwxr-xr-x
cg_diff
10.17
KB
-rwxr-xr-x
cg_merge
68.01
KB
-rwxr-xr-x
chacl
16.82
KB
-rwxr-xr-x
chage
68.83
KB
-rwsr-xr-x
chainsaw
693
B
-rwxr-xr-x
chattr
13.8
KB
-rwxr-xr-x
chcon
58.28
KB
-rwxr-xr-x
check-binary-files
3.25
KB
-rwxr-xr-x
checkmodule
274.53
KB
-rwxr-xr-x
checkpolicy
282.53
KB
-rwxr-xr-x
checksctp
7.75
KB
-rwxr-xr-x
cheetah
73
B
-rwxr-xr-x
cheetah-analyze
114
B
-rwxr-xr-x
cheetah-compile
89
B
-rwxr-xr-x
chfn
19.71
KB
-rws--x--x
chrt
12.77
KB
-rwxr-xr-x
chsh
19.59
KB
-rws--x--x
chvt
9.82
KB
-rwxr-xr-x
ci
90.02
KB
-rwxr-xr-x
cifsiostat
55.98
KB
-rwxr-xr-x
cjpeg
31.84
KB
-rwxr-xr-x
ck-history
27.01
KB
-rwxr-xr-x
ck-launch-session
11.2
KB
-rwxr-xr-x
ck-list-sessions
15.39
KB
-rwxr-xr-x
cksum
28.14
KB
-rwxr-xr-x
clean-binary-files
12.91
KB
-rwxr-xr-x
clear
8.16
KB
-rwxr-xr-x
cloog
14.98
KB
-rwxr-xr-x
clusterdb
57.98
KB
-rwxr-xr-x
cmp
23.09
KB
-rwxr-xr-x
cmsutil
103.77
KB
-rwxr-xr-x
cmuwmtopbm
9.7
KB
-rwxr-xr-x
co
85.62
KB
-rwxr-xr-x
col
14.21
KB
-rwxr-xr-x
colcrt
11.04
KB
-rwxr-xr-x
colrm
8.64
KB
-rwxr-xr-x
column
13.16
KB
-rwxr-xr-x
combinediff
48.13
KB
-rwxr-xr-x
comm
31.3
KB
-rwxr-xr-x
config_data
7.07
KB
-rwxr-xr-x
consolehelper
8.67
KB
-rwxr-xr-x
corelist
6.36
KB
-rwxr-xr-x
cpan
11.56
KB
-rwxr-xr-x
cpan2dist
21.88
KB
-rwxr-xr-x
cpanp
3.32
KB
-rwxr-xr-x
cpanp-run-perl
536
B
-rwxr-xr-x
cpp
264.98
KB
-rwxr-xr-x
crash
7.07
MB
-rwxr-xr-x
create-jar-links
4.55
KB
-rwxr-xr-x
createdb
59.52
KB
-rwxr-xr-x
createlang
61.05
KB
-rwxr-xr-x
createuser
59.81
KB
-rwxr-xr-x
crlutil
115.62
KB
-rwxr-xr-x
crontab
50.57
KB
-rwsr-xr-x
cscope
327.81
KB
-rwxr-xr-x
cscope-indexer
3.77
KB
-rwxr-xr-x
cslatex
650.74
KB
-rwxr-xr-x
csplain
650.74
KB
-rwxr-xr-x
csplit
106.16
KB
-rwxr-xr-x
csslint-0.6
22.67
KB
-rwxr-xr-x
ctags
230.13
KB
-rwxr-xr-x
ctangle
43.22
KB
-rwxr-xr-x
ctie
18.92
KB
-rwxr-xr-x
cupstestdsc
14.23
KB
-rwxr-xr-x
cupstestppd
62.62
KB
-rwxr-xr-x
curl
131.35
KB
-rwxr-xr-x
cut
44.47
KB
-rwxr-xr-x
cvs
626.08
KB
-rwxr-xr-x
cvsbug
13.7
KB
-rwxr-xr-x
cweave
80.28
KB
-rwxr-xr-x
db_archive
11.8
KB
-rwxr-xr-x
db_checkpoint
13.79
KB
-rwxr-xr-x
db_codegen
25.59
KB
-rwxr-xr-x
db_deadlock
14.16
KB
-rwxr-xr-x
db_dump
15.8
KB
-rwxr-xr-x
db_dump185
63.81
KB
-rwxr-xr-x
db_hotbackup
20.88
KB
-rwxr-xr-x
db_load
26.78
KB
-rwxr-xr-x
db_printlog
69.6
KB
-rwxr-xr-x
db_recover
13.48
KB
-rwxr-xr-x
db_stat
14.5
KB
-rwxr-xr-x
db_upgrade
12.31
KB
-rwxr-xr-x
db_verify
12.9
KB
-rwxr-xr-x
dbilogstrip
1.43
KB
-rwxr-xr-x
dbiprof
6.15
KB
-rwxr-xr-x
dbiproxy
5.35
KB
-rwxr-xr-x
dbus-binding-tool
87.89
KB
-rwxr-xr-x
dc
48.65
KB
-rwxr-xr-x
ddate
13.68
KB
-rwxr-xr-x
ddbugtopbm
10.95
KB
-rwxr-xr-x
deallocvt
10.28
KB
-rwxr-xr-x
debuginfo-install
7.46
KB
-rwxr-xr-x
dehtmldiff
1.32
KB
-rwxr-xr-x
desktop-file-install
51.77
KB
-rwxr-xr-x
desktop-file-validate
43.81
KB
-rwxr-xr-x
dialog
35.69
KB
-rwxr-xr-x
diff
84.34
KB
-rwxr-xr-x
diff-jars
1.2
KB
-rwxr-xr-x
diff3
26.94
KB
-rwxr-xr-x
diffstat
34.27
KB
-rwxr-xr-x
dig
150.51
KB
-rwxr-xr-x
dir
114.3
KB
-rwxr-xr-x
dircolors
35.74
KB
-rwxr-xr-x
dirname
25.65
KB
-rwxr-xr-x
djpeg
32.17
KB
-rwxr-xr-x
dltest
10.8
KB
-rwxr-xr-x
dmp
37.08
KB
-rwxr-xr-x
doxygen
5.47
MB
-rwxr-xr-x
doxytag
285.77
KB
-rwxr-xr-x
dprofpp
23.52
KB
-rwxr-xr-x
drill
63.46
KB
-rwxr-xr-x
dropdb
55.79
KB
-rwxr-xr-x
droplang
63.36
KB
-rwxr-xr-x
dropuser
55.79
KB
-rwxr-xr-x
dstat
81.42
KB
-rwxr-xr-x
du
96.88
KB
-rwxr-xr-x
dumphint
554
B
-rwxr-xr-x
dvi2fax
1.07
KB
-rwxr-xr-x
dvipdf
1.03
KB
-rwxr-xr-x
dvips
203.13
KB
-rwxr-xr-x
dvired
3.01
KB
-rwxr-xr-x
dvitomp
38.8
KB
-rwxr-xr-x
e2pall
2.66
KB
-rwxr-xr-x
easy_install
323
B
-rwxr-xr-x
easy_install-2.6
331
B
-rwxr-xr-x
ebrowse
46.57
KB
-rwxr-xr-x
ecj
117
B
-rwxr-xr-x
editdiff
1.91
KB
-rwxr-xr-x
eject
8.67
KB
-rwxr-xr-x
elinks
1.2
MB
-rwxr-xr-x
emacs
10.51
MB
-rwxr-xr-t
emacs-23.1
10.51
MB
-rwxr-xr-t
emacsclient
24.71
KB
-rwxr-xr-x
enc2xs
38.23
KB
-rwxr-xr-x
env
25.75
KB
-rwxr-xr-x
envsubst
32.77
KB
-rwxr-xr-x
eplain
650.74
KB
-rwxr-xr-x
eps2eps
632
B
-rwxr-xr-x
epsffit
13.96
KB
-rwxr-xr-x
epstopdf
12.02
KB
-rwxr-xr-x
eqn
140.8
KB
-rwxr-xr-x
eqn2graph
2.19
KB
-rwxr-xr-x
escp2topbm
9.98
KB
-rwxr-xr-x
espdiff
1.53
KB
-rwxr-xr-x
etags
100.07
KB
-rwxr-xr-x
etags.emacs
100.07
KB
-rwxr-xr-x
etex
650.74
KB
-rwxr-xr-x
eu-addr2line
25.46
KB
-rwxr-xr-x
eu-ar
36.27
KB
-rwxr-xr-x
eu-elfcmp
33.06
KB
-rwxr-xr-x
eu-elflint
101.55
KB
-rwxr-xr-x
eu-findtextrel
19.51
KB
-rwxr-xr-x
eu-make-debug-archive
2.84
KB
-rwxr-xr-x
eu-nm
46.32
KB
-rwxr-xr-x
eu-objdump
33.37
KB
-rwxr-xr-x
eu-ranlib
20.49
KB
-rwxr-xr-x
eu-readelf
174.43
KB
-rwxr-xr-x
eu-size
18.76
KB
-rwxr-xr-x
eu-stack
29.21
KB
-rwxr-xr-x
eu-strings
19.82
KB
-rwxr-xr-x
eu-strip
50.24
KB
-rwxr-xr-x
eu-unstrip
48.64
KB
-rwxr-xr-x
execstack
180.27
KB
-rwxr-xr-x
expand
29.79
KB
-rwxr-xr-x
expr
97.88
KB
-rwxr-xr-x
extconv
8
KB
-rwxr-xr-x
eyuvtoppm
11.86
KB
-rwxr-xr-x
f95
277.73
KB
-rwxr-xr-x
factor
47.84
KB
-rwxr-xr-x
fallocate
11.33
KB
-rwxr-xr-x
fastjar
47.43
KB
-rwxr-xr-x
fax2ps
19.02
KB
-rwxr-xr-x
fax2tiff
17.92
KB
-rwxr-xr-x
fc-cache
17.02
KB
-rwxr-xr-x
fc-cat
15.1
KB
-rwxr-xr-x
fc-list
12.71
KB
-rwxr-xr-x
fc-match
13.98
KB
-rwxr-xr-x
fc-query
11.38
KB
-rwxr-xr-x
fc-scan
11.74
KB
-rwxr-xr-x
fgconsole
10.38
KB
-rwxr-xr-x
fiascotopnm
92.72
KB
-rwxr-xr-x
file
19.32
KB
-rwxr-xr-x
filterdiff
44.24
KB
-rwxr-xr-x
find
233.4
KB
-rwxr-xr-x
find-jar
749
B
-rwxr-xr-x
find-repos-of-install
4.27
KB
-rwxr-xr-x
find2perl
23.06
KB
-rwxr-xr-x
findsmb
4.5
KB
-rwxr-xr-x
fipscheck
14.57
KB
-rwxr-xr-x
fipshmac
13.9
KB
-rwxr-xr-x
fitstopnm
16.29
KB
-rwxr-xr-x
fixcvsdiff
1.83
KB
-rwxr-xr-x
flac
191.95
KB
-rwxr-xr-x
flex
329.84
KB
-rwxr-xr-x
flex++
329.84
KB
-rwxr-xr-x
flipdiff
48.13
KB
-rwxr-xr-x
flock
14.15
KB
-rwxr-xr-x
floppy
27.98
KB
-rwxr-xr-x
fmt
33.23
KB
-rwxr-xr-x
fmtutil
28.47
KB
-rwxr-xr-x
fmtutil-sys
831
B
-rwxr-xr-x
fold
30.95
KB
-rwxr-xr-x
font2c
300
B
-rwxr-xr-x
fontinst
552
B
-rwxr-xr-x
fonttosfnt
36.59
KB
-rwxr-xr-x
foomatic-combo-xml
45.17
KB
-rwxr-xr-x
foomatic-compiledb
4.52
KB
-rwxr-xr-x
foomatic-configure
133.59
KB
-rwxr-xr-x
foomatic-datafile
9.45
KB
-rwxr-xr-x
foomatic-perl-data
81.95
KB
-rwxr-xr-x
foomatic-ppd-options
3.91
KB
-rwxr-xr-x
foomatic-ppd-to-xml
8.79
KB
-rwxr-xr-x
foomatic-ppdfile
9.45
KB
-rwxr-xr-x
foomatic-printjob
34.27
KB
-rwxr-xr-x
foomatic-rip
108.56
KB
-rwxr-xr-x
foomatic-searchprinter
2.43
KB
-rwxr-xr-x
fprintd-delete
12.99
KB
-rwxr-xr-x
fprintd-enroll
12.7
KB
-rwxr-xr-x
fprintd-list
13.45
KB
-rwxr-xr-x
fprintd-verify
14.66
KB
-rwxr-xr-x
free
14.02
KB
-rwxr-xr-x
fstopgm
10.46
KB
-rwxr-xr-x
funzip
24.84
KB
-rwxr-xr-x
g++
264.98
KB
-rwxr-xr-x
g3topbm
15.47
KB
-rwxr-xr-x
gawk
373.78
KB
-rwxr-xr-x
gcc
265.34
KB
-rwxr-xr-x
gcj-dbtool
36.13
KB
-rwxr-xr-x
gconf-merge-tree
60.98
KB
-rwxr-xr-x
gconftool-2
70.29
KB
-rwxr-xr-x
gcore
1.99
KB
-rwxr-xr-x
gcov
43.09
KB
-rwxr-xr-x
gctags
101.78
KB
-rwxr-xr-x
gdb
4.3
MB
-rwxr-xr-x
gdb-add-index
1.07
KB
-rwxr-xr-x
gdbtui
4.3
MB
-rwxr-xr-x
gdbus
37.91
KB
-rwxr-xr-x
gdk-pixbuf-query-loaders-64
16.42
KB
-rwxr-xr-x
gemtopbm
12.04
KB
-rwxr-xr-x
gemtopnm
12.04
KB
-rwxr-xr-x
gencat
25.18
KB
-rwxr-xr-x
gendiff
586
B
-rwxr-xr-x
genkey
43.96
KB
-rwxr-xr-x
geqn
140.8
KB
-rwxr-xr-x
getafm
5.98
KB
-rwxr-xr-x
getcert
134.02
KB
-rwxr-xr-x
getcifsacl
10.2
KB
-rwxr-xr-x
getconf
24.93
KB
-rwxr-xr-x
getent
29.79
KB
-rwxr-xr-x
getfacl
25.63
KB
-rwxr-xr-x
getfattr
21.46
KB
-rwxr-xr-x
getkeycodes
10.54
KB
-rwxr-xr-x
getopt
15.27
KB
-rwxr-xr-x
gettext
32.7
KB
-rwxr-xr-x
gettext.sh
4.54
KB
-rwxr-xr-x
gettextize
40.92
KB
-rwxr-xr-x
gfortran
277.73
KB
-rwxr-xr-x
gftodvi
45.33
KB
-rwxr-xr-x
gftopk
26.82
KB
-rwxr-xr-x
gftype
26.74
KB
-rwxr-xr-x
ghostscript
18.68
KB
-rwxr-xr-x
gif2tiff
17.47
KB
-rwxr-xr-x
giftopnm
23.99
KB
-rwxr-xr-x
gij
9.55
KB
-rwxr-xr-x
gindxbib
31.53
KB
-rwxr-xr-x
gio-querymodules-64
14.03
KB
-rwxr-xr-x
git
1.09
MB
-rwxr-xr-x
git-receive-pack
1.09
MB
-rwxr-xr-x
git-shell
450.64
KB
-rwxr-xr-x
git-upload-archive
1.09
MB
-rwxr-xr-x
git-upload-pack
460.71
KB
-rwxr-xr-x
gjar
10.21
KB
-rwxr-xr-x
gjarsigner
10.23
KB
-rwxr-xr-x
gkeytool
10.22
KB
-rwxr-xr-x
glib-compile-schemas
42.34
KB
-rwxr-xr-x
glookbib
39.98
KB
-rwxr-xr-x
gmake
169.15
KB
-rwxr-xr-x
gneqn
255
B
-rwxr-xr-x
gnroff
2.34
KB
-rwxr-xr-x
gorbd
10.21
KB
-rwxr-xr-x
gouldtoppm
10.08
KB
-rwxr-xr-x
gpasswd
73.87
KB
-rwsr-xr-x
gpg
750.44
KB
-rwxr-xr-x
gpg-agent
298.02
KB
-rwxr-xr-x
gpg-connect-agent
175.2
KB
-rwxr-xr-x
gpg-error
21.33
KB
-rwxr-xr-x
gpg-zip
3.23
KB
-rwxr-xr-x
gpg2
750.44
KB
-rwxr-xr-x
gpgconf
132.59
KB
-rwxr-xr-x
gpgkey2ssh
39.55
KB
-rwxr-xr-x
gpgparsemail
26.02
KB
-rwxr-xr-x
gpgsplit
51.38
KB
-rwxr-xr-x
gpgv
334.27
KB
-rwxr-xr-x
gpgv2
334.27
KB
-rwxr-xr-x
gpic
216.12
KB
-rwxr-xr-x
gprof
97.09
KB
-rwxr-xr-x
grefer
125.91
KB
-rwxr-xr-x
grep-changelog
7.12
KB
-rwxr-xr-x
grepdiff
44.24
KB
-rwxr-xr-x
grepjar
88.31
KB
-rwxr-xr-x
grmic
10.21
KB
-rwxr-xr-x
grmid
10.21
KB
-rwxr-xr-x
grmiregistry
10.23
KB
-rwxr-xr-x
grn
71.27
KB
-rwxr-xr-x
grodvi
86.23
KB
-rwxr-xr-x
groff
71.95
KB
-rwxr-xr-x
groffer
7.59
KB
-rwxr-xr-x
grog
2.41
KB
-rwxr-xr-x
grolbp
93.49
KB
-rwxr-xr-x
grolj4
83.24
KB
-rwxr-xr-x
grops
121.94
KB
-rwxr-xr-x
grotty
82.23
KB
-rwxr-xr-x
groups
27.34
KB
-rwxr-xr-x
gs
18.68
KB
-rwxr-xr-x
gsbj
337
B
-rwxr-xr-x
gsdj
339
B
-rwxr-xr-x
gsdj500
342
B
-rwxr-xr-x
gserialver
10.23
KB
-rwxr-xr-x
gsftopk
36.88
KB
-rwxr-xr-x
gslj
340
B
-rwxr-xr-x
gslp
337
B
-rwxr-xr-x
gsnd
264
B
-rwxr-xr-x
gsoelim
25.58
KB
-rwxr-xr-x
gst-feedback
15.76
KB
-rwxr-xr-x
gst-feedback-0.10
3.1
KB
-rwxr-xr-x
gst-inspect
15.76
KB
-rwxr-xr-x
gst-inspect-0.10
49.73
KB
-rwxr-xr-x
gst-launch
15.76
KB
-rwxr-xr-x
gst-launch-0.10
33.39
KB
-rwxr-xr-x
gst-typefind
15.76
KB
-rwxr-xr-x
gst-typefind-0.10
18.37
KB
-rwxr-xr-x
gst-xmlinspect
15.77
KB
-rwxr-xr-x
gst-xmlinspect-0.10
27.16
KB
-rwxr-xr-x
gst-xmllaunch
15.76
KB
-rwxr-xr-x
gst-xmllaunch-0.10
33.39
KB
-rwxr-xr-x
gstack
1.1
KB
-rwxr-xr-x
gtbl
103.23
KB
-rwxr-xr-x
gtk-query-immodules-2.0-64
22.66
KB
-rwxr-xr-x
gtk-update-icon-cache
36.45
KB
-rwxr-xr-x
gtnameserv
10.23
KB
-rwxr-xr-x
gtroff
355.09
KB
-rwxr-xr-x
gunzip
61
B
-rwxr-xr-x
gzexe
5.73
KB
-rwxr-xr-x
gzip
67.09
KB
-rwxr-xr-x
h2ph
27.38
KB
-rwxr-xr-x
h2xs
58.97
KB
-rwxr-xr-x
hal-device
21.75
KB
-rwxr-xr-x
hal-disable-polling
16.43
KB
-rwxr-xr-x
hal-find-by-capability
12.21
KB
-rwxr-xr-x
hal-find-by-property
12.34
KB
-rwxr-xr-x
hal-get-property
14.42
KB
-rwxr-xr-x
hal-is-caller-locked-out
12.16
KB
-rwxr-xr-x
hal-lock
17.05
KB
-rwxr-xr-x
hal-set-property
16.27
KB
-rwxr-xr-x
halt
8.67
KB
-rwxr-xr-x
hdifftopam
10.26
KB
-rwxr-xr-x
head
35.29
KB
-rwxr-xr-x
hexdump
24.87
KB
-rwxr-xr-x
hipstopgm
10.04
KB
-rwxr-xr-x
host
133.74
KB
-rwxr-xr-x
hostid
25
KB
-rwxr-xr-x
hpcdtoppm
764
B
-rwxr-xr-x
hpftodit
24.09
KB
-rwxr-xr-x
htdbm
15.04
KB
-rwxr-xr-x
htdigest
10.98
KB
-rwxr-xr-x
htpasswd
13.66
KB
-rwxr-xr-x
huge_page_setup_helper.py
12.05
KB
-rwxr-xr-x
hugeadm
68.96
KB
-rwxr-xr-x
hugectl
16.04
KB
-rwxr-xr-x
hugeedit
11.42
KB
-rwxr-xr-x
hunspell
58.84
KB
-rwxr-xr-x
hwloc-assembler
13.23
KB
-rwxr-xr-x
hwloc-assembler-remote
2.28
KB
-rwxr-xr-x
hwloc-bind
29.23
KB
-rwxr-xr-x
hwloc-calc
34.36
KB
-rwxr-xr-x
hwloc-distances
17.3
KB
-rwxr-xr-x
hwloc-distrib
21.11
KB
-rwxr-xr-x
hwloc-gather-topology
3.87
KB
-rwxr-xr-x
hwloc-info
94.2
KB
-rwxr-xr-x
hwloc-ls
94.2
KB
-rwxr-xr-x
hwloc-ps
16.11
KB
-rwxr-xr-x
i386
13.59
KB
-rwxr-xr-x
icontopbm
10.55
KB
-rwxr-xr-x
iconv
61.55
KB
-rwxr-xr-x
id
31.95
KB
-rwxr-xr-x
ident
11.88
KB
-rwxr-xr-x
idn
35.38
KB
-rwxr-xr-x
iecset
21.05
KB
-rwxr-xr-x
ifnames
3.95
KB
-rwxr-xr-x
igawk
3.02
KB
-rwxr-xr-x
ilbmtoppm
39.33
KB
-rwxr-xr-x
imgtoppm
10.82
KB
-rwxr-xr-x
indent
75.13
KB
-rwxr-xr-x
indxbib
31.53
KB
-rwxr-xr-x
info
181.73
KB
-rwxr-xr-x
infocmp
54.41
KB
-rwxr-xr-x
infokey
25.06
KB
-rwxr-xr-x
infotocap
52.52
KB
-rwxr-xr-x
infotopam
14.23
KB
-rwxr-xr-x
innochecksum
14.46
KB
-rwxr-xr-x
install
110.7
KB
-rwxr-xr-x
install-catalog
4.27
KB
-rwxr-xr-x
instmodsh
4.15
KB
-rwxr-xr-x
interdiff
48.13
KB
-rwxr-xr-x
intltool-extract
27.32
KB
-rwxr-xr-x
intltool-merge
39
KB
-rwxr-xr-x
intltool-prepare
8.4
KB
-rwxr-xr-x
intltool-update
33.74
KB
-rwxr-xr-x
intltoolize
6.98
KB
-rwxr-xr-x
ionice
18.35
KB
-rwxr-xr-x
iostat
69.9
KB
-rwxr-xr-x
ipa-getcert
126.02
KB
-rwxr-xr-x
ipcmk
17.87
KB
-rwxr-xr-x
ipcrm
12.27
KB
-rwxr-xr-x
ipcs
22.58
KB
-rwxr-xr-x
isosize
10.55
KB
-rwxr-xr-x
isql
32.02
KB
-rwxr-xr-x
iusql
27.16
KB
-rwxr-xr-x
java
9.7
KB
-rwxr-xr-x
jbigtopnm
58.69
KB
-rwxr-xr-x
join
41.89
KB
-rwxr-xr-x
jpeg2ktopam
15.01
KB
-rwxr-xr-x
jpegtopnm
31.75
KB
-rwxr-xr-x
jpegtran
30.98
KB
-rwxr-xr-x
jv-convert
10.16
KB
-rwxr-xr-x
jvmjar
1.72
KB
-rwxr-xr-x
k5srvutil
1.87
KB
-rwxr-xr-x
kadmin
74.09
KB
-rwxr-xr-x
kbdrate
11.38
KB
-rwxr-xr-x
kdestroy
10.02
KB
-rwxr-xr-x
keyrand
12.51
KB
-rwxr-xr-x
keytool
9.82
KB
-rwxr-xr-x
keyutil
66.44
KB
-rwxr-xr-x
kill
14.88
KB
-rwxr-xr-x
killall
23.89
KB
-rwxr-xr-x
kinit
26.02
KB
-rwxr-xr-x
klist
26.02
KB
-rwxr-xr-x
koi8rxterm
3.67
KB
-rwxr-xr-x
kpasswd
10.02
KB
-rwxr-xr-x
kpseaccess
8.76
KB
-rwxr-xr-x
kpsepath
3.38
KB
-rwxr-xr-x
kpsereadlink
8.87
KB
-rwxr-xr-x
kpsestat
9.57
KB
-rwxr-xr-x
kpsetool
3.38
KB
-rwxr-xr-x
kpsewhere
1.41
KB
-rwxr-xr-x
kpsewhich
24.09
KB
-rwxr-xr-x
kpsexpand
3.38
KB
-rwxr-xr-x
kswitch
10.02
KB
-rwxr-xr-x
ktutil
22.02
KB
-rwxr-xr-x
kvno
14.02
KB
-rwxr-xr-x
lacheck
63.24
KB
-rwxr-xr-x
lambda
467.72
KB
-rwxr-xr-x
lamed
458.53
KB
-rwxr-xr-x
last
19.88
KB
-rwxr-xr-x
lastb
19.88
KB
-rwxr-xr-x
lastcomm
22.88
KB
-rwxr-xr-x
lastlog
14.02
KB
-rwxr-xr-x
latex
650.74
KB
-rwxr-xr-x
latrace
95.79
KB
-rwxr-xr-x
latrace-ctl
95.79
KB
-rwxr-xr-x
lchfn
32.63
KB
-rwxr-xr-x
lchsh
30.1
KB
-rwxr-xr-x
ld
581.21
KB
-rwxr-xr-x
ldapadd
81.48
KB
-rwxr-xr-x
ldapcompare
69.19
KB
-rwxr-xr-x
ldapdelete
73.35
KB
-rwxr-xr-x
ldapexop
70.83
KB
-rwxr-xr-x
ldapmodify
81.48
KB
-rwxr-xr-x
ldapmodrdn
70.8
KB
-rwxr-xr-x
ldappasswd
70.89
KB
-rwxr-xr-x
ldapsearch
94.31
KB
-rwxr-xr-x
ldapurl
25.02
KB
-rwxr-xr-x
ldapwhoami
69.17
KB
-rwxr-xr-x
ldd
5.2
KB
-rwxr-xr-x
ldns-chaos
12.18
KB
-rwxr-xr-x
ldns-compare-zones
14.42
KB
-rwxr-xr-x
ldns-dane
45.55
KB
-rwxr-xr-x
ldns-dpa
45.02
KB
-rwxr-xr-x
ldns-gen-zone
17.96
KB
-rwxr-xr-x
ldns-key2ds
13.14
KB
-rwxr-xr-x
ldns-keyfetcher
25.82
KB
-rwxr-xr-x
ldns-keygen
16.36
KB
-rwxr-xr-x
ldns-mx
10.63
KB
-rwxr-xr-x
ldns-notify
17.13
KB
-rwxr-xr-x
ldns-nsec3-hash
11.91
KB
-rwxr-xr-x
ldns-read-zone
16.35
KB
-rwxr-xr-x
ldns-resolver
10.08
KB
-rwxr-xr-x
ldns-revoke
11.26
KB
-rwxr-xr-x
ldns-rrsig
14.67
KB
-rwxr-xr-x
ldns-signzone
29.58
KB
-rwxr-xr-x
ldns-test-edns
13.66
KB
-rwxr-xr-x
ldns-testns
35.64
KB
-rwxr-xr-x
ldns-update
17.1
KB
-rwxr-xr-x
ldns-verify-zone
26.68
KB
-rwxr-xr-x
ldns-version
8.54
KB
-rwxr-xr-x
ldns-walk
22.44
KB
-rwxr-xr-x
ldns-zcat
12.53
KB
-rwxr-xr-x
ldns-zsplit
15.55
KB
-rwxr-xr-x
ldnsd
15.63
KB
-rwxr-xr-x
leaftoppm
11.69
KB
-rwxr-xr-x
less
150.8
KB
-rwxr-xr-x
lessecho
10.41
KB
-rwxr-xr-x
lesskey
18.4
KB
-rwxr-xr-x
lesspipe.sh
2.74
KB
-rwxr-xr-x
lex
329.84
KB
-rwxr-xr-x
libnetcfg
15.36
KB
-rwxr-xr-x
libtar
14.68
KB
-rwxr-xr-x
libtool
276.69
KB
-rwxr-xr-x
libtoolize
66.56
KB
-rwxr-xr-x
linc-cleanup-sockets
13.09
KB
-rwxr-xr-x
links
1.2
MB
-rwxr-xr-x
linux32
13.59
KB
-rwxr-xr-x
linux64
13.59
KB
-rwxr-xr-x
lispmtopgm
10.19
KB
-rwxr-xr-x
lkbib
40.11
KB
-rwxr-xr-x
loadunimap
25.52
KB
-rwxr-xr-x
local-getcert
130.02
KB
-rwxr-xr-x
locale
40.4
KB
-rwxr-xr-x
localedef
321.91
KB
-rwxr-xr-x
locate
37.56
KB
-rwx--s--x
logfactor5
593
B
-rwxr-xr-x
logger
14.7
KB
-rwxr-xr-x
logname
25.09
KB
-rwxr-xr-x
logresolve
10.94
KB
-rwxr-xr-x
look
11.46
KB
-rwxr-xr-x
lookbib
39.98
KB
-rwxr-xr-x
lp
18.38
KB
-rwxr-xr-x
lp.cups
18.38
KB
-rwxr-xr-x
lp5250d
17.86
KB
-rwxr-xr-x
lpoptions
14.36
KB
-rwxr-xr-x
lppasswd
14.38
KB
-rwxr-xr-x
lpq
14.38
KB
-rwxr-xr-x
lpq.cups
14.38
KB
-rwxr-xr-x
lpr
14.35
KB
-rwxr-xr-x
lpr.cups
14.35
KB
-rwxr-xr-x
lprm
10.21
KB
-rwxr-xr-x
lprm.cups
10.21
KB
-rwxr-xr-x
lprsetup.sh
4.55
KB
-rwxr-xr-x
lpstat
26.71
KB
-rwxr-xr-x
lpstat.cups
26.71
KB
-rwxr-xr-x
lsattr
12.77
KB
-rwxr-xr-x
lsb_release
15.56
KB
-rwxr-xr-x
lscpu
53.92
KB
-rwxr-xr-x
lsdiff
44.24
KB
-rwxr-xr-x
lshal
27.89
KB
-rwxr-xr-x
lslogins
50.78
KB
-rwxr-xr-x
lstopo
105.62
KB
-rwxr-xr-x
lstopo-no-graphics
94.2
KB
-rwxr-xr-x
lsusb
105.49
KB
-rwxr-xr-x
lsusb.py
13.09
KB
-rwxr-xr-x
ltrace
111.55
KB
-rwxr-xr-x
lua
17.45
KB
-rwxr-xr-x
luac
113.37
KB
-rwxr-xr-x
lwp-download
7.89
KB
-rwxr-xr-x
lwp-dump
2.55
KB
-rwxr-xr-x
lwp-mirror
2.33
KB
-rwxr-xr-x
lwp-request
14.18
KB
-rwxr-xr-x
lwp-rget
14.71
KB
-rwxr-xr-x
lzcat
50.63
KB
-rwxr-xr-x
lzcmp
5.1
KB
-rwxr-xr-x
lzdiff
5.1
KB
-rwxr-xr-x
lzegrep
5.36
KB
-rwxr-xr-x
lzfgrep
5.36
KB
-rwxr-xr-x
lzgrep
5.36
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
50.63
KB
-rwxr-xr-x
lzmadec
15.11
KB
-rwxr-xr-x
lzmainfo
12.56
KB
-rwxr-xr-x
lzmore
2.12
KB
-rwxr-xr-x
m4
207.46
KB
-rwxr-xr-x
macptopbm
9.7
KB
-rwxr-xr-x
mag
10.13
KB
-rwxr-xr-x
mailq
208.61
KB
-rwxr-xr-x
mailq.postfix
208.61
KB
-rwxr-xr-x
make
169.15
KB
-rwxr-xr-x
makeindex
83.06
KB
-rwxr-xr-x
makempx
21.23
KB
-rwxr-xr-x
mako-render
893
B
-rwxr-xr-x
man
54.8
KB
-rwxr-xr-x
man2html
60.84
KB
-rwxr-xr-x
manpath
54.8
KB
-rwxr-xr-x
manweb
12.19
KB
-rwxr-xr-x
mapscrn
20.55
KB
-rwxr-xr-x
markdown
1.24
KB
-rwxr-xr-x
mbchk
607.3
KB
-rwxr-xr-x
mc
963.14
KB
-rwxr-xr-x
mcedit
963.14
KB
-rwxr-xr-x
mcmfmt
8.4
KB
-rwxr-xr-x
mcookie
13.93
KB
-rwxr-xr-x
mcview
963.14
KB
-rwxr-xr-x
md5sum
35.27
KB
-rwxr-xr-x
mdatopbm
11.94
KB
-rwxr-xr-x
memhog
13.24
KB
-rwxr-xr-x
merge
63.04
KB
-rwxr-xr-x
mesg
9.57
KB
-rwxr-xr-x
metaflac
111.89
KB
-rwxr-xr-x
mf
270.67
KB
-rwxr-xr-x
mf-nowin
254.84
KB
-rwxr-xr-x
mft
53.45
KB
-rwxr-xr-x
mgrtopbm
10.01
KB
-rwxr-xr-x
migratepages
12.41
KB
-rwxr-xr-x
migspeed
15.16
KB
-rwxr-xr-x
mkfifo
29.09
KB
-rwxr-xr-x
mkfontdir
131
B
-rwxr-xr-x
mkfontscale
34.02
KB
-rwxr-xr-x
mkindex
947
B
-rwxr-xr-x
mkocp
171
B
-rwxr-xr-x
mkofm
83
B
-rwxr-xr-x
mktexfmt
28.47
KB
-rwxr-xr-x
mktexlsr
5.66
KB
-rwxr-xr-x
mktexmf
3.76
KB
-rwxr-xr-x
mktexpk
8.91
KB
-rwxr-xr-x
mktextfm
4.72
KB
-rwxr-xr-x
mllatex
650.74
KB
-rwxr-xr-x
mltex
650.74
KB
-rwxr-xr-x
modutil
157.41
KB
-rwxr-xr-x
mp2bug
1.24
KB
-rwxr-xr-x
mpost
365.57
KB
-rwxr-xr-x
mpstat
59.74
KB
-rwxr-xr-x
mpto
13.21
KB
-rwxr-xr-x
mrftopbm
10.52
KB
-rwxr-xr-x
ms_print
23.64
KB
-rwxr-xr-x
msgattrib
23.53
KB
-rwxr-xr-x
msgcat
23.8
KB
-rwxr-xr-x
msgcmp
17.73
KB
-rwxr-xr-x
msgcomm
22.2
KB
-rwxr-xr-x
msgconv
19.56
KB
-rwxr-xr-x
msgen
19.47
KB
-rwxr-xr-x
msgexec
16.27
KB
-rwxr-xr-x
msgfilter
25.75
KB
-rwxr-xr-x
msgfmt
67.73
KB
-rwxr-xr-x
msggrep
103.15
KB
-rwxr-xr-x
msghack
12.51
KB
-rwxr-xr-x
msginit
44.45
KB
-rwxr-xr-x
msgmerge
44.63
KB
-rwxr-xr-x
msgunfmt
31.2
KB
-rwxr-xr-x
msguniq
21.26
KB
-rwxr-xr-x
msql2mysql
1.38
KB
-rwxr-xr-x
mtvtoppm
9.73
KB
-rwxr-xr-x
musixflx
20.3
KB
-rwxr-xr-x
my_print_defaults
1.34
MB
-rwxr-xr-x
myisam_ftdump
1.59
MB
-rwxr-xr-x
myisamchk
1.7
MB
-rwxr-xr-x
myisamlog
1.59
MB
-rwxr-xr-x
myisampack
1.62
MB
-rwxr-xr-x
mysql
348.62
KB
-rwxr-xr-x
mysql_client_test
408.45
KB
-rwxr-xr-x
mysql_config
7.77
KB
-rwxr-xr-x
mysql_convert_table_format
4.15
KB
-rwxr-xr-x
mysql_find_rows
3.24
KB
-rwxr-xr-x
mysql_fix_extensions
1.23
KB
-rwxr-xr-x
mysql_fix_privilege_tables
5.7
KB
-rwxr-xr-x
mysql_install_db
14.3
KB
-rwxr-xr-x
mysql_secure_installation
8.01
KB
-rwxr-xr-x
mysql_setpermission
17.06
KB
-rwxr-xr-x
mysql_tzinfo_to_sql
1.31
MB
-rwxr-xr-x
mysql_upgrade
77.36
KB
-rwxr-xr-x
mysql_waitpid
174.54
KB
-rwxr-xr-x
mysql_zap
3.8
KB
-rwxr-xr-x
mysqlaccess
108.95
KB
-rwxr-xr-x
mysqladmin
42.6
KB
-rwxr-xr-x
mysqlbinlog
160.74
KB
-rwxr-xr-x
mysqlbug
7.77
KB
-rwxr-xr-x
mysqlcheck
39.13
KB
-rwxr-xr-x
mysqld_multi
23.92
KB
-rwxr-xr-x
mysqldump
95.73
KB
-rwxr-xr-x
mysqldumpslow
7.23
KB
-rwxr-xr-x
mysqlhotcopy
31.72
KB
-rwxr-xr-x
mysqlimport
34.39
KB
-rwxr-xr-x
mysqlshow
33.69
KB
-rwxr-xr-x
mysqlslap
52.3
KB
-rwxr-xr-x
mysqltest
194.11
KB
-rwxr-xr-x
nail
381.95
KB
-rwxr-xr-x
namei
15.99
KB
-rwxr-xr-x
nano
174.7
KB
-rwxr-xr-x
nc
25.76
KB
-rwxr-xr-x
needs-restarting
5.61
KB
-rwxr-xr-x
neotoppm
9.7
KB
-rwxr-xr-x
neqn
255
B
-rwxr-xr-x
net
8.33
MB
-rwxr-xr-x
netaddr
920
B
-rwxr-xr-x
newaliases
208.61
KB
-rwxr-xr-x
newaliases.postfix
208.61
KB
-rwxr-xr-x
newer
9.74
KB
-rwxr-xr-x
newgrp
39.3
KB
-rwsr-xr-x
nfs4_editfacl
28.38
KB
-rwxr-xr-x
nfs4_getfacl
16.55
KB
-rwxr-xr-x
nfs4_setfacl
28.38
KB
-rwxr-xr-x
ngettext
32.16
KB
-rwxr-xr-x
nl
98.3
KB
-rwxr-xr-x
nm
43.29
KB
-rwxr-xr-x
nmblookup
1.65
MB
-rwxr-xr-x
nohup
29.07
KB
-rwxr-xr-x
nosetests
299
B
-rwxr-xr-x
nproc
27.22
KB
-rwxr-xr-x
nroff
2.34
KB
-rwxr-xr-x
nsenter
22.3
KB
-rwxr-xr-x
nslookup
133.68
KB
-rwxr-xr-x
nss-policy-check
10.2
KB
-rwxr-xr-x
nsupdate
75.52
KB
-rwxr-xr-x
ntpstat
10.02
KB
-rwxr-xr-x
numactl
30.48
KB
-rwxr-xr-x
numademo
45.19
KB
-rwxr-xr-x
numastat
28
KB
-rwxr-xr-x
objcopy
213.91
KB
-rwxr-xr-x
objdump
281.38
KB
-rwxr-xr-x
ocount
157.13
KB
-rwxr-xr-x
ocs
7.1
KB
-rwxr-xr-x
od
60.72
KB
-rwxr-xr-x
odbc_config
9.98
KB
-rwxr-xr-x
odbcinst
27.28
KB
-rwxr-xr-x
oddjob_request
35.52
KB
-rwxr-xr-x
odvips
203.13
KB
-rwxr-xr-x
ofm2opl
117.45
KB
-rwxr-xr-x
oldfind
230.81
KB
-rwxr-xr-x
omega
467.72
KB
-rwxr-xr-x
omfonts
117.45
KB
-rwxr-xr-x
omshell
442.43
KB
-rwxr-xr-x
on_ac_power
1.57
KB
-rwxr-xr-x
op-check-perfevents
8.98
KB
-rwxr-xr-x
opannotate
1.22
MB
-rwxr-xr-x
oparchive
1.11
MB
-rwxr-xr-x
opcontrol
55.85
KB
-rwxr-xr-x
open
16.2
KB
-rwxr-xr-x
openssl
535.34
KB
-rwxr-xr-x
openvt
16.2
KB
-rwxr-xr-x
operf
265.8
KB
-rwxr-xr-x
opgprof
1.14
MB
-rwxr-xr-x
ophelp
65.3
KB
-rwxr-xr-x
opimport
71.67
KB
-rwxr-xr-x
opjitconv
776.27
KB
-rwxr-xr-x
opl2ofm
117.45
KB
-rwxr-xr-x
opreport
1.32
MB
-rwxr-xr-x
oprof_start
249.99
KB
-rwxr-xr-x
oprofiled
102.55
KB
-rwxr-xr-x
orbd
10
KB
-rwxr-xr-x
oscap
102.66
KB
-rwxr-xr-x
otangle
43.39
KB
-rwxr-xr-x
otfdump
31.47
KB
-rwxr-xr-x
otflist
11.98
KB
-rwxr-xr-x
otftobdf
11.78
KB
-rwxr-xr-x
otfview
70.52
KB
-rwxr-xr-x
otp2ocp
37.27
KB
-rwxr-xr-x
outocp
12.59
KB
-rwxr-xr-x
ovf2ovp
117.45
KB
-rwxr-xr-x
ovp2ovf
117.45
KB
-rwxr-xr-x
p11-kit
120.36
KB
-rwxr-xr-x
pack200
9.85
KB
-rwxr-xr-x
package-cleanup
18.16
KB
-rwxr-xr-x
pagesize
34.27
KB
-rwxr-xr-x
pal2rgb
15.1
KB
-rwxr-xr-x
palmtopnm
22.54
KB
-rwxr-xr-x
pamaddnoise
15
KB
-rwxr-xr-x
pamarith
16.05
KB
-rwxr-xr-x
pambackground
12.89
KB
-rwxr-xr-x
pambayer
10.98
KB
-rwxr-xr-x
pamchannel
10.95
KB
-rwxr-xr-x
pamcomp
17.52
KB
-rwxr-xr-x
pamcut
16.66
KB
-rwxr-xr-x
pamdeinterlace
10.09
KB
-rwxr-xr-x
pamdepth
10.6
KB
-rwxr-xr-x
pamdice
13.05
KB
-rwxr-xr-x
pamditherbw
21.15
KB
-rwxr-xr-x
pamedge
10.46
KB
-rwxr-xr-x
pamendian
8.87
KB
-rwxr-xr-x
pamenlarge
11.59
KB
-rwxr-xr-x
pamfile
11.27
KB
-rwxr-xr-x
pamfixtrunc
10.57
KB
-rwxr-xr-x
pamflip
18.86
KB
-rwxr-xr-x
pamfunc
13.11
KB
-rwxr-xr-x
pamgauss
11.16
KB
-rwxr-xr-x
pamgradient
11.14
KB
-rwxr-xr-x
pamlookup
12.38
KB
-rwxr-xr-x
pammasksharpen
11.25
KB
-rwxr-xr-x
pammixinterlace
11.98
KB
-rwxr-xr-x
pamoil
10.32
KB
-rwxr-xr-x
pamperspective
24.88
KB
-rwxr-xr-x
pampick
10.97
KB
-rwxr-xr-x
pampop9
9.86
KB
-rwxr-xr-x
pamrgbatopng
10.95
KB
-rwxr-xr-x
pamscale
27.3
KB
-rwxr-xr-x
pamseq
11.04
KB
-rwxr-xr-x
pamsharpmap
10.38
KB
-rwxr-xr-x
pamsharpness
9.7
KB
-rwxr-xr-x
pamsistoaglyph
12.36
KB
-rwxr-xr-x
pamslice
10.39
KB
-rwxr-xr-x
pamsplit
10.94
KB
-rwxr-xr-x
pamstack
11.32
KB
-rwxr-xr-x
pamstereogram
18.3
KB
-rwxr-xr-x
pamstretch
12.76
KB
-rwxr-xr-x
pamstretch-gen
2.13
KB
-rwxr-xr-x
pamsumm
10.62
KB
-rwxr-xr-x
pamsummcol
11.23
KB
-rwxr-xr-x
pamthreshold
15.34
KB
-rwxr-xr-x
pamtilt
16.16
KB
-rwxr-xr-x
pamtodjvurle
11.66
KB
-rwxr-xr-x
pamtofits
11.49
KB
-rwxr-xr-x
pamtogif
20.45
KB
-rwxr-xr-x
pamtohdiff
9.73
KB
-rwxr-xr-x
pamtohtmltbl
11.88
KB
-rwxr-xr-x
pamtojpeg2k
17.98
KB
-rwxr-xr-x
pamtompfont
10.1
KB
-rwxr-xr-x
pamtooctaveimg
11.53
KB
-rwxr-xr-x
pamtopam
9.2
KB
-rwxr-xr-x
pamtopfm
10.88
KB
-rwxr-xr-x
pamtopnm
10.14
KB
-rwxr-xr-x
pamtosvg
77.25
KB
-rwxr-xr-x
pamtotga
16.26
KB
-rwxr-xr-x
pamtotiff
32.83
KB
-rwxr-xr-x
pamtouil
13.08
KB
-rwxr-xr-x
pamtoxvmini
10.9
KB
-rwxr-xr-x
pamundice
14.63
KB
-rwxr-xr-x
pamx
37.57
KB
-rwxr-xr-x
pango-querymodules-64
18.2
KB
-rwxr-xr-x
pango-view
60.86
KB
-rwxr-xr-x
passwd
30.05
KB
-rwsr-xr-x
paste
28.45
KB
-rwxr-xr-x
patch
117.9
KB
-rwxr-xr-x
patgen
33.33
KB
-rwxr-xr-x
pathchk
27.23
KB
-rwxr-xr-x
pax
110.9
KB
-rwxr-xr-x
pbmclean
10.73
KB
-rwxr-xr-x
pbmlife
9.25
KB
-rwxr-xr-x
pbmmake
10.03
KB
-rwxr-xr-x
pbmmask
11.26
KB
-rwxr-xr-x
pbmminkowski
9.69
KB
-rwxr-xr-x
pbmpage
11.35
KB
-rwxr-xr-x
pbmpscale
11.49
KB
-rwxr-xr-x
pbmreduce
11.67
KB
-rwxr-xr-x
pbmtext
15.73
KB
-rwxr-xr-x
pbmtextps
14.95
KB
-rwxr-xr-x
pbmto10x
10.77
KB
-rwxr-xr-x
pbmto4425
9.75
KB
-rwxr-xr-x
pbmtoascii
10.34
KB
-rwxr-xr-x
pbmtoatk
10.58
KB
-rwxr-xr-x
pbmtobbnbg
9.71
KB
-rwxr-xr-x
pbmtocmuwm
9.38
KB
-rwxr-xr-x
pbmtodjvurle
10.05
KB
-rwxr-xr-x
pbmtoepsi
10.23
KB
-rwxr-xr-x
pbmtoepson
11.17
KB
-rwxr-xr-x
pbmtoescp2
10.68
KB
-rwxr-xr-x
pbmtog3
14.6
KB
-rwxr-xr-x
pbmtogem
10.66
KB
-rwxr-xr-x
pbmtogo
11.13
KB
-rwxr-xr-x
pbmtoibm23xx
11.29
KB
-rwxr-xr-x
pbmtoicon
10.13
KB
-rwxr-xr-x
pbmtolj
13.32
KB
-rwxr-xr-x
pbmtoln03
11.26
KB
-rwxr-xr-x
pbmtolps
10.62
KB
-rwxr-xr-x
pbmtomacp
10.97
KB
-rwxr-xr-x
pbmtomatrixorbital
9
KB
-rwxr-xr-x
pbmtomda
11.16
KB
-rwxr-xr-x
pbmtomgr
9.08
KB
-rwxr-xr-x
pbmtomrf
10.66
KB
-rwxr-xr-x
pbmtonokia
13.44
KB
-rwxr-xr-x
pbmtopgm
10.01
KB
-rwxr-xr-x
pbmtopi3
9.73
KB
-rwxr-xr-x
pbmtopk
21.49
KB
-rwxr-xr-x
pbmtoplot
8.88
KB
-rwxr-xr-x
pbmtoppa
28.51
KB
-rwxr-xr-x
pbmtopsg3
13.45
KB
-rwxr-xr-x
pbmtoptx
9.06
KB
-rwxr-xr-x
pbmtowbmp
9.16
KB
-rwxr-xr-x
pbmtox10bm
1.35
KB
-rwxr-xr-x
pbmtoxbm
13.47
KB
-rwxr-xr-x
pbmtoybm
9.31
KB
-rwxr-xr-x
pbmtozinc
10.57
KB
-rwxr-xr-x
pbmupc
17.69
KB
-rwxr-xr-x
pc1toppm
9.97
KB
-rwxr-xr-x
pcdovtoppm
5.43
KB
-rwxr-xr-x
pcregrep
31.66
KB
-rwxr-xr-x
pcretest
48.23
KB
-rwxr-xr-x
pcxtoppm
15.05
KB
-rwxr-xr-x
pdbedit
2.04
MB
-rwxr-xr-x
pdf2dsc
696
B
-rwxr-xr-x
pdf2ps
901
B
-rwxr-xr-x
pdfcrop
8.29
KB
-rwxr-xr-x
pdfcslatex
650.74
KB
-rwxr-xr-x
pdfcsplain
650.74
KB
-rwxr-xr-x
pdfetex
650.74
KB
-rwxr-xr-x
pdffonts
22.33
KB
-rwxr-xr-x
pdfimages
48.73
KB
-rwxr-xr-x
pdfinfo
28.02
KB
-rwxr-xr-x
pdflatex
650.74
KB
-rwxr-xr-x
pdfopt
547
B
-rwxr-xr-x
pdftex
650.74
KB
-rwxr-xr-x
pdftohtml
91.53
KB
-rwxr-xr-x
pdftoppm
23.75
KB
-rwxr-xr-x
pdftops
23.7
KB
-rwxr-xr-x
pdftosrc
14.99
KB
-rwxr-xr-x
pdftotext
25.67
KB
-rwxr-xr-x
peekfd
12.7
KB
-rwxr-xr-x
perf
2.1
MB
-rwxr-xr-x
perl
12.97
KB
-rwxr-xr-x
perl5.10.1
12.97
KB
-rwxr-xr-x
perlbug
43.68
KB
-rwxr-xr-x
perldoc
224
B
-rwxr-xr-x
perlivp
12.01
KB
-rwxr-xr-x
perltex
14.46
KB
-rwxr-xr-x
perlthanks
43.68
KB
-rwxr-xr-x
perror
1.32
MB
-rwxr-xr-x
pf2afm
495
B
-rwxr-xr-x
pfb2pfa
12.09
KB
-rwxr-xr-x
pfbtopfa
511
B
-rwxr-xr-x
pfbtops
10.05
KB
-rwxr-xr-x
pfmtopam
12.52
KB
-rwxr-xr-x
pg_dump
273.87
KB
-rwxr-xr-x
pg_dumpall
79.73
KB
-rwxr-xr-x
pg_restore
125.13
KB
-rwxr-xr-x
pgawk
374.73
KB
-rwxr-xr-x
pgmabel
14.17
KB
-rwxr-xr-x
pgmbentley
8.88
KB
-rwxr-xr-x
pgmcrater
14.16
KB
-rwxr-xr-x
pgmdeshadow
10.02
KB
-rwxr-xr-x
pgmedge
10.46
KB
-rwxr-xr-x
pgmenhance
10.03
KB
-rwxr-xr-x
pgmhist
10.02
KB
-rwxr-xr-x
pgmkernel
9.95
KB
-rwxr-xr-x
pgmmake
10.03
KB
-rwxr-xr-x
pgmmedian
13.79
KB
-rwxr-xr-x
pgmminkowski
10.55
KB
-rwxr-xr-x
pgmmorphconv
11.44
KB
-rwxr-xr-x
pgmnoise
9.73
KB
-rwxr-xr-x
pgmnorm
14.18
KB
-rwxr-xr-x
pgmoil
10.32
KB
-rwxr-xr-x
pgmramp
10.58
KB
-rwxr-xr-x
pgmslice
10.39
KB
-rwxr-xr-x
pgmtexture
24.82
KB
-rwxr-xr-x
pgmtofs
10.15
KB
-rwxr-xr-x
pgmtolispm
10.11
KB
-rwxr-xr-x
pgmtopbm
37
B
-rwxr-xr-x
pgmtopgm
8.91
KB
-rwxr-xr-x
pgmtoppm
11.15
KB
-rwxr-xr-x
pgrep
20.08
KB
-rwxr-xr-x
phar
14.48
KB
-rwxr-xr-x
phar.phar
14.48
KB
-rwxr-xr-x
php
3.88
MB
-rwxr-xr-x
php-cgi
3.86
MB
-rwxr-xr-x
phpize
4.64
KB
-rwxr-xr-x
physe
650.74
KB
-rwxr-xr-x
phyzzx
650.74
KB
-rwxr-xr-x
pi1toppm
9.7
KB
-rwxr-xr-x
pi3topbm
9.73
KB
-rwxr-xr-x
pic
216.12
KB
-rwxr-xr-x
pic2graph
2.5
KB
-rwxr-xr-x
piconv
7.17
KB
-rwxr-xr-x
pidstat
70.03
KB
-rwxr-xr-x
pinentry
2.54
KB
-rwxr-xr-x
pinentry-curses
52.58
KB
-rwxr-xr-x
pinfo
101.66
KB
-rwxr-xr-x
pinky
32.73
KB
-rwxr-xr-x
pjtoppm
12.7
KB
-rwxr-xr-x
pk12util
92.2
KB
-rwxr-xr-x
pk2bm
15.48
KB
-rwxr-xr-x
pkaction
14.02
KB
-rwxr-xr-x
pkcheck
14.02
KB
-rwxr-xr-x
pkexec
22.02
KB
-rwsr-xr-x
pkg-config
108.06
KB
-rwxr-xr-x
pkill
20.08
KB
-rwxr-xr-x
pktogf
25.36
KB
-rwxr-xr-x
pktopbm
16.7
KB
-rwxr-xr-x
pktype
18.84
KB
-rwxr-xr-x
pl2pm
4.42
KB
-rwxr-xr-x
pltotf
61.48
KB
-rwxr-xr-x
plymouth
35.95
KB
-rwxr-xr-x
pm-is-supported
983
B
-rwxr-xr-x
pm-utils-bugreport-info.sh
816
B
-rwxr-xr-x
pmap
15.91
KB
-rwxr-xr-x
png2theora
29.38
KB
-rwxr-xr-x
pngtopam
23.31
KB
-rwxr-xr-x
pngtopnm
22.4
KB
-rwxr-xr-x
pnmalias
13.29
KB
-rwxr-xr-x
pnmarith
16.05
KB
-rwxr-xr-x
pnmcat
16.55
KB
-rwxr-xr-x
pnmcolormap
16.7
KB
-rwxr-xr-x
pnmcomp
17.52
KB
-rwxr-xr-x
pnmconvol
34.2
KB
-rwxr-xr-x
pnmcrop
18.7
KB
-rwxr-xr-x
pnmcut
16.66
KB
-rwxr-xr-x
pnmdepth
10.6
KB
-rwxr-xr-x
pnmenlarge
11.59
KB
-rwxr-xr-x
pnmfile
11.27
KB
-rwxr-xr-x
pnmflip
2.43
KB
-rwxr-xr-x
pnmgamma
17.46
KB
-rwxr-xr-x
pnmhisteq
12.72
KB
-rwxr-xr-x
pnmhistmap
14.3
KB
-rwxr-xr-x
pnmindex
14.94
KB
-rwxr-xr-x
pnminterp
12.76
KB
-rwxr-xr-x
pnminvert
10.1
KB
-rwxr-xr-x
pnmmargin
2.32
KB
-rwxr-xr-x
pnmmontage
15.05
KB
-rwxr-xr-x
pnmnlfilt
22.36
KB
-rwxr-xr-x
pnmnoraw
31
B
-rwxr-xr-x
pnmnorm
14.18
KB
-rwxr-xr-x
pnmpad
17.08
KB
-rwxr-xr-x
pnmpaste
13.45
KB
-rwxr-xr-x
pnmpsnr
11.73
KB
-rwxr-xr-x
pnmquant
7.67
KB
-rwxr-xr-x
pnmremap
19.03
KB
-rwxr-xr-x
pnmrotate
16.13
KB
-rwxr-xr-x
pnmscale
27.3
KB
-rwxr-xr-x
pnmscalefixed
16.26
KB
-rwxr-xr-x
pnmshear
11.89
KB
-rwxr-xr-x
pnmsmooth
11.3
KB
-rwxr-xr-x
pnmsplit
10.94
KB
-rwxr-xr-x
pnmstitch
27.35
KB
-rwxr-xr-x
pnmtile
9.73
KB
-rwxr-xr-x
pnmtoddif
16.73
KB
-rwxr-xr-x
pnmtofiasco
157.32
KB
-rwxr-xr-x
pnmtofits
11.49
KB
-rwxr-xr-x
pnmtojbig
60.86
KB
-rwxr-xr-x
pnmtojpeg
21.91
KB
-rwxr-xr-x
pnmtopalm
23.91
KB
-rwxr-xr-x
pnmtopclxl
17.68
KB
-rwxr-xr-x
pnmtoplainpnm
31
B
-rwxr-xr-x
pnmtopng
40.81
KB
-rwxr-xr-x
pnmtopnm
10.14
KB
-rwxr-xr-x
pnmtops
27.6
KB
-rwxr-xr-x
pnmtorast
16.2
KB
-rwxr-xr-x
pnmtorle
34.88
KB
-rwxr-xr-x
pnmtosgi
13.11
KB
-rwxr-xr-x
pnmtosir
9.96
KB
-rwxr-xr-x
pnmtotiff
32.83
KB
-rwxr-xr-x
pnmtotiffcmyk
29.99
KB
-rwxr-xr-x
pnmtoxwd
12.95
KB
-rwxr-xr-x
pod2html
2.28
KB
-rwxr-xr-x
pod2latex
10.01
KB
-rwxr-xr-x
pod2man
20.68
KB
-rwxr-xr-x
pod2text
8.87
KB
-rwxr-xr-x
pod2usage
3.26
KB
-rwxr-xr-x
podchecker
3.61
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
pooltype
15.72
KB
-rwxr-xr-x
post-grohtml
136.2
KB
-rwxr-xr-x
poweroff
8.67
KB
-rwxr-xr-x
ppdc
14.51
KB
-rwxr-xr-x
ppdhtml
10.36
KB
-rwxr-xr-x
ppdi
10.3
KB
-rwxr-xr-x
ppdmerge
14.41
KB
-rwxr-xr-x
ppdpo
10.36
KB
-rwxr-xr-x
ppl-config
104.6
KB
-rwxr-xr-x
ppm2tiff
14.86
KB
-rwxr-xr-x
ppm3d
14.56
KB
-rwxr-xr-x
ppmbrighten
12.41
KB
-rwxr-xr-x
ppmchange
10.33
KB
-rwxr-xr-x
ppmcie
25.87
KB
-rwxr-xr-x
ppmcolormask
11.52
KB
-rwxr-xr-x
ppmcolors
8.84
KB
-rwxr-xr-x
ppmdcfont
10.39
KB
-rwxr-xr-x
ppmddumpfont
8.63
KB
-rwxr-xr-x
ppmdim
9.73
KB
-rwxr-xr-x
ppmdist
10.2
KB
-rwxr-xr-x
ppmdither
11.88
KB
-rwxr-xr-x
ppmdmkfont
13.53
KB
-rwxr-xr-x
ppmdraw
18.56
KB
-rwxr-xr-x
ppmfade
10.97
KB
-rwxr-xr-x
ppmflash
9.73
KB
-rwxr-xr-x
ppmforge
22.62
KB
-rwxr-xr-x
ppmglobe
10.16
KB
-rwxr-xr-x
ppmhist
12.13
KB
-rwxr-xr-x
ppmlabel
12.95
KB
-rwxr-xr-x
ppmmake
9.72
KB
-rwxr-xr-x
ppmmix
10.05
KB
-rwxr-xr-x
ppmnorm
14.18
KB
-rwxr-xr-x
ppmntsc
12.65
KB
-rwxr-xr-x
ppmpat
23.12
KB
-rwxr-xr-x
ppmquant
926
B
-rwxr-xr-x
ppmquantall
2.33
KB
-rwxr-xr-x
ppmrainbow
1.79
KB
-rwxr-xr-x
ppmrelief
9.72
KB
-rwxr-xr-x
ppmrough
13.77
KB
-rwxr-xr-x
ppmshadow
8.64
KB
-rwxr-xr-x
ppmshift
10.17
KB
-rwxr-xr-x
ppmspread
10.09
KB
-rwxr-xr-x
ppmtoacad
14.69
KB
-rwxr-xr-x
ppmtoarbtxt
14.73
KB
-rwxr-xr-x
ppmtobmp
18.45
KB
-rwxr-xr-x
ppmtoeyuv
14.1
KB
-rwxr-xr-x
ppmtogif
13.23
KB
-rwxr-xr-x
ppmtoicr
12.45
KB
-rwxr-xr-x
ppmtoilbm
40.15
KB
-rwxr-xr-x
ppmtojpeg
21.91
KB
-rwxr-xr-x
ppmtoleaf
13.05
KB
-rwxr-xr-x
ppmtolj
11.71
KB
-rwxr-xr-x
ppmtomap
82
B
-rwxr-xr-x
ppmtomitsu
19.99
KB
-rwxr-xr-x
ppmtompeg
508.71
KB
-rwxr-xr-x
ppmtoneo
13.06
KB
-rwxr-xr-x
ppmtopcx
17.05
KB
-rwxr-xr-x
ppmtopgm
12.62
KB
-rwxr-xr-x
ppmtopi1
10.05
KB
-rwxr-xr-x
ppmtopict
11.93
KB
-rwxr-xr-x
ppmtopj
12.01
KB
-rwxr-xr-x
ppmtopjxl
15.91
KB
-rwxr-xr-x
ppmtoppm
8.97
KB
-rwxr-xr-x
ppmtopuzz
10.09
KB
-rwxr-xr-x
ppmtorgb3
10.11
KB
-rwxr-xr-x
ppmtosixel
10.87
KB
-rwxr-xr-x
ppmtoterm
9.7
KB
-rwxr-xr-x
ppmtouil
13.08
KB
-rwxr-xr-x
ppmtowinicon
17.41
KB
-rwxr-xr-x
ppmtoxpm
14.53
KB
-rwxr-xr-x
ppmtoyuv
9.71
KB
-rwxr-xr-x
ppmtoyuvsplit
10.9
KB
-rwxr-xr-x
ppmtv
9.73
KB
-rwxr-xr-x
ppmwheel
10.43
KB
-rwxr-xr-x
pr
62.8
KB
-rwxr-xr-x
pre-grohtml
76.61
KB
-rwxr-xr-x
printafm
386
B
-rwxr-xr-x
printenv
25.66
KB
-rwxr-xr-x
printf
48.91
KB
-rwxr-xr-x
profiles
1.59
MB
-rwxr-xr-x
protoize
70.42
KB
-rwxr-xr-x
prove
9.15
KB
-rwxr-xr-x
proxy
10.72
KB
-rwxr-xr-x
ps2ascii
786
B
-rwxr-xr-x
ps2epsi
2.71
KB
-rwxr-xr-x
ps2frag
229
B
-rwxr-xr-x
ps2pdf
315
B
-rwxr-xr-x
ps2pdf12
260
B
-rwxr-xr-x
ps2pdf13
260
B
-rwxr-xr-x
ps2pdf14
260
B
-rwxr-xr-x
ps2pdfwr
1.06
KB
-rwxr-xr-x
ps2pk
135.38
KB
-rwxr-xr-x
ps2ps
634
B
-rwxr-xr-x
ps2ps2
704
B
-rwxr-xr-x
ps4pdf
4.19
KB
-rwxr-xr-x
psbook
18.52
KB
-rwxr-xr-x
psed
52.08
KB
-rwxr-xr-x
psfaddtable
20.52
KB
-rwxr-xr-x
psfgettable
20.52
KB
-rwxr-xr-x
psfstriptable
20.52
KB
-rwxr-xr-x
psfxtable
20.52
KB
-rwxr-xr-x
psidtopgm
10.18
KB
-rwxr-xr-x
pslatex
1.41
KB
-rwxr-xr-x
psnup
26.8
KB
-rwxr-xr-x
psql
334.97
KB
-rwxr-xr-x
psresize
24.37
KB
-rwxr-xr-x
psselect
19.83
KB
-rwxr-xr-x
pstack
1.1
KB
-rwxr-xr-x
pstopnm
19.6
KB
-rwxr-xr-x
pstops
25.27
KB
-rwxr-xr-x
pstree
24.66
KB
-rwxr-xr-x
pstree.x11
24.66
KB
-rwxr-xr-x
pstruct
35.74
KB
-rwxr-xr-x
ptar
2.72
KB
-rwxr-xr-x
ptardiff
2.46
KB
-rwxr-xr-x
ptx
126.56
KB
-rwxr-xr-x
pv.sh
1.39
KB
-rwxr-xr-x
pwdx
9.91
KB
-rwxr-xr-x
pydoc
78
B
-rwxr-xr-x
pygmentize
141
B
-rwxr-xr-x
python
8.82
KB
-rwxr-xr-x
python2
8.82
KB
-rwxr-xr-x
python2.6
8.82
KB
-rwxr-xr-x
qdbus
63.64
KB
-rwxr-xr-x
qdbusviewer
182.99
KB
-rwxr-xr-x
qrttoppm
9.73
KB
-rwxr-xr-x
qtconfig-qt4
342.75
KB
-rwxr-xr-x
quota
80.81
KB
-rwxr-xr-x
quotasync
64.69
KB
-rwxr-xr-x
ranlib
59.55
KB
-rwxr-xr-x
ras2tiff
14.33
KB
-rwxr-xr-x
rasttopnm
15.35
KB
-rwxr-xr-x
raw2tiff
19.59
KB
-rwxr-xr-x
rawtopgm
12.34
KB
-rwxr-xr-x
rawtoppm
11.77
KB
-rwxr-xr-x
rcs
90.95
KB
-rwxr-xr-x
rcs-checkin
3.88
KB
-rwxr-xr-x
rcs2log
19.12
KB
-rwxr-xr-x
rcsclean
85.66
KB
-rwxr-xr-x
rcsdiff
65.53
KB
-rwxr-xr-x
rcsfreeze
3.15
KB
-rwxr-xr-x
rcsmerge
65.53
KB
-rwxr-xr-x
rdate
13.24
KB
-rwxr-xr-x
rdjpgcom
12.19
KB
-rwxr-xr-x
readelf
296.33
KB
-rwxr-xr-x
readlink
39.12
KB
-rwxr-xr-x
reboot
8.67
KB
-rwxr-xr-x
rebuild-gcj-db
441
B
-rwxr-xr-x
rebuild-jar-repository
1.76
KB
-rwxr-xr-x
recode-sr-latin
15.16
KB
-rwxr-xr-x
recountdiff
3.36
KB
-rwxr-xr-x
rediff
36.25
KB
-rwxr-xr-x
refer
125.91
KB
-rwxr-xr-x
reindexdb
59.5
KB
-rwxr-xr-x
rename
9.66
KB
-rwxr-xr-x
renice
10.38
KB
-rwxr-xr-x
replace
1.32
MB
-rwxr-xr-x
repo-graph
4.1
KB
-rwxr-xr-x
repo-rss
9.99
KB
-rwxr-xr-x
repoclosure
11.35
KB
-rwxr-xr-x
repodiff
11.63
KB
-rwxr-xr-x
repomanage
6.88
KB
-rwxr-xr-x
repoquery
45.03
KB
-rwxr-xr-x
report
19.87
KB
-rwxr-xr-x
report-cli
39.41
KB
-rwxr-xr-x
reporter-kerneloops
28.23
KB
-rwxr-xr-x
reporter-mailx
23.69
KB
-rwxr-xr-x
reporter-print
22.07
KB
-rwxr-xr-x
reporter-rhtsupport
55.41
KB
-rwxr-xr-x
reporter-upload
29.73
KB
-rwxr-xr-x
reporter-ureport
34.34
KB
-rwxr-xr-x
reposync
14.74
KB
-rwxr-xr-x
repotrack
8.54
KB
-rwxr-xr-x
reset
21.91
KB
-rwxr-xr-x
resize
17.88
KB
-rwxr-xr-x
resizecons
19.06
KB
-rwxr-xr-x
resolve_stack_dump
1.32
MB
-rwxr-xr-x
resolveip
1.32
MB
-rwxr-xr-x
rev
9.93
KB
-rwxr-xr-x
rgb2ycbcr
15.7
KB
-rwxr-xr-x
rgb3toppm
9.72
KB
-rwxr-xr-x
rhgb-client
35.95
KB
-rwxr-xr-x
rlatopam
13.01
KB
-rwxr-xr-x
rletopnm
31.41
KB
-rwxr-xr-x
rlog
70.2
KB
-rwxr-xr-x
rmail
262
B
-rwxr-xr-x
rmail.postfix
262
B
-rwxr-xr-x
rmid
9.81
KB
-rwxr-xr-x
rmiregistry
9.82
KB
-rwxr-xr-x
rnano
174.7
KB
-rwxr-xr-x
rngtest
16.45
KB
-rwxr-xr-x
rpcclient
7.41
MB
-rwxr-xr-x
rpcgen
93.46
KB
-rwxr-xr-x
rpm2cpio
15.73
KB
-rwxr-xr-x
rpmbuild
34.41
KB
-rwxr-xr-x
rpmdb
29.98
KB
-rwxr-xr-x
rpmquery
29.98
KB
-rwxr-xr-x
rpmsign
29.98
KB
-rwxr-xr-x
rpmverify
29.98
KB
-rwxr-xr-x
rsvg
2.44
KB
-rwxr-xr-x
rsvg-convert
27.82
KB
-rwxr-xr-x
rsvg-view
42.67
KB
-rwxr-xr-x
rsync
405.24
KB
-rwxr-xr-x
rubibtex
2.52
KB
-rwxr-xr-x
rumakeindex
1.75
KB
-rwxr-xr-x
run-parts
1.38
KB
-rwxr-xr-x
runcon
31.16
KB
-rwxr-xr-x
rvim
2.22
MB
-rwxr-xr-x
s2p
52.08
KB
-rwxr-xr-x
sadf
111.99
KB
-rwxr-xr-x
sar
82.96
KB
-rwxr-xr-x
satyr
22.85
KB
-rwxr-xr-x
sbigtopgm
11.43
KB
-rwxr-xr-x
scl
21.48
KB
-rwxr-xr-x
scl_enabled
258
B
-rwxr-xr-x
scl_source
1.83
KB
-rwxr-xr-x
scp
66.06
KB
-rwxr-xr-x
script
16.24
KB
-rwxr-xr-x
scriptreplay
10.91
KB
-rwxr-xr-x
scs2ascii
13.52
KB
-rwxr-xr-x
scs2pdf
26.78
KB
-rwxr-xr-x
scs2ps
15.09
KB
-rwxr-xr-x
sctp_darn
42.79
KB
-rwxr-xr-x
sctp_status
22.45
KB
-rwxr-xr-x
sctp_test
31.59
KB
-rwxr-xr-x
sdiff
28.32
KB
-rwxr-xr-x
secon
18.39
KB
-rwxr-xr-x
sedismod
169.45
KB
-rwxr-xr-x
sedispol
142.02
KB
-rwxr-xr-x
seekwatcher
32.28
KB
-rwxr-xr-x
selfsign-getcert
130.03
KB
-rwxr-xr-x
semodule_deps
194.95
KB
-rwxr-xr-x
semodule_expand
10.34
KB
-rwxr-xr-x
semodule_link
10.27
KB
-rwxr-xr-x
semodule_package
14.59
KB
-rwxr-xr-x
seq
42.91
KB
-rwxr-xr-x
servertool
9.84
KB
-rwxr-xr-x
setarch
13.59
KB
-rwxr-xr-x
setcifsacl
18.29
KB
-rwxr-xr-x
setfacl
36.15
KB
-rwxr-xr-x
setfattr
18.02
KB
-rwxr-xr-x
setkeycodes
10.23
KB
-rwxr-xr-x
setleds
11.98
KB
-rwxr-xr-x
setmetamode
9.74
KB
-rwxr-xr-x
setsid
8.59
KB
-rwxr-xr-x
setterm
25.1
KB
-rwxr-xr-x
setup
8.67
KB
-rwxr-xr-x
setup-nsssysinit.sh
1.5
KB
-rwxr-xr-x
sftp
102.07
KB
-rwxr-xr-x
sg
39.3
KB
-rwsr-xr-x
sgitopnm
14.65
KB
-rwxr-xr-x
sgmlwhich
265
B
-rwxr-xr-x
sha1sum
38.98
KB
-rwxr-xr-x
sha224sum
44.7
KB
-rwxr-xr-x
sha256sum
44.7
KB
-rwxr-xr-x
sha384sum
49.91
KB
-rwxr-xr-x
sha512sum
49.91
KB
-rwxr-xr-x
sharesec
1.57
MB
-rwxr-xr-x
shasum
7.48
KB
-rwxr-xr-x
show-changed-rco
10.11
KB
-rwxr-xr-x
show-installed
16.18
KB
-rwxr-xr-x
showchar
2.51
KB
-rwxr-xr-x
showconsolefont
17.26
KB
-rwxr-xr-x
showkey
13.78
KB
-rwxr-xr-x
shred
50.23
KB
-rwxr-xr-x
shuf
38.03
KB
-rwxr-xr-x
signtool
168.09
KB
-rwxr-xr-x
signver
91.64
KB
-rwxr-xr-x
sinjdoc
132
B
-rw-r-xr-x
sirtopnm
10.22
KB
-rwxr-xr-x
size
32.95
KB
-rwxr-xr-x
skill
18.31
KB
-rwxr-xr-x
slabtop
17.16
KB
-rwxr-xr-x
sldtoppm
17.45
KB
-rwxr-xr-x
slogin
440.16
KB
-rwxr-xr-x
smbcacls
6.1
MB
-rwxr-xr-x
smbclient
6.14
MB
-rwxr-xr-x
smbcontrol
1.6
MB
-rwxr-xr-x
smbcquotas
6.09
MB
-rwxr-xr-x
smbget
6.33
MB
-rwxr-xr-x
smbpasswd
6.12
MB
-rwxr-xr-x
smbprint
2.24
KB
-rwxr-xr-x
smbspool
3.31
MB
-rwxr-xr-x
smbta-util
1.56
MB
-rwxr-xr-x
smbtar
4.78
KB
-rwxr-xr-x
smbtree
6.03
MB
-rwxr-xr-x
sndfile-cmp
10.42
KB
-rwxr-xr-x
sndfile-convert
18.83
KB
-rwxr-xr-x
sndfile-info
14.2
KB
-rwxr-xr-x
sndfile-metadata-get
12.62
KB
-rwxr-xr-x
sndfile-metadata-set
18.17
KB
-rwxr-xr-x
sndfile-play
17.83
KB
-rwxr-xr-x
sndfile-regtest
19.54
KB
-rwxr-xr-x
snice
18.31
KB
-rwxr-xr-x
soelim
25.58
KB
-rwxr-xr-x
spctoppm
10.02
KB
-rwxr-xr-x
speaker-test
34.23
KB
-rwxr-xr-x
splain
17.04
KB
-rwxr-xr-x
split
54.06
KB
-rwxr-xr-x
splitdiff
2.96
KB
-rwxr-xr-x
spottopgm
10.99
KB
-rwxr-xr-x
sprof
26.2
KB
-rwxr-xr-x
sputoppm
9.19
KB
-rwxr-xr-x
sqlite3
58
KB
-rwxr-xr-x
ssh
440.16
KB
-rwxr-xr-x
ssh-add
155.2
KB
-rwxr-xr-x
ssh-agent
138.07
KB
-rwxr-sr-x
ssh-copy-id
1.39
KB
-rwxr-xr-x
ssh-keygen
195.2
KB
-rwxr-xr-x
ssh-keyscan
247.8
KB
-rwxr-xr-x
ssltap
115.44
KB
-rwxr-xr-x
sss_ssh_authorizedkeys
33.24
KB
-rwxr-xr-x
sss_ssh_knownhostsproxy
35.95
KB
-rwxr-xr-x
stap
2.92
MB
-rwxr-xr-x
stap-merge
10.02
KB
-rwxr-xr-x
stap-prep
3.79
KB
-rwxr-xr-x
stap-report
4.41
KB
-rwxr-xr-x
staprun
178.78
KB
---s--x---
stapsh
26.09
KB
-rwxr-xr-x
stat
49.79
KB
-rwxr-xr-x
stdbuf
61.98
KB
-rwxr-xr-x
strace
425.97
KB
-rwxr-xr-x
strace-log-merge
944
B
-rwxr-xr-x
strings
31.7
KB
-rwxr-xr-x
strip
213.94
KB
-rwxr-xr-x
sudo
120.93
KB
---s--x--x
sudoedit
120.93
KB
---s--x--x
sudoreplay
62.34
KB
---x--x--x
sum
33.82
KB
-rwxr-xr-x
svn
195.63
KB
-rwxr-xr-x
svnadmin
61.46
KB
-rwxr-xr-x
svndumpfilter
33.09
KB
-rwxr-xr-x
svnlook
61.07
KB
-rwxr-xr-x
svnsync
43.66
KB
-rwxr-xr-x
svnversion
11.28
KB
-rwxr-xr-x
swig
1.09
MB
-rwxr-xr-x
system-config-firewall-tui
1.13
KB
-rwxr-xr-x
system-config-network
8.67
KB
-rwxr-xr-x
system-config-network-cmd
8.67
KB
-rwxr-xr-x
tabs
14.14
KB
-rwxr-xr-x
tac
94
KB
-rwxr-xr-x
tail
60.05
KB
-rwxr-xr-x
tailf
11.66
KB
-rwxr-xr-x
tangle
46.31
KB
-rwxr-xr-x
tbl
103.23
KB
-rwxr-xr-x
tcpdf_addfont
7.28
KB
-rwxr-xr-x
tee
27.1
KB
-rwxr-xr-x
test
33.02
KB
-rwxr-xr-x
testparm
1.57
MB
-rwxr-xr-x
tex
281.8
KB
-rwxr-xr-x
texconfig
43.33
KB
-rwxr-xr-x
texconfig-dialog
12.75
KB
-rwxr-xr-x
texconfig-sys
838
B
-rwxr-xr-x
texhash
5.66
KB
-rwxr-xr-x
texlinks
8.66
KB
-rwxr-xr-x
texsis
650.74
KB
-rwxr-xr-x
tfmtodit
30.16
KB
-rwxr-xr-x
tftopl
46.8
KB
-rwxr-xr-x
tgatoppm
13.73
KB
-rwxr-xr-x
theora_dump_video
17.2
KB
-rwxr-xr-x
theora_encode
45.05
KB
-rwxr-xr-x
theora_player
266
B
-rwxr-xr-x
theora_player.bin
26.41
KB
-rwxr-xr-x
thinkjettopbm
22.05
KB
-rwxr-xr-x
thumbnail
19.32
KB
-rwxr-xr-x
thumbpdf
40.59
KB
-rwxr-xr-x
tic
52.52
KB
-rwxr-xr-x
tie
14.8
KB
-rwxr-xr-x
tiff2bw
16.05
KB
-rwxr-xr-x
tiff2pdf
67.74
KB
-rwxr-xr-x
tiff2ps
45.01
KB
-rwxr-xr-x
tiff2rgba
15.59
KB
-rwxr-xr-x
tiffcmp
18.64
KB
-rwxr-xr-x
tiffcp
35.16
KB
-rwxr-xr-x
tiffcrop
101.85
KB
-rwxr-xr-x
tiffdither
14.37
KB
-rwxr-xr-x
tiffdump
20.45
KB
-rwxr-xr-x
tiffinfo
17.95
KB
-rwxr-xr-x
tiffmedian
18.83
KB
-rwxr-xr-x
tiffset
12.77
KB
-rwxr-xr-x
tiffsplit
14.85
KB
-rwxr-xr-x
tifftopnm
36.16
KB
-rwxr-xr-x
time
17.51
KB
-rwxr-xr-x
timeout
49
KB
-rwxr-xr-x
tload
11.53
KB
-rwxr-xr-x
tmpwatch
21.15
KB
-rwxr-xr-x
tn5250
36.44
KB
-rwxr-xr-x
tnameserv
10.04
KB
-rwxr-xr-x
toe
15.13
KB
-rwxr-xr-x
tomcat6-digest
1.06
KB
-rwxr-xr-x
tomcat6-tool-wrapper
1.02
KB
-rwxr-xr-x
top
66.77
KB
-rwxr-xr-x
tput
14.91
KB
-rwxr-xr-x
tr
40.48
KB
-rwxr-xr-x
trace-cmd
269.22
KB
-rwxr-xr-x
troff
355.09
KB
-rwxr-xr-x
truncate
49.96
KB
-rwxr-xr-x
tset
21.91
KB
-rwxr-xr-x
tsort
35.02
KB
-rwxr-xr-x
ttmkfdir
107.1
KB
-rwxr-xr-x
tty
24.87
KB
-rwxr-xr-x
tzselect
6.96
KB
-rwxr-xr-x
ucs2any
21.34
KB
-rwxr-xr-x
ul
17.12
KB
-rwxr-xr-x
unexpand
31.01
KB
-rwxr-xr-x
uniq
38.09
KB
-rwxr-xr-x
unix-lpr.sh
4.11
KB
-rwxr-xr-x
unlzma
50.63
KB
-rwxr-xr-x
unpack200
89.75
KB
-rwxr-xr-x
unprotoize
60.15
KB
-rwxr-xr-x
unshare
12.9
KB
-rwxr-xr-x
unwrapdiff
5.8
KB
-rwxr-xr-x
unxz
50.63
KB
-rwxr-xr-x
unzip
165.79
KB
-rwxr-xr-x
unzipsfx
79.17
KB
-rwxr-xr-x
update-ca-trust
8.54
KB
-rwxr-xr-x
update-desktop-database
18.18
KB
-rwxr-xr-x
update-gdk-pixbuf-loaders
484
B
-rwxr-xr-x
update-gio-modules
319
B
-rw-r--r--
update-gtk-immodules
313
B
-rwxr-xr-x
update-mime-database
49.73
KB
-rwxr-xr-x
updatedb
39.77
KB
-rwxr-xr-x
updmap
46.06
KB
-rwxr-xr-x
updmap-sys
829
B
-rwxr-xr-x
uptime
8.16
KB
-rwxr-xr-x
urlgrabber
12.15
KB
-rwxr-xr-x
usb-devices
4.1
KB
-rwxr-xr-x
usbhid-dump
23.39
KB
-rwxr-xr-x
users
27.06
KB
-rwxr-xr-x
utmpdump
13.86
KB
-rwxr-xr-x
uuidgen
9.14
KB
-rwxr-xr-x
uxterm
3.59
KB
-rwxr-xr-x
vacuumdb
37.89
KB
-rwxr-xr-x
valgrind
45.66
KB
-rwxr-xr-x
valgrind-listener
27.78
KB
-rwxr-xr-x
vdir
114.3
KB
-rwxr-xr-x
verify_blkparse
9.63
KB
-rwxr-xr-x
verifytree
9.19
KB
-rwxr-xr-x
vftovp
51.98
KB
-rwxr-xr-x
vgdb
95.42
KB
-rwxr-xr-x
vim
2.22
MB
-rwxr-xr-x
vimdiff
2.22
MB
-rwxr-xr-x
vimtutor
2.04
KB
-rwxr-xr-x
vmstat
24.3
KB
-rwxr-xr-x
vnstat
94.77
KB
-rwxr-xr-x
vnstati
83.65
KB
-rwxr-xr-x
volname
8.7
KB
-rwxr-xr-x
vptovf
60.27
KB
-rwxr-xr-x
w
16.22
KB
-rwxr-xr-x
wall
14.87
KB
-r-xr-sr-x
watch
16.46
KB
-rwxr-xr-x
watchgnupg
13.84
KB
-rwxr-xr-x
wbinfo
1.64
MB
-rwxr-xr-x
wbmptopbm
9.71
KB
-rwxr-xr-x
wc
35.55
KB
-rwxr-xr-x
wcmgr
25.78
KB
-rwxr-xr-x
weave
67.33
KB
-rwxr-xr-x
webalizer
172.85
KB
-rwxr-xr-x
webazolver
172.85
KB
-rwxr-xr-x
wftopfa
284
B
-rwxr-xr-x
wget
358.25
KB
-rwxr-xr-x
whatis
1.74
KB
-rwxr-xr-x
whereis
14.27
KB
-rwxr-xr-x
which
24.93
KB
-rwxr-xr-x
whiptail
29.59
KB
-rwxr-xr-x
who
47.8
KB
-rwxr-xr-x
whoami
25.66
KB
-rwxr-xr-x
winicontoppm
16.57
KB
-rwxr-xr-x
withsctp
227
B
-rwxr-xr-x
write
11.73
KB
-rwxr-sr-x
wrjpgcom
12.89
KB
-rwxr-xr-x
x3270
1.26
MB
-rwxr-xr-x
x3270if
19.76
KB
-rwxr-xr-x
x86_64
13.59
KB
-rwxr-xr-x
x86_64-redhat-linux-c++
264.98
KB
-rwxr-xr-x
x86_64-redhat-linux-g++
264.98
KB
-rwxr-xr-x
x86_64-redhat-linux-gcc
265.34
KB
-rwxr-xr-x
xargs
45.55
KB
-rwxr-xr-x
xbmtopbm
13.3
KB
-rwxr-xr-x
xdg-desktop-icon
14.7
KB
-rwxr-xr-x
xdg-desktop-menu
37.06
KB
-rwxr-xr-x
xdg-email
18.61
KB
-rwxr-xr-x
xdg-icon-resource
23.89
KB
-rwxr-xr-x
xdg-mime
28.88
KB
-rwxr-xr-x
xdg-open
10.94
KB
-rwxr-xr-x
xdg-screensaver
20.57
KB
-rwxr-xr-x
xdg-settings
24.47
KB
-rwxr-xr-x
xgettext
219.69
KB
-rwxr-xr-x
ximtoppm
14.28
KB
-rwxr-xr-x
xml-resolver
514
B
-rwxr-xr-x
xml-xparse
508
B
-rwxr-xr-x
xml-xread
505
B
-rwxr-xr-x
xml_grep
12.88
KB
-rwxr-xr-x
xml_merge
3.98
KB
-rwxr-xr-x
xml_pp
7.57
KB
-rwxr-xr-x
xml_spellcheck
6.44
KB
-rwxr-xr-x
xml_split
21.13
KB
-rwxr-xr-x
xmlcatalog
19.09
KB
-rwxr-xr-x
xmllint
63.34
KB
-rwxr-xr-x
xmlwf
25.47
KB
-rwxr-xr-x
xpmtoppm
18.11
KB
-rwxr-xr-x
xsltproc
28.88
KB
-rwxr-xr-x
xsubpp
4
KB
-rwxr-xr-x
xt5250
2.71
KB
-rwxr-xr-x
xterm
414.13
KB
-rwxr-xr-x
xvminitoppm
10.64
KB
-rwxr-xr-x
xwdtopnm
21.57
KB
-rwxr-xr-x
xxd
18.24
KB
-rwxr-xr-x
xz
50.63
KB
-rwxr-xr-x
xzcat
50.63
KB
-rwxr-xr-x
xzcmp
5.1
KB
-rwxr-xr-x
xzdec
15.07
KB
-rwxr-xr-x
xzdiff
5.1
KB
-rwxr-xr-x
xzegrep
5.36
KB
-rwxr-xr-x
xzfgrep
5.36
KB
-rwxr-xr-x
xzgrep
5.36
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.12
KB
-rwxr-xr-x
yacc
76.46
KB
-rwxr-xr-x
ybmtopbm
9.74
KB
-rwxr-xr-x
yes
25.06
KB
-rwxr-xr-x
ypcat
15.79
KB
-rwxr-xr-x
ypchfn
25.41
KB
-rwxr-xr-x
ypchsh
25.41
KB
-rwxr-xr-x
ypmatch
13.66
KB
-rwxr-xr-x
yppasswd
25.41
KB
-rwxr-xr-x
ypwhich
17.14
KB
-rwxr-xr-x
yum
801
B
-rwxr-xr-x
yum-builddep
8.34
KB
-rwxr-xr-x
yum-config-manager
8.32
KB
-rwxr-xr-x
yum-debug-dump
7.42
KB
-rwxr-xr-x
yum-debug-restore
7.75
KB
-rwxr-xr-x
yum-groups-manager
10.77
KB
-rwxr-xr-x
yumdownloader
12
KB
-rwxr-xr-x
yuvsplittoppm
11.7
KB
-rwxr-xr-x
yuvtoppm
10.13
KB
-rwxr-xr-x
zcmp
67
B
-rwxr-xr-x
zdiff
4.34
KB
-rwxr-xr-x
zegrep
62
B
-rwxr-xr-x
zeisstopnm
10.47
KB
-rwxr-xr-x
zfgrep
62
B
-rwxr-xr-x
zforce
1.98
KB
-rwxr-xr-x
zgrep
4.86
KB
-rwxr-xr-x
zip
210.51
KB
-rwxr-xr-x
zipcloak
107.13
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
165.79
KB
-rwxr-xr-x
zipnote
99.47
KB
-rwxr-xr-x
zipsplit
102.81
KB
-rwxr-xr-x
zless
1.69
KB
-rwxr-xr-x
zmore
2.54
KB
-rwxr-xr-x
znew
5.12
KB
-rwxr-xr-x
zsoelim
25.58
KB
-rwxr-xr-x
zts-php
4.09
MB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : dstat
#!/usr/bin/env python ### This program is free software; you can redistribute it and/or modify ### it under the terms of the GNU Library General Public License as published by ### the Free Software Foundation; version 2 only ### ### This program is distributed in the hope that it will be useful, ### but WITHOUT ANY WARRANTY; without even the implied warranty of ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ### GNU Library General Public License for more details. ### ### You should have received a copy of the GNU Library General Public License ### along with this program; if not, write to the Free Software ### Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ### Copyright 2004-2007 Dag Wieers <dag@wieers.com> from __future__ import generators VERSION = '0.7.0' theme = { 'default': '' } def addpath(path): if os.path.isdir(path) and path not in sys.path: sys.path.append(path) try: import sys, os, time, sched, re import types, resource, getpass, glob, select addpath(os.path.expanduser('~/.dstat/')) # home + /.dstat/ addpath(os.path.abspath(os.path.dirname(sys.argv[0])) + '/plugins/') # binary path + /plugins/ addpath('/usr/share/dstat/') addpath('/usr/local/share/dstat/') except KeyboardInterrupt, e: pass if sys.version_info < (2, 2): sys.exit('error: Python 2.2 or later required') ### Workaround for python <= 2.2.1 try: True, False except NameError: True = 1 False = 0 ### Workaround for python < 2.3 #if 'enumerate' not in __builtins__.__dict__.keys(): if sys.version_info < (2, 3) and sys.version_info >= (2, 2): def enumerate(sequence): index = 0 for item in sequence: yield index, item index = index + 1 elif sys.version_info < (2, 2): def enumerate(sequence): index = 0 seqlist = [] for item in sequence: seqlist.append((index, item)) index = index + 1 return seqlist ### Workaround for python < 2.3 #if 'sum' not in __builtins__.__dict__.keys(): if sys.version_info < (2, 3): def sum(sequence): ret = 0 for i in sequence: ret = ret + i return ret class Options: def __init__(self, args): self.args = args self.blackonwhite = False self.count = -1 self.cpulist = None self.debug = 0 self.delay = 1 self.disklist = None self.full = False self.float = False self.integer = False self.intlist = None self.netlist = None self.swaplist = None self.color = True self.update = True self.header = True self.output = False self.pidfile = False ### List of available plugins allplugins = listplugins() ### List of plugins to show self.plugins = [] ### Implicit if no terminal is used if not sys.stdout.isatty(): self.color = False self.header = False self.update = False ### Temporary hardcoded for my own project self.diskset = { 'local': ('sda', 'hd[a-d]'), 'lores': ('sd[b-k]', 'sd[v-z]', 'sda[a-e]'), 'hires': ('sd[l-u]', 'sda[f-o]'), } try: import getopt opts, args = getopt.getopt(args, 'acdfghilmno:prstTvyC:D:I:M:N:S:V', ['all', 'all-plugins', 'bw', 'blackonwhite', 'debug', 'filesystem', 'float', 'full', 'gonuts', 'help', 'integer', 'list', 'mods', 'modules', 'nocolor', 'noheaders', 'noupdate', 'output=', 'pidfile=', 'version', 'vmstat'] + allplugins) except getopt.error, exc: print 'dstat: %s, try dstat -h for a list of all the options' % str(exc) sys.exit(1) for opt, arg in opts: if opt in ['-c']: self.plugins.append('cpu') elif opt in ['-C']: self.cpulist = arg.split(',') elif opt in ['-d']: self.plugins.append('disk') elif opt in ['-D']: self.disklist = self.get_disklist(arg) elif opt in ['--filesystem']: self.plugins.append('fs') elif opt in ['-g']: self.plugins.append('page') elif opt in ['-i']: self.plugins.append('int') elif opt in ['-I']: self.intlist = arg.split(',') elif opt in ['-l']: self.plugins.append('load') elif opt in ['-m']: self.plugins.append('mem') elif opt in ['-M', '--mods', '--modules']: print >>sys.stderr, 'WARNING: Option %s is deprecated, please use --%s instead' % (opt, ' --'.join(arg.split(','))) self.plugins += arg.split(',') elif opt in ['-n']: self.plugins.append('net') elif opt in ['-N']: self.netlist = arg.split(',') elif opt in ['-p']: self.plugins.append('proc') elif opt in ['-r']: self.plugins.append('io') elif opt in ['-s']: self.plugins.append('swap') elif opt in ['-S']: self.swaplist = arg.split(',') elif opt in ['-t']: self.plugins.append('time') elif opt in ['-T']: self.plugins.append('epoch') elif opt in ['-y']: self.plugins.append('sys') elif opt in ['-a', '--all']: self.plugins += [ 'cpu', 'disk', 'net', 'page', 'sys' ] elif opt in ['-v', '--vmstat']: self.plugins += [ 'proc', 'mem', 'page', 'disk', 'sys', 'cpu' ] elif opt in ['-f', '--full']: self.full = True elif opt in ['--bw', '--black-on-white']: self.blackonwhite = True elif opt in ['--debug']: self.debug = self.debug + 1 elif opt in ['--all-plugins']: ### Make list unique in a fancy fast way plugins = {}.fromkeys(allplugins).keys() plugins.sort() self.plugins += plugins elif opt in ['--float']: self.float = True elif opt in ['--integer']: self.integer = True elif opt in ['--list']: showplugins() sys.exit(0) elif opt in ['--nocolor']: self.color = False self.update = False elif opt in ['--noheaders']: self.header = False elif opt in ['--noupdate']: self.update = False elif opt in ['-o', '--output']: self.output = arg elif opt in ['--pidfile']: self.pidfile = arg elif opt in ['-h', '--help']: self.usage() self.help() sys.exit(0) elif opt in ['-V', '--version']: self.version() sys.exit(0) elif opt.startswith('--'): self.plugins.append(opt[2:]) else: print 'dstat: option %s unknown to getopt, try dstat -h for a list of all the options' % opt sys.exit(1) if self.float and self.integer: print 'dstat: option --float and --integer are mutual exlusive, you can only force one' sys.exit(1) if not self.plugins: self.plugins = [ 'cpu', 'disk', 'net', 'page', 'sys' ] try: if len(args) > 0: self.delay = int(args[0]) if len(args) > 1: self.count = int(args[1]) except: print 'dstat: incorrect argument, try dstat -h for the correct syntax' sys.exit(1) if self.delay <= 0: print 'dstat: delay must be an integer, greater than zero' sys.exit(1) def get_disklist(self, disks): disklist = disks.split(',') ret = [] for disk in disklist: # e.g. /dev/sda1 if disk[:5] == '/dev/': # file or symlink if os.path.exists(disk): # e.g. /dev/disk/by-uuid/15e40cc5-85de-40ea-b8fb-cb3a2eaf872 if os.path.islink(disk): target = os.readlink(disk) # convert relative pathname to absolute if target[0] != '/': target = os.path.join(os.path.dirname(disk), target) target = os.path.normpath(target) print 'dstat: symlink %s -> %s' % (disk, target) disk = target # trim leading /dev/ disk = disk[5:] ret.append(disk) else: print 'dstat: %s does not exist' % disk else: ret.append(disk) return ret def version(self): print 'Dstat %s' % VERSION print 'Written by Dag Wieers <dag@wieers.com>' print 'Homepage at http://dag.wieers.com/home-made/dstat/' print print 'Platform %s/%s' % (os.name, sys.platform) print 'Kernel %s' % os.uname()[2] print 'Python %s' % sys.version print color = "" if not gettermcolor(self.color): color = "no " print 'Terminal type: %s (%scolor support)' % (os.getenv('TERM'), color) rows, cols = gettermsize() print 'Terminal size: %d lines, %d columns' % (rows, cols) print print 'Processors: %d' % getcpunr() print 'Pagesize: %d' % resource.getpagesize() print 'Clock ticks per secs: %d' % os.sysconf('SC_CLK_TCK') print global op op = self showplugins() def usage(self): print 'Usage: dstat [-afv] [options..] [delay [count]]' def help(self): print '''Versatile tool for generating system resource statistics Dstat options: -c, --cpu enable cpu stats -C 0,3,total include cpu0, cpu3 and total -d, --disk enable disk stats -D total,hda include hda and total -g, --page enable page stats -i, --int enable interrupt stats -I 5,eth2 include int5 and interrupt used by eth2 -l, --load enable load stats -m, --mem enable memory stats -n, --net enable network stats -N eth1,total include eth1 and total -p, --proc enable process stats -r, --io enable io stats (I/O requests completed) -s, --swap enable swap stats -S swap1,total include swap1 and total -t, --time enable time/date output -T, --epoch enable time counter (seconds since epoch) -y, --sys enable system stats --aio enable aio stats --fs, --filesystem enable fs stats --ipc enable ipc stats --lock enable lock stats --raw enable raw stats --socket enable socket stats --tcp enable tcp stats --udp enable udp stats --unix enable unix stats --vm enable vm stats --plugin-name enable plugins by plugin name (see manual) --list list all available plugins -a, --all equals -cdngy (default) -f, --full automatically expand -C, -D, -I, -N and -S lists -v, --vmstat equals -pmgdsc -D total --bw, --blackonwhite change colors for white background terminal --float force float values on screen --integer force integer values on screen --nocolor disable colors (implies --noupdate) --noheaders disable repetitive headers --noupdate disable intermediate updates --output file write CSV output to file delay is the delay in seconds between each update (default: 1) count is the number of updates to display before exiting (default: unlimited) ''' ### START STATS DEFINITIONS ### class dstat: vars = None name = None nick = None type = 'f' width = 5 scale = 1024 cols = 0 # val = {} # set1 = {} # set2 = {} def prepare(self): if callable(self.discover): self.discover = self.discover() if callable(self.vars): self.vars = self.vars() if not self.vars: raise Exception, 'No counter objects to monitor' if callable(self.name): self.name = self.name() if callable(self.nick): self.nick = self.nick() if not self.nick: self.nick = self.vars self.val = {}; self.set1 = {}; self.set2 = {} if self.cols <= 0: for name in self.vars: self.val[name] = self.set1[name] = self.set2[name] = 0 else: for name in self.vars + [ 'total', ]: self.val[name] = range(self.cols) self.set1[name] = range(self.cols) self.set2[name] = range(self.cols) for i in range(self.cols): self.val[name][i] = self.set1[name][i] = self.set2[name][i] = 0 # print self.val def open(self, *filenames): "Open stat file descriptor" self.file = [] self.fd = [] for filename in filenames: try: fd = dopen(filename) if fd: self.file.append(filename) self.fd.append(fd) except: pass if not self.fd: raise Exception, 'Cannot open file %s' % filename def readlines(self): "Return lines from any file descriptor" for fd in self.fd: fd.seek(0) for line in fd.readlines(): yield line def splitlines(self, delim=None, replace=None): "Return split lines from any file descriptor" for fd in self.fd: fd.seek(0) for line in fd.readlines(): if replace and delim: yield line.replace(replace, delim).split(delim) elif replace: yield line.replace(replace, ' ').split() else: yield line.split(delim) def statwidth(self): "Return complete stat width" if self.cols: return len(self.vars) * self.colwidth() + len(self.vars) - 1 else: return len(self.nick) * self.colwidth() + len(self.nick) - 1 def colwidth(self): "Return column width" if isinstance(self.name, types.StringType): return self.width else: return len(self.nick) * self.width + len(self.nick) - 1 def title(self): ret = theme['title'] if isinstance(self.name, types.StringType): width = self.statwidth() return ret + self.name[0:width].center(width).replace(' ', '-') + theme['default'] for i, name in enumerate(self.name): width = self.colwidth() ret = ret + name[0:width].center(width).replace(' ', '-') if i + 1 != len(self.name): if op.color: ret = ret + theme['frame'] + char['dash'] + theme['title'] else: ret = ret + char['space'] return ret def subtitle(self): ret = '' if isinstance(self.name, types.StringType): for i, nick in enumerate(self.nick): ret = ret + theme['subtitle'] + nick[0:self.width].center(self.width) + theme['default'] if i + 1 != len(self.nick): ret = ret + char['space'] return ret else: for i, name in enumerate(self.name): for j, nick in enumerate(self.nick): ret = ret + theme['subtitle'] + nick[0:self.width].center(self.width) + theme['default'] if j + 1 != len(self.nick): ret = ret + char['space'] if i + 1 != len(self.name): ret = ret + theme['frame'] + char['colon'] return ret def csvtitle(self): if isinstance(self.name, types.StringType): return '"' + self.name + '"' + ',' * (len(self.nick) - 1) else: ret = '' for i, name in enumerate(self.name): ret = ret + '"' + name + '"' + ',' * (len(self.nick) - 1) if i + 1 != len(self.name): ret = ret + ',' return ret def csvsubtitle(self): ret = '' if isinstance(self.name, types.StringType): for i, nick in enumerate(self.nick): ret = ret + '"' + nick + '"' if i + 1 != len(self.nick): ret = ret + ',' return ret else: for i, name in enumerate(self.name): for j, nick in enumerate(self.nick): ret = ret + '"' + nick + '"' if j + 1 != len(self.nick): ret = ret + ',' if i + 1 != len(self.name): ret = ret + ',' return ret def check(self): "Check if stat is applicable" # if hasattr(self, 'fd') and not self.fd: # raise Exception, 'File %s does not exist' % self.fd if not self.vars: raise Exception, 'No objects found, no stats available' if not self.discover: raise Exception, 'No objects discovered, no stats available' if self.colwidth(): return True raise Exception, 'Unknown problem, please report' def discover(self, *objlist): return True def show(self): "Display stat results" line = '' for i, name in enumerate(self.vars): if isinstance(self.val[name], types.TupleType) or isinstance(self.val[name], types.ListType): line = line + cprintlist(self.val[name], self.type, self.width, self.scale) sep = theme['frame'] + char['colon'] else: line = line + cprint(self.val[name], self.type, self.width, self.scale) sep = char['space'] if i + 1 != len(self.vars): line = line + sep return line def showend(self, totlist, vislist): if self is not vislist[-1]: return theme['frame'] + char['pipe'] elif totlist != vislist: return theme['frame'] + char['gt'] return '' def showcsv(self): def printcsv(var): if var != round(var): return '%.3f' % var return '%s' % round(var) line = '' for i, name in enumerate(self.vars): if isinstance(self.val[name], types.ListType) or isinstance(self.val[name], types.TupleType): for j, val in enumerate(self.val[name]): line = line + printcsv(val) if j + 1 != len(self.val[name]): line = line + ',' elif isinstance(self.val[name], types.StringType): line = line + self.val[name] else: line = line + printcsv(self.val[name]) if i + 1 != len(self.vars): line = line + ',' return line def showcsvend(self, totlist, vislist): if self is not vislist[-1]: return ',' elif self is not totlist[-1]: return ',' return '' class dstat_aio(dstat): def __init__(self): self.name = 'async' self.type = 'd' self.width = 5; self.open('/proc/sys/fs/aio-nr') self.nick = ('#aio',) self.vars = ('aio',) def extract(self): for l in self.splitlines(): if len(l) < 1: continue self.val['aio'] = long(l[0]) class dstat_cpu(dstat): def __init__(self): self.type = 'p' self.width = 3 self.scale = 34 self.open('/proc/stat') self.nick = ( 'usr', 'sys', 'idl', 'wai', 'hiq', 'siq' ) self.cols = 6 def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) < 8 or l[0][0:3] != 'cpu': continue ret.append(l[0][3:]) ret.sort() for item in objlist: ret.append(item) return ret def vars(self): ret = [] if op.cpulist: varlist = op.cpulist elif not op.full: varlist = ('total',) else: varlist = [] cpu = 0 while cpu < cpunr: varlist.append(str(cpu)) cpu = cpu + 1 # if len(varlist) > 2: varlist = varlist[0:2] for name in varlist: if name in self.discover + ['total']: ret.append(name) return ret def name(self): ret = [] for name in self.vars: if name == 'total': ret.append('total cpu usage') else: ret.append('cpu' + name + ' usage') return ret def extract(self): for l in self.splitlines(): if len(l) < 8: continue for name in self.vars: if l[0] == 'cpu' + name or ( l[0] == 'cpu' and name == 'total' ): self.set2[name] = ( long(l[1]) + long(l[2]), long(l[3]), long(l[4]), long(l[5]), long(l[6]), long(l[7]) ) for name in self.vars: for i in range(6): if sum(self.set2[name]) > sum(self.set1[name]): self.val[name][i] = 100.0 * (self.set2[name][i] - self.set1[name][i]) / (sum(self.set2[name]) - sum(self.set1[name])) else: self.val[name][i] = 0 # print >>sys.stderr, "Error: tick problem detected, this should never happen !" if step == op.delay: self.set1.update(self.set2) class dstat_cpu24(dstat): def __init__(self): self.type = 'p' self.width = 3 self.scale = 34 self.open('/proc/stat') self.nick = ( 'usr', 'sys', 'idl') self.cols = 3 def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) != 5 or l[0][0:3] != 'cpu': continue ret.append(l[0][3:]) ret.sort() for item in objlist: ret.append(item) return ret def vars(self): ret = [] if op.cpulist: varlist = op.cpulist elif not op.full: varlist = ('total',) else: varlist = [] cpu = 0 while cpu < cpunr: varlist.append(str(cpu)) cpu = cpu + 1 # if len(varlist) > 2: varlist = varlist[0:2] for name in varlist: if name in self.discover + ['total']: ret.append(name) return ret def name(self): ret = [] for name in self.vars: if name: ret.append('cpu' + name) else: ret.append('cpu total') return ret def extract(self): for l in self.splitlines(): for name in self.vars: if l[0] == 'cpu' + name or ( l[0] == 'cpu' and name == 'total' ): self.set2[name] = ( long(l[1]) + long(l[2]), long(l[3]), long(l[4]) ) for name in self.vars: for i in range(3): self.val[name][i] = 100.0 * (self.set2[name][i] - self.set1[name][i]) / (sum(self.set2[name]) - sum(self.set1[name])) if step == op.delay: self.set1.update(self.set2) class dstat_disk(dstat): def __init__(self): self.type = 'd' self.diskfilter = re.compile('^(dm-[0-9]+|md[0-9]+|[hs]d[a-z]+[0-9]+)$') self.open('/proc/diskstats') self.nick = ('read', 'writ') self.cols = 2 def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) < 13: continue if l[3:] == ['0',] * 11: continue name = l[2] ret.append(name) for item in objlist: ret.append(item) if not ret: raise Exception, "No suitable block devices found to monitor" return ret def vars(self): ret = [] if op.disklist: varlist = op.disklist elif not op.full: varlist = ('total',) else: varlist = [] blockdevices = [os.path.basename(filename) for filename in glob.glob('/sys/block/*')] for name in self.discover: if self.diskfilter.match(name): continue if name not in blockdevices: continue varlist.append(name) # if len(varlist) > 2: varlist = varlist[0:2] varlist.sort() for name in varlist: if name in self.discover + ['total'] + op.diskset.keys(): ret.append(name) return ret def name(self): return ['dsk/'+name for name in self.vars] def extract(self): for name in self.vars: self.set2[name] = (0, 0) for l in self.splitlines(): if len(l) < 13: continue if l[5] == '0' and l[9] == '0': continue name = l[2] if l[3:] == ['0',] * 11: continue if not self.diskfilter.match(name): self.set2['total'] = ( self.set2['total'][0] + long(l[5]), self.set2['total'][1] + long(l[9]) ) if name in self.vars and name != 'total': self.set2[name] = ( self.set2[name][0] + long(l[5]), self.set2[name][1] + long(l[9]) ) for diskset in self.vars: if diskset in op.diskset.keys(): for disk in op.diskset[diskset]: if re.match('^'+disk+'$', name): self.set2[diskset] = ( self.set2[diskset][0] + long(l[5]), self.set2[diskset][1] + long(l[9]) ) for name in self.set2.keys(): self.val[name] = ( (self.set2[name][0] - self.set1[name][0]) * 512.0 / elapsed, (self.set2[name][1] - self.set1[name][1]) * 512.0 / elapsed, ) if step == op.delay: self.set1.update(self.set2) class dstat_disk24(dstat): def __init__(self): self.type = 'd' self.diskfilter = re.compile('(dm-[0-9]+|md[0-9]+|[hs]d[a-z]+[0-9]+)') self.open('/proc/partitions') self.nick = ('read', 'writ') if self.fd and not self.discover: raise Exception, 'Kernel is not compiled with CONFIG_BLK_STATS' self.cols = 2 def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) < 15 or l[0] == 'major' or int(l[1]) % 16 != 0: continue name = l[3] ret.append(name) for item in objlist: ret.append(item) if not ret: raise Exception, "No suitable block devices found to monitor" return ret def vars(self): ret = [] if op.disklist: varlist = op.disklist elif not op.full: varlist = ('total',) else: varlist = [] for name in self.discover: if self.diskfilter.match(name): continue varlist.append(name) # if len(varlist) > 2: varlist = varlist[0:2] varlist.sort() for name in varlist: if name in self.discover + ['total'] + op.diskset.keys(): ret.append(name) return ret def name(self): return ['dsk/'+sysfs_dev(name) for name in self.vars] def extract(self): for name in self.vars: self.set2[name] = (0, 0) for l in self.splitlines(): if len(l) < 15 or l[0] == 'major' or int(l[1]) % 16 != 0: continue name = l[3] if not self.diskfilter.match(name): self.set2['total'] = ( self.set2['total'][0] + long(l[6]), self.set2['total'][1] + long(l[10]) ) if name in self.vars: self.set2[name] = ( self.set2[name][0] + long(l[6]), self.set2[name][1] + long(l[10]) ) for diskset in self.vars: if diskset in op.diskset.keys(): for disk in op.diskset[diskset]: if re.match('^'+disk+'$', name): self.set2[diskset] = ( self.set2[diskset][0] + long(l[6]), self.set2[diskset][1] + long(l[10]) ) for name in self.set2.keys(): self.val[name] = ( (self.set2[name][0] - self.set1[name][0]) * 512.0 / elapsed, (self.set2[name][1] - self.set1[name][1]) * 512.0 / elapsed, ) if step == op.delay: self.set1.update(self.set2) ### FIXME: Needs rework, does anyone care ? class dstat_disk24old(dstat): def __init__(self): self.type = 'd' self.diskfilter = re.compile('(dm-[0-9]+|md[0-9]+|[hs]d[a-z]+[0-9]+)') self.open('/proc/stat') self.nick = ('read', 'writ') self.regexp = re.compile('^\((\d+),(\d+)\):\(\d+,\d+,(\d+),\d+,(\d+)\)$') self.cols = 2 def discover(self, *objlist): ret = [] for l in self.splitlines(':'): if len(l) < 3: continue name = l[0] if name != 'disk_io': continue for pair in line.split()[1:]: m = self.regexp.match(pair) if not m: continue l = m.groups() if len(l) < 4: continue name = dev(int(l[0]), int(l[1])) ret.append(name) break for item in objlist: ret.append(item) if not ret: raise Exception, "No suitable block devices found to monitor" return ret def vars(self): ret = [] if op.disklist: varlist = op.disklist elif not op.full: varlist = ('total',) else: varlist = [] for name in self.discover: if self.diskfilter.match(name): continue varlist.append(name) # if len(varlist) > 2: varlist = varlist[0:2] varlist.sort() for name in varlist: if name in self.discover + ['total'] + op.diskset.keys(): ret.append(name) return ret def name(self): return ['dsk/'+name for name in self.vars] def extract(self): for name in self.vars: self.set2[name] = (0, 0) for line in self.splitlines(':'): if len(l) < 3: continue name = l[0] if name != 'disk_io': continue for pair in line.split()[1:]: m = self.regexp.match(pair) if not m: continue l = m.groups() if len(l) < 4: continue name = dev(int(l[0]), int(l[1])) if not self.diskfilter.match(name): self.set2['total'] = ( self.set2['total'][0] + long(l[2]), self.set2['total'][1] + long(l[3]) ) if name in self.vars and name != 'total': self.set2[name] = ( self.set2[name][0] + long(l[2]), self.set2[name][1] + long(l[3]) ) for diskset in self.vars: if diskset in op.diskset.keys(): for disk in op.diskset[diskset]: if re.match('^'+disk+'$', name): self.set2[diskset] = ( self.set2[diskset][0] + long(l[2]), self.set2[diskset][1] + long(l[3]) ) break for name in self.set2.keys(): self.val[name] = ( (self.set2[name][0] - self.set1[name][0]) * 512.0 / elapsed, (self.set2[name][1] - self.set1[name][1]) * 512.0 / elapsed, ) if step == op.delay: self.set1.update(self.set2) class dstat_epoch(dstat): def __init__(self): self.name = 'epoch' self.width = 10 self.scale = 0 if op.debug: self.width = 13 self.scale = 0 self.vars = ('epoch',) ### We are now using the starttime instead of the execution time of this plugin def extract(self): # self.val['epoch'] = time.time() self.val['epoch'] = starttime class dstat_fs(dstat): def __init__(self): self.name = 'filesystem' self.type = 'd' self.width = 6 self.scale = 1000 self.vars = ('files', 'inodes') def extract(self): for line in dopen('/proc/sys/fs/file-nr'): l = line.split() if len(l) < 1: continue self.val['files'] = long(l[0]) for line in dopen('/proc/sys/fs/inode-nr'): l = line.split() if len(l) < 2: continue self.val['inodes'] = long(l[0]) - long(l[1]) class dstat_int(dstat): def __init__(self): self.name = 'interrupts' self.type = 'd' self.width = 5 self.scale = 1000 self.open('/proc/stat') self.intmap = self.intmap() def intmap(self): ret = {} for line in dopen('/proc/interrupts'): l = line.split() if len(l) <= cpunr: continue l1 = l[0].split(':')[0] l2 = ' '.join(l[cpunr+2:]).split(',') ret[l1] = l1 for name in l2: ret[name.strip().lower()] = l1 return ret def discover(self, *objlist): ret = [] for l in self.splitlines(): if l[0] != 'intr': continue for name, i in enumerate(l[2:]): if long(i) > 10: ret.append(str(name)) return ret # def check(self): # if self.fd[0] and self.vars: # self.fd[0].seek(0) # for l in self.fd[0].splitlines(): # if l[0] != 'intr': continue # return True # return False def vars(self): ret = [] if op.intlist: varlist = op.intlist else: varlist = self.discover for name in varlist: if name in ('0', '1', '2', '8', 'NMI', 'LOC', 'MIS', 'CPU0'): varlist.remove(name) if not op.full and len(varlist) > 3: varlist = varlist[-3:] for name in varlist: if name in self.discover + ['total',]: ret.append(name) elif name.lower() in self.intmap.keys(): ret.append(self.intmap[name.lower()]) return ret def extract(self): for l in self.splitlines(): if not l or l[0] != 'intr': continue for name in self.vars: if name != 'total': self.set2[name] = long(l[int(name) + 2]) self.set2['total'] = long(l[1]) for name in self.vars: self.val[name] = (self.set2[name] - self.set1[name]) * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) class dstat_int24(dstat): def __init__(self): self.name = 'interrupts' self.type = 'd' self.width = 5 self.scale = 1000 self.open('/proc/interrupts') def intmap(self): ret = {} for l in self.splitlines(): if len(l) <= cpunr: continue l1 = l[0].split(':')[0] l2 = ' '.join(l[cpunr+2:]).split(',') ret[l1] = l1 for name in l2: ret[name.strip().lower()] = l1 return ret def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) < cpunr+1: continue name = l[0].split(':')[0] if long(l[1]) > 10: ret.append(name) return ret # def check(self): # if self.fd and self.discover: # self.fd[0].seek(0) # for l in self.fd[0].splitlines(): # if l[0] != 'intr' or len(l) > 2: continue # return True # return False def vars(self): ret = [] if op.intlist: varlist = op.intlist else: varlist = self.discover for name in varlist: if name in ('0', '1', '2', '8', 'CPU0', 'ERR', 'LOC', 'MIS', 'NMI'): varlist.remove(name) if not op.full and len(varlist) > 3: varlist = varlist[-3:] for name in varlist: if name in self.discover: ret.append(name) elif name.lower() in self.intmap.keys(): ret.append(self.intmap[name.lower()]) return ret def extract(self): for l in self.splitlines(): if len(l) < cpunr+1: continue name = l[0].split(':')[0] if name in self.vars: self.set2[name] = 0 for i in l[1:1+cpunr]: self.set2[name] = self.set2[name] + long(i) # elif len(l) > 2 + cpunr: # for hw in self.vars: # for mod in l[2+cpunr:]: # self.set2[mod] = long(l[1]) for name in self.set2.keys(): self.val[name] = (self.set2[name] - self.set1[name]) * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) class dstat_io(dstat): def __init__(self): self.type = 'f' self.width = 5 self.scale = 1000 self.diskfilter = re.compile('(dm-[0-9]+|md[0-9]+|[hs]d[a-z]+[0-9]+)') self.open('/proc/diskstats') self.nick = ('read', 'writ') self.cols = 3 def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) < 13: continue if l[3:] == ['0',] * 11: continue name = l[2] ret.append(name) for item in objlist: ret.append(item) if not ret: raise Exception, "No suitable block devices found to monitor" return ret def vars(self): ret = [] if op.disklist: varlist = op.disklist elif not op.full: varlist = ('total',) else: varlist = [] blockdevices = [os.path.basename(filename) for filename in glob.glob('/sys/block/*')] for name in self.discover: if self.diskfilter.match(name): continue if name not in blockdevices: continue varlist.append(name) # if len(varlist) > 2: varlist = varlist[0:2] varlist.sort() for name in varlist: if name in self.discover + ['total'] + op.diskset.keys(): ret.append(name) return ret def name(self): return ['io/'+name for name in self.vars] def extract(self): for name in self.vars: self.set2[name] = (0, 0) for l in self.splitlines(): if len(l) < 13: continue if l[3] == '0' and l[7] == '0': continue name = l[2] if l[3:] == ['0',] * 11: continue if not self.diskfilter.match(name): self.set2['total'] = ( self.set2['total'][0] + long(l[3]), self.set2['total'][1] + long(l[7]) ) if name in self.vars and name != 'total': self.set2[name] = ( self.set2[name][0] + long(l[3]), self.set2[name][1] + long(l[7]) ) for diskset in self.vars: if diskset in op.diskset.keys(): for disk in op.diskset[diskset]: if re.match('^'+disk+'$', name): self.set2[diskset] = ( self.set2[diskset][0] + long(l[3]), self.set2[diskset][1] + long(l[7]) ) for name in self.set2.keys(): self.val[name] = ( (self.set2[name][0] - self.set1[name][0]) * 1.0 / elapsed, (self.set2[name][1] - self.set1[name][1]) * 1.0 / elapsed, ) if step == op.delay: self.set1.update(self.set2) class dstat_ipc(dstat): def __init__(self): self.name = 'sysv ipc' self.type = 'd' self.width = 3 self.scale = 10 self.vars = ('msg', 'sem', 'shm') def extract(self): for name in self.vars: self.val[name] = len(dopen('/proc/sysvipc/'+name).readlines()) - 1 class dstat_load(dstat): def __init__(self): self.name = 'load avg' self.type = 'f' self.width = 4 self.scale = 0.5 self.open('/proc/loadavg') self.nick = ('1m', '5m', '15m') self.vars = ('load1', 'load5', 'load15') def extract(self): for l in self.splitlines(): if len(l) < 3: continue self.val['load1'] = float(l[0]) self.val['load5'] = float(l[1]) self.val['load15'] = float(l[2]) class dstat_lock(dstat): def __init__(self): self.name = 'file locks' self.type = 'f' self.width = 3 self.scale = 10 self.open('/proc/locks') self.nick = ('pos', 'lck', 'rea', 'wri') self.vars = ('posix', 'flock', 'read', 'write') def extract(self): for name in self.vars: self.val[name] = 0 for l in self.splitlines(): if len(l) < 4: continue if l[1] == 'POSIX': self.val['posix'] = self.val['posix'] + 1 elif l[1] == 'FLOCK': self.val['flock'] = self.val['flock'] + 1 if l[3] == 'READ': self.val['read'] = self.val['read'] + 1 elif l[3] == 'WRITE': self.val['write'] = self.val['write'] + 1 class dstat_mem(dstat): def __init__(self): self.name = 'memory usage' self.open('/proc/meminfo') self.nick = ('used', 'buff', 'cach', 'free') self.vars = ('MemUsed', 'Buffers', 'Cached', 'MemFree') def extract(self): for l in self.splitlines(): if len(l) < 2: continue name = l[0].split(':')[0] if name in self.vars + ('MemTotal', ): self.val[name] = long(l[1]) * 1024.0 self.val['MemUsed'] = self.val['MemTotal'] - self.val['MemFree'] - self.val['Buffers'] - self.val['Cached'] class dstat_net(dstat): def __init__(self): self.open('/proc/net/dev') self.type = 'd' self.nick = ('recv', 'send') self.totalfilter = re.compile('^(lo|bond[0-9]+|face|.+\.[0-9]+)$') self.cols = 2 def discover(self, *objlist): ret = [] for l in self.splitlines(replace=':'): if len(l) < 17: continue if l[2] == '0' and l[10] == '0': continue name = l[0] if name not in ('lo', 'face'): ret.append(name) ret.sort() for item in objlist: ret.append(item) return ret def vars(self): ret = [] if op.netlist: varlist = op.netlist elif not op.full: varlist = ('total',) else: varlist = self.discover # if len(varlist) > 2: varlist = varlist[0:2] varlist.sort() for name in varlist: if name in self.discover + ['total', 'lo']: ret.append(name) if not ret: raise Exception, "No suitable network interfaces found to monitor" return ret def name(self): return ['net/'+name for name in self.vars] def extract(self): self.set2['total'] = [0, 0] for l in self.splitlines(replace=':'): if len(l) < 17: continue if l[2] == '0' and l[10] == '0': continue name = l[0] if name in self.vars : self.set2[name] = ( long(l[1]), long(l[9]) ) if not self.totalfilter.match(name): self.set2['total'] = ( self.set2['total'][0] + long(l[1]), self.set2['total'][1] + long(l[9])) if update: for name in self.set2.keys(): self.val[name] = ( (self.set2[name][0] - self.set1[name][0]) * 1.0 / elapsed, (self.set2[name][1] - self.set1[name][1]) * 1.0 / elapsed, ) if step == op.delay: self.set1.update(self.set2) class dstat_page(dstat): def __init__(self): self.name = 'paging' self.type = 'd' self.open('/proc/vmstat') self.nick = ('in', 'out') self.vars = ('pswpin', 'pswpout') def extract(self): for l in self.splitlines(): if len(l) < 2: continue name = l[0] if name in self.vars: self.set2[name] = long(l[1]) for name in self.vars: self.val[name] = (self.set2[name] - self.set1[name]) * pagesize * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) class dstat_page24(dstat): def __init__(self): self.name = 'paging' self.type = 'd' self.open('/proc/stat') self.nick = ('in', 'out') self.vars = ('pswpin', 'pswpout') def extract(self): for l in self.splitlines(): if len(l) < 3: continue name = l[0] if name != 'swap': continue self.set2['pswpin'] = long(l[1]) self.set2['pswpout'] = long(l[2]) break for name in self.vars: self.val[name] = (self.set2[name] - self.set1[name]) * pagesize * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) class dstat_proc(dstat): def __init__(self): self.name = 'procs' self.type = 'f' self.width = 3 self.scale = 10 self.open('/proc/stat') self.nick = ('run', 'blk', 'new') self.vars = ('procs_running', 'procs_blocked', 'processes') def extract(self): for l in self.splitlines(): if len(l) < 2: continue name = l[0] if name == 'processes': self.val['processes'] = 0 self.set2[name] = long(l[1]) elif name == 'procs_running': self.set2[name] = self.set2[name] + long(l[1]) - 1 elif name == 'procs_blocked': self.set2[name] = self.set2[name] + long(l[1]) self.val['processes'] = (self.set2['processes'] - self.set1['processes']) * 1.0 / elapsed for name in ('procs_running', 'procs_blocked'): self.val[name] = self.set2[name] * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) for name in ('procs_running', 'procs_blocked'): self.set2[name] = 0 class dstat_raw(dstat): def __init__(self): self.name = 'raw' self.type = 'd' self.width = 3 self.scale = 100 self.open('/proc/net/raw') self.nick = ('raw',) self.vars = ('sockets',) def extract(self): lines = -1 for line in self.readlines(): lines = lines + 1 self.val['sockets'] = lines ### Cannot use len() on generator # self.val['sockets'] = len(self.readlines()) - 1 class dstat_socket(dstat): def __init__(self): self.name = 'sockets' self.type = 'd' self.width = 3 self.scale = 100 self.open('/proc/net/sockstat') self.nick = ('tot', 'tcp', 'udp', 'raw', 'frg') self.vars = ('sockets:', 'TCP:', 'UDP:', 'RAW:', 'FRAG:') def extract(self): for l in self.splitlines(): if len(l) < 3: continue self.val[l[0]] = long(l[2]) self.val['other'] = self.val['sockets:'] - self.val['TCP:'] - self.val['UDP:'] - self.val['RAW:'] - self.val['FRAG:'] class dstat_swap(dstat): def __init__(self): self.name = 'swap' self.type = 'd' self.open('/proc/swaps') self.nick = ('used', 'free') def discover(self, *objlist): ret = [] for l in self.splitlines(): if len(l) < 5: continue if l[0] == 'Filename': continue try: int(l[2]) int(l[3]) except: continue # ret.append(improve(l[0])) ret.append(l[0]) ret.sort() for item in objlist: ret.append(item) return ret def vars(self): ret = [] if op.swaplist: varlist = op.swaplist elif not op.full: varlist = ('total',) else: varlist = self.discover # if len(varlist) > 2: varlist = varlist[0:2] varlist.sort() for name in varlist: if name in self.discover + ['total']: ret.append(name) if not ret: raise Exception, "No suitable swap devices found to monitor" return ret def name(self): return ['swp/'+improve(name) for name in self.vars] def extract(self): self.val['total'] = [0, 0] for l in self.splitlines(): if len(l) < 5 or l[0] == 'Filename': continue name = l[0] self.val[name] = ( long(l[3]) * 1024.0, (long(l[2]) - long(l[3])) * 1024.0 ) self.val['total'] = ( self.val['total'][0] + self.val[name][0], self.val['total'][1] + self.val[name][1]) class dstat_swapold(dstat): def __init__(self): self.name = 'swap' self.type = 'd' self.open('/proc/meminfo') self.nick = ('used', 'free') self.vars = ('SwapUsed', 'SwapFree') def extract(self): for l in self.splitlines(): if len(l) < 2: continue name = l[0].split(':')[0] if name in self.vars + ('SwapTotal',): self.val[name] = long(l[1]) * 1024.0 self.val['SwapUsed'] = self.val['SwapTotal'] - self.val['SwapFree'] class dstat_sys(dstat): def __init__(self): self.name = 'system' self.type = 'd' self.width = 5 self.scale = 1000 self.open('/proc/stat') self.nick = ('int', 'csw') self.vars = ('intr', 'ctxt') def extract(self): for l in self.splitlines(): if len(l) < 2: continue name = l[0] if name in self.vars: self.set2[name] = long(l[1]) for name in self.vars: self.val[name] = (self.set2[name] - self.set1[name]) * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) class dstat_tcp(dstat): def __init__(self): self.name = 'tcp sockets' self.type = 'd' self.width = 3 self.scale = 100 self.open('/proc/net/tcp', '/proc/net/tcp6') self.nick = ('lis', 'act', 'syn', 'tim', 'clo') self.vars = ('listen', 'established', 'syn', 'wait', 'close') def extract(self): for name in self.vars: self.val[name] = 0 for l in self.splitlines(): if len(l) < 12: continue ### 01: established, 02: syn_sent, 03: syn_recv, 04: fin_wait1, ### 05: fin_wait2, 06: time_wait, 07: close, 08: close_wait, ### 09: last_ack, 0A: listen, 0B: closing if l[3] in ('0A',): self.val['listen'] = self.val['listen'] + 1 elif l[3] in ('01',): self.val['established'] = self.val['established'] + 1 elif l[3] in ('02', '03', '09',): self.val['syn'] = self.val['syn'] + 1 elif l[3] in ('06',): self.val['wait'] = self.val['wait'] + 1 elif l[3] in ('04', '05', '07', '08', '0B',): self.val['close'] = self.val['close'] + 1 ### FIXME: If timefmt < len(self.nick) output is fucked up class dstat_time(dstat): def __init__(self): self.name = 'system' self.timefmt = os.getenv('DSTAT_TIMEFMT') or '%d-%m %H:%M:%S' self.type = 's' if op.debug: self.width = len(time.strftime(self.timefmt, time.localtime())) + 4 else: self.width = len(time.strftime(self.timefmt, time.localtime())) self.scale = 0 self.nick = ('date/time',) self.vars = ('time',) ### We are now using the starttime for this plugin, not the execution time of this plugin def extract(self): if op.debug: self.val['time'] = time.strftime(self.timefmt, time.localtime(starttime)) + ".%03d" % (round(starttime * 1000 % 1000 )) else: self.val['time'] = time.strftime(self.timefmt, time.localtime(starttime)) class dstat_udp(dstat): def __init__(self): self.name = 'udp' self.type = 'd' self.width = 3 self.scale = 100 self.open('/proc/net/udp', '/proc/net/udp6') self.nick = ('lis', 'act') self.vars = ('listen', 'established') def extract(self): for name in self.vars: self.val[name] = 0 for l in self.splitlines(): if l[3] == '07': self.val['listen'] = self.val['listen'] + 1 elif l[3] == '01': self.val['established'] = self.val['established'] + 1 class dstat_unix(dstat): def __init__(self): self.name = 'unix sockets' self.type = 'd' self.width = 3 self.scale = 100 self.open('/proc/net/unix') self.nick = ('dgm', 'str', 'lis', 'act') self.vars = ('datagram', 'stream', 'listen', 'established') def extract(self): for name in self.vars: self.val[name] = 0 for l in self.splitlines(): if l[4] == '0002': self.val['datagram'] = self.val['datagram'] + 1 elif l[4] == '0001': self.val['stream'] = self.val['stream'] + 1 if l[5] == '01': self.val['listen'] = self.val['listen'] + 1 elif l[5] == '03': self.val['established'] = self.val['established'] + 1 class dstat_vm(dstat): def __init__(self): self.name = 'virtual memory' self.type = 'd' self.width = 5 self.scale = 1000 self.open('/proc/vmstat') self.nick = ('majpf', 'minpf', 'alloc', 'free') self.vars = ('pgmajfault', 'pgfault', 'pgalloc_normal', 'pgfree') def extract(self): for l in self.splitlines(): if len(l) < 2: continue if l[0] not in self.vars: continue self.set2[l[0]] = long(l[1]) for name in self.vars: self.val[name] = (self.set2[name] - self.set1[name]) * 1.0 / elapsed if step == op.delay: self.set1.update(self.set2) ### END STATS DEFINITIONS ### ansi = { 'black': '\033[0;30m', 'darkred': '\033[0;31m', 'darkgreen': '\033[0;32m', 'darkyellow': '\033[0;33m', 'darkblue': '\033[0;34m', 'darkmagenta': '\033[0;35m', 'darkcyan': '\033[0;36m', 'gray': '\033[0;37m', 'darkgray': '\033[1;30m', 'red': '\033[1;31m', 'green': '\033[1;32m', 'yellow': '\033[1;33m', 'blue': '\033[1;34m', 'magenta': '\033[1;35m', 'cyan': '\033[1;36m', 'white': '\033[1;37m', 'blackbg': '\033[40m', 'redbg': '\033[41m', 'greenbg': '\033[42m', 'yellowbg': '\033[43m', 'bluebg': '\033[44m', 'magentabg': '\033[45m', 'cyanbg': '\033[46m', 'whitebg': '\033[47m', 'reset': '\033[0;0m', 'bold': '\033[1m', 'reverse': '\033[2m', 'underline': '\033[4m', 'clear': '\033[2J', # 'clearline': '\033[K', 'clearline': '\033[2K', # 'save': '\033[s', # 'restore': '\033[u', 'save': '\0337', 'restore': '\0338', 'linewrap': '\033[7h', 'nolinewrap': '\033[7l', 'up': '\033[1A', 'down': '\033[1B', 'right': '\033[1C', 'left': '\033[1D', 'default': '\033[0;0m', } char = { 'pipe': '|', 'colon': ':', 'gt': '>', 'space': ' ', 'dash': '-', 'plus': '+', } def set_theme(): if op.blackonwhite: theme = { 'title': ansi['darkblue'], 'subtitle': ansi['darkcyan'] + ansi['underline'], 'frame': ansi['darkblue'], 'default': ansi['default'], 'error': ansi['white'] + ansi['redbg'], 'roundtrip': ansi['darkblue'], 'debug': ansi['darkred'], 'input': ansi['darkgray'], 'text_lo': ansi['black'], 'text_hi': ansi['darkgray'], 'unit_lo': ansi['black'], 'unit_hi': ansi['darkgray'], 'colors_lo': (ansi['darkred'], ansi['darkmagenta'], ansi['darkgreen'], ansi['darkblue'], ansi['darkcyan'], ansi['gray'], ansi['red'], ansi['green']), 'colors_hi': (ansi['red'], ansi['magenta'], ansi['green'], ansi['blue'], ansi['cyan'], ansi['white'], ansi['darkred'], ansi['darkgreen']), } else: theme = { 'title': ansi['darkblue'], 'subtitle': ansi['blue'] + ansi['underline'], 'frame': ansi['darkblue'], 'default': ansi['default'], 'error': ansi['white'] + ansi['redbg'], 'roundtrip': ansi['darkblue'], 'debug': ansi['darkred'], 'input': ansi['darkgray'], 'text_lo': ansi['gray'], 'text_hi': ansi['darkgray'], 'unit_lo': ansi['darkgray'], 'unit_hi': ansi['darkgray'], 'colors_lo': (ansi['red'], ansi['yellow'], ansi['green'], ansi['blue'], ansi['cyan'], ansi['white'], ansi['darkred'], ansi['darkgreen']), 'colors_hi': (ansi['darkred'], ansi['darkyellow'], ansi['darkgreen'], ansi['darkblue'], ansi['darkcyan'], ansi['gray'], ansi['red'], ansi['green']), } return theme def ticks(): "Return the number of 'ticks' since bootup" try: for line in open('/proc/uptime', 'r', 0).readlines(): l = line.split() if len(l) < 2: continue return float(l[0]) except: for line in dopen('/proc/stat').readlines(): l = line.split() if len(l) < 2: continue if l[0] == 'btime': return time.time() - long(l[1]) def improve(devname): "Improve a device name" if devname.startswith('/dev/mapper/'): devname = devname.split('/')[3] elif devname.startswith('/dev/'): devname = devname.split('/')[2] return devname def dopen(filename): "Open a file for reuse, if already opened, return file descriptor" global fds if not os.path.exists(filename): raise Exception, 'File %s does not exist' % filename # return None if 'fds' not in globals().keys(): fds = {} if file not in fds.keys(): fds[filename] = open(filename, 'r', 0) else: fds[filename].seek(0) return fds[filename] def dclose(filename): "Close an open file and remove file descriptor from list" global fds if not 'fds' in globals().keys(): fds = {} if filename in fds: fds[filename].close() del(fds[filename]) def dpopen(cmd): "Open a pipe for reuse, if already opened, return pipes" global pipes import subprocess, shlex if 'pipes' not in globals().keys(): pipes = {} if cmd not in pipes.keys(): p = subprocess.Popen(shlex.split(cmd), bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) pipes[cmd] = (p.stdin, p.stdout, p.stderr) return pipes[cmd] def readpipe(fileobj, tmout = 0.001): "Read available data from pipe in a non-blocking fashion" ret = '' while not select.select([fileobj.fileno()], [], [], tmout)[0]: pass while select.select([fileobj.fileno()], [], [], tmout)[0]: ret = ret + fileobj.read(1) return ret.split('\n') def greppipe(fileobj, str, tmout = 0.001): "Grep available data from pipe in a non-blocking fashion" ret = '' while not select.select([fileobj.fileno()], [], [], tmout)[0]: pass while select.select([fileobj.fileno()], [], [], tmout)[0]: character = fileobj.read(1) if character != '\n': ret = ret + character elif ret.startswith(str): return ret else: ret = '' if op.debug: raise Exception, 'Nothing found during greppipe data collection' return None def matchpipe(fileobj, string, tmout = 0.001): "Match available data from pipe in a non-blocking fashion" ret = '' regexp = re.compile(string) while not select.select([fileobj.fileno()], [], [], tmout)[0]: pass while select.select([fileobj.fileno()], [], [], tmout)[0]: character = fileobj.read(1) if character != '\n': ret = ret + character elif regexp.match(ret): return ret else: ret = '' if op.debug: raise Exception, 'Nothing found during matchpipe data collection' return None def dchg(var, width, base): "Convert decimal to string given base and length" c = 0 while True: ret = str(long(round(var))) if len(ret) <= width: break var = var / base c = c + 1 else: c = -1 return ret, c def fchg(var, width, base): "Convert float to string given scale and length" c = 0 while True: if var == 0: ret = str('0') break # ret = repr(round(var)) # ret = repr(long(round(var, maxlen))) ret = str(long(round(var, width))) if len(ret) <= width: i = width - len(ret) - 1 while i > 0: ret = ('%%.%df' % i) % var if len(ret) <= width and ret != str(long(round(var, width))): break i = i - 1 else: ret = str(long(round(var))) break var = var / base c = c + 1 else: c = -1 return ret, c def cprintlist(varlist, type, width, scale): "Return all columns color printed" ret = sep = '' for var in varlist: ret = ret + sep + cprint(var, type, width, scale) sep = ' ' return ret def cprint(var, type = 'f', width = 4, scale = 1000): "Color print one column" base = 1000 if scale == 1024: base = 1024 ### Use units when base is exact 1000 or 1024 unit = False if scale in (1000, 1024) and width >= len(str(base)): unit = True width = width - 1 ### If this is a negative value, return a dash if var < 0: if unit: return theme['error'] + '-'.rjust(width) + ' ' + theme['default'] else: return theme['error'] + '-'.rjust(width) + theme['default'] if base == 1024: units = ('B', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') else: units = (' ', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') if step == op.delay: colors = theme['colors_lo'] ctext = theme['text_lo'] cunit = theme['unit_lo'] else: colors = theme['colors_hi'] ctext = theme['text_hi'] cunit = theme['unit_hi'] ### Convert value to string given base and field-length if op.integer and type in ('d', 'p', 'f'): ret, c = dchg(var, width, base) elif op.float and type in ('d', 'p', 'f'): ret, c = fchg(var, width, base) elif type in ('d', 'p'): ret, c = dchg(var, width, base) elif type in ('f'): ret, c = fchg(var, width, base) elif type in ('s'): ret, c = str(var), ctext elif type in ('t'): ret, c = '%2dh%02d' % (var / 60, var % 60), ctext else: raise Exception, 'Type %s not known to dstat.' % type ### Set the counter color if ret == '0': color = cunit elif scale <= 0: color = ctext elif scale not in (1000, 1024): color = colors[int(var/scale)%len(colors)] elif type in ('p'): color = colors[int(round(var)/scale)%len(colors)] elif type in ('d', 'f'): color = colors[c%len(colors)] else: color = ctext ### Justify value to left if string if type in ('s',): ret = color + ret.ljust(width) else: ret = color + ret.rjust(width) ### Add unit to output if unit: if c != -1 and round(var) != 0: ret += cunit + units[c] else: ret += ' ' return ret def header(totlist, vislist): line = '' ### Process title for o in vislist: line += o.title() if o is not vislist[-1]: line += theme['frame'] + char['space'] elif totlist != vislist: line += theme['title'] + char['gt'] line += '\n' ### Process subtitle for o in vislist: line += o.subtitle() if o is not vislist[-1]: line += theme['frame'] + char['pipe'] elif totlist != vislist: line += theme['title'] + char['gt'] return line + '\n' def csvheader(totlist): line = '' ### Process title for o in totlist: line = line + o.csvtitle() if o is not totlist[-1]: line = line + ',' line += '\n' ### Process subtitle for o in totlist: line = line + o.csvsubtitle() if o is not totlist[-1]: line = line + ',' return line + '\n' def info(level, str): "Output info message" # if level <= op.verbose: print >>sys.stderr, str def die(ret, str): "Print error and exit with errorcode" print >>sys.stderr, str exit(ret) def initterm(): "Initialise terminal" global termsize ### Unbuffered sys.stdout # sys.stdout = os.fdopen(1, 'w', 0) try: global fcntl, struct, termios import fcntl, struct, termios termios.TIOCGWINSZ except: try: curses.setupterm() curses.tigetnum('lines'), curses.tigetnum('cols') except: pass else: termsize = None, 2 else: termsize = None, 1 def gettermsize(): "Return the dynamic terminal geometry" global termsize # if not termsize[0] and not termsize[1]: if not termsize[0]: try: if termsize[1] == 1: s = struct.pack('HHHH', 0, 0, 0, 0) x = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, s) return struct.unpack('HHHH', x)[:2] elif termsize[1] == 2: curses.setupterm() return curses.tigetnum('lines'), curses.tigetnum('cols') else: termsize = (int(os.environ['LINES']), int(os.environ['COLUMNS'])) except: termsize = 25, 80 return termsize def gettermcolor(color=True): if color and sys.stdout.isatty(): try: import curses curses.setupterm() if curses.tigetnum('colors') < 0: return False except: print >>sys.stderr, 'Color support is disabled, python-curses is not installed.' return False return color ### We only want to filter out paths, not ksoftirqd/1 def basename(name): if name[0] in ('/', '.'): return os.path.basename(name) return name def getnamebypid(pid, name): ret = None try: cmdline = open('/proc/%s/cmdline' % pid).read().split('\0') ret = basename(cmdline[0]) if ret in ('bash', 'csh', 'ksh', 'perl', 'python', 'ruby', 'sh'): ret = basename(cmdline[1]) if ret.startswith('-'): ret = basename(cmdline[-2]) if ret.startswith('-'): raise if not ret: raise except: ret = basename(name) return ret def getcpunr(): "Return the number of CPUs in the system" cpunr = -1 for line in dopen('/proc/stat').readlines(): if line[0:3] == 'cpu': cpunr = cpunr + 1 if cpunr < 0: raise "Problem finding number of CPUs in system." return cpunr ### FIXME: Add scsi support too and improve def sysfs_dev(device): "Convert sysfs device names into device names" m = re.match('ide/host([0-9])/bus([0-9])/target([0-9])/lun([0-9])/disc', device) if m: l = m.groups() # ide/host0/bus0/target0/lun0/disc -> 0 -> hda # ide/host0/bus1/target0/lun0/disc -> 2 -> hdc nr = int(l[1]) * 2 + int(l[3]) return 'hd' + chr(ord('a') + nr) m = re.match('placeholder', device) if m: return 'sdX' return device def dev(maj, min): "Convert major/minor pairs into device names" ram = [1, ] ide = [3, 22, 33, 34, 56, 57, 88, 89, 90, 91] loop = [7, ] scsi = [8, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135] md = [9, ] ida = [72, 73, 74, 75, 76, 77, 78, 79] ubd = [98,] cciss = [104,] dm = [253,] if maj in scsi: disc = chr(ord('a') + scsi.index(maj) * 16 + min / 16) part = min % 16 if not part: return 'sd%s' % disc return 'sd%s%d' % (disc, part) elif maj in ide: disc = chr(ord('a') + ide.index(maj) * 2 + min / 64) part = min % 64 if not part: return 'hd%s' % disc return 'hd%s%d' % (disc, part) elif maj in dm: return 'dm-%d' % min elif maj in md: return 'md%d' % min elif maj in loop: return 'loop%d' % min elif maj in ram: return 'ram%d' % min elif maj in cciss: disc = cciss.index(maj) * 16 + min / 16 part = min % 16 if not part: return 'c0d%d' % disc return 'c0d%dp%d' % (disc, part) elif maj in ida: cont = ida.index(maj) disc = min / 16 part = min % 16 if not part: return 'ida%d-%d' % (cont, disc) return 'ida%d-%d-%d' % (cont, disc, part) elif maj in ubd: disc = ubd.index(maj) * 16 + min / 16 part = min % 16 if not part: return 'ubd%d' % disc return 'ubd%d-%d' % (disc, part) else: return 'dev%d-%d' % (maj, min) #def mountpoint(dev): # "Return the mountpoint of a mounted device/file" # for entry in dopen('/etc/mtab').readlines(): # if entry: # devlist = entry.split() # if dev == devlist[0]: # return devlist[1] #def readfile(file): # ret = '' # for line in open(file,'r').readlines(): # ret = ret + line # return ret #cdef extern from "sched.h": # struct sched_param: # int sched_priority # int sched_setscheduler(int pid, int policy,sched_param *p) # #SCHED_FIFO = 1 # #def switchRTCPriority(nb): # cdef sched_param sp # sp.sched_priority = nb # sched_setscheduler (0,SCHED_FIFO , &sp); def exit(ret): sys.stdout.write(ansi['reset']) sys.exit(ret) def listplugins(): plugins = [] remod = re.compile('dstat_(.+)$') for filename in globals(): if filename.startswith('dstat_'): plugins.append(remod.match(filename).groups()[0]) remod = re.compile('.+/dstat_(.+).py$') for path in sys.path: for filename in glob.glob(path + '/dstat_*.py'): plugins.append(remod.match(filename).groups()[0].replace('_', '-')) plugins.sort() return plugins def showplugins(): rows, cols = gettermsize() print 'internal:\n\t', remod = re.compile('dstat_(.+)$') plugins = [] for filename in globals(): if filename.startswith('dstat_'): plugins.append(remod.match(filename).groups()[0].replace('_', '-')) plugins.sort() cols2 = cols - 8 for mod in plugins: cols2 = cols2 - len(mod) - 2 if cols2 <= 0: print '\n\t', cols2 = cols - len(mod) - 10 if mod != plugins[-1]: print mod+',', print mod remod = re.compile('.+/dstat_(.+).py$') for path in sys.path: plugins = [] for filename in glob.glob(path + '/dstat_*.py'): plugins.append(remod.match(filename).groups()[0].replace('_', '-')) if not plugins: continue plugins.sort() cols2 = cols - 8 print '%s:\n\t' % os.path.abspath(path), for mod in plugins: cols2 = cols2 - len(mod) - 2 if cols2 <= 0: print '\n\t', cols2 = cols - len(mod) - 10 if mod != plugins[-1]: print mod+',', print mod def main(): global pagesize, cpunr, hz, ansi, theme, outputfile global totlist, inittime global update, missed pagesize = resource.getpagesize() cpunr = getcpunr() hz = os.sysconf('SC_CLK_TCK') interval = 1 user = getpass.getuser() hostname = os.uname()[1] ### Disable line-wrapping (does not work ?) sys.stdout.write('\033[7l') ### Write term-title if sys.stdout.isatty(): shell = os.getenv('XTERM_SHELL') term = os.getenv('TERM') if shell == '/bin/bash' and term and re.compile('(screen*|xterm*)').match(term): sys.stdout.write('\033]0;(%s@%s) %s %s\007' % (user, hostname, os.path.basename(sys.argv[0]), ' '.join(op.args))) ### Check background color (rxvt) ### COLORFGBG="15;default;0" # if os.environ['COLORFGBG'] and len(os.environ['COLORFGBG'].split(';')) >= 3: # l = os.environ['COLORFGBG'].split(';') # bg = int(l[2]) # if bg < 7: # print 'Background is dark' # else: # print 'Background is light' # else: # print 'Background is unknown, assuming dark.' ### Check terminal capabilities op.color = gettermcolor(op.color) ### Prepare CSV output file if op.output: if os.path.exists(op.output): outputfile = open(op.output, 'a', 0) outputfile.write('\n\n') else: outputfile = open(op.output, 'w', 0) outputfile.write('"Dstat %s CSV output"\n' % VERSION) outputfile.write('"Author:","Dag Wieers <dag@wieers.com>",,,,"URL:","http://dag.wieers.com/home-made/dstat/"\n') outputfile.write('"Host:","%s",,,,"User:","%s"\n' % (hostname, user)) outputfile.write('"Cmdline:","dstat %s",,,,"Date:","%s"\n\n' % (' '.join(op.args), time.strftime('%d %b %Y %H:%M:%S %Z', time.localtime()))) ### Create pidfile if op.pidfile: try: pidfile = open(op.pidfile, 'w', 0) pidfile.write(str(os.getpid())) pidfile.close() except Exception, e: print >>sys.stderr, 'Failed to create pidfile %s' % op.pidfile, e op.pidfile = False ### Empty ansi and theme database if no colors are requested if not op.color: op.update = False for key in ansi.keys(): ansi[key] = '' for key in theme.keys(): theme[key] = '' theme['colors_hi'] = (ansi['default'],) theme['colors_lo'] = (ansi['default'],) # print ansi['blackbg'] if not op.update: interval = op.delay ### Build list of requested plugins linewidth = 0 totlist = [] for plugin in op.plugins: if plugin in ('list', 'help'): showplugins() exit(0) elif plugin == 'cpu': mods = ( 'cpu', 'cpu24' ) elif plugin == 'disk': mods = ( 'disk', 'disk24', 'disk24old' ) elif plugin == 'int': mods = ( 'int', 'int24' ) elif plugin == 'page': mods = ( 'page', 'page24' ) elif plugin == 'swap': mods = ( 'swap', 'swapold' ) else: mods = ( plugin, ) for mod in mods: pluginfile = 'dstat_' + mod.replace('-', '_') try: if pluginfile not in globals().keys(): import imp filename, pathname, description = imp.find_module(pluginfile) ### TODO: Would using .pyc help with anything ? ### Try loading python plugin if description[0] in ('.py'): execfile(pathname) exec 'o = dstat_plugin(); o.filename = "%s"; o.check(); o.prepare(); del(dstat_plugin);' % pluginfile ### Try loading C plugin elif description[0] == '.so': exec 'import %s' % pluginfile exec 'o = %s.new(); o.check(); o.prepare();' % pluginfile # exec 'o = %s.init(dstat)' % pluginfile # print dir(o) # print o.__module__ # print o.name else: print >>sys.stderr, 'Module %s is of unknown type.' % pluginfile else: exec 'o = %s(); o.check(); o.prepare();' % pluginfile # print o.__module__ except Exception, e: if mod == mods[-1]: print >>sys.stderr, 'Module %s failed to load. (%s)' % (pluginfile, e) elif op.debug: print >>sys.stderr, 'Module %s failed to load, trying another. (%s)' % (pluginfile, e) if op.debug >= 3: raise # tb = sys.exc_info()[2] continue linewidth = linewidth + o.statwidth() + 1 totlist.append(o) break if not totlist: die(8, 'None of the stats you selected are available.') if op.debug: for o in totlist: print 'Module', if hasattr(o, 'filename'): print o.filename, else: print str(o.__class__).split('.')[1], if hasattr(o, 'file'): print 'requires', o.file, print if op.output: outputfile.write(csvheader(totlist)) scheduler = sched.scheduler(time.time, time.sleep) inittime = time.time() update = 0 missed = 0 ### Let the games begin while update <= op.delay * op.count or op.count == -1: scheduler.enterabs(inittime + update, 1, perform, (update,)) # scheduler.enter(1, 1, perform, (update,)) scheduler.run() sys.stdout.flush() update = update + interval if op.update: sys.stdout.write('\n') def perform(update): global totlist, oldvislist, vislist, showheader, rows, cols global elapsed, totaltime, starttime global loop, step, missed starttime = time.time() loop = (update - 1 + op.delay) / op.delay step = ((update - 1) % op.delay) + 1 ### Get current time (may be different from schedule) for debugging if not op.debug: curwidth = 0 else: if step == 1 or loop == 0: totaltime = 0 curwidth = 8 ### FIXME: This is temporary functionality, we should do this better ### If it takes longer than 500ms, than warn ! if loop != 0 and starttime - inittime - update > 1: missed = missed + 1 return 0 ### Initialise certain variables if loop == 0: elapsed = ticks() rows, cols = 0, 0 vislist = [] oldvislist = [] showheader = True else: elapsed = step ### FIXME: Make this part smarter if sys.stdout.isatty(): oldcols = cols rows, cols = gettermsize() ### Trim object list to what is visible on screen if oldcols != cols: vislist = [] for o in totlist: newwidth = curwidth + o.statwidth() + 1 if newwidth <= cols or ( vislist == totlist[:-1] and newwidth < cols ): vislist.append(o) curwidth = newwidth ### Check when to display the header if op.header and rows >= 6: if oldvislist != vislist: showheader = True elif step == 1 and loop % (rows - 1) == 0: showheader = True oldvislist = vislist else: vislist = totlist ### Prepare the colors for intermediate updates, last step in a loop is definitive if step == op.delay: theme['default'] = ansi['reset'] else: theme['default'] = theme['text_lo'] ### The first step is to show the definitive line if necessary newline = '' if op.update: if step == 1 and update != 0: newline = '\n' + ansi['reset'] + ansi['clearline'] + ansi['save'] elif loop != 0: newline = ansi['restore'] ### Display header if showheader: if loop == 0 and totlist != vislist: print >>sys.stderr, 'Terminal width too small, trimming output.' showheader = False sys.stdout.write(newline) newline = header(totlist, vislist) ### Calculate all objects (visible, invisible) line = newline oline = '' for o in totlist: o.extract() if o in vislist: line = line + o.show() + o.showend(totlist, vislist) if op.output and step == op.delay: oline = oline + o.showcsv() + o.showcsvend(totlist, vislist) ### Print stats sys.stdout.write(line + theme['input']) if op.output and step == op.delay: outputfile.write(oline + '\n') ### Print debugging output if op.debug: totaltime = totaltime + (time.time() - starttime) * 1000.0 if loop == 0: totaltime = totaltime * step if op.debug == 1: sys.stdout.write('%s%6.2fms%s' % (theme['roundtrip'], totaltime / step, theme['input'])) elif op.debug == 2: sys.stdout.write('%s%6.2f %s%d:%d%s' % (theme['roundtrip'], totaltime / step, theme['debug'], loop, step, theme['input'])) elif op.debug > 2: sys.stdout.write('%s%6.2f %s%d:%d:%d%s' % (theme['roundtrip'], totaltime / step, theme['debug'], loop, step, update, theme['input'])) if missed > 0: # sys.stdout.write(' '+theme['error']+'= warn =') sys.stdout.write(' ' + theme['error'] + 'missed ' + str(missed+1) + ' ticks' + theme['input']) missed = 0 ### Finish the line if not op.update: sys.stdout.write('\n') ### Main entrance if __name__ == '__main__': try: initterm() op = Options(sys.argv[1:]) theme = set_theme() main() except KeyboardInterrupt, e: if op.update: sys.stdout.write('\n') sys.stdout.write(theme['default']) if op.pidfile and os.path.exists(op.pidfile): os.remove(op.pidfile) exit(0) else: op = Options('') step = 1 # vim:ts=4:sw=4:et
Close