Linux 74-214-172-243.cprapid.com 4.18.0-553.120.1.el8_10.x86_64 #1 SMP Mon Apr 20 18:04:27 EDT 2026 x86_64
Apache
: 74.214.172.243 | : 216.73.216.140
18 Domain
8.2.31
cardrly
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
2to3
106
B
-rwxr-xr-x
2to3-3.6
106
B
-rwxr-xr-x
CSPUpdate
3.53
MB
-rwxr-xr-x
CSPUpdateFallback
3.53
MB
-rwxr-xr-x
GET
15.84
KB
-rwxr-xr-x
HEAD
15.84
KB
-rwxr-xr-x
Mail
408.89
KB
-rwxr-xr-x
POST
15.84
KB
-rwxr-xr-x
[
53.6
KB
-rwxr-xr-x
ab
72.63
KB
-rwxr-xr-x
aclocal
35.62
KB
-rwxr-xr-x
aclocal-1.16
35.62
KB
-rwxr-xr-x
acyclic
12.41
KB
-rwxr-xr-x
addr2line
33.42
KB
-rwxr-xr-x
alias
29
B
-rwxr-xr-x
animate
11.88
KB
-rwxr-xr-x
appstream-compose
33.21
KB
-rwxr-xr-x
appstream-util
114.34
KB
-rwxr-xr-x
apropos
54.04
KB
-rwxr-xr-x
ar
61.96
KB
-rwxr-xr-x
arch
37.34
KB
-rwxr-xr-x
aria_chk
5.38
MB
-rwxr-xr-x
aria_dump_log
5.18
MB
-rwxr-xr-x
aria_ftdump
5.19
MB
-rwxr-xr-x
aria_pack
5.22
MB
-rwxr-xr-x
aria_read_log
5.33
MB
-rwxr-xr-x
arpaname
11.82
KB
-rwxr-xr-x
as
889.91
KB
-rwxr-xr-x
aspell
159.5
KB
-rwxr-xr-x
at
57.33
KB
-rwxr-xr-x
atq
57.33
KB
-rwxr-xr-x
atrm
57.33
KB
-rwxr-xr-x
audit2allow
14.85
KB
-rwxr-xr-x
audit2why
14.85
KB
-rwxr-xr-x
aulast
20.58
KB
-rwxr-xr-x
aulastlog
12.44
KB
-rwxr-xr-x
ausyscall
12.27
KB
-rwxr-xr-x
authselect
41.13
KB
-rwxr-xr-x
autoconf
14.42
KB
-rwxr-xr-x
autoheader
8.33
KB
-rwxr-xr-x
autom4te
31.43
KB
-rwxr-xr-x
automake
251.9
KB
-rwxr-xr-x
automake-1.16
251.9
KB
-rwxr-xr-x
autopoint
25.95
KB
-rwxr-xr-x
autoreconf
20.57
KB
-rwxr-xr-x
autoscan
16.72
KB
-rwxr-xr-x
autoupdate
33.08
KB
-rwxr-xr-x
auvirt
32.73
KB
-rwxr-xr-x
awk
669.77
KB
-rwxr-xr-x
b2sum
57.69
KB
-rwxr-xr-x
base32
41.47
KB
-rwxr-xr-x
base64
41.48
KB
-rwxr-xr-x
basename
37.41
KB
-rwxr-xr-x
bash
1.1
MB
-rwxr-xr-x
bashbug
7.18
KB
-rwxr-xr-x
bashbug-64
7.18
KB
-rwxr-xr-x
batch
137
B
-rwxr-xr-x
bc
94.98
KB
-rwxr-xr-x
bcomps
20.62
KB
-rwxr-xr-x
bdftopcf
45.4
KB
-rwxr-xr-x
bg
26
B
-rwxr-xr-x
bind9-config
3.33
KB
-rwxr-xr-x
bison
437.72
KB
-rwxr-xr-x
bond2team
22.74
KB
-rwxr-xr-x
bootctl
45.15
KB
-rwxr-xr-x
brotli
739.2
KB
-rwxr-xr-x
bunzip2
36.86
KB
-rwxr-xr-x
busctl
77.27
KB
-rwxr-xr-x
bwrap
69.63
KB
-rwxr-xr-x
bzcat
36.86
KB
-rwxr-xr-x
bzcmp
2.08
KB
-rwxr-xr-x
bzdiff
2.08
KB
-rwxr-xr-x
bzegrep
1.64
KB
-rwxr-xr-x
bzfgrep
1.64
KB
-rwxr-xr-x
bzgrep
1.64
KB
-rwxr-xr-x
bzip2
36.86
KB
-rwxr-xr-x
bzip2recover
16.44
KB
-rwxr-xr-x
bzless
1.23
KB
-rwxr-xr-x
bzmore
1.23
KB
-rwxr-xr-x
c++
1.21
MB
-rwxr-xr-x
c++filt
28.89
KB
-rwxr-xr-x
c89
224
B
-rwxr-xr-x
c99
215
B
-rwxr-xr-x
ca-legacy
1.61
KB
-rwxr-xr-x
cairo-sphinx
69.71
KB
-rwxr-xr-x
cal
65.98
KB
-rwxr-xr-x
captoinfo
85.31
KB
-rwxr-xr-x
cat
37.46
KB
-rwxr-xr-x
catchsegv
3.21
KB
-rwxr-xr-x
catman
41.45
KB
-rwxr-xr-x
cc
1.21
MB
-rwxr-xr-x
ccomps
24.72
KB
-rwxr-xr-x
cd
26
B
-rwxr-xr-x
centrino-decode
11.27
KB
-rwxr-xr-x
certutil
199.15
KB
-rwxr-xr-x
chacl
16.36
KB
-rwxr-xr-x
chage
77.68
KB
-rwxr-xr-x
chardetect
400
B
-rwxr-xr-x
chattr
16.41
KB
-rwxr-xr-x
chcat
13.57
KB
-rwxr-xr-x
chcon
70.34
KB
-rwxr-xr-x
checkipv2
2.75
MB
-rwxr-xr-x
checkmodule
427.01
KB
-rwxr-xr-x
checkpolicy
488.64
KB
-rwxr-xr-x
checkstatus
3.56
MB
-rwxr-xr-x
chfn
32.9
KB
-rwx--x--x
chgrp
66.29
KB
-rwxr-xr-x
chmem
45.47
KB
-rwxr-xr-x
chmod
62.2
KB
-rwxr-xr-x
chown
70.29
KB
-rwxr-xr-x
chronyc
127.6
KB
-rwxr-xr-x
chrt
37.19
KB
-rwxr-xr-x
chsh
24.72
KB
-rwx--x--x
chvt
12.53
KB
-rwxr-xr-x
cifsiostat
41.35
KB
-rwxr-xr-x
circo
12.26
KB
-rwxr-xr-x
cksum
37.39
KB
-rwxr-xr-x
clear
12.54
KB
-rwxr-xr-x
cloud-id
402
B
-rwxr-xr-x
cloud-init
406
B
-rwxr-xr-x
cloud-init-per
2.06
KB
-rwxr-xr-x
cluster
518.33
KB
-rwxr-xr-x
cmp
103.76
KB
-rwxr-xr-x
cmsutil
122.46
KB
-rwxr-xr-x
cockpit-bridge
500.39
KB
-rwxr-xr-x
col
29.01
KB
-rwxr-xr-x
colcrt
16.48
KB
-rwxr-xr-x
colrm
24.88
KB
-rwxr-xr-x
column
49.47
KB
-rwxr-xr-x
comm
41.56
KB
-rwxr-xr-x
command
31
B
-rwxr-xr-x
compare
11.89
KB
-rwxr-xr-x
compile_et
1.31
KB
-rwxr-xr-x
composite
11.88
KB
-rwxr-xr-x
config_data
6.97
KB
-rwxr-xr-x
conjure
11.88
KB
-rwxr-xr-x
convert
11.88
KB
-rwxr-xr-x
coredumpctl
44.91
KB
-rwxr-xr-x
corelist
14.64
KB
-rwxr-xr-x
cp
147.98
KB
-rwxr-xr-x
cpan
8.17
KB
-rwxr-xr-x
cpan-mirrors
4.19
KB
-rwxr-xr-x
cpapi1
3.33
MB
-rwxr-xr-x
cpapi2
3.33
MB
-rwxr-xr-x
cpapi3
3.33
MB
-rwxr-xr-x
cpio
159.8
KB
-rwxr-xr-x
cpp
1.21
MB
-rwxr-xr-x
cpupower
66.91
KB
-rwxr-xr-x
crb
2.58
KB
-rwxr--r--
crc32
1.02
KB
-rwxr-xr-x
crlutil
134.95
KB
-rwxr-xr-x
cronnext
49.8
KB
-rwxr-xr-x
crontab
61.67
KB
-rwsr-xr-x
cspdaemon
3.65
MB
-rwxr-xr-x
cspfwd
3.98
MB
-rwxr-xr-x
csplit
53.68
KB
-rwxr-xr-x
csslint-0.6
24.56
KB
-rwxr-xr-x
curl
230.08
KB
-rwxr-xr-x
cut
49.52
KB
-rwxr-xr-x
cvtsudoers
284.21
KB
-rwxr-xr-x
cxpm
29.11
KB
-rwxr-xr-x
date
105.96
KB
-rwxr-xr-x
db_archive
12.45
KB
-rwxr-xr-x
db_checkpoint
16.48
KB
-rwxr-xr-x
db_deadlock
16.48
KB
-rwxr-xr-x
db_dump
16.51
KB
-rwxr-xr-x
db_dump185
69.55
KB
-rwxr-xr-x
db_hotbackup
20.49
KB
-rwxr-xr-x
db_load
28.61
KB
-rwxr-xr-x
db_log_verify
16.52
KB
-rwxr-xr-x
db_printlog
33.4
KB
-rwxr-xr-x
db_recover
16.51
KB
-rwxr-xr-x
db_replicate
16.49
KB
-rwxr-xr-x
db_stat
16.48
KB
-rwxr-xr-x
db_tuner
24.55
KB
-rwxr-xr-x
db_upgrade
12.45
KB
-rwxr-xr-x
db_verify
16.46
KB
-rwxr-xr-x
dbilogstrip
1.35
KB
-rwxr-xr-x
dbiprof
6.06
KB
-rwxr-xr-x
dbus-binding-tool
110.43
KB
-rwxr-xr-x
dbus-cleanup-sockets
16.39
KB
-rwxr-xr-x
dbus-daemon
239.7
KB
-rwxr-xr-x
dbus-monitor
28.58
KB
-rwxr-xr-x
dbus-run-session
15.88
KB
-rwxr-xr-x
dbus-send
28.54
KB
-rwxr-xr-x
dbus-test-tool
24.6
KB
-rwxr-xr-x
dbus-update-activation-environ...
16.41
KB
-rwxr-xr-x
dbus-uuidgen
12.38
KB
-rwxr-xr-x
dbxtool
28.73
KB
-rwxr-xr-x
dc
53.02
KB
-rwxr-xr-x
dd
77.97
KB
-rwxr-xr-x
deallocvt
12.54
KB
-rwxr-xr-x
debuginfo-install
3.62
KB
-rwxr-xr-x
debuginfod-find
16.47
KB
-rwxr-xr-x
delv
42.46
KB
-rwxr-xr-x
df
91.09
KB
-rwxr-xr-x
dfu-tool
121.79
KB
-rwxr-xr-x
diff
268.01
KB
-rwxr-xr-x
diff3
128.6
KB
-rwxr-xr-x
diffimg
12.27
KB
-rwxr-xr-x
dig
162.18
KB
-rwxr-xr-x
dijkstra
16.71
KB
-rwxr-xr-x
dir
139.9
KB
-rwxr-xr-x
dircolors
49.55
KB
-rwxr-xr-x
dirmngr
579.89
KB
-rwxr-xr-x
dirmngr-client
120.12
KB
-rwxr-xr-x
dirname
33.36
KB
-rwxr-xr-x
display
11.88
KB
-rwxr-xr-x
dltest
11.87
KB
-rwxr-xr-x
dmesg
77.88
KB
-rwxr-xr-x
dnf
2.05
KB
-rwxr-xr-x
dnf-3
2.05
KB
-rwxr-xr-x
dnsdomainname
21.16
KB
-rwxr-xr-x
dnstap-read
20.43
KB
-rwxr-xr-x
domainname
21.16
KB
-rwxr-xr-x
dot
12.26
KB
-rwxr-xr-x
dot2gxl
41.3
KB
-rwxr-xr-x
dotty
2.04
KB
-rwxr-xr-x
doveadm
946.91
KB
-rwxr-xr-x
doveconf
383.93
KB
-rwxr-xr-x
dovecot-sysreport
5.81
KB
-rwxr-xr-x
dpkg
316.17
KB
-rwxr-xr-x
dpkg-deb
165.5
KB
-rwxr-xr-x
dpkg-divert
157.75
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.67
KB
-rwxr-xr-x
dpkg-query
165.84
KB
-rwxr-xr-x
dpkg-realpath
4.05
KB
-rwxr-xr-x
dpkg-split
132.39
KB
-rwxr-xr-x
dpkg-statoverride
66.41
KB
-rwxr-xr-x
dpkg-trigger
87.66
KB
-rwxr-xr-x
dracut
67.56
KB
-rwxr-xr-x
dtrace
17.39
KB
-rwxr-xr-x
du
107
KB
-rwxr-xr-x
dumpkeys
169.88
KB
-rwxr-xr-x
dumpsexp
16.43
KB
-rwxr-xr-x
dwp
2.13
MB
-rwxr-xr-x
dwz
167.64
KB
-rwxr-xr-x
ea-php82
7.77
MB
-rwxr-xr-x
ea-php82-pear
383
B
-rwxr-xr-x
ea-php82-pecl
299
B
-rwxr-xr-x
ea-php83
7.8
MB
-rwxr-xr-x
ea-php83-pear
383
B
-rwxr-xr-x
ea-php83-pecl
299
B
-rwxr-xr-x
ea-wappspector
100
B
-rwxr-xr-x
easy_install-3
246
B
-rwxr-xr-x
easy_install-3.6
246
B
-rwxr-xr-x
echo
37.35
KB
-rwxr-xr-x
edgepaint
420.79
KB
-rwxr-xr-x
egrep
28
B
-rwxr-xr-x
eject
57.78
KB
-rwxr-xr-x
elfedit
33.28
KB
-rwxr-xr-x
enc2xs
40.97
KB
-rwxr-xr-x
encguess
2.91
KB
-rwxr-xr-x
env
41.35
KB
-rwxr-xr-x
envml
4.1
KB
-rwxr-xr-x
envsubst
48.99
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
232.16
KB
-rwxr-xr-x
event_rpcgen.py
54.26
KB
-rwxr-xr-x
evmctl
62.54
KB
-rwxr-xr-x
ex
1.13
MB
-rwxr-xr-x
expand
41.59
KB
-rwxr-xr-x
expr
49.57
KB
-rwxr-xr-x
factor
85.97
KB
-rwxr-xr-x
fallocate
28.96
KB
-rwxr-xr-x
false
33.32
KB
-rwxr-xr-x
fc
26
B
-rwxr-xr-x
fc-cache
132
B
-rwxr-xr-x
fc-cache-64
20.35
KB
-rwxr-xr-x
fc-cat
16.35
KB
-rwxr-xr-x
fc-conflist
12.25
KB
-rwxr-xr-x
fc-list
12.25
KB
-rwxr-xr-x
fc-match
16.26
KB
-rwxr-xr-x
fc-pattern
12.26
KB
-rwxr-xr-x
fc-query
12.24
KB
-rwxr-xr-x
fc-scan
12.26
KB
-rwxr-xr-x
fc-validate
16.26
KB
-rwxr-xr-x
fdp
12.26
KB
-rwxr-xr-x
fg
26
B
-rwxr-xr-x
fgconsole
12.55
KB
-rwxr-xr-x
fgrep
28
B
-rwxr-xr-x
filan
94.72
KB
-rwxr-xr-x
file
24.69
KB
-rwxr-xr-x
fincore
33.04
KB
-rwxr-xr-x
find
223.27
KB
-rwxr-xr-x
find-repos-of-install
3.62
KB
-rwxr-xr-x
findmnt
70.61
KB
-rwxr-xr-x
fips-finish-install
1.29
KB
-rwxr-xr-x
fips-mode-setup
3.91
KB
-rwxr-xr-x
flex
428.45
KB
-rwxr-xr-x
flex++
428.45
KB
-rwxr-xr-x
flock
33.2
KB
-rwxr-xr-x
fmt
45.49
KB
-rwxr-xr-x
fold
41.42
KB
-rwxr-xr-x
fonttosfnt
41.18
KB
-rwxr-xr-x
free
20.79
KB
-rwxr-xr-x
freetype-config
4.31
KB
-rwxr-xr-x
fribidi
21.14
KB
-rwxr-xr-x
ftp
101.2
KB
-rwxr-xr-x
funzip
36.63
KB
-rwxr-xr-x
fwupdagent
226.92
KB
-rwxr-xr-x
fwupdate
101.66
KB
-rwxr-xr-x
fwupdmgr
226.92
KB
-rwxr-xr-x
fwupdtool
478.34
KB
-rwxr-xr-x
g++
1.21
MB
-rwxr-xr-x
g13
211.98
KB
-rwxr-xr-x
galera_new_cluster
932
B
-rwxr-xr-x
galera_recovery
3.29
KB
-rwxr-xr-x
gapplication
20.45
KB
-rwxr-xr-x
garb-systemd
1.31
KB
-rwxr-xr-x
garbd
1.65
MB
-rwxr-xr-x
gawk
669.77
KB
-rwxr-xr-x
gc
16.64
KB
-rwxr-xr-x
gcc
1.21
MB
-rwxr-xr-x
gcc-ar
36.66
KB
-rwxr-xr-x
gcc-nm
36.66
KB
-rwxr-xr-x
gcc-ranlib
36.66
KB
-rwxr-xr-x
gcov
1.31
MB
-rwxr-xr-x
gcov-dump
570.96
KB
-rwxr-xr-x
gcov-tool
607.77
KB
-rwxr-xr-x
gdbm_dump
21.05
KB
-rwxr-xr-x
gdbm_load
25.31
KB
-rwxr-xr-x
gdbmtool
111.57
KB
-rwxr-xr-x
gdbus
48.72
KB
-rwxr-xr-x
gdk-pixbuf-query-loaders-64
15.93
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
20.45
KB
-rwxr-xr-x
gdlib-config
2.79
KB
-rwxr-xr-x
gencat
24.84
KB
-rwxr-xr-x
genl-ctrl-list
12.04
KB
-rwxr-xr-x
geqn
232.16
KB
-rwxr-xr-x
getconf
32.46
KB
-rwxr-xr-x
getent
33.13
KB
-rwxr-xr-x
getfacl
25.38
KB
-rwxr-xr-x
getkeycodes
12.54
KB
-rwxr-xr-x
getopt
20.53
KB
-rwxr-xr-x
getopts
31
B
-rwxr-xr-x
gettext
48.97
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
gettextize
42.69
KB
-rwxr-xr-x
ghostscript
12.35
KB
-rwxr-xr-x
gio
85.22
KB
-rwxr-xr-x
gio-querymodules-64
16.3
KB
-rwxr-xr-x
git
26.38
MB
-rwxr-xr-x
git-receive-pack
26.38
MB
-rwxr-xr-x
git-shell
15.79
MB
-rwxr-xr-x
git-upload-archive
26.38
MB
-rwxr-xr-x
git-upload-pack
26.38
MB
-rwxr-xr-x
glib-compile-schemas
48.85
KB
-rwxr-xr-x
gmake
235.32
KB
-rwxr-xr-x
gml2gv
41.23
KB
-rwxr-xr-x
gneqn
908
B
-rwxr-xr-x
gnroff
3.23
KB
-rwxr-xr-x
gpasswd
82.17
KB
-rwsr-xr-x
gpg
1.04
MB
-rwxr-xr-x
gpg-agent
419.3
KB
-rwxr-xr-x
gpg-connect-agent
165.3
KB
-rwxr-xr-x
gpg-error
34.16
KB
-rwxr-xr-x
gpg-error-config
2.26
KB
-rwxr-xr-x
gpg-wks-server
206.71
KB
-rwxr-xr-x
gpg-zip
3.44
KB
-rwxr-xr-x
gpg2
1.04
MB
-rwxr-xr-x
gpgconf
176.1
KB
-rwxr-xr-x
gpgme-json
85.68
KB
-rwxr-xr-x
gpgparsemail
28.74
KB
-rwxr-xr-x
gpgrt-config
2.26
KB
-rwxr-xr-x
gpgsm
514.46
KB
-rwxr-xr-x
gpgsplit
87.02
KB
-rwxr-xr-x
gpgv
451.51
KB
-rwxr-xr-x
gpgv2
451.51
KB
-rwxr-xr-x
gpic
293.84
KB
-rwxr-xr-x
gpio-event-mon
14.96
KB
-rwxr-xr-x
gpio-hammer
14.96
KB
-rwxr-xr-x
gprof
103.35
KB
-rwxr-xr-x
gr2fonttest
29.95
KB
-rwxr-xr-x
graphml2gv
20.65
KB
-rwxr-xr-x
grep
193.63
KB
-rwxr-xr-x
groff
124.92
KB
-rwxr-xr-x
grops
191.14
KB
-rwxr-xr-x
grotty
141.9
KB
-rwxr-xr-x
groups
37.39
KB
-rwxr-xr-x
growpart
29.19
KB
-rwxr-xr-x
grub2-editenv
448.09
KB
-rwxr-xr-x
grub2-file
928.53
KB
-rwxr-xr-x
grub2-fstest
1.15
MB
-rwxr-xr-x
grub2-glue-efi
279.41
KB
-rwxr-xr-x
grub2-kbdcomp
1.63
KB
-rwxr-xr-x
grub2-menulst2cfg
262.65
KB
-rwxr-xr-x
grub2-mkfont
312.12
KB
-rwxr-xr-x
grub2-mkimage
431.41
KB
-rwxr-xr-x
grub2-mklayout
289.48
KB
-rwxr-xr-x
grub2-mknetdir
485.75
KB
-rwxr-xr-x
grub2-mkpasswd-pbkdf2
291.88
KB
-rwxr-xr-x
grub2-mkrelpath
279.27
KB
-rwxr-xr-x
grub2-mkrescue
1.12
MB
-rwxr-xr-x
grub2-mkstandalone
594.31
KB
-rwxr-xr-x
grub2-render-label
937.13
KB
-rwxr-xr-x
grub2-script-check
316
KB
-rwxr-xr-x
grub2-syslinux2cfg
861.61
KB
-rwxr-xr-x
gs
12.35
KB
-rwxr-xr-x
gsettings
28.61
KB
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gsoelim
42.55
KB
-rwxr-xr-x
gss-client
24.56
KB
-rwxr-xr-x
gtar
448.99
KB
-rwxr-xr-x
gtbl
154.61
KB
-rwxr-xr-x
gtk-query-immodules-2.0-64
16.29
KB
-rwxr-xr-x
gtk-update-icon-cache
33.03
KB
-rwxr-xr-x
gtroff
805.02
KB
-rwxr-xr-x
gunzip
2.29
KB
-rwxr-xr-x
gv2gml
24.7
KB
-rwxr-xr-x
gv2gxl
41.3
KB
-rwxr-xr-x
gvcolor
46.9
KB
-rwxr-xr-x
gvgen
24.8
KB
-rwxr-xr-x
gvmap
526.31
KB
-rwxr-xr-x
gvmap.sh
2.14
KB
-rwxr-xr-x
gvpack
460.59
KB
-rwxr-xr-x
gvpr
7.83
KB
-rwxr-xr-x
gxl2dot
41.3
KB
-rwxr-xr-x
gxl2gv
41.3
KB
-rwxr-xr-x
gzexe
6.23
KB
-rwxr-xr-x
gzip
94.67
KB
-rwxr-xr-x
h2ph
28.69
KB
-rwxr-xr-x
h2xs
59.44
KB
-rwxr-xr-x
hash
28
B
-rwxr-xr-x
head
45.5
KB
-rwxr-xr-x
hexdump
57.51
KB
-rwxr-xr-x
hmac256
16.86
KB
-rwxr-xr-x
host
142.3
KB
-rwxr-xr-x
hostid
33.34
KB
-rwxr-xr-x
hostname
21.16
KB
-rwxr-xr-x
hostnamectl
20.83
KB
-rwxr-xr-x
htdbm
31.72
KB
-rwxr-xr-x
htdigest
21.71
KB
-rwxr-xr-x
html2text
406
B
-rwxr-xr-x
htpasswd
31.55
KB
-rwxr-xr-x
httxt2dbm
21.1
KB
-rwxr-xr-x
hunspell
144.7
KB
-rwxr-xr-x
i386
20.76
KB
-rwxr-xr-x
iceauth
41.87
KB
-rwxr-xr-x
iconv
61.43
KB
-rwxr-xr-x
id
45.44
KB
-rwxr-xr-x
identify
11.88
KB
-rwxr-xr-x
idiag-socket-details
12.09
KB
-rwxr-xr-x
idn
39.41
KB
-rwxr-xr-x
ifnames
4.03
KB
-rwxr-xr-x
iio_event_monitor
22.98
KB
-rwxr-xr-x
iio_generic_buffer
26.98
KB
-rwxr-xr-x
import
11.88
KB
-rwxr-xr-x
imunify-agent-proxy
13.13
MB
-rwxr-xr-x
imunify-antivirus
1
KB
-rwxr-xr-x
imunify-fgw-dump
7.8
MB
-rwxr-xr-x
imunify-service
1020
B
-rwxr-xr-x
imunify360-agent
1
KB
-rwxr-xr-x
imunify360-command-wrapper
9.99
KB
-rwxr-xr-x
info
249.89
KB
-rwxr-xr-x
infocmp
61.05
KB
-rwxr-xr-x
infotocap
85.31
KB
-rwxr-xr-x
innochecksum
4.54
MB
-rwxr-xr-x
install
156.16
KB
-rwxr-xr-x
instmodsh
4.1
KB
-rwxr-xr-x
intel-speed-select
93.02
KB
-rwxr-xr-x
ionice
28.98
KB
-rwxr-xr-x
iostat
57.69
KB
-rwxr-xr-x
ipcalc
46.08
KB
-rwxr-xr-x
ipcmk
29.14
KB
-rwxr-xr-x
ipcrm
28.99
KB
-rwxr-xr-x
ipcs
53.4
KB
-rwxr-xr-x
isc-config.sh
3.33
KB
-rwxr-xr-x
isosize
24.88
KB
-rwxr-xr-x
ispell
988
B
-rwxr-xr-x
isql
36.58
KB
-rwxr-xr-x
iusql
28.66
KB
-rwxr-xr-x
jcat-tool
40.91
KB
-rwxr-xr-x
jobs
28
B
-rwxr-xr-x
join
53.7
KB
-rwxr-xr-x
journalctl
76.99
KB
-rwxr-xr-x
json_pp
4.19
KB
-rwxr-xr-x
json_reformat
16.55
KB
-rwxr-xr-x
json_verify
12.27
KB
-rwxr-xr-x
json_xs
6.84
KB
-rwxr-xr-x
jsondiff
1.01
KB
-rwxr-xr-x
jsondiff-3
1.01
KB
-rwxr-xr-x
jsondiff-3.6
1.01
KB
-rwxr-xr-x
jsonpatch
3.59
KB
-rwxr-xr-x
jsonpatch-3
3.59
KB
-rwxr-xr-x
jsonpatch-3.6
3.59
KB
-rwxr-xr-x
jsonpointer
1.32
KB
-rwxr-xr-x
jsonpointer-3
1.32
KB
-rwxr-xr-x
jsonpointer-3.6
1.32
KB
-rwxr-xr-x
jsonschema-3
409
B
-rwxr-xr-x
kbd_mode
12.55
KB
-rwxr-xr-x
kbdinfo
16.56
KB
-rwxr-xr-x
kbdrate
16.45
KB
-rwxr-xr-x
kbxutil
177.35
KB
-rwxr-xr-x
kdumpctl
32.93
KB
-rwxr-xr-x
kernel-install
4.41
KB
-rwxr-xr-x
keyctl
36.82
KB
-rwxr-xr-x
kill
37.28
KB
-rwxr-xr-x
killall
29.77
KB
-rwxr-xr-x
kmod
159.95
KB
-rwxr-xr-x
krb5-config
6.98
KB
-rwxr-xr-x
kvm_stat
60.85
KB
-rwxr-xr-x
last
49.23
KB
-rwxr-xr-x
lastb
49.23
KB
-rwxr-xr-x
lastlog
20.63
KB
-rwxr-xr-x
lchfn
20.35
KB
-rwxr-xr-x
lchsh
16.35
KB
-rwxr-xr-x
ld
1.71
MB
-rwxr-xr-x
ld.bfd
1.71
MB
-rwxr-xr-x
ld.gold
2.35
MB
-rwxr-xr-x
ld.so
1.05
MB
-rwxr-xr-x
ldd
5.31
KB
-rwxr-xr-x
lefty
304.52
KB
-rwxr-xr-x
less
173.76
KB
-rwxr-xr-x
lessecho
12.4
KB
-rwxr-xr-x
lesskey
21.99
KB
-rwxr-xr-x
lesspipe.sh
3.07
KB
-rwxr-xr-x
lex
428.45
KB
-rwxr-xr-x
lexgrog
93.7
KB
-rwxr-xr-x
libgcrypt-config
3.84
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libpng-config
2.33
KB
-rwxr-xr-x
libpng16-config
2.33
KB
-rwxr-xr-x
libtool
359.11
KB
-rwxr-xr-x
libtoolize
126.17
KB
-rwxr-xr-x
libwmf-fontmap
13.03
KB
-rwxr-xr-x
link
33.34
KB
-rwxr-xr-x
linux-boot-prober
5.85
KB
-rwxr-xr-x
linux32
20.76
KB
-rwxr-xr-x
linux64
20.76
KB
-rwxr-xr-x
ln
70.5
KB
-rwxr-xr-x
lneato
1.51
KB
-rwxr-xr-x
loadkeys
210.53
KB
-rwxr-xr-x
loadunimap
29.03
KB
-rwxr-xr-x
locale
56.44
KB
-rwxr-xr-x
localectl
28.86
KB
-rwxr-xr-x
localedef
307.47
KB
-rwxr-xr-x
logger
49.98
KB
-rwxr-xr-x
login
40.96
KB
-rwxr-xr-x
loginctl
57.28
KB
-rwxr-xr-x
logname
33.34
KB
-rwxr-xr-x
logresolve
21.45
KB
-rwxr-xr-x
look
16.46
KB
-rwxr-xr-x
ls
139.91
KB
-rwxr-xr-x
lsattr
11.93
KB
-rwxr-xr-x
lsblk
90.14
KB
-rwxr-xr-x
lscpu
81.7
KB
-rwxr-xr-x
lsgpio
15.06
KB
-rwxr-xr-x
lsiio
22.98
KB
-rwxr-xr-x
lsinitrd
8.68
KB
-rwxr-xr-x
lsipc
73.74
KB
-rwxr-xr-x
lslocks
37.53
KB
-rwxr-xr-x
lslogins
65.62
KB
-rwxr-xr-x
lsmem
45.34
KB
-rwxr-xr-x
lsns
49.29
KB
-rwxr-xr-x
lsof
175.4
KB
-rwxr-xr-x
lsphp
937
B
-rwxr-xr-x
lsscsi
86.01
KB
-rwxr-xr-x
lua
20.45
KB
-rwxr-xr-x
luac
152.77
KB
-rwxr-xr-x
lwp-download
10.05
KB
-rwxr-xr-x
lwp-dump
2.65
KB
-rwxr-xr-x
lwp-mirror
2.36
KB
-rwxr-xr-x
lwp-request
15.84
KB
-rwxr-xr-x
m4
185.56
KB
-rwxr-xr-x
mail
408.89
KB
-rwxr-xr-x
mailx
408.89
KB
-rwxr-xr-x
make
235.32
KB
-rwxr-xr-x
make-dummy-cert
610
B
-rwxr-xr-x
makedb
24.84
KB
-rwxr-xr-x
man
112.52
KB
-rwxr-xr-x
mandb
134.52
KB
-rwxr-xr-x
manpath
33.42
KB
-rwxr-xr-x
mapscrn
24.84
KB
-rwxr-xr-x
mariadb
5.24
MB
-rwxr-xr-x
mariadb-access
109.34
KB
-rwxr-xr-x
mariadb-admin
4.8
MB
-rwxr-xr-x
mariadb-binlog
5.07
MB
-rwxr-xr-x
mariadb-check
4.8
MB
-rwxr-xr-x
mariadb-config
12.2
KB
-rwxr-xr-x
mariadb-conv
4.53
MB
-rwxr-xr-x
mariadb-convert-table-format
4.12
KB
-rwxr-xr-x
mariadb-dump
4.89
MB
-rwxr-xr-x
mariadb-dumpslow
8.05
KB
-rwxr-xr-x
mariadb-embedded
23.7
MB
-rwxr-xr-x
mariadb-find-rows
3.21
KB
-rwxr-xr-x
mariadb-fix-extensions
1.22
KB
-rwxr-xr-x
mariadb-hotcopy
34.53
KB
-rwxr-xr-x
mariadb-import
4.79
MB
-rwxr-xr-x
mariadb-install-db
22.14
KB
-rwxr-xr-x
mariadb-plugin
4.51
MB
-rwxr-xr-x
mariadb-secure-installation
13.48
KB
-rwxr-xr-x
mariadb-service-convert
2.45
KB
-rwxr-xr-x
mariadb-setpermission
17.56
KB
-rwxr-xr-x
mariadb-show
4.79
MB
-rwxr-xr-x
mariadb-slap
4.81
MB
-rwxr-xr-x
mariadb-tzinfo-to-sql
4.51
MB
-rwxr-xr-x
mariadb-upgrade
4.94
MB
-rwxr-xr-x
mariadb-waitpid
4.5
MB
-rwxr-xr-x
mariadb_config
12.2
KB
-rwxr-xr-x
mariadbd-multi
26.71
KB
-rwxr-xr-x
mariadbd-safe
30.42
KB
-rwxr-xr-x
mariadbd-safe-helper
4.47
MB
-rwxr-xr-x
mcookie
33.27
KB
-rwxr-xr-x
mcpp
9.02
KB
-rwxr-xr-x
md5sum
45.54
KB
-rwxr-xr-x
mdig
48.52
KB
-rwxr-xr-x
memstrack
83.78
KB
-rwxr-xr-x
mesg
16.36
KB
-rwxr-xr-x
miniterm-3.6.py
33.09
KB
-rwxr-xr-x
miniterm-3.py
33.09
KB
-rwxr-xr-x
mkdir
82.7
KB
-rwxr-xr-x
mkfifo
66.46
KB
-rwxr-xr-x
mkfontdir
65
B
-rwxr-xr-x
mkfontscale
41.59
KB
-rwxr-xr-x
mkinitrd
6.43
KB
-rwxr-xr-x
mknod
70.47
KB
-rwxr-xr-x
mktemp
45.66
KB
-rwxr-xr-x
mm2gv
90.53
KB
-rwxr-xr-x
mmdblookup
16.74
KB
-rwxr-xr-x
modulecmd
384.75
KB
-rwxr-xr-x
modulemd-validator
24.96
KB
-rwxr-xr-x
modutil
177.43
KB
-rwxr-xr-x
mogrify
11.88
KB
-rwxr-xr-x
mokutil
49.98
KB
-rwxr-xr-x
montage
11.88
KB
-rwxr-xr-x
more
44.94
KB
-rwxr-xr-x
mount
49.15
KB
-rwxr-xr-x
mountpoint
16.48
KB
-rwxr-xr-x
mpicalc
20.38
KB
-rwxr-xr-x
mpstat
53.51
KB
-rwxr-xr-x
msgattrib
25.58
KB
-rwxr-xr-x
msgcat
25.55
KB
-rwxr-xr-x
msgcmp
26.12
KB
-rwxr-xr-x
msgcomm
25.55
KB
-rwxr-xr-x
msgconv
21.55
KB
-rwxr-xr-x
msgen
21.55
KB
-rwxr-xr-x
msgexec
21.55
KB
-rwxr-xr-x
msgfilter
34.53
KB
-rwxr-xr-x
msgfmt
90.3
KB
-rwxr-xr-x
msggrep
43.6
KB
-rwxr-xr-x
msginit
67.85
KB
-rwxr-xr-x
msgmerge
71.48
KB
-rwxr-xr-x
msgunfmt
35.8
KB
-rwxr-xr-x
msguniq
25.56
KB
-rwxr-xr-x
msql2mysql
1.41
KB
-rwxr-xr-x
mv
143.96
KB
-rwxr-xr-x
my_print_defaults
4.5
MB
-rwxr-xr-x
myisam_ftdump
4.79
MB
-rwxr-xr-x
myisamchk
4.91
MB
-rwxr-xr-x
myisamlog
4.77
MB
-rwxr-xr-x
myisampack
4.81
MB
-rwxr-xr-x
mysql
5.24
MB
-rwxr-xr-x
mysql_config
4.51
KB
-rwxr-xr-x
mysql_embedded
23.7
MB
-rwxr-xr-x
mysql_find_rows
3.21
KB
-rwxr-xr-x
mysql_fix_extensions
1.22
KB
-rwxr-xr-x
mysql_install_db
22.14
KB
-rwxr-xr-x
mysql_plugin
4.51
MB
-rwxr-xr-x
mysql_tzinfo_to_sql
4.51
MB
-rwxr-xr-x
mysql_upgrade
4.94
MB
-rwxr-xr-x
mysql_waitpid
4.5
MB
-rwxr-xr-x
mysqlaccess
109.34
KB
-rwxr-xr-x
mysqladmin
4.8
MB
-rwxr-xr-x
mysqlbinlog
5.07
MB
-rwxr-xr-x
mysqlcheck
4.8
MB
-rwxr-xr-x
mysqld_multi
26.71
KB
-rwxr-xr-x
mysqld_safe
30.42
KB
-rwxr-xr-x
mysqld_safe_helper
4.47
MB
-rwxr-xr-x
mysqldump
4.89
MB
-rwxr-xr-x
mysqlimport
4.79
MB
-rwxr-xr-x
mysqlshow
4.79
MB
-rwxr-xr-x
mysqlslap
4.81
MB
-rwxr-xr-x
mytop
72.03
KB
-rwxr-xr-x
nail
408.89
KB
-rwxr-xr-x
named-rrchecker
19.88
KB
-rwxr-xr-x
namei
33.1
KB
-rwxr-xr-x
nano
247.94
KB
-rwxr-xr-x
nc
49.39
KB
-rwxr-xr-x
ncurses6-config
5.87
KB
-rwxr-xr-x
ncursesw6-config
5.88
KB
-rwxr-xr-x
ndptool
24.45
KB
-rwxr-xr-x
neato
12.26
KB
-rwxr-xr-x
needs-restarting
3.62
KB
-rwxr-xr-x
neqn
908
B
-rwxr-xr-x
netcat
49.39
KB
-rwxr-xr-x
netstat
158.68
KB
-rwxr-xr-x
newgidmap
47.81
KB
-rwxr-xr-x
newgrp
42.46
KB
-rwxr-xr-x
newuidmap
47.77
KB
-rwxr-xr-x
nf-ct-add
16.46
KB
-rwxr-xr-x
nf-ct-events
12.38
KB
-rwxr-xr-x
nf-ct-list
16.49
KB
-rwxr-xr-x
nf-exp-add
16.87
KB
-rwxr-xr-x
nf-exp-delete
16.66
KB
-rwxr-xr-x
nf-exp-list
16.49
KB
-rwxr-xr-x
nf-log
12.35
KB
-rwxr-xr-x
nf-monitor
12.36
KB
-rwxr-xr-x
nf-queue
16.35
KB
-rwxr-xr-x
ngettext
48.97
KB
-rwxr-xr-x
nice
37.33
KB
-rwxr-xr-x
nisdomainname
21.16
KB
-rwxr-xr-x
nl
45.55
KB
-rwxr-xr-x
nl-addr-add
12.34
KB
-rwxr-xr-x
nl-addr-delete
16.77
KB
-rwxr-xr-x
nl-addr-list
16.88
KB
-rwxr-xr-x
nl-class-add
16.73
KB
-rwxr-xr-x
nl-class-delete
12.63
KB
-rwxr-xr-x
nl-class-list
12.59
KB
-rwxr-xr-x
nl-classid-lookup
12.47
KB
-rwxr-xr-x
nl-cls-add
16.77
KB
-rwxr-xr-x
nl-cls-delete
16.77
KB
-rwxr-xr-x
nl-cls-list
12.73
KB
-rwxr-xr-x
nl-fib-lookup
12.5
KB
-rwxr-xr-x
nl-link-enslave
11.87
KB
-rwxr-xr-x
nl-link-ifindex2name
11.87
KB
-rwxr-xr-x
nl-link-list
12.23
KB
-rwxr-xr-x
nl-link-name2ifindex
11.86
KB
-rwxr-xr-x
nl-link-release
11.86
KB
-rwxr-xr-x
nl-link-set
12.77
KB
-rwxr-xr-x
nl-link-stats
12.59
KB
-rwxr-xr-x
nl-list-caches
12.27
KB
-rwxr-xr-x
nl-list-sockets
11.87
KB
-rwxr-xr-x
nl-monitor
12.52
KB
-rwxr-xr-x
nl-neigh-add
12.63
KB
-rwxr-xr-x
nl-neigh-delete
12.66
KB
-rwxr-xr-x
nl-neigh-list
12.19
KB
-rwxr-xr-x
nl-neightbl-list
12.01
KB
-rwxr-xr-x
nl-pktloc-lookup
12.56
KB
-rwxr-xr-x
nl-qdisc-add
12.65
KB
-rwxr-xr-x
nl-qdisc-delete
12.63
KB
-rwxr-xr-x
nl-qdisc-list
16.74
KB
-rwxr-xr-x
nl-route-add
16.39
KB
-rwxr-xr-x
nl-route-delete
16.88
KB
-rwxr-xr-x
nl-route-get
12.35
KB
-rwxr-xr-x
nl-route-list
16.44
KB
-rwxr-xr-x
nl-rule-list
12.05
KB
-rwxr-xr-x
nl-tctree-list
12.66
KB
-rwxr-xr-x
nl-util-addr
11.85
KB
-rwxr-xr-x
nm
50.38
KB
-rwxr-xr-x
nm-online
20.84
KB
-rwxr-xr-x
nmcli
1009
KB
-rwxr-xr-x
nmtui
784.12
KB
-rwxr-xr-x
nmtui-connect
784.12
KB
-rwxr-xr-x
nmtui-edit
784.12
KB
-rwxr-xr-x
nmtui-hostname
784.12
KB
-rwxr-xr-x
nohup
37.41
KB
-rwxr-xr-x
nop
12.5
KB
-rwxr-xr-x
nproc
37.41
KB
-rwxr-xr-x
nroff
3.23
KB
-rwxr-xr-x
nsenter
33.3
KB
-rwxr-xr-x
nslookup
146.26
KB
-rwxr-xr-x
nss-policy-check
16.3
KB
-rwxr-xr-x
nsupdate
73.05
KB
-rwxr-xr-x
numfmt
65.64
KB
-rwxr-xr-x
objcopy
240.07
KB
-rwxr-xr-x
objdump
419.76
KB
-rwxr-xr-x
od
73.8
KB
-rwxr-xr-x
odbc_config
11.84
KB
-rwxr-xr-x
odbcinst
28.88
KB
-rwxr-xr-x
open
20.97
KB
-rwxr-xr-x
openssl
745.95
KB
-rwxr-xr-x
openvt
20.97
KB
-rwxr-xr-x
os-prober
5.78
KB
-rwxr-xr-x
osage
12.26
KB
-rwxr-xr-x
p11-kit
37.15
KB
-rwxr-xr-x
package-cleanup
3.62
KB
-rwxr-xr-x
page_owner_sort
11.34
KB
-rwxr-xr-x
pango-list
11.88
KB
-rwxr-xr-x
pango-view
57.44
KB
-rwxr-xr-x
paperconf
13.07
KB
-rwxr-xr-x
passwd
32.77
KB
-rwsr-xr-x
paste
37.4
KB
-rwxr-xr-x
patch
206.46
KB
-rwxr-xr-x
patchwork
12.26
KB
-rwxr-xr-x
pathchk
37.34
KB
-rwxr-xr-x
pathfix.py
6.63
KB
-rwxr-xr-x
pcre2-config
1.9
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdns_control
486.11
KB
-rwxr-xr-x
pdnsutil
5.19
MB
-rwxr-xr-x
peekfd
16.51
KB
-rwxr-xr-x
perl
12.43
KB
-rwxr-xr-x
perl5.26.3
12.43
KB
-rwxr-xr-x
perlbug
44.39
KB
-rwxr-xr-x
perldoc
118
B
-rwxr-xr-x
perlivp
10.56
KB
-rwxr-xr-x
perlml
6.61
KB
-rwxr-xr-x
perlthanks
44.39
KB
-rwxr-xr-x
perror
4.7
MB
-rwxr-xr-x
pflags
2.57
KB
-rwxr-xr-x
pftp
101.2
KB
-rwxr-xr-x
pgrep
28.84
KB
-rwxr-xr-x
php
937
B
-rwxr-xr-x
pic
293.84
KB
-rwxr-xr-x
piconv
8.08
KB
-rwxr-xr-x
pidof
16.7
KB
-rwxr-xr-x
pidstat
65.72
KB
-rwxr-xr-x
pigz
125.38
KB
-rwxr-xr-x
pinentry
2.35
KB
-rwxr-xr-x
pinentry-curses
77.89
KB
-rwxr-xr-x
ping
66.13
KB
-rwxr-xr-x
pinky
41.46
KB
-rwxr-xr-x
pip-3
209
B
-rwxr-xr-x
pip-3.6
209
B
-rwxr-xr-x
pip3
209
B
-rwxr-xr-x
pip3.6
209
B
-rwxr-xr-x
pk12util
111.12
KB
-rwxr-xr-x
pkaction
16.38
KB
-rwxr-xr-x
pkcheck
24.43
KB
-rwxr-xr-x
pkcon
81.32
KB
-rwxr-xr-x
pkexec
28.41
KB
-rwxr-xr-x
pkg-config
40.04
KB
-rwxr-xr-x
pkgconf
40.04
KB
-rwxr-xr-x
pkill
28.84
KB
-rwxr-xr-x
pkla-admin-identities
25.72
KB
-rwxr-xr-x
pkla-check-authorization
33.78
KB
-rwxr-xr-x
pkmon
20.75
KB
-rwxr-xr-x
pkttyagent
20.38
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
16.75
KB
-rwxr-xr-x
pmap
32.78
KB
-rwxr-xr-x
png-fix-itxt
11.85
KB
-rwxr-xr-x
pngfix
52.85
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.68
KB
-rwxr-xr-x
pod2text
10.55
KB
-rwxr-xr-x
pod2usage
3.86
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
post-grohtml
238.73
KB
-rwxr-xr-x
powernow-k8-decode
10.88
KB
-rwxr-xr-x
pr
82.15
KB
-rwxr-xr-x
pre-grohtml
130.55
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
57.65
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
11.98
KB
-rwxr-xr-x
printenv
33.32
KB
-rwxr-xr-x
printf
53.56
KB
-rwxr-xr-x
prlimit
37.54
KB
-rwxr-xr-x
procan
82.6
KB
-rwxr-xr-x
protoc
16.49
KB
-rwxr-xr-x
protoc-c
244.79
KB
-rwxr-xr-x
protoc-gen-c
244.79
KB
-rwxr-xr-x
prove
13.24
KB
-rwxr-xr-x
prtstat
20.51
KB
-rwxr-xr-x
prune
16.73
KB
-rwxr-xr-x
ps
134.75
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
2.69
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.07
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
psfaddtable
20.66
KB
-rwxr-xr-x
psfgettable
20.66
KB
-rwxr-xr-x
psfstriptable
20.66
KB
-rwxr-xr-x
psfxtable
20.66
KB
-rwxr-xr-x
pslog
12.48
KB
-rwxr-xr-x
pstree
33.53
KB
-rwxr-xr-x
pstree.x11
33.53
KB
-rwxr-xr-x
ptar
3.38
KB
-rwxr-xr-x
ptardiff
2.48
KB
-rwxr-xr-x
ptargrep
4.2
KB
-rwxr-xr-x
ptx
78
KB
-rwxr-xr-x
pv
73.56
KB
-rwxr-xr-x
pwd
37.42
KB
-rwxr-xr-x
pwdx
12.68
KB
-rwxr-xr-x
pwmake
12.27
KB
-rwxr-xr-x
pwscore
12.27
KB
-rwxr-xr-x
pybabel
388
B
-rwxr-xr-x
pydoc-3
89
B
-rwxr-xr-x
pydoc3
89
B
-rwxr-xr-x
pydoc3.12
79
B
-rwxr-xr-x
pydoc3.6
89
B
-rwxr-xr-x
pyjwt
384
B
-rwxr-xr-x
python-html2text
406
B
-rwxr-xr-x
python3
11.59
KB
-rwxr-xr-x
python3-config
204
B
-rwxr-xr-x
python3-html2text
406
B
-rwxr-xr-x
python3.12
7.57
KB
-rwxr-xr-x
python3.6
11.59
KB
-rwxr-xr-x
python3.6-config
204
B
-rwxr-xr-x
python3.6m
11.59
KB
-rwxr-xr-x
python3.6m-config
204
B
-rwxr-xr-x
python3.6m-x86_64-config
3.54
KB
-rwxr-xr-x
pyvenv-3
446
B
-rwxr-xr-x
pyvenv-3.6
446
B
-rwxr-xr-x
qemu-ga
505.49
KB
-rwxr-xr-x
quota
91.49
KB
-rwsr-xr-x
quotasync
74.69
KB
-rwxr-xr-x
ranlib
61.97
KB
-rwxr-xr-x
raw
16.5
KB
-rwxr-xr-x
read
28
B
-rwxr-xr-x
readelf
624.54
KB
-rwxr-xr-x
readlink
45.88
KB
-rwxr-xr-x
realpath
49.94
KB
-rwxr-xr-x
recode-sr-latin
17.99
KB
-rwxr-xr-x
rename
16.5
KB
-rwxr-xr-x
renew-dummy-cert
725
B
-rwxr-xr-x
renice
16.46
KB
-rwxr-xr-x
replace
4.48
MB
-rwxr-xr-x
repo-graph
3.62
KB
-rwxr-xr-x
repoclosure
3.62
KB
-rwxr-xr-x
repodiff
3.62
KB
-rwxr-xr-x
repomanage
3.62
KB
-rwxr-xr-x
repoquery
3.62
KB
-rwxr-xr-x
reposync
3.62
KB
-rwxr-xr-x
repotrack
3.62
KB
-rwxr-xr-x
rescan-scsi-bus.sh
38.24
KB
-rwxr-xr-x
reset
24.76
KB
-rwxr-xr-x
resizecons
20.77
KB
-rwxr-xr-x
resolve_stack_dump
4.5
MB
-rwxr-xr-x
resolvectl
195.75
KB
-rwxr-xr-x
resolveip
4.5
MB
-rwxr-xr-x
rev
12.46
KB
-rwxr-xr-x
rm
70.38
KB
-rwxr-xr-x
rmdir
45.46
KB
-rwxr-xr-x
rnano
247.94
KB
-rwxr-xr-x
rpcbind
61.55
KB
-rwxr-xr-x
rpcinfo
32.64
KB
-rwxr-xr-x
rpm
20.85
KB
-rwxr-xr-x
rpm2archive
20.46
KB
-rwxr-xr-x
rpm2cpio
11.84
KB
-rwxr-xr-x
rpmdb
16.96
KB
-rwxr-xr-x
rpmkeys
16.87
KB
-rwxr-xr-x
rpmquery
20.85
KB
-rwxr-xr-x
rpmverify
20.85
KB
-rwxr-xr-x
rsync
522.35
KB
-rwxr-xr-x
rsyslog-recover-qi.pl
5.96
KB
-rwxr-xr-x
run-parts
1.94
KB
-rwxr-xr-x
run-with-aspell
85
B
-rwxr-xr-x
runcon
37.38
KB
-rwxr-xr-x
rvi
1.13
MB
-rwxr-xr-x
rview
1.13
MB
-rwxr-xr-x
sadf
334.57
KB
-rwxr-xr-x
sandbox
17.62
KB
-rwxr-xr-x
sar
135.77
KB
-rwxr-xr-x
sccmap
20.62
KB
-rwxr-xr-x
scl
36.87
KB
-rwxr-xr-x
scl_enabled
258
B
-rwxr-xr-x
scl_source
1.82
KB
-rwxr-xr-x
scp
102.84
KB
-rwxr-xr-x
script
36.8
KB
-rwxr-xr-x
scriptreplay
29
KB
-rwxr-xr-x
scsi-rescan
38.24
KB
-rwxr-xr-x
scsi_logging_level
8.38
KB
-rwxr-xr-x
scsi_mandat
3.52
KB
-rwxr-xr-x
scsi_readcap
1.3
KB
-rwxr-xr-x
scsi_ready
1.09
KB
-rwxr-xr-x
scsi_satl
3.77
KB
-rwxr-xr-x
scsi_start
1.25
KB
-rwxr-xr-x
scsi_stop
1.44
KB
-rwxr-xr-x
scsi_temperature
936
B
-rwxr-xr-x
sdiff
105.33
KB
-rwxr-xr-x
sealert
27.27
KB
-rwxr-xr-x
secon
25.46
KB
-rwxr-xr-x
secret-tool
21.17
KB
-rwxr-xr-x
sed
115.27
KB
-rwxr-xr-x
sedismod
273.66
KB
-rwxr-xr-x
sedispol
198.48
KB
-rwxr-xr-x
semodule_expand
12.28
KB
-rwxr-xr-x
semodule_link
12.28
KB
-rwxr-xr-x
semodule_package
16.68
KB
-rwxr-xr-x
semodule_unpackage
12.3
KB
-rwxr-xr-x
seq
53.45
KB
-rwxr-xr-x
sessreg
17.38
KB
-rwxr-xr-x
setarch
20.76
KB
-rwxr-xr-x
setfacl
37.65
KB
-rwxr-xr-x
setfont
45.19
KB
-rwxr-xr-x
setkeycodes
12.56
KB
-rwxr-xr-x
setleds
16.6
KB
-rwxr-xr-x
setmetamode
12.56
KB
-rwxr-xr-x
setpriv
45.16
KB
-rwxr-xr-x
setsid
16.38
KB
-rwxr-xr-x
setterm
45.13
KB
-rwxr-xr-x
setup-nsssysinit
1.5
KB
-rwxr-xr-x
setup-nsssysinit.sh
1.5
KB
-rwxr-xr-x
setvtrgb
16.64
KB
-rwxr-xr-x
sfdp
12.26
KB
-rwxr-xr-x
sftp
159.74
KB
-rwxr-xr-x
sg
42.46
KB
-rwxr-xr-x
sg_bg_ctl
16.07
KB
-rwxr-xr-x
sg_compare_and_write
20.9
KB
-rwxr-xr-x
sg_copy_results
20.81
KB
-rwxr-xr-x
sg_dd
44.58
KB
-rwxr-xr-x
sg_decode_sense
20.33
KB
-rwxr-xr-x
sg_emc_trespass
12.26
KB
-rwxr-xr-x
sg_format
33.37
KB
-rwxr-xr-x
sg_get_config
33.31
KB
-rwxr-xr-x
sg_get_lba_status
20.46
KB
-rwxr-xr-x
sg_ident
16.17
KB
-rwxr-xr-x
sg_inq
117.91
KB
-rwxr-xr-x
sg_logs
150.02
KB
-rwxr-xr-x
sg_luns
24.85
KB
-rwxr-xr-x
sg_map
16.41
KB
-rwxr-xr-x
sg_map26
24.87
KB
-rwxr-xr-x
sg_modes
43.88
KB
-rwxr-xr-x
sg_opcodes
28.69
KB
-rwxr-xr-x
sg_persist
34.13
KB
-rwxr-xr-x
sg_prevent
12.07
KB
-rwxr-xr-x
sg_raw
24.38
KB
-rwxr-xr-x
sg_rbuf
20.84
KB
-rwxr-xr-x
sg_rdac
15.88
KB
-rwxr-xr-x
sg_read
24.41
KB
-rwxr-xr-x
sg_read_attr
34.79
KB
-rwxr-xr-x
sg_read_block_limits
12.12
KB
-rwxr-xr-x
sg_read_buffer
20.96
KB
-rwxr-xr-x
sg_read_long
16.27
KB
-rwxr-xr-x
sg_readcap
20.86
KB
-rwxr-xr-x
sg_reassign
16.22
KB
-rwxr-xr-x
sg_referrals
16.23
KB
-rwxr-xr-x
sg_rep_zones
20.66
KB
-rwxr-xr-x
sg_requests
16.3
KB
-rwxr-xr-x
sg_reset
16.73
KB
-rwxr-xr-x
sg_reset_wp
16.17
KB
-rwxr-xr-x
sg_rmsn
12.06
KB
-rwxr-xr-x
sg_rtpg
16.16
KB
-rwxr-xr-x
sg_safte
20.27
KB
-rwxr-xr-x
sg_sanitize
24.58
KB
-rwxr-xr-x
sg_sat_identify
16.71
KB
-rwxr-xr-x
sg_sat_phy_event
20.59
KB
-rwxr-xr-x
sg_sat_read_gplog
16.3
KB
-rwxr-xr-x
sg_sat_set_features
16.27
KB
-rwxr-xr-x
sg_scan
16.5
KB
-rwxr-xr-x
sg_seek
16.85
KB
-rwxr-xr-x
sg_senddiag
25.27
KB
-rwxr-xr-x
sg_ses
118.23
KB
-rwxr-xr-x
sg_ses_microcode
29.48
KB
-rwxr-xr-x
sg_start
20.93
KB
-rwxr-xr-x
sg_stpg
20.3
KB
-rwxr-xr-x
sg_stream_ctl
20.27
KB
-rwxr-xr-x
sg_sync
16.22
KB
-rwxr-xr-x
sg_test_rwbuf
20.73
KB
-rwxr-xr-x
sg_timestamp
20.74
KB
-rwxr-xr-x
sg_turs
16.74
KB
-rwxr-xr-x
sg_unmap
24.32
KB
-rwxr-xr-x
sg_verify
20.46
KB
-rwxr-xr-x
sg_vpd
108.75
KB
-rwxr-xr-x
sg_wr_mode
20.3
KB
-rwxr-xr-x
sg_write_buffer
21.24
KB
-rwxr-xr-x
sg_write_long
16.33
KB
-rwxr-xr-x
sg_write_same
24.48
KB
-rwxr-xr-x
sg_write_verify
20.78
KB
-rwxr-xr-x
sg_write_x
53.75
KB
-rwxr-xr-x
sg_xcopy
40.59
KB
-rwxr-xr-x
sg_zone
16.3
KB
-rwxr-xr-x
sginfo
74.85
KB
-rwxr-xr-x
sgm_dd
32.55
KB
-rwxr-xr-x
sgp_dd
36.95
KB
-rwxr-xr-x
sh
1.1
MB
-rwxr-xr-x
sha1hmac
32.66
KB
-rwxr-xr-x
sha1sum
45.55
KB
-rwxr-xr-x
sha224hmac
32.66
KB
-rwxr-xr-x
sha224sum
45.58
KB
-rwxr-xr-x
sha256hmac
32.66
KB
-rwxr-xr-x
sha256sum
45.58
KB
-rwxr-xr-x
sha384hmac
32.66
KB
-rwxr-xr-x
sha384sum
45.59
KB
-rwxr-xr-x
sha512hmac
32.66
KB
-rwxr-xr-x
sha512sum
45.59
KB
-rwxr-xr-x
shasum
9.66
KB
-rwxr-xr-x
showconsolefont
20.73
KB
-rwxr-xr-x
showkey
16.58
KB
-rwxr-xr-x
showrgb
13.05
KB
-rwxr-xr-x
shred
61.85
KB
-rwxr-xr-x
shuf
58.09
KB
-rwxr-xr-x
sieve-dump
30.84
KB
-rwxr-xr-x
sieve-filter
40.27
KB
-rwxr-xr-x
sieve-test
40.2
KB
-rwxr-xr-x
sievec
35.1
KB
-rwxr-xr-x
signver
114.79
KB
-rwxr-xr-x
sim_client
16.27
KB
-rwxr-xr-x
size
33.25
KB
-rwxr-xr-x
skill
28.8
KB
-rwxr-xr-x
slabinfo
36.15
KB
-rwxr-xr-x
slabtop
20.84
KB
-rwxr-xr-x
sleep
37.4
KB
-rwxr-xr-x
slencheck
12.29
KB
-rwxr-xr-x
sm3hmac
32.66
KB
-rwxr-xr-x
snice
28.8
KB
-rwxr-xr-x
socat
406.49
KB
-rwxr-xr-x
soelim
42.55
KB
-rwxr-xr-x
sort
123.48
KB
-rwxr-xr-x
sotruss
4.18
KB
-rwxr-xr-x
spell
122
B
-rwxr-xr-x
splain
18.7
KB
-rwxr-xr-x
split
58.05
KB
-rwxr-xr-x
sprof
28.67
KB
-rwxr-xr-x
sqlite3
1.28
MB
-rwxr-xr-x
sscg
57.14
KB
-rwxr-xr-x
ssh
757.61
KB
-rwxr-xr-x
ssh-add
346.13
KB
-rwxr-xr-x
ssh-agent
325.59
KB
-rwxr-xr-x
ssh-copy-id
10.44
KB
-rwxr-xr-x
ssh-keygen
427.17
KB
-rwxr-xr-x
ssh-keyscan
432.59
KB
-rwxr-xr-x
ssltap
130.51
KB
-rwxr-xr-x
sss_ssh_authorizedkeys
28.78
KB
-rwxr-xr-x
sss_ssh_knownhostsproxy
28.78
KB
-rwxr-xr-x
stat
86.16
KB
-rwxr-xr-x
stdbuf
49.5
KB
-rwxr-xr-x
strace
1.94
MB
-rwxr-xr-x
strace-log-merge
1.78
KB
-rwxr-xr-x
stream
11.87
KB
-rwxr-xr-x
strings
37.43
KB
-rwxr-xr-x
strip
240.09
KB
-rwxr-xr-x
stty
77.61
KB
-rwxr-xr-x
su
48.99
KB
-rwsr-x---
sudo
186.52
KB
---s--x--x
sudoedit
186.52
KB
---s--x--x
sudoreplay
119.2
KB
---x--x--x
sum
45.53
KB
-rwxr-xr-x
sw-engine
20.12
MB
-rwxr-xr-x
sxpm
28.81
KB
-rwxr-xr-x
sync
37.35
KB
-rwxr-xr-x
systemctl
218.45
KB
-rwxr-xr-x
systemd-analyze
1.56
MB
-rwxr-xr-x
systemd-ask-password
12.02
KB
-rwxr-xr-x
systemd-cat
16.03
KB
-rwxr-xr-x
systemd-cgls
16.44
KB
-rwxr-xr-x
systemd-cgtop
32.88
KB
-rwxr-xr-x
systemd-delta
24.45
KB
-rwxr-xr-x
systemd-detect-virt
11.88
KB
-rwxr-xr-x
systemd-escape
16.01
KB
-rwxr-xr-x
systemd-firstboot
36.98
KB
-rwxr-xr-x
systemd-hwdb
28.91
KB
-rwxr-xr-x
systemd-inhibit
16.03
KB
-rwxr-xr-x
systemd-machine-id-setup
24.75
KB
-rwxr-xr-x
systemd-mount
52.63
KB
-rwxr-xr-x
systemd-notify
16.03
KB
-rwxr-xr-x
systemd-path
16.02
KB
-rwxr-xr-x
systemd-resolve
195.75
KB
-rwxr-xr-x
systemd-run
48.95
KB
-rwxr-xr-x
systemd-socket-activate
24.77
KB
-rwxr-xr-x
systemd-stdio-bridge
16.02
KB
-rwxr-xr-x
systemd-sysusers
53.05
KB
-rwxr-xr-x
systemd-tmpfiles
73.3
KB
-rwxr-xr-x
systemd-tty-ask-password-agent
32.82
KB
-rwxr-xr-x
systemd-umount
52.63
KB
-rwxr-xr-x
tabs
16.55
KB
-rwxr-xr-x
tac
41.49
KB
-rwxr-xr-x
tail
74.13
KB
-rwxr-xr-x
tapestat
41.32
KB
-rwxr-xr-x
tar
448.99
KB
-rwxr-xr-x
taskset
37.26
KB
-rwxr-xr-x
tbl
154.61
KB
-rwxr-xr-x
tclsh
9.04
KB
-rwxr-xr-x
tclsh8.6
9.04
KB
-rwxr-xr-x
tcptraceroute
1.55
KB
-rwxr-xr-x
teamd
160.52
KB
-rwxr-xr-x
teamdctl
30.37
KB
-rwxr-xr-x
teamnl
20.47
KB
-rwxr-xr-x
tee
41.48
KB
-rwxr-xr-x
test
53.55
KB
-rwxr-xr-x
tic
85.31
KB
-rwxr-xr-x
timedatectl
36.96
KB
-rwxr-xr-x
timeout
41.85
KB
-rwxr-xr-x
tload
16.76
KB
-rwxr-xr-x
tmon
39.63
KB
-rwxr-xr-x
tmpwatch
35.47
KB
-rwxr-xr-x
toe
16.45
KB
-rwxr-xr-x
top
121.7
KB
-rwxr-xr-x
touch
93.94
KB
-rwxr-xr-x
tput
24.8
KB
-rwxr-xr-x
tr
49.63
KB
-rwxr-xr-x
tracepath
20.44
KB
-rwxr-xr-x
traceroute
70.97
KB
-rwxr-xr-x
traceroute6
70.97
KB
-rwxr-xr-x
tred
16.59
KB
-rwxr-xr-x
troff
805.02
KB
-rwxr-xr-x
true
33.33
KB
-rwxr-xr-x
truncate
41.36
KB
-rwxr-xr-x
trust
219.55
KB
-rwxr-xr-x
tset
24.76
KB
-rwxr-xr-x
tsort
41.49
KB
-rwxr-xr-x
tty
33.31
KB
-rwxr-xr-x
turbostat
130.8
KB
-rwxr-xr-x
twopi
12.26
KB
-rwxr-xr-x
type
28
B
-rwxr-xr-x
tzselect
15.01
KB
-rwxr-xr-x
uapi
3.33
MB
-rwxr-xr-x
ucs2any
24.41
KB
-rwxr-xr-x
udevadm
424.56
KB
-rwxr-xr-x
udisksctl
60.73
KB
-rwxr-xr-x
ul
20.59
KB
-rwxr-xr-x
ulimit
30
B
-rwxr-xr-x
umask
29
B
-rwxr-xr-x
umount
32.75
KB
-rwxr-xr-x
unalias
31
B
-rwxr-xr-x
uname
37.33
KB
-rwxr-xr-x
uname26
20.76
KB
-rwxr-xr-x
unexpand
45.61
KB
-rwxr-xr-x
unflatten
16.63
KB
-rwxr-xr-x
unicode_start
2.55
KB
-rwxr-xr-x
unicode_stop
363
B
-rwxr-xr-x
uniq
49.64
KB
-rwxr-xr-x
unlink
33.34
KB
-rwxr-xr-x
unpigz
125.38
KB
-rwxr-xr-x
unshare
24.93
KB
-rwxr-xr-x
unversioned-python
157
B
-rwxr-xr-x
unxz
82.09
KB
-rwxr-xr-x
unzip
201.88
KB
-rwxr-xr-x
unzipsfx
101.48
KB
-rwxr-xr-x
update-ca-trust
1.24
KB
-rwxr-xr-x
update-crypto-policies
87
B
-rwxr-xr-x
update-gtk-immodules
313
B
-rwxr-xr-x
update-mime-database
57.22
KB
-rwxr-xr-x
update_cpanelv2
5.69
MB
-rwxr-xr-x
uptime
12.59
KB
-rwxr-xr-x
users
37.4
KB
-rwxr-xr-x
usleep
11.86
KB
-rwxr-xr-x
utmpdump
28.66
KB
-rwxr-xr-x
uuclient
15.88
KB
-rwxr-xr-x
uuidgen
16.38
KB
-rwxr-xr-x
uuidparse
37.13
KB
-rwxr-xr-x
vdir
139.91
KB
-rwxr-xr-x
vi
1.13
MB
-rwxr-xr-x
view
1.13
MB
-rwxr-xr-x
vimdot
1.06
KB
-rwxr-xr-x
vlock
20.83
KB
-rwxr-xr-x
vmstat
36.79
KB
-rwxr-xr-x
w
20.75
KB
-rwxr-xr-x
wait
28
B
-rwxr-xr-x
wall
33.05
KB
-rwxr-xr-x
watch
29.19
KB
-rwxr-xr-x
watchgnupg
16.44
KB
-rwxr-xr-x
wc
49.64
KB
-rwxr-xr-x
wdctl
36.98
KB
-rwxr-xr-x
wget
521.41
KB
-rwxr-xr-x
whatis
54.04
KB
-rwxr-xr-x
whereis
29.27
KB
-rwxr-xr-x
which
29.38
KB
-rwxr-xr-x
whiptail
33.09
KB
-rwxr-xr-x
who
53.59
KB
-rwxr-xr-x
whoami
33.34
KB
-rwxr-xr-x
wmf2eps
17.15
KB
-rwxr-xr-x
wmf2fig
17.15
KB
-rwxr-xr-x
wmf2gd
17.14
KB
-rwxr-xr-x
wmf2svg
17.16
KB
-rwxr-xr-x
wmf2x
17.13
KB
-rwxr-xr-x
word-list-compress
11.99
KB
-rwxr-xr-x
write
20.62
KB
-rwxr-xr-x
wsrep_sst_backup
2.39
KB
-rwxr-xr-x
wsrep_sst_common
67.46
KB
-rw-r--r--
wsrep_sst_mariabackup
49.27
KB
-rwxr-xr-x
wsrep_sst_mysqldump
8.1
KB
-rwxr-xr-x
wsrep_sst_rsync
29.92
KB
-rwxr-xr-x
wsrep_sst_rsync_wan
29.92
KB
-rwxr-xr-x
x86_64
20.76
KB
-rwxr-xr-x
x86_64-redhat-linux-c++
1.21
MB
-rwxr-xr-x
x86_64-redhat-linux-g++
1.21
MB
-rwxr-xr-x
x86_64-redhat-linux-gcc
1.21
MB
-rwxr-xr-x
x86_64-redhat-linux-gcc-8
1.21
MB
-rwxr-xr-x
x86_64-redhat-linux-gnu-pkg-co...
424
B
-rwxr-xr-x
x86_energy_perf_policy
31.95
KB
-rwxr-xr-x
xargs
74.11
KB
-rwxr-xr-x
xgamma
17.08
KB
-rwxr-xr-x
xgettext
283.88
KB
-rwxr-xr-x
xhost
17.12
KB
-rwxr-xr-x
xinput
63.61
KB
-rwxr-xr-x
xkill
17.1
KB
-rwxr-xr-x
xml2-config
1.71
KB
-rwxr-xr-x
xmlcatalog
20.38
KB
-rwxr-xr-x
xmllint
73.37
KB
-rwxr-xr-x
xmlwf
36.97
KB
-rwxr-xr-x
xmodmap
39.98
KB
-rwxr-xr-x
xorg-x11-fonts-update-dirs
1.29
KB
-rwxr--r--
xrandr
65.46
KB
-rwxr-xr-x
xrdb
33.98
KB
-rwxr-xr-x
xrefresh
17.94
KB
-rwxr-xr-x
xset
37.2
KB
-rwxr-xr-x
xsetpointer
13.05
KB
-rwxr-xr-x
xsetroot
21.44
KB
-rwxr-xr-x
xslt-config
2.36
KB
-rwxr-xr-x
xsltproc
28.47
KB
-rwxr-xr-x
xstdcmap
17.68
KB
-rwxr-xr-x
xsubpp
4.96
KB
-rwxr-xr-x
xz
82.09
KB
-rwxr-xr-x
xzcat
82.09
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdec
16.48
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yat2m
33.34
KB
-rwxr-xr-x
yes
33.37
KB
-rwxr-xr-x
ypdomainname
21.16
KB
-rwxr-xr-x
yum
2.05
KB
-rwxr-xr-x
yum-builddep
3.62
KB
-rwxr-xr-x
yum-config-manager
3.62
KB
-rwxr-xr-x
yum-debug-dump
3.62
KB
-rwxr-xr-x
yum-debug-restore
3.62
KB
-rwxr-xr-x
yum-groups-manager
3.62
KB
-rwxr-xr-x
yumdownloader
3.62
KB
-rwxr-xr-x
zcat
1.94
KB
-rwxr-xr-x
zcmp
1.64
KB
-rwxr-xr-x
zdiff
5.74
KB
-rwxr-xr-x
zegrep
29
B
-rwxr-xr-x
zfgrep
29
B
-rwxr-xr-x
zforce
2.03
KB
-rwxr-xr-x
zgrep
7.4
KB
-rwxr-xr-x
zip
229
KB
-rwxr-xr-x
zipcloak
102.91
KB
-rwxr-xr-x
zipdetails
49.39
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
201.88
KB
-rwxr-xr-x
zipnote
97.76
KB
-rwxr-xr-x
zipsplit
97.76
KB
-rwxr-xr-x
zless
2.15
KB
-rwxr-xr-x
zmore
1.8
KB
-rwxr-xr-x
znew
4.45
KB
-rwxr-xr-x
zone2json
1.39
MB
-rwxr-xr-x
zone2sql
1.41
MB
-rwxr-xr-x
zsoelim
42.55
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : wsrep_sst_common
# Copyright (C) 2017-2024 MariaDB # Copyright (C) 2012-2015 Codership Oy # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to the # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston # MA 02110-1335 USA. # This is a common command line parser and common functions to # be sourced by other SST scripts. trap 'exit 32' HUP PIPE trap 'exit 3' INT QUIT TERM OS="$(uname)" # Setting the paths for some utilities on CentOS export PATH="${PATH:+$PATH:}/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin" if [ "$OS" != 'Darwin' ]; then export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/usr/local/lib:/lib:/usr/lib:/opt/lib" fi safe() { if [[ "${!1}" = *[\ \'\`\$]* ]]; then wsrep_log_error "Invalid value for $1: ${!1}" exit 21 fi echo "${!1}" } commandex() { if [ -n "$BASH_VERSION" ]; then command -v "$1" || : elif [ -x "$1" ]; then echo "$1" else which "$1" || : fi } with_bash_42=0 with_printf=1 if [ -z "$BASH_VERSION" ]; then [ -z "$(commandex printf)" ] && with_printf=0 else [ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 2 -o \ "${BASH_VERSINFO[0]}" -gt 4 ] && with_bash_42=1 fi wsrep_log() { local t # echo everything to stderr so that it gets into common error log # deliberately made to look different from the rest of the log if [ "$OS" = 'Linux' ]; then t=$(date '+%Y%m%d %H:%M:%S.%3N') elif [ $with_bash_42 -ne 0 ]; then printf -v t '%(%Y%m%d %H:%M:%S)T.000' else t=$(date '+%Y%m%d %H:%M:%S.000') fi echo "WSREP_SST: $* ($t)" >&2 } wsrep_log_error() { wsrep_log "[ERROR] $*" } wsrep_log_warning() { wsrep_log "[WARNING] $*" } wsrep_log_info() { wsrep_log "[INFO] $*" } trim_string() { if [ -n "$BASH_VERSION" ]; then local pattern="[![:space:]${2:-}]" local x="${1#*$pattern}" local z=${#1} x=${#x} if [ $x -ne $z ]; then local y="${1%$pattern*}" y=${#y} x=$(( z-x-1 )) y=$(( y-x+1 )) echo "${1:$x:$y}" else echo '' fi else local pattern="[[:space:]${2:-}]" echo "$1" | sed -E "s/^$pattern+|$pattern+\$//g" fi } trim_dir() { if [ -n "$BASH_VERSION" ]; then local pattern="![:space:]${2:-}" local x="${1#*[$pattern]}" local z=${#1} x=${#x} if [ $x -ne $z ]; then local y="${1%[$pattern/]*}" y=${#y} x=$(( z-x-1 )) y=$(( y-x+1 )) x="${1:$x:$y}" [ -z "$x" ] && x='.' echo "$x" else echo '' fi else local pattern="[:space:]${2:-}" local x=$(echo "$1" | sed -E "s/^[$pattern]+|[$pattern/]+\$//g") if [ -n "$x" ]; then echo "$x" elif "${1#*/}" != "$1"; then echo '.' else echo '' fi fi } trim_right() { if [ -n "$BASH_VERSION" ]; then local pattern="[![:space:]${2:-}]" local z=${#1} local y="${1%$pattern*}" y=${#y} if [ $y -ne $z ]; then y=$(( y+1 )) echo "${1:0:$y}" else echo '' fi else local pattern="[[:space:]${2:-}]" echo "$1" | sed -E "s/$pattern+\$//g" fi } trim_left() { if [ -n "$BASH_VERSION" ]; then local pattern="[![:space:]${2:-}]" local x="${1#*$pattern}" local z=${#1} x=${#x} if [ $x -ne $z ]; then x=$(( z-x-1 )) echo "${1:$x:$z}" else echo '' fi else local pattern="[[:space:]${2:-}]" echo "$1" | sed -E "s/^$pattern+//g" fi } to_minuses() { local x="$1" local t="${1#*_}" local r="" while [ "$t" != "$x" ]; do r="$r${x%%_*}-" x="$t" t="${t#*_}" done echo "$r$x" } WSREP_SST_OPT_BYPASS=0 WSREP_SST_OPT_PROGRESS=0 WSREP_SST_OPT_BINLOG="" WSREP_SST_OPT_BINLOG_INDEX="" WSREP_SST_OPT_LOG_BASENAME="" WSREP_SST_OPT_DATA="" WSREP_SST_OPT_AUTH="${WSREP_SST_OPT_AUTH:-}" WSREP_SST_OPT_USER="${WSREP_SST_OPT_USER:-}" WSREP_SST_OPT_PSWD="${WSREP_SST_OPT_PSWD:-}" WSREP_SST_OPT_DEFAULT="" WSREP_SST_OPT_DEFAULTS="" WSREP_SST_OPT_EXTRA_DEFAULT="" WSREP_SST_OPT_EXTRA_DEFAULTS="" WSREP_SST_OPT_SUFFIX_DEFAULT="" WSREP_SST_OPT_SUFFIX_VALUE="" WSREP_SST_OPT_MYSQLD="" WSREP_SST_OPT_PORT="" WSREP_SST_OPT_ADDR="" WSREP_SST_OPT_ADDR_PORT="" WSREP_SST_OPT_HOST="" WSREP_SST_OPT_HOST_UNESCAPED="" ARIA_LOG_DIR="" INNODB_DATA_HOME_DIR=$(trim_dir "${INNODB_DATA_HOME_DIR:-}") INNODB_LOG_GROUP_HOME=$(trim_dir "${INNODB_LOG_GROUP_HOME:-}") INNODB_UNDO_DIR=$(trim_dir "${INNODB_UNDO_DIR:-}") INNODB_BUFFER_POOL="" INNODB_BUFFER_POOL_SIZE="" INNODB_FORCE_RECOVERY="" INNOEXTRA="" while [ $# -gt 0 ]; do case "$1" in '--address') WSREP_SST_OPT_ADDR=$(trim_string "$2") # # Break address string into host:port/path parts # case "$WSREP_SST_OPT_ADDR" in \[*) # IPv6 # Remove the starting and ending square brackets, if present: addr="${WSREP_SST_OPT_ADDR#\[}" addr=$(trim_right "${addr%%\]*}") # Some utilities and subsequent code require an address # without square brackets: readonly WSREP_SST_OPT_HOST_UNESCAPED="$addr" # Square brackets are needed in most cases: readonly WSREP_SST_OPT_HOST="[$addr]" # Mark this address as IPv6: readonly WSREP_SST_OPT_HOST_IPv6=1 # Let's remove the leading part that contains the host address: remain="${WSREP_SST_OPT_ADDR#*\]}" ;; *) addr=$(trim_right "${WSREP_SST_OPT_ADDR%%[:/]*}") readonly WSREP_SST_OPT_HOST="$addr" readonly WSREP_SST_OPT_HOST_UNESCAPED="$addr" readonly WSREP_SST_OPT_HOST_IPv6=0 # Let's remove the leading part that contains the host address: remain="${WSREP_SST_OPT_ADDR#*[:/]}" ;; esac # If there is nothing but the address, then the remainder is empty: [ "$remain" = "$WSREP_SST_OPT_ADDR" ] && remain="" # Let's remove the ":" character that separates the port number # from the hostname: remain="${remain#:}" # Extract the port number from the address - all characters # up to "/" (if present): WSREP_SST_OPT_ADDR_PORT="${remain%%/*}" # If the "/" character is present, then the path is not empty: if [ "$WSREP_SST_OPT_ADDR_PORT" != "$remain" ]; then # This operation removes everything up to the "/" character, # effectively removing the port number from the string: readonly WSREP_SST_OPT_PATH="${remain#*/}" else readonly WSREP_SST_OPT_PATH="" fi WSREP_SST_OPT_ADDR_PORT=$(trim_right "$WSREP_SST_OPT_ADDR_PORT") # Remove the module name part from the string, which ends with "/": remain="${WSREP_SST_OPT_PATH#*/}" # This operation removes the tail after the very first occurrence # of the "/" character, inclusively: readonly WSREP_SST_OPT_MODULE=$(trim_right "${WSREP_SST_OPT_PATH%%/*}") # If there is one more "/" in the string, then everything before # it will be the LSN, otherwise the LSN is empty: if [ "$remain" != "$WSREP_SST_OPT_PATH" ]; then # Extract the part that matches the LSN by removing all # characters starting from the very first "/": readonly WSREP_SST_OPT_LSN=$(trim_right "${remain%%/*}") # Exctract everything after the first occurrence of # the "/" character in the string: source="$remain" remain="${remain#*/}" # If the remainder does not match the original string, # then there is something else (the version number in # our case): if [ "$remain" != "$source" ]; then # Let's extract the version number by removing the tail # after the very first occurence of the "/" character # (inclusively): readonly WSREP_SST_OPT_SST_VER=$(trim_right "${remain%%/*}") else readonly WSREP_SST_OPT_SST_VER="" fi else readonly WSREP_SST_OPT_LSN="" readonly WSREP_SST_OPT_SST_VER="" fi shift ;; '--bypass') readonly WSREP_SST_OPT_BYPASS=1 ;; '--progress') readonly WSREP_SST_OPT_PROGRESS=$(( $2 )) shift ;; '--datadir') # Let's remove the trailing slash: readonly WSREP_SST_OPT_DATA=$(trim_dir "$2") shift ;; '--aria-log-dir-path') # Let's remove the trailing slash: readonly ARIA_LOG_DIR=$(trim_dir "$2") shift ;; '--innodb-data-home-dir') # Let's remove the trailing slash: readonly INNODB_DATA_HOME_DIR=$(trim_dir "$2") shift ;; '--innodb-log-group-home-dir') # Let's remove the trailing slash: readonly INNODB_LOG_GROUP_HOME=$(trim_dir "$2") shift ;; '--innodb-undo-directory') # Let's remove the trailing slash: readonly INNODB_UNDO_DIR=$(trim_dir "$2") shift ;; '--innodb-buffer-pool-filename') readonly INNODB_BUFFER_POOL=$(trim_string "$2") shift ;; '--innodb-buffer-pool-size') readonly INNODB_BUFFER_POOL_SIZE=$(trim_string "$2") shift ;; '--defaults-file') file=$(trim_string "$2") readonly WSREP_SST_OPT_DEFAULT="$1=$file" readonly WSREP_SST_OPT_DEFAULTS="$1='$file'" shift ;; '--defaults-extra-file') file=$(trim_string "$2") readonly WSREP_SST_OPT_EXTRA_DEFAULT="$1=$file" readonly WSREP_SST_OPT_EXTRA_DEFAULTS="$1='$file'" shift ;; '--defaults-group-suffix') suffix=$(trim_string "$2") readonly WSREP_SST_OPT_SUFFIX_DEFAULT="$1=$suffix" readonly WSREP_SST_OPT_SUFFIX_VALUE="$suffix" shift ;; '--host') addr=$(trim_string "$2") case "$addr" in \[*) # IPv6 # Remove the starting and ending square brackets, if present: addr="${addr#\[}" addr=$(trim_right "${addr%%\]*}") # Some utilities and subsequent code require an address # without square brackets: readonly WSREP_SST_OPT_HOST_UNESCAPED="$addr" # Square brackets are needed in most cases: readonly WSREP_SST_OPT_HOST="[$addr]" # Mark this address as IPv6: readonly WSREP_SST_OPT_HOST_IPv6=1 ;; *) readonly WSREP_SST_OPT_HOST="$addr" readonly WSREP_SST_OPT_HOST_UNESCAPED="$addr" readonly WSREP_SST_OPT_HOST_IPv6=0 ;; esac WSREP_SST_OPT_ADDR="$addr" shift ;; '--local-port') readonly WSREP_SST_OPT_LPORT=$(( $2 )) shift ;; '--parent') readonly WSREP_SST_OPT_PARENT=$(( $2 )) shift ;; '--password') WSREP_SST_OPT_PSWD="$2" shift ;; '--port') readonly WSREP_SST_OPT_PORT=$(( $2 )) shift ;; '--role') readonly WSREP_SST_OPT_ROLE=$(trim_string "$2") shift ;; '--socket') readonly WSREP_SST_OPT_SOCKET=$(trim_string "$2") shift ;; '--user') WSREP_SST_OPT_USER="$2" shift ;; '--gtid') readonly WSREP_SST_OPT_GTID=$(trim_string "$2") shift ;; '--binlog'|'--log-bin') readonly WSREP_SST_OPT_BINLOG=$(trim_string "$2") shift ;; '--binlog-index'|'--log-bin-index') WSREP_SST_OPT_BINLOG_INDEX=$(trim_string "$2") shift ;; '--log-basename') readonly WSREP_SST_OPT_LOG_BASENAME=$(trim_string "$2") shift ;; '--gtid-domain-id') readonly WSREP_SST_OPT_GTID_DOMAIN_ID=$(trim_string "$2") shift ;; '--mysqld-args') original_cmd="" shift cmd_tail=0 while [ $# -gt 0 ]; do lname="${1#--}" # "--" is interpreted as the end of the list of options: if [ -z "$lname" ]; then shift if [ $# -gt 0 ]; then # copy "--" to the output string: original_cmd="$original_cmd --" # All other arguments must be copied unchanged: while [ $# -gt 0 ]; do original_cmd="$original_cmd '$1'" shift done fi break fi # Make sure the argument does not start with "--", otherwise it # is a long option, which is processed after this "if": if [ "$lname" = "$1" ]; then # Check if the argument is the short option or the short # options list, starting with "-": options="${1#-}" if [ "$options" != "$1" -a -n "$options" ]; then slist="" while [ -n "$options" ]; do # Let's separate the first character as the current # option name: if [ -n "$BASH_VERSION" ]; then option="${options:0:1}" elif [ $with_printf -ne 0 ]; then option=$(printf '%.1s' "$options") else # If it's not bash and without printf, # then we need to use slow external utilities: option=$(echo "$options" | cut -c1) fi # And the subsequent characters consider option value: value="" if [ ${#options} -gt 0 ]; then value="${options#?}" fi # Check for options without argument: if [ "$option" != '?' -a \ "$option" != 'a' -a \ "$option" != 's' -a \ "$option" != 'v' ] then # If the option value is absent, then check # the following argument: if [ -z "$value" -a $# -gt 1 ]; then # if the next argument does not start with # the "-" character, then next argument is # the current option value: if [ "${2#-}" = "$2" ]; then shift value="$1" elif [ "$2" = '--' ]; then shift if [ $# -gt 1 ]; then cmd_tail=1 shift value="$1" fi fi fi if [ "$option" = 'h' ]; then if [ -z "$WSREP_SST_OPT_DATA" ]; then MYSQLD_OPT_DATADIR=$(trim_dir "$value") fi elif [ "$option" != 'u' -a \ "$option" != 'P' ] then if [ $cmd_tail -ne 0 ]; then option="$option --" fi if [ -z "$value" ]; then slist="$slist$option" elif [ -z "$slist" ]; then slist="$option '$value'" else slist="$slist -$option '$value'" fi break fi if [ $cmd_tail -ne 0 ]; then if [ -n "$slist" ]; then slist="$slist --" else slist='-' fi fi break else slist="$slist$option" fi options="$value" done if [ -n "$slist" ]; then original_cmd="$original_cmd -$slist" fi elif [ -z "$options" ]; then # We found an minus sign without any characters after it: original_cmd="$original_cmd -" else # We found a value that does not start with a minus - # it is a positional argument or the value of previous # option. Copy it to output string (as is): original_cmd="$original_cmd '$1'" fi shift if [ $cmd_tail -ne 0 ]; then # All other arguments must be copied unchanged: while [ $# -gt 0 ]; do original_cmd="$original_cmd '$1'" shift done break fi continue fi # Now we are sure that we are working with an option # that has a "long" name, so remove all characters after # the first equal sign: option="${1%%=*}" # If the option name contains underscores, then replace # them to minuses: if [ "${option#*_}" != "$option" ]; then option=$(to_minuses "$option") fi # The "--loose-" prefix should not affect the recognition # of the option name: if [ "${option#--loose-}" != "$option" ]; then option="--${option#--loose-}" fi # Some options just need to be removed from the list: if [ "$option" != '--defaults-file' -a \ "$option" != '--defaults-extra-file' -a \ "$option" != '--defaults-group-suffix' -a \ "$option" != '--user' -a \ "$option" != '--port' -a \ "$option" != '--socket' ]; then value="${1#*=}" if [ "$value" = "$1" ]; then value="" fi # Let's fill in the variables containing important paths # that might not have been passed through explicit parameters # (+ removing the trailing slash in these paths). Many of these # options are processed internally within scripts or passed # explicitly to other programs, so we need to remove them # from mysqld's argument list: skip_mysqld_arg=0 case "$option" in '--aria-log-dir-path') if [ -z "$ARIA_LOG_DIR" ]; then MYSQLD_OPT_ARIA_LOG_DIR=$(trim_dir "$value") fi skip_mysqld_arg=1 ;; '--innodb-data-home-dir') if [ -z "$INNODB_DATA_HOME_DIR" ]; then MYSQLD_OPT_INNODB_DATA_HOME_DIR=$(trim_dir "$value") fi skip_mysqld_arg=1 ;; '--innodb-log-group-home-dir') if [ -z "$INNODB_LOG_GROUP_HOME" ]; then MYSQLD_OPT_INNODB_LOG_GROUP_HOME=$(trim_dir "$value") fi skip_mysqld_arg=1 ;; '--innodb-undo-directory') if [ -z "$INNODB_UNDO_DIR" ]; then MYSQLD_OPT_INNODB_UNDO_DIR=$(trim_dir "$value") fi skip_mysqld_arg=1 ;; '--innodb-buffer-pool-filename') if [ -z "$INNODB_BUFFER_POOL" ]; then MYSQLD_OPT_INNODB_BUFFER_POOL=$(trim_string "$value") fi skip_mysqld_arg=1 ;; '--innodb-buffer-pool-size') if [ -z "$INNODB_BUFFER_POOL_SIZE" ]; then MYSQLD_OPT_INNODB_BUFFER_POOL_SIZE=$(trim_string "$value") fi skip_mysqld_arg=1 ;; '--innodb-force-recovery') if [ -n "$value" -a "$value" != "0" ]; then INNODB_FORCE_RECOVERY=$(trim_string "$value") fi skip_mysqld_arg=1 ;; '--log-bin') if [ -z "$WSREP_SST_OPT_BINLOG" ]; then MYSQLD_OPT_LOG_BIN=$(trim_string "$value") fi skip_mysqld_arg=1 ;; '--log-bin-index') if [ -z "$WSREP_SST_OPT_BINLOG_INDEX" ]; then MYSQLD_OPT_LOG_BIN_INDEX=$(trim_string "$value") fi skip_mysqld_arg=1 ;; '--log-basename') if [ -z "$WSREP_SST_OPT_LOG_BASENAME" ]; then MYSQLD_OPT_LOG_BASENAME=$(trim_string "$value") fi skip_mysqld_arg=1 ;; '--datadir') if [ -z "$WSREP_SST_OPT_DATA" ]; then MYSQLD_OPT_DATADIR=$(trim_dir "$value") fi skip_mysqld_arg=1 ;; esac if [ $skip_mysqld_arg -eq 0 ]; then original_cmd="$original_cmd '$1'" fi fi shift done WSREP_SST_OPT_MYSQLD="${original_cmd# *}" break ;; *) # Must be command usage # exit 1 ;; esac shift done WSREP_TRANSFER_TYPE='SST' [ $WSREP_SST_OPT_BYPASS -ne 0 ] && readonly WSREP_TRANSFER_TYPE='IST' # Let's take the name of the current script as a base, # removing the directory, extension and "wsrep_sst_" prefix: WSREP_METHOD="${0##*/}" WSREP_METHOD="${WSREP_METHOD%.*}" readonly WSREP_METHOD="${WSREP_METHOD#wsrep_sst_}" if [ -n "${WSREP_SST_OPT_ROLE+x}" ]; then if [ "$WSREP_SST_OPT_ROLE" != 'donor' -a \ "$WSREP_SST_OPT_ROLE" != 'joiner' ] then wsrep_log_error "Unrecognized role: '$WSREP_SST_OPT_ROLE'" exit 22 # EINVAL fi else readonly WSREP_SST_OPT_ROLE='donor' fi readonly WSREP_SST_OPT_PROGRESS # The same argument can be present on the command line several # times, in this case we must take its last value: if [ -n "${MYSQLD_OPT_ARIA_LOG_DIR:-}" -a \ -z "$ARIA_LOG_DIR" ]; then readonly ARIA_LOG_DIR="$MYSQLD_OPT_ARIA_LOG_DIR" fi if [ -n "${MYSQLD_OPT_INNODB_DATA_HOME_DIR:-}" -a \ -z "$INNODB_DATA_HOME_DIR" ]; then readonly INNODB_DATA_HOME_DIR="$MYSQLD_OPT_INNODB_DATA_HOME_DIR" fi if [ -n "${MYSQLD_OPT_INNODB_LOG_GROUP_HOME:-}" -a \ -z "$INNODB_LOG_GROUP_HOME" ]; then readonly INNODB_LOG_GROUP_HOME="$MYSQLD_OPT_INNODB_LOG_GROUP_HOME" fi if [ -n "${MYSQLD_OPT_INNODB_UNDO_DIR:-}" -a \ -z "$INNODB_UNDO_DIR" ]; then readonly INNODB_UNDO_DIR="$MYSQLD_OPT_INNODB_UNDO_DIR" fi if [ -n "${MYSQLD_OPT_INNODB_BUFFER_POOL:-}" -a \ -z "$INNODB_BUFFER_POOL" ]; then readonly INNODB_BUFFER_POOL="$MYSQLD_OPT_INNODB_BUFFER_POOL" fi if [ -n "${MYSQLD_OPT_INNODB_BUFFER_POOL_SIZE:-}" -a \ -z "$INNODB_BUFFER_POOL_SIZE" ]; then readonly INNODB_BUFFER_POOL_SIZE="$MYSQLD_OPT_INNODB_BUFFER_POOL_SIZE" fi if [ -n "${MYSQLD_OPT_LOG_BIN:-}" -a \ -z "$WSREP_SST_OPT_BINLOG" ]; then readonly WSREP_SST_OPT_BINLOG="$MYSQLD_OPT_LOG_BIN" fi if [ -n "${MYSQLD_OPT_LOG_BIN_INDEX:-}" -a \ -z "$WSREP_SST_OPT_BINLOG_INDEX" ]; then WSREP_SST_OPT_BINLOG_INDEX="$MYSQLD_OPT_LOG_BIN_INDEX" fi if [ -n "${MYSQLD_OPT_DATADIR:-}" -a \ -z "$WSREP_SST_OPT_DATA" ]; then readonly WSREP_SST_OPT_DATA="$MYSQLD_OPT_DATADIR" fi if [ -n "${MYSQLD_OPT_LOG_BASENAME:-}" -a \ -z "$WSREP_SST_OPT_LOG_BASENAME" ]; then readonly WSREP_SST_OPT_LOG_BASENAME="$MYSQLD_OPT_LOG_BASENAME" fi # If the --log-bin option is present without a value, then # set WSREP_SST_OPT_BINLOG value using other arguments: if [ -z "$WSREP_SST_OPT_BINLOG" -a -n "${MYSQLD_OPT_LOG_BIN+x}" ]; then if [ -n "$WSREP_SST_OPT_LOG_BASENAME" ]; then # If the WSREP_SST_OPT_BINLOG variable is not set, but # --log-basename is present among the arguments to mysqld, # then set WSREP_SST_OPT_BINLOG equal to the base name # with the "-bin" suffix: readonly WSREP_SST_OPT_BINLOG="$WSREP_SST_OPT_LOG_BASENAME-bin" else # Take the default name: readonly WSREP_SST_OPT_BINLOG='mysql-bin' fi fi # Reconstructing the command line arguments that control the innodb # and binlog options: if [ -n "$WSREP_SST_OPT_LOG_BASENAME" ]; then if [ -n "$WSREP_SST_OPT_MYSQLD" ]; then WSREP_SST_OPT_MYSQLD="--log-basename='$WSREP_SST_OPT_LOG_BASENAME' $WSREP_SST_OPT_MYSQLD" else WSREP_SST_OPT_MYSQLD="--log-basename='$WSREP_SST_OPT_LOG_BASENAME'" fi fi if [ -n "$ARIA_LOG_DIR" ]; then INNOEXTRA="$INNOEXTRA --aria-log-dir-path='$ARIA_LOG_DIR'" fi if [ -n "$INNODB_DATA_HOME_DIR" ]; then INNOEXTRA="$INNOEXTRA --innodb-data-home-dir='$INNODB_DATA_HOME_DIR'" fi if [ -n "$INNODB_LOG_GROUP_HOME" ]; then INNOEXTRA="$INNOEXTRA --innodb-log-group-home-dir='$INNODB_LOG_GROUP_HOME'" fi if [ -n "$INNODB_UNDO_DIR" ]; then INNOEXTRA="$INNOEXTRA --innodb-undo-directory='$INNODB_UNDO_DIR'" fi if [ -n "$INNODB_BUFFER_POOL" ]; then INNOEXTRA="$INNOEXTRA --innodb-buffer-pool-filename='$INNODB_BUFFER_POOL'" fi if [ -n "$INNODB_BUFFER_POOL_SIZE" ]; then INNOEXTRA="$INNOEXTRA --innodb-buffer-pool-size='$INNODB_BUFFER_POOL_SIZE'" fi if [ -n "$WSREP_SST_OPT_BINLOG" ]; then INNOEXTRA="$INNOEXTRA --log-bin='$WSREP_SST_OPT_BINLOG'" if [ -n "$WSREP_SST_OPT_BINLOG_INDEX" ]; then if [ -n "$WSREP_SST_OPT_MYSQLD" ]; then WSREP_SST_OPT_MYSQLD="--log-bin-index='$WSREP_SST_OPT_BINLOG_INDEX' $WSREP_SST_OPT_MYSQLD" else WSREP_SST_OPT_MYSQLD="--log-bin-index='$WSREP_SST_OPT_BINLOG_INDEX'" fi fi fi readonly INNODB_FORCE_RECOVERY readonly WSREP_SST_OPT_MYSQLD get_binlog() { # if no command line argument and WSREP_SST_OPT_BINLOG is not set, # try to get it from my.cnf: if [ -z "$WSREP_SST_OPT_BINLOG" ]; then WSREP_SST_OPT_BINLOG=$(parse_cnf '--mysqld' 'log-bin') fi # if no command line argument and WSREP_SST_OPT_BINLOG_INDEX is not set, # try to get it from my.cnf: if [ -z "$WSREP_SST_OPT_BINLOG_INDEX" ]; then WSREP_SST_OPT_BINLOG_INDEX=$(parse_cnf '--mysqld' 'log-bin-index') fi # if no command line argument and WSREP_SST_OPT_LOG_BASENAME is not set, # then try to get it from my.cnf: if [ -z "$WSREP_SST_OPT_LOG_BASENAME" ]; then WSREP_SST_OPT_LOG_BASENAME=$(parse_cnf '--mysqld' 'log-basename') fi if [ -z "$WSREP_SST_OPT_BINLOG" ]; then # If the log-bin option is specified without a parameter, # then we need to build the name of the index file according # to the rules described in the server documentation: if [ $(in_config '--mysqld' 'log-bin') -ne 0 ]; then if [ -n "$WSREP_SST_OPT_LOG_BASENAME" ]; then # If the WSREP_SST_OPT_BINLOG variable is not set, but # --log-basename is present among the arguments of mysqld, # then set WSREP_SST_OPT_BINLOG equal to the base name # with the "-bin" suffix: readonly WSREP_SST_OPT_BINLOG="$WSREP_SST_OPT_LOG_BASENAME-bin" else # Take the default name: readonly WSREP_SST_OPT_BINLOG='mysql-bin' fi fi fi if [ -n "$WSREP_SST_OPT_BINLOG" ]; then # If the name of the index file is not specified, then we will build # it according to the specifications for the server: if [ -z "$WSREP_SST_OPT_BINLOG_INDEX" ]; then if [ -n "$WSREP_SST_OPT_LOG_BASENAME" ]; then # If the WSREP_SST_OPT_BINLOG_INDEX variable is not set, but # --log-basename is present among the arguments of mysqld, # then set WSREP_SST_OPT_BINLOG_INDEX equal to the base name # with the "-bin" suffix: readonly WSREP_SST_OPT_BINLOG_INDEX="$WSREP_SST_OPT_LOG_BASENAME-bin.index" else # Use the default name (note that base of this name # is already defined above): readonly WSREP_SST_OPT_BINLOG_INDEX="$WSREP_SST_OPT_BINLOG.index" fi else # Remove all directories from the index file path: local filename="${WSREP_SST_OPT_BINLOG_INDEX##*/}" # Check if the index file name contains the extension: if [ "${filename%.*}" = "$filename" ]; then # Let's add the default extension (".index"): readonly WSREP_SST_OPT_BINLOG_INDEX="$WSREP_SST_OPT_BINLOG_INDEX.index" else readonly WSREP_SST_OPT_BINLOG_INDEX fi fi fi } # Check the presence of the port value and, if necessary, transfer # the port number from the address to the WSREP_SST_OPT_PORT variable # or vice versa, and also, if necessary, substitute the missing port # value into the address value: if [ -n "$WSREP_SST_OPT_ADDR_PORT" ]; then if [ -n "$WSREP_SST_OPT_PORT" ]; then if [ "$WSREP_SST_OPT_PORT" != "$WSREP_SST_OPT_ADDR_PORT" ]; then echo "WSREP_SST: [ERROR] port in --port=$WSREP_SST_OPT_PORT" \ "differs from port in --address=$WSREP_SST_OPT_ADDR" >&2 exit 2 fi else # If the address contains a port number, assign it to # the corresponding variable: readonly WSREP_SST_OPT_PORT="$WSREP_SST_OPT_ADDR_PORT" fi else # If the port is missing, take the default port: if [ -z "$WSREP_SST_OPT_PORT" ]; then readonly WSREP_SST_OPT_PORT=4444 fi WSREP_SST_OPT_ADDR_PORT="$WSREP_SST_OPT_PORT" fi # Let's construct a new value for the address with the port: sst_path="${WSREP_SST_OPT_PATH:+/}$WSREP_SST_OPT_PATH" WSREP_SST_OPT_ADDR="$WSREP_SST_OPT_HOST:$WSREP_SST_OPT_PORT$sst_path" readonly WSREP_SST_OPT_ADDR readonly WSREP_SST_OPT_ADDR_PORT # try to use my_print_defaults, mysql and mysqldump that come # with the sources (for MTR suite): script_binary=$(dirname "$0") SCRIPTS_DIR=$(cd "$script_binary"; pwd) EXTRA_DIR="$SCRIPTS_DIR/../extra" if [ -x "$SCRIPTS_DIR/my_print_defaults" ]; then MY_PRINT_DEFAULTS="$SCRIPTS_DIR/my_print_defaults" elif [ -x "$EXTRA_DIR/my_print_defaults" ]; then MY_PRINT_DEFAULTS="$EXTRA_DIR/my_print_defaults" else MY_PRINT_DEFAULTS=$(commandex 'my_print_defaults') if [ -z "$MY_PRINT_DEFAULTS" ]; then wsrep_log_error "my_print_defaults not found in path" exit 2 fi fi readonly MY_PRINT_DEFAULTS wsrep_defaults="$WSREP_SST_OPT_DEFAULTS" wsrep_defaults="$wsrep_defaults${WSREP_SST_OPT_EXTRA_DEFAULTS:+ }$WSREP_SST_OPT_EXTRA_DEFAULTS" wsrep_defaults="$wsrep_defaults${WSREP_SST_OPT_SUFFIX_DEFAULT:+ }$WSREP_SST_OPT_SUFFIX_DEFAULT" readonly WSREP_SST_OPT_CONF="${wsrep_defaults:+ }$wsrep_defaults" wsrep_defaults="$WSREP_SST_OPT_DEFAULT" wsrep_defaults="$wsrep_defaults${WSREP_SST_OPT_EXTRA_DEFAULT:+ }$WSREP_SST_OPT_EXTRA_DEFAULT" wsrep_defaults="$wsrep_defaults${WSREP_SST_OPT_SUFFIX_DEFAULT:+ }$WSREP_SST_OPT_SUFFIX_DEFAULT" readonly WSREP_SST_OPT_CONF_UNQUOTED="${wsrep_defaults:+ }$wsrep_defaults" # # User can specify mariabackup specific settings that will be used during sst # process like encryption, etc. Parse such configuration option. # # 1st parameter: group (config file section like sst) or # my_print_defaults argument (like --mysqld) # 2nd parameter: var : name of the variable in the section, e.g. server-id # 3rd parameter: default value for the parameter # parse_cnf() { local groups="$1" local var="$2" local reval="" # normalize the variable names specified in the .cnf file # (user can use '_' or '-', for example, log-bin or log_bin), # then search for the last instance of the desired variable # and finally get the value of that variable (if the variable # was specified several times - we use only its last instance): local pattern='BEGIN {OFS=FS="="} {sub(/^--loose/,"-",$0); gsub(/_/,"-",$1); if ($1=="--'"$var"'") lastval=substr($0,length($1)+2)} END {print lastval}' while [ -n "$groups" ]; do # Remove the largest suffix starting with the '|' character: local group="${groups%%\|*}" # Remove the remainder (the group name) from the rest # of the groups list (as if it were a prefix): if [ "$group" != "$groups" ]; then groups="${groups#*\|}" else groups="" fi # If the group name is the same as the "mysqld" without "--" prefix, # then try to use it together with the group suffix: if [ "$group" = 'mysqld' -a -n "$WSREP_SST_OPT_SUFFIX_VALUE" ]; then reval=$("$MY_PRINT_DEFAULTS" \ ${WSREP_SST_OPT_DEFAULT:+"$WSREP_SST_OPT_DEFAULT"} \ ${WSREP_SST_OPT_EXTRA_DEFAULT:+"$WSREP_SST_OPT_EXTRA_DEFAULT"} \ ${WSREP_SST_OPT_SUFFIX_DEFAULT:+"$WSREP_SST_OPT_SUFFIX_DEFAULT"} \ "mysqld$WSREP_SST_OPT_SUFFIX_VALUE" | awk "$pattern") if [ -n "$reval" ]; then break fi fi # Let's try to use the group name as it is: reval=$("$MY_PRINT_DEFAULTS" \ ${WSREP_SST_OPT_DEFAULT:+"$WSREP_SST_OPT_DEFAULT"} \ ${WSREP_SST_OPT_EXTRA_DEFAULT:+"$WSREP_SST_OPT_EXTRA_DEFAULT"} \ ${WSREP_SST_OPT_SUFFIX_DEFAULT:+"$WSREP_SST_OPT_SUFFIX_DEFAULT"} \ "$group" | awk "$pattern") if [ -n "$reval" ]; then break fi done # Use default if we haven't found a value: [ -z "$reval" ] && reval="${3:-}" # Truncate spaces: [ -n "$reval" ] && reval=$(trim_string "$reval") echo "$reval" } # # This function simply checks for the presence of the parameter # in the config file, but does not return its value. It returns "1" # (true) even if the parameter is present in the configuration file # without a value: # in_config() { local groups="$1" local var="$2" local found=0 # normalize the variable names specified in the .cnf file # (user can use '_' or '-', for example, log-bin or log_bin), # then search for the last instance(s) of the desired variable: local pattern='BEGIN {OFS=FS="="; found=0} {sub(/^--loose/,"-",$0); gsub(/_/,"-",$1); if ($1=="--'"$var"'") found=1} END {print found}' while [ -n "$groups" ]; do # Remove the largest suffix starting with the '|' character: local group="${groups%%\|*}" # Remove the remainder (the group name) from the rest # of the groups list (as if it were a prefix): if [ "$group" != "$groups" ]; then groups="${groups#*\|}" else groups="" fi # If the group name is the same as the "mysqld" without "--" prefix, # then try to use it together with the group suffix: if [ "$group" = 'mysqld' -a -n "$WSREP_SST_OPT_SUFFIX_VALUE" ]; then found=$("$MY_PRINT_DEFAULTS" \ ${WSREP_SST_OPT_DEFAULT:+"$WSREP_SST_OPT_DEFAULT"} \ ${WSREP_SST_OPT_EXTRA_DEFAULT:+"$WSREP_SST_OPT_EXTRA_DEFAULT"} \ ${WSREP_SST_OPT_SUFFIX_DEFAULT:+"$WSREP_SST_OPT_SUFFIX_DEFAULT"} \ "mysqld$WSREP_SST_OPT_SUFFIX_VALUE" | awk "$pattern") if [ $found -ne 0 ]; then break fi fi # Let's try to use the group name as it is: found=$($MY_PRINT_DEFAULTS \ ${WSREP_SST_OPT_DEFAULT:+"$WSREP_SST_OPT_DEFAULT"} \ ${WSREP_SST_OPT_EXTRA_DEFAULT:+"$WSREP_SST_OPT_EXTRA_DEFAULT"} \ ${WSREP_SST_OPT_SUFFIX_DEFAULT:+"$WSREP_SST_OPT_SUFFIX_DEFAULT"} \ "$group" | awk "$pattern") if [ $found -ne 0 ]; then break fi done echo $found } # Get rid of incorrect values resulting from substitution # in programs external to the script: if [ "$WSREP_SST_OPT_USER" = '(null)' ]; then WSREP_SST_OPT_USER="" fi if [ "$WSREP_SST_OPT_PSWD" = '(null)' ]; then WSREP_SST_OPT_PSWD="" fi if [ "$WSREP_SST_OPT_AUTH" = '(null)' ]; then WSREP_SST_OPT_AUTH="" fi # Let's read the value of the authentication string from the # configuration file so that it does not go to the command line # and does not appear in the ps output: if [ -z "$WSREP_SST_OPT_AUTH" ]; then WSREP_SST_OPT_AUTH=$(parse_cnf 'sst' 'wsrep-sst-auth') fi # Splitting WSREP_SST_OPT_AUTH as "user:password" pair: if [ -n "$WSREP_SST_OPT_AUTH" ]; then # Extract username as shortest prefix up to first ':' character: WSREP_SST_OPT_AUTH_USER="${WSREP_SST_OPT_AUTH%%:*}" if [ -z "$WSREP_SST_OPT_USER" ]; then # if the username is not in the command line arguments, # set the username and password using WSREP_SST_OPT_AUTH # from the environment: WSREP_SST_OPT_USER="$WSREP_SST_OPT_AUTH_USER" WSREP_SST_OPT_PSWD="${WSREP_SST_OPT_AUTH#*:}" elif [ "$WSREP_SST_OPT_USER" = "$WSREP_SST_OPT_AUTH_USER" ]; then # If the username in the command line arguments and in # the environment variable are the same, set the password # if it was not specified in the command line: if [ -z "$WSREP_SST_OPT_PSWD" ]; then WSREP_SST_OPT_PSWD="${WSREP_SST_OPT_AUTH#*:}" fi else # The username is passed through the command line and does # not match the username in the environment variable - ignore # the environment and rebuild the authentication parameters: WSREP_SST_OPT_AUTH="$WSREP_SST_OPT_USER:$WSREP_SST_OPT_PSWD" fi fi WSREP_SST_OPT_REMOTE_AUTH="${WSREP_SST_OPT_REMOTE_AUTH:-}" WSREP_SST_OPT_REMOTE_USER= WSREP_SST_OPT_REMOTE_PSWD= if [ -n "$WSREP_SST_OPT_REMOTE_AUTH" ]; then # Split auth string at the last ':' WSREP_SST_OPT_REMOTE_USER="${WSREP_SST_OPT_REMOTE_AUTH%%:*}" WSREP_SST_OPT_REMOTE_PSWD="${WSREP_SST_OPT_REMOTE_AUTH#*:}" fi readonly WSREP_SST_OPT_USER readonly WSREP_SST_OPT_PSWD readonly WSREP_SST_OPT_AUTH readonly WSREP_SST_OPT_REMOTE_USER readonly WSREP_SST_OPT_REMOTE_PSWD readonly WSREP_SST_OPT_REMOTE_AUTH if [ -n "$WSREP_SST_OPT_DATA" ]; then SST_PROGRESS_FILE="$WSREP_SST_OPT_DATA/sst_in_progress" else SST_PROGRESS_FILE="" fi wsrep_cleanup_progress_file() { if [ -n "$SST_PROGRESS_FILE" -a -f "$SST_PROGRESS_FILE" ]; then rm -f "$SST_PROGRESS_FILE" 2>/dev/null || : fi } wsrep_check_program() { local prog="$1" local cmd=$(commandex "$prog") if [ -z "$cmd" ]; then wsrep_log_error "'$prog' not found in path" return 2 # no such file or directory fi } wsrep_check_programs() { local ret=0 while [ $# -gt 0 ]; do wsrep_check_program "$1" || ret=$? shift done return $ret } wsrep_check_datadir() { if [ -z "$WSREP_SST_OPT_DATA" ]; then wsrep_log_error \ "The '--datadir' parameter must be passed to the SST script" exit 2 fi } get_openssl() { # If the OPENSSL_BINARY variable is already defined, just return: if [ -n "${OPENSSL_BINARY+x}" ]; then return 0 fi # Let's look for openssl: OPENSSL_BINARY=$(commandex 'openssl') if [ -z "$OPENSSL_BINARY" ]; then OPENSSL_BINARY='/usr/bin/openssl' if [ ! -x "$OPENSSL_BINARY" ]; then OPENSSL_BINARY="" fi fi readonly OPENSSL_BINARY } # # Generate a string equivalent to 16 random bytes # wsrep_gen_secret() { get_openssl if [ -n "$OPENSSL_BINARY" ]; then "$OPENSSL_BINARY" rand -hex 16 elif [ -n "$BASH_VERSION" ]; then printf '%04x%04x%04x%04x%04x%04x%04x%04x' \ $RANDOM $RANDOM $RANDOM $RANDOM \ $RANDOM $RANDOM $RANDOM $RANDOM elif [ $with_printf -ne 0 -a -n "$(commandex cksum)" ]; then printf '%08x%08x%08x%08x' \ $(head -8 /dev/urandom | cksum | cut -d ' ' -f1) \ $(head -8 /dev/urandom | cksum | cut -d ' ' -f1) \ $(head -8 /dev/urandom | cksum | cut -d ' ' -f1) \ $(head -8 /dev/urandom | cksum | cut -d ' ' -f1) else wsrep_log_error "Unable to generate 16-byte secret" exit 22 fi } # # Checking if the address passed to us is local. # If the second parameter is nonzero, then this function # does not check for matches with local domain names: # is_local_ip() { # Rapid recognition of the most common cases: [ "$1" = '127.0.0.1' -o \ "$1" = '127.0.0.2' -o \ "$1" = 'localhost' -o \ "$1" = '::1' ] && return 0 # If the address starts with "127." this is probably a local # address, but we need to clarify what follows this prefix: if [ "${1#127.}" != "$1" ]; then # All 127.0.0.0/8 addresses are local: if echo "$1" | grep -q -E '^127\.[0-9]+\.[0-9]+\.[0-9]+$'; then return 0 fi fi # If the second parameter is nonzero, then we will skip # the domain name check: if [ "${2:-0}" -eq 0 ]; then # We consider all the names of a given host to be local addresses: [ "$1" = "$(hostname -s 2>/dev/null)" -o \ "$1" = "$(hostname -f 2>/dev/null)" -o \ "$1" = "$(hostname -d 2>/dev/null)" ] && return 0 fi # If the address contains anything other than digits # and separators, it is not a local address: [ "${1#*[!0-9.]}" != "$1" ] && \ [ "${1#*[!0-9A-Fa-f:\[\]]}" != "$1" ] && return 1 # Now let's check if the given address is assigned to # one of the network cards: local ip_util=$(commandex 'ip') if [ -n "$ip_util" ]; then # ip address show ouput format is " inet[6] <address>/<mask>": "$ip_util" address show \ | grep -o -E '^[[:space:]]*inet.?[[:space:]]+[^[:space:]]+/' \ | grep -qw -F -- "$1/" && return 0 else local ifconfig_util=$(commandex 'ifconfig') if [ -n "$ifconfig_util" ]; then # ifconfig output format is " inet[6] <address> ...": "$ifconfig_util" \ | grep -o -E '^[[:space:]]*inet.?[[:space:]]+[^[:space:]]+' \ | grep -qw -F -- "$1" && return 0 fi fi return 1 } check_sockets_utils() { # The presence of any of these utilities is enough for us: lsof_available=0 sockstat_available=0 ss_available=0 raw_socket_check=0 if [ -n "$(commandex selinuxenabled)" ] && selinuxenabled; then raw_socket_check=1 wsrep_log_info "/proc/net/tcp{,6} is being used directly to avoid excessive selinux AVC notices" return 0 fi socket_utility="$(commandex ss)" if [ -n "$socket_utility" ]; then socket_uname='ss' ss_available=1 ss_opts='-nlp' # Let's check that ss has an option to skip headers: if $socket_utility -h 2>&1 | grep -qw -F -- '-H'; then ss_available=2 ss_opts="${ss_opts}H" fi else socket_utility="$(commandex sockstat)" if [ -n "$socket_utility" ]; then socket_uname='sockstat' sockstat_available=1 sockstat_opts='-p' if [ "$OS" = 'FreeBSD' ]; then # sockstat in FreeBSD is different from other systems, # let's denote it with a different value: sockstat_available=2 sockstat_opts='-46lq -P tcp -p' fi else socket_utility="$(commandex lsof)" if [ -n "$socket_utility" ]; then socket_uname='lsof' lsof_available=1 lsof_opts='-Pnl' # Let's check that lsof has an option to bypass blocking: if $socket_utility -h 2>&1 | grep -qw -F -- '-b'; then lsof_available=2 lsof_opts="$lsof_opts -b -w" else lsof_opts="$lsof_opts -S 10" fi else wsrep_log_error "Neither lsof, nor sockstat, nor ss tool" \ "were found in the path. Make sure you have" \ "at least one of them installed." exit 2 # ENOENT fi fi fi wsrep_log_info "'$socket_uname' is selected as a socket" \ "information utility." } # # Check if the port is in the "listen" state. # The first parameter is the PID of the process that should # listen on the port - if it is not known, you can specify # an empty string or zero. # The second parameter is the port number. # The third parameter is a list of the names of utilities # (via "|") that can listen on this port during the state # transfer. # check_port() { local pid="${1:-0}" local port="$2" local utils="$3" [ $pid -le 0 ] && pid='[0-9]+' local rc=2 # ENOENT if [ $raw_socket_check -ne 0 ]; then for key in $(awk -v p="$port" 'BEGIN { hex_port = sprintf(":%04X", p) } $2 ~ hex_port && $4 == "0A" { print $10 }' /proc/net/tcp /proc/net/tcp6); do return 0 done elif [ $ss_available -ne 0 ]; then $socket_utility $ss_opts -t "( sport = :$port )" 2>/dev/null | \ grep -q -E "[[:space:]]users:[[:space:]]?\\(.*\\(\"($utils)[^[:space:]]*\"[^)]*,pid=$pid(,[^)]*)?\\)" && rc=0 elif [ $sockstat_available -ne 0 ]; then if [ $sockstat_available -gt 1 ]; then # The sockstat command on FreeBSD does not return # the connection state without special option, but # it supports filtering by connection state: local out out=$($socket_utility $sockstat_opts "$port" 2>/dev/null) || rc=16 # EBUSY # On FreeBSD, the sockstat utility may exit without # any output due to locking issues in certain versions; # let's return a special exit code in such cases: if [ $rc -eq 16 -o -z "$out" ]; then return 16 # EBUSY fi echo "$out" | \ grep -q -E "^[^[:space:]]+[[:space:]]+($utils)[^[:space:]]*[[:space:]]+$pid([[:space:]]|\$)" && rc=0 else $socket_utility $sockstat_opts "$port" 2>/dev/null | \ grep -q -E "^[^[:space:]]+[[:space:]]+($utils)[^[:space:]]*[[:space:]]+$pid([[:space:]].+)?[[:space:]]LISTEN([[:space:]]|\$)" && rc=0 fi elif [ $lsof_available -ne 0 ]; then $socket_utility $lsof_opts -i ":$port" 2>/dev/null | \ grep -q -E "^($utils)[^[:space:]]*[[:space:]]+$pid([[:space:]].+)?[[:space:]]\\(LISTEN\\)([[:space:]]|\$)" && rc=0 else wsrep_log_error "Unknown sockets utility" exit 2 # ENOENT fi return $rc } # # If the ssl_dhparams variable is already set, uses that as a source # of dh parameters for OpenSSL. Otherwise, looks for dhparams.pem in # the datadir, and creates it there if it can't find the file. # check_for_dhparams() { ssl_dhparams="$DATA/dhparams.pem" get_openssl if [ -n "$OPENSSL_BINARY" ]; then wsrep_log_info \ "Could not find dhparams file, creating $ssl_dhparams" local bug=0 local errmsg errmsg=$("$OPENSSL_BINARY" \ dhparam -out "$ssl_dhparams" -dsaparam 2048 2>&1) || bug=1 if [ $bug -ne 0 ]; then wsrep_log_info "run: \"$OPENSSL_BINARY\" dhparam"\ "-out \"$ssl_dhparams\" -dsaparam 2048" wsrep_log_info "output: $errmsg" wsrep_log_error "******** ERROR *****************************************" wsrep_log_error "* Could not create the dhparams.pem file with OpenSSL. *" wsrep_log_error "********************************************************" ssl_dhparams="" fi else # Rollback: if openssl is not installed, then use # the default parameters: ssl_dhparams="" fi } # # Verifies that the CA file verifies the certificate. # Doing this here lets us generate better error messages. # # 1st param: path to the CA file. # 2nd param: path to the certificate. # verify_ca_matches_cert() { local cert="$1" local ca="$2" local cap="$3" local readable=1; [ ! -r "$cert" ] && readable=0 [ -n "$ca" -a ! -r "$ca" ] && readable=0 [ -n "$cap" -a ! -r "$cap" ] && readable=0 if [ $readable -eq 0 ]; then wsrep_log_error \ "Both PEM file and CA file (or path) must be readable" exit 22 fi # If the openssl utility is not installed, then # we will not do this certificate check: get_openssl if [ -z "$OPENSSL_BINARY" ]; then wsrep_log_info "openssl utility not found" return fi local not_match=0 local errmsg errmsg=$("$OPENSSL_BINARY" verify -verbose \ ${ca:+ -CAfile} ${ca:+ "$ca"} \ ${cap:+ -CApath} ${cap:+ "$cap"} \ "$cert" 2>&1) || not_match=1 if [ $not_match -eq 1 ]; then wsrep_log_info "run: \"$OPENSSL_BINARY\" verify -verbose${ca:+ -CAfile \"$ca\"}${cap:+ -CApath \"$cap\"} \"$cert\"" wsrep_log_info "output: $errmsg" wsrep_log_error "******** FATAL ERROR ********************************************" wsrep_log_error "* The certifcate and CA (certificate authority) do not match. *" wsrep_log_error "* It does not appear that the certificate was issued by the CA. *" wsrep_log_error "* Please check your certificate and CA files. *" wsrep_log_error "*****************************************************************" exit 22 fi } # # Verifies that the certificate matches the private key. # Doing this will save us having to wait for a timeout that would # otherwise occur. # # 1st param: path to the certificate. # 2nd param: path to the private key. # verify_cert_matches_key() { local cert="$1" local key="$2" if [ ! -r "$key" -o ! -r "$cert" ]; then wsrep_log_error "Both the certificate file and the key file" \ "must be readable" exit 22 fi # If the openssl utility is not installed, then # we will not do this certificate check: get_openssl if [ -z "$OPENSSL_BINARY" ]; then wsrep_log_info "openssl utility not found" return fi # Generate the public key from the cert and the key. # They should match (otherwise we can't create an SSL connection). local pk1=$("$OPENSSL_BINARY" x509 -in "$cert" -pubkey -noout 2>/dev/null || :) local pk2=$("$OPENSSL_BINARY" pkey -in "$key" -pubout 2>/dev/null || :) if [ "$pk1" != "$pk2" ]; then wsrep_log_error "******************* FATAL ERROR *****************" wsrep_log_error "* The certificate and private key do not match. *" wsrep_log_error "* Please check your certificate and key files. *" wsrep_log_error "*************************************************" exit 22 fi } # # Compares two version strings. # The first parameter is the version to be checked; # The second parameter is the minimum version required; # Returns 1 (failure) if $1 >= $2, 0 (success) otherwise. # check_for_version() { local y1="${1#*.}" [ "$y1" = "$1" ] && y1="" local z1="${y1#*.}" [ "$z1" = "$y1" ] && z1="" local w1="${z1#*.}" [ "$w1" = "$z1" ] && w1="" local x1="${1%%.*}" y1="${y1%%.*}" z1="${z1%%.*}" w1="${w1%%.*}" [ -z "$y1" ] && y1=0 [ -z "$z1" ] && z1=0 [ -z "$w1" ] && w1=0 local y2="${2#*.}" [ "$y2" = "$2" ] && y2="" local z2="${y2#*.}" [ "$z2" = "$y2" ] && z2="" local w2="${z2#*.}" [ "$w2" = "$z2" ] && w2="" local x2="${2%%.*}" y2="${y2%%.*}" z2="${z2%%.*}" w2="${w2%%.*}" [ -z "$y2" ] && y2=0 [ -z "$z2" ] && z2=0 [ -z "$w2" ] && w2=0 [ $x1 -lt $x2 ] && return 1 [ $x1 -gt $x2 ] && return 0 [ $y1 -lt $y2 ] && return 1 [ $y1 -gt $y2 ] && return 0 [ $z1 -lt $z2 ] && return 1 [ $z1 -gt $z2 ] && return 0 [ $w1 -lt $w2 ] && return 1 return 0 } # # Check whether process is still running. # The first parameter contains the name of the PID file. # The second parameter is the flag of the need to delete # the PID file. # If the second parameter is not zero and not empty, # then if the process terminates, the corresponding # PID file will be deleted. # This function also sets the CHECK_PID variable to zero # if the process has already exited, or writes the PID # of the process there if it is still running. # check_pid() { local pid_file="$1" if [ -r "$pid_file" ]; then local pid=$(cat "$pid_file" 2>/dev/null || :) if [ -n "$pid" ]; then if [ $pid -gt 0 ]; then if ps -p $pid >/dev/null 2>&1; then CHECK_PID=$pid return 0 fi fi fi local remove=${2:-0} if [ $remove -ne 0 ]; then rm -f "$pid_file" || : fi fi local config="${3:-}" if [ -n "$config" -a -f "$config" ]; then rm -f "$config" || : fi CHECK_PID=0 return 1 } # # Checking that the process with the specified PID is still # running and killing it in this case by sending SIGTERM # (using the "kill" operation). # The first parameter contains PID of the process. # The second and third parameters (both optional) are the names # of the PID and the configuration files, which should be removed # after the process ends. # If the first parameter (PID of the process) is zero, then # the function immediately deletes the PID and the configuration # files (if specified), without any additional checks. # cleanup_pid() { local pid=$1 local pid_file="${2:-}" local config="${3:-}" if [ $pid -gt 0 ]; then if ps -p $pid >/dev/null 2>&1; then if kill $pid >/dev/null 2>&1; then sleep 0.5 local round=0 local force=0 while ps -p $pid >/dev/null 2>&1; do sleep 1 round=$(( round+1 )) if [ $round -eq 16 ]; then if [ $force -eq 0 ]; then round=8 force=1 kill -9 $pid >/dev/null 2>&1 || : sleep 0.5 else return 1 fi fi done elif ps -p $pid >/dev/null 2>&1; then wsrep_log_warning "Unable to kill PID=$pid${pid_file:+ ($pid_file)}" return 1 fi fi fi [ -n "$pid_file" -a -f "$pid_file" ] && rm -f "$pid_file" || : [ -n "$config" -a -f "$config" ] && rm -f "$config" || : return 0 } nproc="" get_proc() { if [ -z "$nproc" ]; then set +e if [ "$OS" = 'Linux' ]; then nproc=$(grep -cw -E '^processor' /proc/cpuinfo 2>/dev/null || :) elif [ "$OS" = 'Darwin' -o "$OS" = 'FreeBSD' ]; then nproc=$(sysctl -n hw.ncpu) fi set -e if [ -z "$nproc" ] || [ $nproc -eq 0 ]; then nproc=1 fi fi } check_server_ssl_config() { # backward-compatible behavior: tcert=$(parse_cnf 'sst' 'tca') tcap=$(parse_cnf 'sst' 'tcapath') tpem=$(parse_cnf 'sst' 'tcert') tkey=$(parse_cnf 'sst' 'tkey') # reading new ssl configuration options: local tcert2=$(parse_cnf "$encgroups" 'ssl-ca') local tcap2=$(parse_cnf "$encgroups" 'ssl-capath') local tpem2=$(parse_cnf "$encgroups" 'ssl-cert') local tkey2=$(parse_cnf "$encgroups" 'ssl-key') # if there are no old options, then we take new ones: if [ -z "$tcert" -a -z "$tcap" -a -z "$tpem" -a -z "$tkey" ]; then tcert="$tcert2" tcap="$tcap2" tpem="$tpem2" tkey="$tkey2" # checking for presence of the new-style SSL configuration: elif [ -n "$tcert2" -o -n "$tcap2" -o -n "$tpem2" -o -n "$tkey2" ]; then if [ "$tcert" != "$tcert2" -o \ "$tcap" != "$tcap2" -o \ "$tpem" != "$tpem2" -o \ "$tkey" != "$tkey2" ] then wsrep_log_info \ "new ssl configuration options (ssl-ca[path], ssl-cert" \ "and ssl-key) are ignored by SST due to presence" \ "of the tca[path], tcert and/or tkey in the [sst] section" fi fi if [ -n "$tcert" ]; then if [ "${tcert%/}" != "$tcert" -o -d "$tcert" ]; then tcap="$tcert" tcert="" fi fi } # Get Common Name (CN) from the certificate: openssl_getCN() { get_openssl if [ -z "$OPENSSL_BINARY" ]; then wsrep_log_error \ 'openssl not found but it is required for authentication' exit 42 fi local bug=0 local CN=$("$OPENSSL_BINARY" x509 -noout -subject -in "$1" 2>&1) || bug=1 if [ $bug -ne 0 ]; then wsrep_log_info "run: \"$OPENSSL_BINARY\" x509 -noout -subject -in \"$1\"" wsrep_log_info "output: $CN" wsrep_log_error "******** FATAL ERROR **********************************************" wsrep_log_error "* Unable to parse the certificate file to obtain the common name. *" wsrep_log_error "*******************************************************************" exit 22 fi CN=$(trim_string "$CN") if [ -n "$CN" ]; then # If the string begins with the "subject" prefix # then we need to remove it: local saved="$CN" local remain="${CN#subject}" if [ "$remain" != "$saved" ]; then remain=$(trim_left "$remain") # Now let's check for the presence of "=" character # after the "subject": saved="$remain" remain="${remain#=}" if [ "$remain" != "$saved" ]; then remain=$(trim_left "$remain") else remain="" bug=1 fi fi while [ -n "$remain" ]; do local value="" # Let's extract the option name - all characters # up to the first '=' or ',' character (if present): local option="${remain%%[=,]*}" if [ "$option" != "$remain" ]; then option=$(trim_right "$option") # These variables will be needed to determine # which separator comes first: local x="${remain#*=}" local y="${remain#*,}" local z=${#remain} x=${#x}; [ $x -eq $z ] && x=0 y=${#y}; [ $y -eq $z ] && y=0 # The remaining string is everything that follows # the separator character: remain=$(trim_left "${remain#*[=,]}") # Let's check what we are dealing with - an equal # sign or a comma? if [ $x -gt $y ]; then # If the remainder begins with a double quote, # then there is a string containing commas and # we need to parse it: saved="$remain" remain="${remain#\"}" if [ "$remain" != "$saved" ]; then while :; do # We need to find the closing quote: local prefix="$remain" remain="${remain#*\"}" # Let's check if there is a closing quote? if [ "$remain" = "$prefix" ]; then bug=1 break fi # Everything up to the closing quote is # the next part of the value: value="$value${prefix%%\"*}" # But if the last character of the value # is a backslash, then it is a quoted quotation # mark and we need to add it to the value: if [ "${value%\\}" != "$value" ]; then value="$value\"" else break fi done [ $bug -ne 0 ] && break # Now we have to remove "," if it is present # in the string after the value: saved=$(trim_left "$remain") remain="${saved#,}" if [ "$remain" != "$saved" ]; then remain=$(trim_left "$remain") elif [ -n "$remain" ]; then bug=1 break fi else # We are dealing with a simple unquoted string value, # therefore we need to take everything up to the end # of the string, or up to the next comma character: value="${remain%%,*}" if [ "$value" != "$remain" ]; then remain=$(trim_left "${remain#*,}") else remain="" fi value=$(trim_right "$value") fi if [ "$option" = 'CN' -a -n "$value" ]; then echo "$value" return fi fi else remain="" fi done fi if [ $bug -ne 0 ]; then wsrep_log_error "******** FATAL ERROR **********************************************" wsrep_log_error "* Unable to parse the certificate options: '$CN'" wsrep_log_error "*******************************************************************" exit 22 fi echo '' } simple_cleanup() { # Since this is invoked just after exit NNN local estatus=$? if [ $estatus -ne 0 ]; then wsrep_log_error "Cleanup after exit with status: $estatus" fi if [ -n "$SST_PID" ]; then [ "$(pwd)" != "$OLD_PWD" ] && cd "$OLD_PWD" [ -f "$SST_PID" ] && rm -f "$SST_PID" || : fi exit $estatus } create_data() { OLD_PWD="$(pwd)" DATA_DIR="$OLD_PWD" if [ -n "$DATA" -a "$DATA" != '.' ]; then [ ! -d "$DATA" ] && mkdir -p "$DATA" cd "$DATA" DATA_DIR="$(pwd)" cd "$OLD_PWD" fi } create_dirs() { local simplify=${1:-0} # if no command line argument and INNODB_DATA_HOME_DIR environment # variable is not set, try to get it from the my.cnf: if [ -z "$INNODB_DATA_HOME_DIR" ]; then INNODB_DATA_HOME_DIR=$(parse_cnf '--mysqld' 'innodb-data-home-dir') INNODB_DATA_HOME_DIR=$(trim_dir "$INNODB_DATA_HOME_DIR") fi if [ -n "$INNODB_DATA_HOME_DIR" -a "$INNODB_DATA_HOME_DIR" != '.' -a \ "$INNODB_DATA_HOME_DIR" != "$DATA_DIR" ] then # handle both relative and absolute paths: cd "$DATA" [ ! -d "$INNODB_DATA_HOME_DIR" ] && mkdir -p "$INNODB_DATA_HOME_DIR" cd "$INNODB_DATA_HOME_DIR" ib_home_dir="$(pwd)" cd "$OLD_PWD" [ $simplify -ne 0 -a "$ib_home_dir" = "$DATA_DIR" ] && ib_home_dir="" fi # if no command line argument and INNODB_LOG_GROUP_HOME is not set, # then try to get it from the my.cnf: if [ -z "$INNODB_LOG_GROUP_HOME" ]; then INNODB_LOG_GROUP_HOME=$(parse_cnf '--mysqld' 'innodb-log-group-home-dir') INNODB_LOG_GROUP_HOME=$(trim_dir "$INNODB_LOG_GROUP_HOME") fi if [ -n "$INNODB_LOG_GROUP_HOME" -a "$INNODB_LOG_GROUP_HOME" != '.' -a \ "$INNODB_LOG_GROUP_HOME" != "$DATA_DIR" ] then # handle both relative and absolute paths: cd "$DATA" [ ! -d "$INNODB_LOG_GROUP_HOME" ] && mkdir -p "$INNODB_LOG_GROUP_HOME" cd "$INNODB_LOG_GROUP_HOME" ib_log_dir="$(pwd)" cd "$OLD_PWD" [ $simplify -ne 0 -a "$ib_log_dir" = "$DATA_DIR" ] && ib_log_dir="" fi # if no command line argument and INNODB_UNDO_DIR is not set, # then try to get it from the my.cnf: if [ -z "$INNODB_UNDO_DIR" ]; then INNODB_UNDO_DIR=$(parse_cnf '--mysqld' 'innodb-undo-directory') INNODB_UNDO_DIR=$(trim_dir "$INNODB_UNDO_DIR") fi if [ -n "$INNODB_UNDO_DIR" -a "$INNODB_UNDO_DIR" != '.' -a \ "$INNODB_UNDO_DIR" != "$DATA_DIR" ] then # handle both relative and absolute paths: cd "$DATA" [ ! -d "$INNODB_UNDO_DIR" ] && mkdir -p "$INNODB_UNDO_DIR" cd "$INNODB_UNDO_DIR" ib_undo_dir="$(pwd)" cd "$OLD_PWD" [ $simplify -ne 0 -a "$ib_undo_dir" = "$DATA_DIR" ] && ib_undo_dir="" fi # if no command line argument then try to get it from the my.cnf: if [ -z "$ARIA_LOG_DIR" ]; then ARIA_LOG_DIR=$(parse_cnf '--mysqld' 'aria-log-dir-path') ARIA_LOG_DIR=$(trim_dir "$ARIA_LOG_DIR") fi if [ -n "$ARIA_LOG_DIR" -a "$ARIA_LOG_DIR" != '.' -a \ "$ARIA_LOG_DIR" != "$DATA_DIR" ] then # handle both relative and absolute paths: cd "$DATA" [ ! -d "$ARIA_LOG_DIR" ] && mkdir -p "$ARIA_LOG_DIR" cd "$ARIA_LOG_DIR" ar_log_dir="$(pwd)" cd "$OLD_PWD" [ $simplify -ne 0 -a "$ar_log_dir" = "$DATA_DIR" ] && ar_log_dir="" fi return 0 } wait_previous_sst() { # give some time for previous SST to complete: check_round=0 while check_pid "$SST_PID" 1; do wsrep_log_info "Previous SST is not completed, waiting for it to exit" check_round=$(( check_round+1 )) if [ $check_round -eq 30 ]; then wsrep_log_error "previous SST script still running..." exit 114 # EALREADY fi sleep 1 done trap simple_cleanup EXIT echo $$ > "$SST_PID" } DATA="$WSREP_SST_OPT_DATA" wsrep_check_datadir create_data SST_PID="$DATA/wsrep_sst.pid" if [ -n "${MTR_SST_JOINER_DELAY:-}" ]; then MTR_SST_JOINER_DELAY=$(trim_string "$MTR_SST_JOINER_DELAY") fi simulate_long_sst() { # Delay for MTR tests if needed to simulate long SST/IST: if [ ${MTR_SST_JOINER_DELAY:-0} -gt 0 ]; then wsrep_log_info "Sleeping $MTR_SST_JOINER_DELAY seconds for MTR test" sleep $MTR_SST_JOINER_DELAY fi } wsrep_log_info "$WSREP_METHOD $WSREP_TRANSFER_TYPE started on $WSREP_SST_OPT_ROLE"
Close