Linux sgeserver.thesutherlandgroup.org 4.18.0-553.121.1.el8_10.x86_64 #1 SMP Thu Apr 30 09:06:34 EDT 2026 x86_64
LiteSpeed
Server IP : 65.39.177.89 & Your IP : 216.73.216.189
Domains : 28 Domain
User : ch1ps2bc3cc0
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
bin /
Delete
Unzip
Name
Size
Permission
Date
Action
2to3
106
B
-rwxr-xr-x
2026-04-28 05:55
2to3-3.6
106
B
-rwxr-xr-x
2026-04-28 05:55
GET
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
HEAD
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
Magick-config
1.43
KB
-rwxr-xr-x
2025-04-01 13:10
MagickCore-config
1.56
KB
-rwxr-xr-x
2025-04-01 13:10
MagickWand-config
1.56
KB
-rwxr-xr-x
2025-04-01 13:10
Mail
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
POST
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
Wand-config
1.42
KB
-rwxr-xr-x
2025-04-01 13:10
[
53.6
KB
-rwxr-xr-x
2026-03-24 13:05
ab
72.63
KB
-rwxr-xr-x
2026-05-13 21:17
ac
33.07
KB
-rwxr-xr-x
2019-10-21 16:09
aclocal
35.62
KB
-rwxr-xr-x
2023-10-14 20:00
aclocal-1.16
35.62
KB
-rwxr-xr-x
2023-10-14 20:00
acyclic
12.41
KB
-rwxr-xr-x
2024-04-06 12:47
addr2line
33.42
KB
-rwxr-xr-x
2025-12-18 14:21
agentxtrap
24.54
KB
-rwxr-xr-x
2026-01-19 08:19
alias
29
B
-rwxr-xr-x
2025-08-26 08:48
animate
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
appstream-compose
33.21
KB
-rwxr-xr-x
2019-11-13 14:06
appstream-util
114.34
KB
-rwxr-xr-x
2019-11-13 14:06
apropos
54.04
KB
-rwxr-xr-x
2021-10-08 13:04
ar
61.96
KB
-rwxr-xr-x
2025-12-18 14:21
arch
37.34
KB
-rwxr-xr-x
2026-03-24 13:05
aria_chk
5.38
MB
-rwxr-xr-x
2026-05-08 11:57
aria_dump_log
5.18
MB
-rwxr-xr-x
2026-05-08 11:57
aria_ftdump
5.19
MB
-rwxr-xr-x
2026-05-08 11:57
aria_pack
5.22
MB
-rwxr-xr-x
2026-05-08 11:57
aria_read_log
5.33
MB
-rwxr-xr-x
2026-05-08 11:57
arpaname
11.82
KB
-rwxr-xr-x
2026-04-15 23:44
as
889.91
KB
-rwxr-xr-x
2025-12-18 14:21
aspell
159.5
KB
-rwxr-xr-x
2022-04-18 15:10
at
57.33
KB
-rwsr-xr-x
2022-10-10 10:23
atq
57.33
KB
-rwsr-xr-x
2022-10-10 10:23
atrm
57.33
KB
-rwsr-xr-x
2022-10-10 10:23
attr
13.06
KB
-rwxr-xr-x
2019-10-11 17:58
audit2allow
14.85
KB
-rwxr-xr-x
2024-07-02 21:08
audit2why
14.85
KB
-rwxr-xr-x
2024-07-02 21:08
aulast
20.58
KB
-rwxr-xr-x
2025-07-15 09:41
aulastlog
12.44
KB
-rwxr-xr-x
2025-07-15 09:41
ausyscall
12.27
KB
-rwxr-xr-x
2025-07-15 09:41
authselect
41.13
KB
-rwxr-xr-x
2023-10-14 18:06
autoconf
14.42
KB
-rwxr-xr-x
2024-08-13 19:30
autoheader
8.33
KB
-rwxr-xr-x
2024-08-13 19:30
autom4te
31.43
KB
-rwxr-xr-x
2024-08-13 19:30
automake
251.9
KB
-rwxr-xr-x
2023-10-14 20:00
automake-1.16
251.9
KB
-rwxr-xr-x
2023-10-14 20:00
autopoint
25.95
KB
-rwxr-xr-x
2019-11-18 17:16
autoreconf
20.57
KB
-rwxr-xr-x
2024-08-13 19:30
autoscan
16.72
KB
-rwxr-xr-x
2024-08-13 19:30
autoupdate
33.08
KB
-rwxr-xr-x
2024-08-13 19:30
auvirt
32.73
KB
-rwxr-xr-x
2025-07-15 09:41
awk
669.77
KB
-rwxr-xr-x
2022-04-18 15:56
b2sum
57.69
KB
-rwxr-xr-x
2026-03-24 13:05
base32
41.47
KB
-rwxr-xr-x
2026-03-24 13:05
base64
41.48
KB
-rwxr-xr-x
2026-03-24 13:05
basename
37.41
KB
-rwxr-xr-x
2026-03-24 13:05
bash
1.1
MB
-rwxr-xr-x
2025-08-26 08:48
bashbug
7.18
KB
-rwxr-xr-x
2025-08-26 08:48
bashbug-64
7.18
KB
-rwxr-xr-x
2025-08-26 08:48
batch
137
B
-rwxr-xr-x
2022-10-10 10:23
bc
94.98
KB
-rwxr-xr-x
2019-10-12 12:34
bcomps
20.62
KB
-rwxr-xr-x
2024-04-06 12:47
bdftopcf
45.4
KB
-rwxr-xr-x
2021-10-09 23:42
bg
26
B
-rwxr-xr-x
2025-08-26 08:48
bind9-config
3.33
KB
-rwxr-xr-x
2026-04-15 23:44
bison
437.72
KB
-rwxr-xr-x
2019-10-12 12:28
blkiomon
25.7
KB
-rwxr-xr-x
2024-09-24 08:24
blkparse
51.39
KB
-rwxr-xr-x
2024-09-24 08:24
blkrawverify
16.4
KB
-rwxr-xr-x
2024-09-24 08:24
blktrace
43.07
KB
-rwxr-xr-x
2024-09-24 08:24
bno_plot.py
3.47
KB
-rwxr-xr-x
2024-09-24 08:24
boltctl
173.05
KB
-rwxr-xr-x
2021-04-06 11:29
bond2team
22.74
KB
-rwxr-xr-x
2020-07-26 09:58
bootctl
45.15
KB
-rwxr-xr-x
2026-04-23 11:13
brotli
739.2
KB
-rwxr-xr-x
2026-02-10 14:44
btrace
891
B
-rwxr-xr-x
2024-09-24 08:24
btrecord
17.39
KB
-rwxr-xr-x
2024-09-24 08:24
btreplay
29.72
KB
-rwxr-xr-x
2024-09-24 08:24
btt
80.84
KB
-rwxr-xr-x
2024-09-24 08:24
bunzip2
36.86
KB
-rwxr-xr-x
2025-01-28 01:38
busctl
77.27
KB
-rwxr-xr-x
2026-04-23 11:13
bzcat
36.86
KB
-rwxr-xr-x
2025-01-28 01:38
bzcmp
2.08
KB
-rwxr-xr-x
2025-01-28 01:38
bzdiff
2.08
KB
-rwxr-xr-x
2025-01-28 01:38
bzegrep
1.64
KB
-rwxr-xr-x
2025-01-28 01:38
bzfgrep
1.64
KB
-rwxr-xr-x
2025-01-28 01:38
bzgrep
1.64
KB
-rwxr-xr-x
2025-01-28 01:38
bzip2
36.86
KB
-rwxr-xr-x
2025-01-28 01:38
bzip2recover
16.44
KB
-rwxr-xr-x
2025-01-28 01:38
bzless
1.23
KB
-rwxr-xr-x
2025-01-28 01:38
bzmore
1.23
KB
-rwxr-xr-x
2025-01-28 01:38
c++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
c++filt
28.89
KB
-rwxr-xr-x
2025-12-18 14:21
c89
224
B
-rwxr-xr-x
2025-08-26 09:45
c99
215
B
-rwxr-xr-x
2025-08-26 09:45
ca-legacy
1.61
KB
-rwxr-xr-x
2025-10-30 14:25
cairo-sphinx
69.71
KB
-rwxr-xr-x
2022-04-18 16:06
cal
65.98
KB
-rwxr-xr-x
2026-02-04 20:18
captoinfo
85.31
KB
-rwxr-xr-x
2023-10-14 18:54
cat
37.46
KB
-rwxr-xr-x
2026-03-24 13:05
catchsegv
3.21
KB
-rwxr-xr-x
2026-05-05 10:52
catman
41.45
KB
-rwxr-xr-x
2021-10-08 13:04
cc
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
ccomps
24.72
KB
-rwxr-xr-x
2024-04-06 12:47
cd
26
B
-rwxr-xr-x
2025-08-26 08:48
centrino-decode
11.27
KB
-rwxr-xr-x
2026-05-15 08:40
certutil
199.15
KB
-rwxr-xr-x
2026-04-14 17:44
chacl
16.36
KB
-rwxr-xr-x
2024-04-06 12:15
chage
77.68
KB
-rwsr-xr-x
2025-12-18 13:51
chardetect
400
B
-rwxr-xr-x
2019-10-12 19:18
chattr
16.41
KB
-rwxr-xr-x
2025-10-07 07:08
chcat
13.57
KB
-rwxr-xr-x
2024-07-02 21:08
chcon
70.34
KB
-rwxr-xr-x
2026-03-24 13:05
checkmodule
427.01
KB
-rwxr-xr-x
2019-12-10 17:48
checkpolicy
488.64
KB
-rwxr-xr-x
2019-12-10 17:48
chfn
32.9
KB
-rws--x--x
2026-02-04 20:18
chgrp
66.29
KB
-rwxr-xr-x
2026-03-24 13:05
chmem
45.47
KB
-rwxr-xr-x
2026-02-04 20:18
chmod
62.2
KB
-rwxr-xr-x
2026-03-24 13:05
chown
70.29
KB
-rwxr-xr-x
2026-03-24 13:05
chronyc
127.6
KB
-rwxr-xr-x
2024-11-05 07:47
chrt
37.19
KB
-rwxr-xr-x
2026-02-04 20:18
chsh
24.72
KB
-rwx--x--x
2026-02-04 20:18
chvt
12.53
KB
-rwxr-xr-x
2023-10-14 21:01
cifsiostat
41.35
KB
-rwxr-xr-x
2024-07-03 09:57
circo
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
cksum
37.39
KB
-rwxr-xr-x
2026-03-24 13:05
cl-linksafe-apply-group
554
B
-rwxr-xr-x
2022-08-30 11:44
cl-linksafe-reconfigure
4.83
KB
-rwxr-xr-x
2022-08-30 11:44
clear
12.54
KB
-rwxr-xr-x
2023-10-14 18:54
cluster
518.33
KB
-rwxr-xr-x
2024-04-06 12:47
cmp
103.76
KB
-rwxr-xr-x
2020-05-04 15:15
cmsutil
122.46
KB
-rwxr-xr-x
2026-04-14 17:44
cockpit-bridge
500.37
KB
-rwxr-xr-x
2026-01-23 15:30
col
29.01
KB
-rwxr-xr-x
2026-02-04 20:18
colcrt
16.48
KB
-rwxr-xr-x
2026-02-04 20:18
colrm
24.88
KB
-rwxr-xr-x
2026-02-04 20:18
column
49.47
KB
-rwxr-xr-x
2026-02-04 20:18
comm
41.56
KB
-rwxr-xr-x
2026-03-24 13:05
command
31
B
-rwxr-xr-x
2025-08-26 08:48
compare
11.85
KB
-rwxr-xr-x
2025-04-01 13:15
compile_et
1.31
KB
-rwxr-xr-x
2025-10-07 07:07
composite
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
config_data
6.97
KB
-rwxr-xr-x
2019-10-13 10:59
conjure
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
convert
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
coredumpctl
44.91
KB
-rwxr-xr-x
2026-04-23 11:13
corelist
14.64
KB
-rwxr-xr-x
2019-10-13 11:00
cp
147.98
KB
-rwxr-xr-x
2026-03-24 13:05
cpan
8.17
KB
-rwxr-xr-x
2025-06-03 14:32
cpan-mirrors
4.19
KB
-rwxr-xr-x
2025-06-03 14:32
cpapi1
3.38
MB
-rwxr-xr-x
2026-05-09 05:01
cpapi2
3.38
MB
-rwxr-xr-x
2026-05-09 05:01
cpapi3
3.38
MB
-rwxr-xr-x
2026-05-09 05:01
cpio
159.8
KB
-rwxr-xr-x
2022-04-18 17:19
cpp
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
cpupower
66.91
KB
-rwxr-xr-x
2026-05-15 08:38
crb
2.58
KB
-rwxr--r--
2025-04-22 17:22
crc32
1.02
KB
-rwxr-xr-x
2019-11-12 18:41
crlutil
134.95
KB
-rwxr-xr-x
2026-04-14 17:44
cronnext
49.8
KB
-rwxr-xr-x
2024-04-06 11:40
crontab
61.67
KB
-rwsr-xr-x
2024-04-06 11:40
csplit
53.68
KB
-rwxr-xr-x
2026-03-24 13:05
csslint-0.6
24.56
KB
-rwxr-xr-x
2020-09-22 21:07
curl
230.08
KB
-rwxr-xr-x
2026-03-24 13:41
cut
49.52
KB
-rwxr-xr-x
2026-03-24 13:05
cvtsudoers
284.21
KB
-rwxr-xr-x
2026-04-29 08:49
cxpm
29.11
KB
-rwxr-xr-x
2024-03-30 13:53
date
105.96
KB
-rwxr-xr-x
2026-03-24 13:05
db_archive
12.45
KB
-rwxr-xr-x
2021-09-21 16:38
db_checkpoint
16.48
KB
-rwxr-xr-x
2021-09-21 16:38
db_deadlock
16.48
KB
-rwxr-xr-x
2021-09-21 16:38
db_dump
16.51
KB
-rwxr-xr-x
2021-09-21 16:38
db_dump185
69.55
KB
-rwxr-xr-x
2021-09-21 16:38
db_hotbackup
20.49
KB
-rwxr-xr-x
2021-09-21 16:38
db_load
28.61
KB
-rwxr-xr-x
2021-09-21 16:38
db_log_verify
16.52
KB
-rwxr-xr-x
2021-09-21 16:38
db_printlog
33.4
KB
-rwxr-xr-x
2021-09-21 16:38
db_recover
16.51
KB
-rwxr-xr-x
2021-09-21 16:38
db_replicate
16.49
KB
-rwxr-xr-x
2021-09-21 16:38
db_stat
16.48
KB
-rwxr-xr-x
2021-09-21 16:38
db_tuner
24.55
KB
-rwxr-xr-x
2021-09-21 16:38
db_upgrade
12.45
KB
-rwxr-xr-x
2021-09-21 16:38
db_verify
16.46
KB
-rwxr-xr-x
2021-09-21 16:38
dbilogstrip
1.35
KB
-rwxr-xr-x
2022-04-25 16:10
dbiprof
6.06
KB
-rwxr-xr-x
2022-04-25 16:10
dbus-binding-tool
110.43
KB
-rwxr-xr-x
2019-10-25 12:53
dbus-cleanup-sockets
16.39
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-daemon
239.7
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-monitor
28.58
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-run-session
15.88
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-send
28.54
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-test-tool
24.6
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-update-activation-environment
16.41
KB
-rwxr-xr-x
2026-05-05 11:24
dbus-uuidgen
12.38
KB
-rwxr-xr-x
2026-05-05 11:24
dc
53.02
KB
-rwxr-xr-x
2019-10-12 12:34
dd
77.97
KB
-rwxr-xr-x
2026-03-24 13:05
deallocvt
12.54
KB
-rwxr-xr-x
2023-10-14 21:01
debuginfo-install
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
debuginfod-find
16.47
KB
-rwxr-xr-x
2025-08-25 12:56
delv
42.46
KB
-rwxr-xr-x
2026-04-15 23:44
df
91.09
KB
-rwxr-xr-x
2026-03-24 13:05
diff
268.01
KB
-rwxr-xr-x
2020-05-04 15:15
diff3
128.6
KB
-rwxr-xr-x
2020-05-04 15:15
diffimg
12.27
KB
-rwxr-xr-x
2024-04-06 12:47
dig
162.18
KB
-rwxr-xr-x
2026-04-15 23:44
dijkstra
16.71
KB
-rwxr-xr-x
2024-04-06 12:47
dir
139.9
KB
-rwxr-xr-x
2026-03-24 13:05
dircolors
49.55
KB
-rwxr-xr-x
2026-03-24 13:05
dirmngr
579.89
KB
-rwxr-xr-x
2026-01-16 01:48
dirmngr-client
120.12
KB
-rwxr-xr-x
2026-01-16 01:48
dirname
33.36
KB
-rwxr-xr-x
2026-03-24 13:05
display
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
distro
389
B
-rwxr-xr-x
2023-12-18 11:16
dltest
11.87
KB
-rwxr-xr-x
2025-12-18 13:02
dmesg
77.88
KB
-rwxr-xr-x
2026-02-04 20:18
dnf
2.05
KB
-rwxr-xr-x
2025-03-11 09:47
dnf-3
2.05
KB
-rwxr-xr-x
2025-03-11 09:47
dnsdomainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
dnstap-read
20.43
KB
-rwxr-xr-x
2026-04-15 23:44
domainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
dos2unix
58.54
KB
-rwxr-xr-x
2019-10-12 00:46
dot
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
dot2gxl
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
dotty
2.04
KB
-rwxr-xr-x
2024-04-06 12:47
doveadm
946.91
KB
-rwxr-xr-x
2026-02-03 19:40
doveconf
383.93
KB
-rwxr-xr-x
2026-02-03 19:40
dovecot-sysreport
5.81
KB
-rwxr-xr-x
2026-02-03 19:36
dpkg
316.17
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-deb
165.5
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-divert
157.75
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-maintscript-helper
20.67
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-query
165.84
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-realpath
4.05
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-split
132.39
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-statoverride
66.41
KB
-rwxr-xr-x
2021-12-15 12:46
dpkg-trigger
87.66
KB
-rwxr-xr-x
2021-12-15 12:46
dracut
67.56
KB
-rwxr-xr-x
2025-12-17 18:54
dtrace
17.39
KB
-rwxr-xr-x
2023-10-14 13:06
du
107
KB
-rwxr-xr-x
2026-03-24 13:05
dumpkeys
169.88
KB
-rwxr-xr-x
2023-10-14 21:01
dumpsexp
16.43
KB
-rwxr-xr-x
2022-06-28 11:54
dwp
2.13
MB
-rwxr-xr-x
2025-12-18 14:21
dwz
167.64
KB
-rwxr-xr-x
2021-10-09 03:26
ea-php74
6.09
MB
-rwxr-xr-x
2026-05-13 22:17
ea-php74-pear
383
B
-rwxr-xr-x
2026-05-14 00:10
ea-php74-pecl
299
B
-rwxr-xr-x
2026-05-14 00:10
ea-php81
7.72
MB
-rwxr-xr-x
2026-05-05 06:39
ea-php81-pear
383
B
-rwxr-xr-x
2026-05-05 06:41
ea-php81-pecl
299
B
-rwxr-xr-x
2026-05-05 06:41
ea-php82
7.77
MB
-rwxr-xr-x
2026-05-08 15:27
ea-php82-pear
383
B
-rwxr-xr-x
2026-05-09 19:36
ea-php82-pecl
299
B
-rwxr-xr-x
2026-05-09 19:36
ea-php83
7.8
MB
-rwxr-xr-x
2026-05-08 15:28
ea-php83-pear
383
B
-rwxr-xr-x
2026-05-09 19:36
ea-php83-pecl
299
B
-rwxr-xr-x
2026-05-09 19:36
ea-php84
7.85
MB
-rwxr-xr-x
2026-05-08 15:28
ea-php84-pear
383
B
-rwxr-xr-x
2026-05-09 19:36
ea-php84-pecl
299
B
-rwxr-xr-x
2026-05-09 19:36
ea-wappspector
100
B
-rwxr-xr-x
2026-05-12 18:45
easy_install-2
234
B
-rwxr-xr-x
2024-04-10 05:04
easy_install-2.7
234
B
-rwxr-xr-x
2024-04-10 05:04
easy_install-3
246
B
-rwxr-xr-x
2025-07-15 09:13
easy_install-3.6
246
B
-rwxr-xr-x
2025-07-15 09:13
echo
37.35
KB
-rwxr-xr-x
2026-03-24 13:05
ed
57.28
KB
-rwxr-xr-x
2019-10-11 13:05
edgepaint
420.79
KB
-rwxr-xr-x
2024-04-06 12:47
egrep
28
B
-rwxr-xr-x
2019-10-11 15:15
eject
57.78
KB
-rwxr-xr-x
2026-02-04 20:18
elfedit
33.28
KB
-rwxr-xr-x
2025-12-18 14:21
enc2xs
40.97
KB
-rwxr-xr-x
2019-10-13 08:46
encguess
2.91
KB
-rwxr-xr-x
2019-10-13 08:46
enchant-2
20.25
KB
-rwxr-xr-x
2021-04-08 10:42
enchant-lsmod-2
12.35
KB
-rwxr-xr-x
2021-04-08 10:42
env
41.35
KB
-rwxr-xr-x
2026-03-24 13:05
envml
4.1
KB
-rwxr-xr-x
2023-10-14 18:46
envsubst
48.99
KB
-rwxr-xr-x
2019-11-18 17:17
eps2eps
639
B
-rwxr-xr-x
2025-06-03 02:48
eqn
232.16
KB
-rwxr-xr-x
2019-10-13 14:29
event_rpcgen.py
54.26
KB
-rwxr-xr-x
2019-10-12 00:29
evmctl
62.54
KB
-rwxr-xr-x
2021-04-08 15:44
ex
1.13
MB
-rwxr-xr-x
2026-04-29 09:00
expand
41.59
KB
-rwxr-xr-x
2026-03-24 13:05
expr
49.57
KB
-rwxr-xr-x
2026-03-24 13:05
factor
85.97
KB
-rwxr-xr-x
2026-03-24 13:05
fallocate
28.96
KB
-rwxr-xr-x
2026-02-04 20:18
false
33.32
KB
-rwxr-xr-x
2026-03-24 13:05
fc
26
B
-rwxr-xr-x
2025-08-26 08:48
fc-cache
132
B
-rwxr-xr-x
2021-08-16 11:04
fc-cache-64
20.35
KB
-rwxr-xr-x
2021-10-09 09:02
fc-cat
16.35
KB
-rwxr-xr-x
2021-10-09 09:02
fc-conflist
12.25
KB
-rwxr-xr-x
2021-10-09 09:02
fc-list
12.25
KB
-rwxr-xr-x
2021-10-09 09:02
fc-match
16.26
KB
-rwxr-xr-x
2021-10-09 09:02
fc-pattern
12.26
KB
-rwxr-xr-x
2021-10-09 09:02
fc-query
12.24
KB
-rwxr-xr-x
2021-10-09 09:02
fc-scan
12.26
KB
-rwxr-xr-x
2021-10-09 09:02
fc-validate
16.26
KB
-rwxr-xr-x
2021-10-09 09:02
fdp
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
fg
26
B
-rwxr-xr-x
2025-08-26 08:48
fgconsole
12.55
KB
-rwxr-xr-x
2023-10-14 21:01
fgrep
28
B
-rwxr-xr-x
2019-10-11 15:15
filan
94.72
KB
-rwxr-xr-x
2025-07-15 09:33
file
24.69
KB
-rwxr-xr-x
2025-10-07 06:30
fincore
33.04
KB
-rwxr-xr-x
2026-02-04 20:18
find
223.27
KB
-rwxr-xr-x
2025-12-18 14:57
find-repos-of-install
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
findmnt
70.61
KB
-rwxr-xr-x
2026-02-04 20:18
fips-finish-install
1.29
KB
-rwxr-xr-x
2023-08-01 15:18
fips-mode-setup
3.91
KB
-rwxr-xr-x
2023-08-01 15:18
firewall-cmd
139.6
KB
-rwxr-xr-x
2025-03-11 09:51
firewall-offline-cmd
120.73
KB
-rwxr-xr-x
2025-03-11 09:51
flex
428.45
KB
-rwxr-xr-x
2019-10-12 12:33
flex++
428.45
KB
-rwxr-xr-x
2019-10-12 12:33
flock
33.2
KB
-rwxr-xr-x
2026-02-04 20:18
fmt
45.49
KB
-rwxr-xr-x
2026-03-24 13:05
fold
41.42
KB
-rwxr-xr-x
2026-03-24 13:05
fonttosfnt
41.18
KB
-rwxr-xr-x
2021-10-09 23:42
free
20.79
KB
-rwxr-xr-x
2023-10-14 20:31
freetype-config
4.31
KB
-rwxr-xr-x
2025-03-31 19:37
fribidi
21.14
KB
-rwxr-xr-x
2022-10-08 11:16
ftp
101.2
KB
-rwxr-xr-x
2019-10-12 12:59
funzip
36.63
KB
-rwxr-xr-x
2025-06-03 02:10
g++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
g13
211.98
KB
-rwxr-xr-x
2026-01-16 01:48
galera_new_cluster
932
B
-rwxr-xr-x
2026-05-08 11:19
galera_recovery
3.29
KB
-rwxr-xr-x
2026-05-08 11:19
gapplication
20.45
KB
-rwxr-xr-x
2026-05-11 14:21
garb-systemd
1.31
KB
-rwxr-xr-x
2026-03-02 09:34
garbd
1.65
MB
-rwxr-xr-x
2026-03-02 09:34
gawk
669.77
KB
-rwxr-xr-x
2022-04-18 15:56
gc
16.64
KB
-rwxr-xr-x
2024-04-06 12:47
gcc
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
gcc-ar
36.66
KB
-rwxr-xr-x
2025-08-26 09:47
gcc-nm
36.66
KB
-rwxr-xr-x
2025-08-26 09:47
gcc-ranlib
36.66
KB
-rwxr-xr-x
2025-08-26 09:47
gcov
1.31
MB
-rwxr-xr-x
2025-08-26 09:47
gcov-dump
570.96
KB
-rwxr-xr-x
2025-08-26 09:47
gcov-tool
607.77
KB
-rwxr-xr-x
2025-08-26 09:47
gdbm_dump
21.05
KB
-rwxr-xr-x
2022-10-08 13:22
gdbm_load
25.31
KB
-rwxr-xr-x
2022-10-08 13:22
gdbmtool
111.57
KB
-rwxr-xr-x
2022-10-08 13:22
gdbus
48.72
KB
-rwxr-xr-x
2026-05-11 14:21
gdk-pixbuf-query-loaders-64
15.93
KB
-rwxr-xr-x
2026-04-27 11:28
gdk-pixbuf-thumbnailer
20.45
KB
-rwxr-xr-x
2026-04-27 11:28
gdlib-config
2.79
KB
-rwxr-xr-x
2020-08-29 08:49
gencat
24.84
KB
-rwxr-xr-x
2026-05-05 10:58
genl-ctrl-list
12.04
KB
-rwxr-xr-x
2022-10-08 11:39
geqn
232.16
KB
-rwxr-xr-x
2019-10-13 14:29
getconf
32.46
KB
-rwxr-xr-x
2026-05-05 10:58
getent
33.13
KB
-rwxr-xr-x
2026-05-05 10:58
getfacl
25.38
KB
-rwxr-xr-x
2024-04-06 12:15
getfattr
23.03
KB
-rwxr-xr-x
2019-10-11 17:58
getkeycodes
12.54
KB
-rwxr-xr-x
2023-10-14 21:01
getmodule
6.3
MB
-rwxrwxr-x
2026-04-09 17:05
getopt
20.53
KB
-rwxr-xr-x
2026-02-04 20:18
getopts
31
B
-rwxr-xr-x
2025-08-26 08:48
gettext
48.97
KB
-rwxr-xr-x
2019-11-18 17:17
gettext.sh
4.52
KB
-rwxr-xr-x
2019-11-18 17:16
gettextize
42.69
KB
-rwxr-xr-x
2019-11-18 17:16
ghostscript
12.35
KB
-rwxr-xr-x
2025-06-03 02:48
gio
85.22
KB
-rwxr-xr-x
2026-05-11 14:21
gio-querymodules-64
16.3
KB
-rwxr-xr-x
2026-05-11 14:21
git
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
git-receive-pack
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
git-shell
15.79
MB
-rwxr-xr-x
2025-07-09 21:53
git-upload-archive
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
git-upload-pack
26.38
MB
-rwxr-xr-x
2025-07-09 21:53
glib-compile-schemas
48.85
KB
-rwxr-xr-x
2026-05-11 14:21
gmake
235.32
KB
-rwxr-xr-x
2022-04-18 16:38
gml2gv
41.23
KB
-rwxr-xr-x
2024-04-06 12:47
gneqn
908
B
-rwxr-xr-x
2019-10-13 14:29
gnroff
3.23
KB
-rwxr-xr-x
2019-10-13 14:29
gpasswd
82.17
KB
-rwsr-xr-x
2025-12-18 13:51
gpg
1.04
MB
-rwxr-xr-x
2026-01-16 01:48
gpg-agent
419.3
KB
-rwxr-xr-x
2026-01-16 01:48
gpg-connect-agent
165.3
KB
-rwxr-xr-x
2026-01-16 01:48
gpg-error
34.16
KB
-rwxr-xr-x
2019-10-12 12:20
gpg-error-config
2.26
KB
-rwxr-xr-x
2019-10-12 12:20
gpg-wks-server
206.71
KB
-rwxr-xr-x
2026-01-16 01:48
gpg-zip
3.44
KB
-rwxr-xr-x
2026-01-16 01:48
gpg2
1.04
MB
-rwxr-xr-x
2026-01-16 01:48
gpgconf
176.1
KB
-rwxr-xr-x
2026-01-16 01:48
gpgme-json
85.68
KB
-rwxr-xr-x
2024-04-06 12:29
gpgparsemail
28.74
KB
-rwxr-xr-x
2026-01-16 01:48
gpgrt-config
2.26
KB
-rwxr-xr-x
2019-10-12 12:20
gpgsm
514.46
KB
-rwxr-xr-x
2026-01-16 01:48
gpgsplit
87.02
KB
-rwxr-xr-x
2026-01-16 01:48
gpgv
451.51
KB
-rwxr-xr-x
2026-01-16 01:48
gpgv2
451.51
KB
-rwxr-xr-x
2026-01-16 01:48
gpic
293.84
KB
-rwxr-xr-x
2019-10-13 14:29
gpio-event-mon
14.96
KB
-rwxr-xr-x
2026-05-15 08:40
gpio-hammer
14.96
KB
-rwxr-xr-x
2026-05-15 08:40
gprof
103.35
KB
-rwxr-xr-x
2025-12-18 14:21
gr2fonttest
29.95
KB
-rwxr-xr-x
2019-11-06 07:45
graphml2gv
20.65
KB
-rwxr-xr-x
2024-04-06 12:47
grep
193.63
KB
-rwxr-xr-x
2019-10-11 15:15
groff
124.92
KB
-rwxr-xr-x
2019-10-13 14:29
grops
191.14
KB
-rwxr-xr-x
2019-10-13 14:29
grotty
141.9
KB
-rwxr-xr-x
2019-10-13 14:29
groups
37.39
KB
-rwxr-xr-x
2026-03-24 13:05
grub2-editenv
448.11
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-file
928.59
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-fstest
1.15
MB
-rwxr-xr-x
2026-03-17 06:14
grub2-glue-efi
279.41
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-kbdcomp
1.63
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-menulst2cfg
262.65
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mkfont
312.15
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mkimage
431.41
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mklayout
289.48
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mknetdir
485.77
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mkpasswd-pbkdf2
291.9
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mkrelpath
279.27
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-mkrescue
1.12
MB
-rwxr-xr-x
2026-03-17 06:14
grub2-mkstandalone
594.31
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-render-label
937.13
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-script-check
315.98
KB
-rwxr-xr-x
2026-03-17 06:14
grub2-syslinux2cfg
861.61
KB
-rwxr-xr-x
2026-03-17 06:14
gs
12.35
KB
-rwxr-xr-x
2025-06-03 02:48
gsettings
28.61
KB
-rwxr-xr-x
2026-05-11 14:21
gsnd
277
B
-rwxr-xr-x
2025-06-03 02:48
gsoelim
42.55
KB
-rwxr-xr-x
2019-10-13 14:29
gss-client
24.56
KB
-rwxr-xr-x
2026-05-13 06:34
gtar
448.99
KB
-rwxr-xr-x
2025-08-26 08:57
gtbl
154.61
KB
-rwxr-xr-x
2019-10-13 14:29
gtk-query-immodules-2.0-64
16.29
KB
-rwxr-xr-x
2021-04-06 13:52
gtk-update-icon-cache
33.03
KB
-rwxr-xr-x
2024-09-24 02:16
gtroff
805.02
KB
-rwxr-xr-x
2019-10-13 14:29
gunzip
2.29
KB
-rwxr-xr-x
2022-04-27 05:49
gv2gml
24.7
KB
-rwxr-xr-x
2024-04-06 12:47
gv2gxl
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
gvcolor
46.9
KB
-rwxr-xr-x
2024-04-06 12:47
gvgen
24.8
KB
-rwxr-xr-x
2024-04-06 12:47
gvmap
526.31
KB
-rwxr-xr-x
2024-04-06 12:47
gvmap.sh
2.14
KB
-rwxr-xr-x
2024-04-06 12:47
gvpack
460.59
KB
-rwxr-xr-x
2024-04-06 12:47
gvpr
7.83
KB
-rwxr-xr-x
2024-04-06 12:47
gxl2dot
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
gxl2gv
41.3
KB
-rwxr-xr-x
2024-04-06 12:47
gzexe
6.23
KB
-rwxr-xr-x
2022-04-27 05:49
gzip
94.67
KB
-rwxr-xr-x
2022-04-27 05:49
h2ph
28.69
KB
-rwxr-xr-x
2025-07-28 08:08
h2xs
59.44
KB
-rwxr-xr-x
2025-07-28 08:07
hash
28
B
-rwxr-xr-x
2025-08-26 08:48
head
45.5
KB
-rwxr-xr-x
2026-03-24 13:05
hexdump
57.51
KB
-rwxr-xr-x
2026-02-04 20:18
hmac256
16.86
KB
-rwxr-xr-x
2022-06-28 11:54
host
142.3
KB
-rwxr-xr-x
2026-04-15 23:44
hostid
33.34
KB
-rwxr-xr-x
2026-03-24 13:05
hostname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
hostnamectl
20.83
KB
-rwxr-xr-x
2026-04-23 11:13
htdbm
31.72
KB
-rwxr-xr-x
2026-05-13 21:17
htdigest
21.71
KB
-rwxr-xr-x
2026-05-13 21:17
html2text
406
B
-rwxr-xr-x
2020-03-17 12:40
htpasswd
31.55
KB
-rwxr-xr-x
2026-05-13 21:17
httxt2dbm
21.1
KB
-rwxr-xr-x
2026-05-13 21:17
hunspell
144.7
KB
-rwxr-xr-x
2019-10-13 08:33
i386
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
iceauth
41.87
KB
-rwxr-xr-x
2019-10-15 13:08
iconv
61.43
KB
-rwxr-xr-x
2026-05-05 10:58
id
45.44
KB
-rwxr-xr-x
2026-03-24 13:05
identify
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
idiag-socket-details
12.09
KB
-rwxr-xr-x
2022-10-08 11:39
idle2
93
B
-rwxr-xr-x
2024-04-10 04:57
idle2.7
93
B
-rwxr-xr-x
2024-04-10 04:57
idn
39.41
KB
-rwxr-xr-x
2019-10-13 16:55
ifnames
4.03
KB
-rwxr-xr-x
2024-08-13 19:30
iio_event_monitor
22.98
KB
-rwxr-xr-x
2026-05-15 08:40
iio_generic_buffer
26.98
KB
-rwxr-xr-x
2026-05-15 08:40
im360-k8s-syncer
56.02
MB
-rwxr-xr-x
2026-03-03 10:45
import
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
imunify-agent-proxy
12.53
MB
-rwxr-xr-x
2026-04-09 20:25
imunify-antivirus
1
KB
-rwxr-xr-x
2026-04-21 09:41
imunify-fgw-dump
5.82
MB
-rwxr-xr-x
2026-03-03 10:45
imunify-service
1020
B
-rwxr-xr-x
2026-04-21 09:41
imunify360-agent
1
KB
-rwxr-xr-x
2026-04-21 09:41
imunify360-command-wrapper
9.99
KB
-rwxr-xr-x
2026-05-07 09:50
info
249.89
KB
-rwxr-xr-x
2022-04-18 17:09
infocmp
61.05
KB
-rwxr-xr-x
2023-10-14 18:54
infotocap
85.31
KB
-rwxr-xr-x
2023-10-14 18:54
innochecksum
4.54
MB
-rwxr-xr-x
2026-05-08 11:57
install
156.16
KB
-rwxr-xr-x
2026-03-24 13:05
instmodsh
4.1
KB
-rwxr-xr-x
2019-10-13 08:55
intel-speed-select
93.02
KB
-rwxr-xr-x
2026-05-15 08:40
ionice
28.98
KB
-rwxr-xr-x
2026-02-04 20:18
iostat
57.69
KB
-rwxr-xr-x
2024-07-03 09:57
ipcalc
46.08
KB
-rwxr-xr-x
2020-05-31 19:39
ipcmk
29.14
KB
-rwxr-xr-x
2026-02-04 20:18
ipcrm
28.99
KB
-rwxr-xr-x
2026-02-04 20:18
ipcs
53.4
KB
-rwxr-xr-x
2026-02-04 20:18
isc-config.sh
3.33
KB
-rwxr-xr-x
2026-04-15 23:44
isosize
24.88
KB
-rwxr-xr-x
2026-02-04 20:18
ispell
988
B
-rwxr-xr-x
2022-04-18 15:10
isql
36.58
KB
-rwxr-xr-x
2025-12-18 13:02
iusql
28.66
KB
-rwxr-xr-x
2025-12-18 13:02
jimsh
16.65
KB
-rwxr-xr-x
2020-11-06 09:13
jobs
28
B
-rwxr-xr-x
2025-08-26 08:48
join
53.7
KB
-rwxr-xr-x
2026-03-24 13:05
journalctl
77
KB
-rwxr-xr-x
2026-04-23 11:13
json_pp
4.19
KB
-rwxr-xr-x
2019-10-14 12:12
json_reformat
16.55
KB
-rwxr-xr-x
2023-10-14 13:17
json_verify
12.27
KB
-rwxr-xr-x
2023-10-14 13:17
json_xs
6.84
KB
-rwxr-xr-x
2025-10-03 07:13
kbd_mode
12.55
KB
-rwxr-xr-x
2023-10-14 21:01
kbdinfo
16.56
KB
-rwxr-xr-x
2023-10-14 21:01
kbdrate
16.45
KB
-rwxr-xr-x
2023-10-14 21:01
kbxutil
177.35
KB
-rwxr-xr-x
2026-01-16 01:48
kdumpctl
32.93
KB
-rwxr-xr-x
2026-02-10 17:24
kernel-install
4.41
KB
-rwxr-xr-x
2018-06-22 11:11
keyctl
36.82
KB
-rwxr-xr-x
2021-10-08 13:50
kill
37.28
KB
-rwxr-xr-x
2026-02-04 20:18
killall
29.77
KB
-rwxr-xr-x
2020-11-06 14:24
kmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
krb5-config
6.98
KB
-rwxr-xr-x
2026-05-13 06:34
kvm_stat
60.85
KB
-rwxr-xr-x
2026-05-11 10:43
last
49.23
KB
-rwxr-xr-x
2026-02-04 20:18
lastb
49.23
KB
-rwxr-xr-x
2026-02-04 20:18
lastcomm
37.8
KB
-rwxr-xr-x
2019-10-21 16:09
lastlog
20.63
KB
-rwxr-xr-x
2025-12-18 13:51
lchfn
20.35
KB
-rwxr-xr-x
2024-09-24 02:24
lchsh
16.35
KB
-rwxr-xr-x
2024-09-24 02:24
ld
1.71
MB
-rwxr-xr-x
2025-12-18 14:21
ld.bfd
1.71
MB
-rwxr-xr-x
2025-12-18 14:21
ld.gold
2.35
MB
-rwxr-xr-x
2025-12-18 14:21
ld.so
1.05
MB
-rwxr-xr-x
2026-05-05 10:58
ldd
5.31
KB
-rwxr-xr-x
2026-05-05 10:52
lefty
304.52
KB
-rwxr-xr-x
2024-04-06 12:47
less
173.76
KB
-rwxr-xr-x
2024-07-02 20:10
lessecho
12.4
KB
-rwxr-xr-x
2024-07-02 20:10
lesskey
21.99
KB
-rwxr-xr-x
2024-07-02 20:10
lesspipe.sh
3.07
KB
-rwxr-xr-x
2024-07-02 19:57
lex
428.45
KB
-rwxr-xr-x
2019-10-12 12:33
lexgrog
93.7
KB
-rwxr-xr-x
2021-10-08 13:04
libgcrypt-config
3.84
KB
-rwxr-xr-x
2022-06-28 11:54
libnetcfg
15.41
KB
-rwxr-xr-x
2025-07-28 08:08
libpng-config
2.33
KB
-rwxr-xr-x
2026-03-17 10:55
libpng16-config
2.33
KB
-rwxr-xr-x
2026-03-17 10:55
libtool
359.11
KB
-rwxr-xr-x
2019-10-11 14:55
libtoolize
126.17
KB
-rwxr-xr-x
2019-10-11 14:55
libwmf-fontmap
13.03
KB
-rwxr-xr-x
2019-10-14 15:47
link
33.34
KB
-rwxr-xr-x
2026-03-24 13:05
linux-boot-prober
5.85
KB
-rwxr-xr-x
2026-01-23 09:05
linux32
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
linux64
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
ln
70.5
KB
-rwxr-xr-x
2026-03-24 13:05
lneato
1.51
KB
-rwxr-xr-x
2024-04-06 12:47
loadkeys
210.53
KB
-rwxr-xr-x
2023-10-14 21:01
loadunimap
29.03
KB
-rwxr-xr-x
2023-10-14 21:01
locale
56.44
KB
-rwxr-xr-x
2026-05-05 10:58
localectl
28.86
KB
-rwxr-xr-x
2026-04-23 11:13
localedef
307.49
KB
-rwxr-xr-x
2026-05-05 10:58
locate
47.41
KB
-rwx--s--x
2019-10-14 15:43
logger
49.98
KB
-rwxr-xr-x
2026-02-04 20:18
login
40.96
KB
-rwxr-xr-x
2026-02-04 20:18
loginctl
57.28
KB
-rwxr-xr-x
2026-04-23 11:13
logname
33.34
KB
-rwxr-xr-x
2026-03-24 13:05
logresolve
21.45
KB
-rwxr-xr-x
2026-05-13 21:17
look
16.46
KB
-rwxr-xr-x
2026-02-04 20:18
ls
139.91
KB
-rwxr-xr-x
2026-03-24 13:05
lsattr
11.93
KB
-rwxr-xr-x
2025-10-07 07:08
lsblk
90.14
KB
-rwxr-xr-x
2026-02-04 20:18
lscpu
81.7
KB
-rwxr-xr-x
2026-02-04 20:18
lsgpio
15.06
KB
-rwxr-xr-x
2026-05-15 08:40
lsiio
22.98
KB
-rwxr-xr-x
2026-05-15 08:40
lsinitrd
8.68
KB
-rwxr-xr-x
2025-12-17 18:54
lsipc
73.74
KB
-rwxr-xr-x
2026-02-04 20:18
lslocks
37.53
KB
-rwxr-xr-x
2026-02-04 20:18
lslogins
65.62
KB
-rwxr-xr-x
2026-02-04 20:18
lsmcli
954
B
-rwxr-xr-x
2023-10-11 23:25
lsmd
24.88
KB
-rwxr-xr-x
2023-10-11 23:25
lsmem
45.34
KB
-rwxr-xr-x
2026-02-04 20:18
lsns
49.29
KB
-rwxr-xr-x
2026-02-04 20:18
lsof
175.4
KB
-rwxr-xr-x
2020-08-15 21:59
lsphp
937
B
-rwxr-xr-x
2025-04-01 16:34
lsscsi
86.01
KB
-rwxr-xr-x
2021-10-09 05:12
lsusb
244.14
KB
-rwxr-xr-x
2019-10-21 16:04
lsusb.py
14.89
KB
-rwxr-xr-x
2019-10-21 16:04
lua
20.45
KB
-rwxr-xr-x
2021-10-09 05:14
luac
152.77
KB
-rwxr-xr-x
2021-10-09 05:14
lwp-download
10.05
KB
-rwxr-xr-x
2022-04-22 20:13
lwp-dump
2.65
KB
-rwxr-xr-x
2022-04-22 20:13
lwp-mirror
2.36
KB
-rwxr-xr-x
2022-04-22 20:13
lwp-request
15.84
KB
-rwxr-xr-x
2022-04-22 20:13
m4
185.56
KB
-rwxr-xr-x
2019-10-11 14:41
mac2unix
58.54
KB
-rwxr-xr-x
2019-10-12 00:46
mail
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
mailx
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
make
235.32
KB
-rwxr-xr-x
2022-04-18 16:38
make-dummy-cert
610
B
-rwxr-xr-x
2026-02-23 07:51
makedb
24.84
KB
-rwxr-xr-x
2026-05-05 10:58
man
112.52
KB
-rwxr-xr-x
2021-10-08 13:04
mandb
134.52
KB
-rwxr-xr-x
2021-10-08 13:04
manpath
33.42
KB
-rwxr-xr-x
2021-10-08 13:04
mapscrn
24.84
KB
-rwxr-xr-x
2023-10-14 21:01
mariadb
5.24
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-access
109.34
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-admin
4.8
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-binlog
5.07
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-check
4.8
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-config
12.2
KB
-rwxr-xr-x
2026-05-08 11:55
mariadb-conv
4.53
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-convert-table-format
4.12
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-dump
4.89
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-dumpslow
8.05
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-embedded
23.7
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-find-rows
3.21
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-fix-extensions
1.22
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-hotcopy
34.53
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-import
4.79
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-install-db
22.14
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-plugin
4.51
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-secure-installation
13.48
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-service-convert
2.45
KB
-rwxr-xr-x
2026-05-08 05:43
mariadb-setpermission
17.56
KB
-rwxr-xr-x
2026-05-08 11:19
mariadb-show
4.79
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-slap
4.81
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-tzinfo-to-sql
4.51
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb-upgrade
4.94
MB
-rwxr-xr-x
2026-05-08 11:57
mariadb-waitpid
4.5
MB
-rwxr-xr-x
2026-05-08 11:54
mariadb_config
12.2
KB
-rwxr-xr-x
2026-05-08 11:55
mariadbd-multi
26.71
KB
-rwxr-xr-x
2026-05-08 11:19
mariadbd-safe
30.42
KB
-rwxr-xr-x
2026-05-08 11:19
mariadbd-safe-helper
4.47
MB
-rwxr-xr-x
2026-05-08 11:57
mcookie
33.27
KB
-rwxr-xr-x
2026-02-04 20:18
mcpp
9.02
KB
-rwxr-xr-x
2019-10-14 15:45
md5sum
45.54
KB
-rwxr-xr-x
2026-03-24 13:05
mdig
48.52
KB
-rwxr-xr-x
2026-04-15 23:44
memcached
209.63
KB
-rwxr-xr-x
2020-08-30 16:57
memcached-tool
6.05
KB
-rwxr-xr-x
2020-01-21 23:17
memstrack
83.78
KB
-rwxr-xr-x
2023-10-15 04:56
mesg
16.36
KB
-rwxr-xr-x
2026-02-04 20:18
mkdir
82.7
KB
-rwxr-xr-x
2026-03-24 13:05
mkfifo
66.46
KB
-rwxr-xr-x
2026-03-24 13:05
mkfontdir
65
B
-rwxr-xr-x
2021-10-09 23:42
mkfontscale
41.59
KB
-rwxr-xr-x
2021-10-09 23:42
mkinitrd
6.43
KB
-rwxr-xr-x
2025-12-17 18:54
mknod
70.47
KB
-rwxr-xr-x
2026-03-24 13:05
mktemp
45.66
KB
-rwxr-xr-x
2026-03-24 13:05
mm2gv
90.53
KB
-rwxr-xr-x
2024-04-06 12:47
mmdblookup
16.74
KB
-rwxr-xr-x
2024-02-12 02:30
modulecmd
384.75
KB
-rwxr-xr-x
2023-10-14 18:46
modulemd-validator
24.96
KB
-rwxr-xr-x
2021-10-09 01:37
modutil
177.43
KB
-rwxr-xr-x
2026-04-14 17:44
mogrify
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
montage
11.84
KB
-rwxr-xr-x
2025-04-01 13:15
more
44.94
KB
-rwxr-xr-x
2026-02-04 20:18
mount
49.15
KB
-rwsr-xr-x
2026-02-04 20:18
mountpoint
16.48
KB
-rwxr-xr-x
2026-02-04 20:18
mpicalc
20.38
KB
-rwxr-xr-x
2022-06-28 11:54
mpstat
53.51
KB
-rwxr-xr-x
2024-07-03 09:57
msgattrib
25.58
KB
-rwxr-xr-x
2019-11-18 17:17
msgcat
25.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgcmp
26.12
KB
-rwxr-xr-x
2019-11-18 17:17
msgcomm
25.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgconv
21.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgen
21.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgexec
21.55
KB
-rwxr-xr-x
2019-11-18 17:17
msgfilter
34.53
KB
-rwxr-xr-x
2019-11-18 17:17
msgfmt
90.3
KB
-rwxr-xr-x
2019-11-18 17:17
msgfmt2.7.py
6.33
KB
-rwxr-xr-x
2024-04-10 04:58
msgfmt2.py
6.33
KB
-rwxr-xr-x
2024-04-10 04:58
msggrep
43.6
KB
-rwxr-xr-x
2019-11-18 17:17
msginit
67.85
KB
-rwxr-xr-x
2019-11-18 17:17
msgmerge
71.48
KB
-rwxr-xr-x
2019-11-18 17:17
msgunfmt
35.8
KB
-rwxr-xr-x
2019-11-18 17:17
msguniq
25.56
KB
-rwxr-xr-x
2019-11-18 17:17
msql2mysql
1.41
KB
-rwxr-xr-x
2026-05-08 11:19
mv
143.96
KB
-rwxr-xr-x
2026-03-24 13:05
my_print_defaults
4.5
MB
-rwxr-xr-x
2026-05-08 11:54
myisam_ftdump
4.79
MB
-rwxr-xr-x
2026-05-08 11:57
myisamchk
4.91
MB
-rwxr-xr-x
2026-05-08 11:57
myisamlog
4.77
MB
-rwxr-xr-x
2026-05-08 11:57
myisampack
4.81
MB
-rwxr-xr-x
2026-05-08 11:57
mysql
5.24
MB
-rwxr-xr-x
2026-05-08 11:54
mysql_config
4.51
KB
-rwxr-xr-x
2026-05-08 11:19
mysql_embedded
23.7
MB
-rwxr-xr-x
2026-05-08 11:54
mysql_find_rows
3.21
KB
-rwxr-xr-x
2026-05-08 11:19
mysql_fix_extensions
1.22
KB
-rwxr-xr-x
2026-05-08 11:19
mysql_install_db
22.14
KB
-rwxr-xr-x
2026-05-08 11:19
mysql_plugin
4.51
MB
-rwxr-xr-x
2026-05-08 11:54
mysql_tzinfo_to_sql
4.51
MB
-rwxr-xr-x
2026-05-08 11:54
mysql_upgrade
4.94
MB
-rwxr-xr-x
2026-05-08 11:57
mysql_waitpid
4.5
MB
-rwxr-xr-x
2026-05-08 11:54
mysqlaccess
109.34
KB
-rwxr-xr-x
2026-05-08 11:19
mysqladmin
4.8
MB
-rwxr-xr-x
2026-05-08 11:54
mysqlbinlog
5.07
MB
-rwxr-xr-x
2026-05-08 11:54
mysqlcheck
4.8
MB
-rwxr-xr-x
2026-05-08 11:54
mysqld_multi
26.71
KB
-rwxr-xr-x
2026-05-08 11:19
mysqld_safe
30.42
KB
-rwxr-xr-x
2026-05-08 11:19
mysqld_safe_helper
4.47
MB
-rwxr-xr-x
2026-05-08 11:57
mysqldump
4.89
MB
-rwxr-xr-x
2026-05-08 11:54
mysqlimport
4.79
MB
-rwxr-xr-x
2026-05-08 11:54
mysqlshow
4.79
MB
-rwxr-xr-x
2026-05-08 11:54
mysqlslap
4.81
MB
-rwxr-xr-x
2026-05-08 11:54
mytop
72.03
KB
-rwxr-xr-x
2026-05-08 11:19
nail
408.89
KB
-rwxr-xr-x
2019-10-13 00:19
named-rrchecker
19.88
KB
-rwxr-xr-x
2026-04-15 23:44
namei
33.1
KB
-rwxr-xr-x
2026-02-04 20:18
nano
247.94
KB
-rwxr-xr-x
2024-09-24 02:16
nc
49.34
KB
-rwxr-xr-x
2026-01-03 22:58
ncurses6-config
5.87
KB
-rwxr-xr-x
2023-10-14 18:54
ncursesw6-config
5.88
KB
-rwxr-xr-x
2023-10-14 18:54
ndptool
24.45
KB
-rwxr-xr-x
2024-07-19 07:04
neato
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
needs-restarting
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
neqn
908
B
-rwxr-xr-x
2019-10-13 14:29
net-snmp-create-v3-user
3.15
KB
-rwxr-xr-x
2026-01-19 08:19
netcat
49.34
KB
-rwxr-xr-x
2026-01-03 22:58
netstat
158.68
KB
-rwxr-xr-x
2020-08-30 17:47
newgidmap
47.81
KB
-rwxr-xr-x
2025-12-18 13:51
newgrp
42.46
KB
-rwsr-xr-x
2025-12-18 13:51
newuidmap
47.77
KB
-rwxr-xr-x
2025-12-18 13:51
nf-ct-add
16.46
KB
-rwxr-xr-x
2022-10-08 11:39
nf-ct-events
12.38
KB
-rwxr-xr-x
2022-10-08 11:39
nf-ct-list
16.49
KB
-rwxr-xr-x
2022-10-08 11:39
nf-exp-add
16.87
KB
-rwxr-xr-x
2022-10-08 11:39
nf-exp-delete
16.66
KB
-rwxr-xr-x
2022-10-08 11:39
nf-exp-list
16.49
KB
-rwxr-xr-x
2022-10-08 11:39
nf-log
12.35
KB
-rwxr-xr-x
2022-10-08 11:39
nf-monitor
12.36
KB
-rwxr-xr-x
2022-10-08 11:39
nf-queue
16.35
KB
-rwxr-xr-x
2022-10-08 11:39
ngettext
48.97
KB
-rwxr-xr-x
2019-11-18 17:17
nice
37.33
KB
-rwxr-xr-x
2026-03-24 13:05
nisdomainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
nl
45.55
KB
-rwxr-xr-x
2026-03-24 13:05
nl-addr-add
12.34
KB
-rwxr-xr-x
2022-10-08 11:39
nl-addr-delete
16.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-addr-list
16.88
KB
-rwxr-xr-x
2022-10-08 11:39
nl-class-add
16.73
KB
-rwxr-xr-x
2022-10-08 11:39
nl-class-delete
12.63
KB
-rwxr-xr-x
2022-10-08 11:39
nl-class-list
12.59
KB
-rwxr-xr-x
2022-10-08 11:39
nl-classid-lookup
12.47
KB
-rwxr-xr-x
2022-10-08 11:39
nl-cls-add
16.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-cls-delete
16.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-cls-list
12.73
KB
-rwxr-xr-x
2022-10-08 11:39
nl-fib-lookup
12.5
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-enslave
11.87
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-ifindex2name
11.87
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-list
12.23
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-name2ifindex
11.86
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-release
11.86
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-set
12.77
KB
-rwxr-xr-x
2022-10-08 11:39
nl-link-stats
12.59
KB
-rwxr-xr-x
2022-10-08 11:39
nl-list-caches
12.27
KB
-rwxr-xr-x
2022-10-08 11:39
nl-list-sockets
11.87
KB
-rwxr-xr-x
2022-10-08 11:39
nl-monitor
12.52
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neigh-add
12.63
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neigh-delete
12.66
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neigh-list
12.19
KB
-rwxr-xr-x
2022-10-08 11:39
nl-neightbl-list
12.01
KB
-rwxr-xr-x
2022-10-08 11:39
nl-pktloc-lookup
12.56
KB
-rwxr-xr-x
2022-10-08 11:39
nl-qdisc-add
12.65
KB
-rwxr-xr-x
2022-10-08 11:39
nl-qdisc-delete
12.63
KB
-rwxr-xr-x
2022-10-08 11:39
nl-qdisc-list
16.74
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-add
16.39
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-delete
16.88
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-get
12.35
KB
-rwxr-xr-x
2022-10-08 11:39
nl-route-list
16.44
KB
-rwxr-xr-x
2022-10-08 11:39
nl-rule-list
12.05
KB
-rwxr-xr-x
2022-10-08 11:39
nl-tctree-list
12.66
KB
-rwxr-xr-x
2022-10-08 11:39
nl-util-addr
11.85
KB
-rwxr-xr-x
2022-10-08 11:39
nm
50.38
KB
-rwxr-xr-x
2025-12-18 14:21
nm-online
20.84
KB
-rwxr-xr-x
2025-08-26 09:47
nmcli
1009
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui-connect
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui-edit
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nmtui-hostname
784.12
KB
-rwxr-xr-x
2025-08-26 09:47
nohup
37.41
KB
-rwxr-xr-x
2026-03-24 13:05
nop
12.5
KB
-rwxr-xr-x
2024-04-06 12:47
nproc
37.41
KB
-rwxr-xr-x
2026-03-24 13:05
nroff
3.23
KB
-rwxr-xr-x
2019-10-13 14:29
nsenter
33.3
KB
-rwxr-xr-x
2026-02-04 20:18
nslookup
146.26
KB
-rwxr-xr-x
2026-04-15 23:44
nss-policy-check
16.3
KB
-rwxr-xr-x
2026-04-14 17:44
nsupdate
73.05
KB
-rwxr-xr-x
2026-04-15 23:44
numfmt
65.64
KB
-rwxr-xr-x
2026-03-24 13:05
objcopy
240.07
KB
-rwxr-xr-x
2025-12-18 14:21
objdump
419.76
KB
-rwxr-xr-x
2025-12-18 14:21
od
73.8
KB
-rwxr-xr-x
2026-03-24 13:05
odbc_config
11.84
KB
-rwxr-xr-x
2025-12-18 13:02
odbcinst
28.88
KB
-rwxr-xr-x
2025-12-18 13:02
open
20.97
KB
-rwxr-xr-x
2023-10-14 21:01
openssl
745.95
KB
-rwxr-xr-x
2026-02-23 07:52
openvt
20.97
KB
-rwxr-xr-x
2023-10-14 21:01
os-prober
5.78
KB
-rwxr-xr-x
2026-01-23 09:05
osage
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
p11-kit
37.15
KB
-rwxr-xr-x
2024-04-06 14:16
package-cleanup
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
page_owner_sort
11.34
KB
-rwxr-xr-x
2026-05-15 08:40
pango-list
11.88
KB
-rwxr-xr-x
2021-10-08 15:22
pango-view
57.44
KB
-rwxr-xr-x
2021-10-08 15:22
paperconf
13.07
KB
-rwxr-xr-x
2019-10-12 20:09
passwd
32.77
KB
-rwsr-xr-x
2022-04-18 22:59
paste
37.4
KB
-rwxr-xr-x
2026-03-24 13:05
patch
206.46
KB
-rwxr-xr-x
2020-06-01 15:14
patchwork
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
pathchk
37.34
KB
-rwxr-xr-x
2026-03-24 13:05
pathfix.py
6.63
KB
-rwxr-xr-x
2026-04-28 05:46
pcre-config
2.09
KB
-rwxr-xr-x
2021-10-08 19:17
pcre2-config
1.9
KB
-rwxr-xr-x
2022-08-02 16:07
pdf2dsc
698
B
-rwxr-xr-x
2025-06-03 02:48
pdf2ps
909
B
-rwxr-xr-x
2025-06-03 02:48
pdns_control
486.11
KB
-rwxr-xr-x
2025-08-26 16:35
pdnsutil
5.19
MB
-rwxr-xr-x
2025-08-26 16:35
peekfd
16.51
KB
-rwxr-xr-x
2020-11-06 14:24
perl
12.43
KB
-rwxr-xr-x
2025-07-28 08:07
perl5.26.3
12.43
KB
-rwxr-xr-x
2025-07-28 08:07
perlbug
44.39
KB
-rwxr-xr-x
2025-07-28 08:08
perldoc
118
B
-rwxr-xr-x
2019-10-13 11:53
perlivp
10.56
KB
-rwxr-xr-x
2025-07-28 08:07
perlml
6.61
KB
-rwxr-xr-x
2025-10-02 19:40
perlthanks
44.39
KB
-rwxr-xr-x
2025-07-28 08:08
perror
4.7
MB
-rwxr-xr-x
2026-05-08 11:57
pflags
2.57
KB
-rwxr-xr-x
2024-04-06 13:32
pftp
101.2
KB
-rwxr-xr-x
2019-10-12 12:59
pgrep
28.84
KB
-rwxr-xr-x
2023-10-14 20:31
php
937
B
-rwxr-xr-x
2025-04-01 16:34
pic
293.84
KB
-rwxr-xr-x
2019-10-13 14:29
piconv
8.08
KB
-rwxr-xr-x
2019-10-13 08:46
pidof
16.7
KB
-rwxr-xr-x
2023-10-14 20:31
pidstat
65.72
KB
-rwxr-xr-x
2024-07-03 09:57
pigz
125.38
KB
-rwxr-xr-x
2020-06-01 15:15
pinentry
2.35
KB
-rwxr-xr-x
2018-08-12 17:18
pinentry-curses
77.89
KB
-rwxr-xr-x
2019-11-24 17:39
ping
66.13
KB
-rwxr-xr-x
2023-10-14 17:19
pinky
41.46
KB
-rwxr-xr-x
2026-03-24 13:05
pip-2
206
B
-rwxr-xr-x
2022-04-21 18:08
pip-2.7
206
B
-rwxr-xr-x
2022-04-21 18:08
pip-3
209
B
-rwxr-xr-x
2024-04-06 13:40
pip-3.6
209
B
-rwxr-xr-x
2024-04-06 13:40
pip2
206
B
-rwxr-xr-x
2022-04-21 18:08
pip2.7
206
B
-rwxr-xr-x
2022-04-21 18:08
pip3
209
B
-rwxr-xr-x
2024-04-06 13:40
pip3.6
209
B
-rwxr-xr-x
2024-04-06 13:40
pk12util
111.12
KB
-rwxr-xr-x
2026-04-14 17:44
pkaction
16.38
KB
-rwxr-xr-x
2024-05-29 12:51
pkcheck
24.43
KB
-rwxr-xr-x
2024-05-29 12:51
pkcon
81.32
KB
-rwxr-xr-x
2026-04-29 12:09
pkexec
28.41
KB
-rwsr-xr-x
2024-05-29 12:51
pkg-config
40.04
KB
-rwxr-xr-x
2019-10-13 06:57
pkgconf
40.04
KB
-rwxr-xr-x
2019-10-13 06:57
pkill
28.84
KB
-rwxr-xr-x
2023-10-14 20:31
pkla-admin-identities
25.72
KB
-rwxr-xr-x
2019-11-18 15:17
pkla-check-authorization
33.78
KB
-rwxr-xr-x
2019-11-18 15:17
pkmon
20.75
KB
-rwxr-xr-x
2026-04-29 12:09
pkttyagent
20.38
KB
-rwxr-xr-x
2024-05-29 12:51
pl2pm
4.43
KB
-rwxr-xr-x
2025-07-28 08:08
pldd
16.75
KB
-rwxr-xr-x
2026-05-05 10:58
plesk_configure
342
B
-rwxr-xr-x
2022-08-30 11:44
pmap
32.78
KB
-rwxr-xr-x
2023-10-14 20:31
png-fix-itxt
11.85
KB
-rwxr-xr-x
2026-03-17 10:55
pngfix
52.85
KB
-rwxr-xr-x
2026-03-17 10:55
pod2html
4.04
KB
-rwxr-xr-x
2025-07-28 08:08
pod2man
14.68
KB
-rwxr-xr-x
2019-10-13 14:12
pod2text
10.55
KB
-rwxr-xr-x
2019-10-13 14:12
pod2usage
3.86
KB
-rwxr-xr-x
2019-10-13 11:57
podchecker
3.57
KB
-rwxr-xr-x
2019-10-13 11:46
podselect
2.47
KB
-rwxr-xr-x
2019-10-13 11:52
post-grohtml
238.73
KB
-rwxr-xr-x
2019-10-13 14:29
powernow-k8-decode
10.88
KB
-rwxr-xr-x
2026-05-15 08:40
pr
82.15
KB
-rwxr-xr-x
2026-03-24 13:05
pre-grohtml
130.55
KB
-rwxr-xr-x
2019-10-13 14:29
precat
5.52
KB
-rwxr-xr-x
2022-04-18 15:10
preconv
57.65
KB
-rwxr-xr-x
2019-10-13 14:29
preunzip
5.52
KB
-rwxr-xr-x
2022-04-18 15:10
prezip
5.52
KB
-rwxr-xr-x
2022-04-18 15:10
prezip-bin
11.98
KB
-rwxr-xr-x
2022-04-18 15:10
printenv
33.32
KB
-rwxr-xr-x
2026-03-24 13:05
printf
53.56
KB
-rwxr-xr-x
2026-03-24 13:05
prlimit
37.54
KB
-rwxr-xr-x
2026-02-04 20:18
procan
82.6
KB
-rwxr-xr-x
2025-07-15 09:33
protoc
16.49
KB
-rwxr-xr-x
2025-10-07 08:37
protoc-c
244.79
KB
-rwxr-xr-x
2023-10-14 21:21
protoc-gen-c
244.79
KB
-rwxr-xr-x
2023-10-14 21:21
prove
13.24
KB
-rwxr-xr-x
2019-10-13 12:42
prtstat
20.51
KB
-rwxr-xr-x
2020-11-06 14:24
prune
16.73
KB
-rwxr-xr-x
2024-04-06 12:47
ps
134.75
KB
-rwxr-xr-x
2023-10-14 20:31
ps2ascii
631
B
-rwxr-xr-x
2025-06-03 02:48
ps2epsi
2.69
KB
-rwxr-xr-x
2025-06-03 02:48
ps2pdf
272
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdf12
215
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdf13
215
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdf14
215
B
-rwxr-xr-x
2025-06-03 02:48
ps2pdfwr
1.07
KB
-rwxr-xr-x
2025-06-03 02:48
ps2ps
647
B
-rwxr-xr-x
2025-06-03 02:48
ps2ps2
669
B
-rwxr-xr-x
2025-06-03 02:48
psfaddtable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
psfgettable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
psfstriptable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
psfxtable
20.66
KB
-rwxr-xr-x
2023-10-14 21:01
pslog
12.48
KB
-rwxr-xr-x
2020-11-06 14:24
pstree
33.53
KB
-rwxr-xr-x
2020-11-06 14:24
pstree.x11
33.53
KB
-rwxr-xr-x
2020-11-06 14:24
ptar
3.38
KB
-rwxr-xr-x
2019-10-13 07:10
ptardiff
2.48
KB
-rwxr-xr-x
2019-10-13 07:10
ptargrep
4.2
KB
-rwxr-xr-x
2019-10-13 07:10
ptx
78
KB
-rwxr-xr-x
2026-03-24 13:05
pure-pw
38.84
KB
-rwxr-xr-x
2025-06-06 14:16
pure-pwconvert
10.72
KB
-rwxr-xr-x
2025-06-06 14:16
pure-statsdecode
10.72
KB
-rwxr-xr-x
2025-06-06 14:16
pv
73.56
KB
-rwxr-xr-x
2019-09-04 14:45
pwd
37.42
KB
-rwxr-xr-x
2026-03-24 13:05
pwdx
12.68
KB
-rwxr-xr-x
2023-10-14 20:31
pwmake
12.27
KB
-rwxr-xr-x
2023-04-01 18:24
pwscore
12.27
KB
-rwxr-xr-x
2023-04-01 18:24
pydoc-3
89
B
-rwxr-xr-x
2026-04-28 05:55
pydoc2
78
B
-rwxr-xr-x
2024-04-10 04:58
pydoc2.7
78
B
-rwxr-xr-x
2024-04-10 04:58
pydoc3
89
B
-rwxr-xr-x
2026-04-28 05:55
pydoc3.12
79
B
-rwxr-xr-x
2026-04-27 16:33
pydoc3.6
89
B
-rwxr-xr-x
2026-04-28 05:55
pygettext2.7.py
21.56
KB
-rwxr-xr-x
2024-04-10 04:58
pygettext2.py
21.56
KB
-rwxr-xr-x
2024-04-10 04:58
pynche2
138
B
-rwxr-xr-x
2024-04-10 04:48
pynche2.7
138
B
-rwxr-xr-x
2024-04-10 04:48
python-html2text
406
B
-rwxr-xr-x
2020-03-17 12:40
python2
7.84
KB
-rwxr-xr-x
2024-04-10 04:58
python2-config
1.8
KB
-rwxr-xr-x
2024-04-10 04:58
python2.7
7.84
KB
-rwxr-xr-x
2024-04-10 04:58
python2.7-config
1.8
KB
-rwxr-xr-x
2024-04-10 04:58
python3
11.59
KB
-rwxr-xr-x
2026-04-28 05:56
python3-config
204
B
-rwxr-xr-x
2026-04-28 05:55
python3-html2text
406
B
-rwxr-xr-x
2020-03-17 12:40
python3.12
7.57
KB
-rwxr-xr-x
2026-04-27 16:36
python3.6
11.59
KB
-rwxr-xr-x
2026-04-28 05:56
python3.6-config
204
B
-rwxr-xr-x
2026-04-28 05:55
python3.6m
11.59
KB
-rwxr-xr-x
2026-04-28 05:56
python3.6m-config
204
B
-rwxr-xr-x
2026-04-28 05:55
python3.6m-x86_64-config
3.54
KB
-rwxr-xr-x
2026-04-28 05:49
pyvenv-3
446
B
-rwxr-xr-x
2026-04-28 05:55
pyvenv-3.6
446
B
-rwxr-xr-x
2026-04-28 05:55
qemu-ga
505.49
KB
-rwxr-xr-x
2026-02-10 17:14
quota
91.49
KB
-rwsr-xr-x
2021-10-09 07:08
quotasync
74.69
KB
-rwxr-xr-x
2021-10-09 07:08
r1soft-report.sh
9.55
KB
-r-x------
2026-04-10 09:34
r1soft-setup
5.75
MB
-r-x------
2026-04-10 09:31
r1soft-setup-old
2.39
MB
-r-x------
2026-04-10 09:31
ranlib
61.97
KB
-rwxr-xr-x
2025-12-18 14:21
raw
16.5
KB
-rwxr-xr-x
2026-02-04 20:18
read
28
B
-rwxr-xr-x
2025-08-26 08:48
readelf
624.54
KB
-rwxr-xr-x
2025-12-18 14:21
readlink
45.88
KB
-rwxr-xr-x
2026-03-24 13:05
realpath
49.94
KB
-rwxr-xr-x
2026-03-24 13:05
recode-sr-latin
17.99
KB
-rwxr-xr-x
2019-11-18 17:17
red
89
B
-rwxr-xr-x
2019-10-11 13:05
rename
16.5
KB
-rwxr-xr-x
2026-02-04 20:18
renew-dummy-cert
725
B
-rwxr-xr-x
2026-02-23 07:51
renice
16.46
KB
-rwxr-xr-x
2026-02-04 20:18
replace
4.48
MB
-rwxr-xr-x
2026-05-08 11:54
repo-graph
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repoclosure
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repodiff
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repomanage
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repoquery
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
reposync
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
repotrack
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
rescan-scsi-bus.sh
38.24
KB
-rwxr-xr-x
2022-10-08 11:49
reset
24.76
KB
-rwxr-xr-x
2023-10-14 18:54
resizecons
20.77
KB
-rwxr-xr-x
2023-10-14 21:01
resolve_stack_dump
4.5
MB
-rwxr-xr-x
2026-05-08 11:57
resolvectl
195.75
KB
-rwxr-xr-x
2026-04-23 11:13
resolveip
4.5
MB
-rwxr-xr-x
2026-05-08 11:57
rev
12.46
KB
-rwxr-xr-x
2026-02-04 20:18
rm
70.38
KB
-rwxr-xr-x
2026-03-24 13:05
rmdir
45.46
KB
-rwxr-xr-x
2026-03-24 13:05
rnano
247.94
KB
-rwxr-xr-x
2024-09-24 02:16
rpcbind
61.55
KB
-rwxr-xr-x
2022-10-12 11:00
rpcinfo
32.64
KB
-rwxr-xr-x
2022-10-12 11:00
rpm
20.85
KB
-rwxr-xr-x
2024-12-17 04:11
rpm2archive
20.46
KB
-rwxr-xr-x
2024-12-17 04:11
rpm2cpio
11.84
KB
-rwxr-xr-x
2024-12-17 04:11
rpmdb
16.96
KB
-rwxr-xr-x
2024-12-17 04:11
rpmkeys
16.87
KB
-rwxr-xr-x
2024-12-17 04:11
rpmquery
20.85
KB
-rwxr-xr-x
2024-12-17 04:11
rpmverify
20.85
KB
-rwxr-xr-x
2024-12-17 04:11
rsync
510.14
KB
-rwxr-xr-x
2026-05-14 09:47
rsyslog-recover-qi.pl
5.96
KB
-rwxr-xr-x
2024-11-05 02:34
run-parts
1.94
KB
-rwxr-xr-x
2021-04-08 09:38
run-with-aspell
85
B
-rwxr-xr-x
2022-04-18 15:10
runcon
37.38
KB
-rwxr-xr-x
2026-03-24 13:05
rvi
1.13
MB
-rwxr-xr-x
2026-04-29 09:00
rview
1.13
MB
-rwxr-xr-x
2026-04-29 09:00
rvim
2.93
MB
-rwxr-xr-x
2026-04-29 09:00
sadf
334.57
KB
-rwxr-xr-x
2024-07-03 09:57
sandbox
17.62
KB
-rwxr-xr-x
2024-07-02 21:08
sar
135.77
KB
-rwxr-xr-x
2024-07-03 09:57
sccmap
20.62
KB
-rwxr-xr-x
2024-04-06 12:47
scl
36.87
KB
-rwxr-xr-x
2023-04-01 16:10
scl_enabled
258
B
-rwxr-xr-x
2017-08-25 08:23
scl_source
1.82
KB
-rwxr-xr-x
2023-04-01 16:10
scp
102.84
KB
-rwxr-xr-x
2026-05-04 20:25
screen
482.46
KB
-rwxr-sr-x
2021-05-05 10:04
script
36.8
KB
-rwxr-xr-x
2026-02-04 20:18
scriptreplay
29
KB
-rwxr-xr-x
2026-02-04 20:18
scsi-rescan
38.24
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_logging_level
8.38
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_mandat
3.52
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_readcap
1.3
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_ready
1.09
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_satl
3.77
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_start
1.25
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_stop
1.44
KB
-rwxr-xr-x
2022-10-08 11:49
scsi_temperature
936
B
-rwxr-xr-x
2022-10-08 11:49
sdiff
105.33
KB
-rwxr-xr-x
2020-05-04 15:15
sealert
27.27
KB
-rwxr-xr-x
2024-04-06 13:44
secon
25.46
KB
-rwxr-xr-x
2024-07-02 21:04
secret-tool
21.17
KB
-rwxr-xr-x
2019-11-15 09:37
sed
115.27
KB
-rwxr-xr-x
2026-04-14 19:22
sedismod
273.66
KB
-rwxr-xr-x
2019-12-10 17:48
sedispol
198.48
KB
-rwxr-xr-x
2019-12-10 17:48
semodule_expand
12.28
KB
-rwxr-xr-x
2024-07-02 21:04
semodule_link
12.28
KB
-rwxr-xr-x
2024-07-02 21:04
semodule_package
16.68
KB
-rwxr-xr-x
2024-07-02 21:04
semodule_unpackage
12.3
KB
-rwxr-xr-x
2024-07-02 21:04
seq
53.45
KB
-rwxr-xr-x
2026-03-24 13:05
serverbackup-setup
5.75
MB
-r-x------
2026-04-10 09:31
sessreg
17.38
KB
-rwxr-xr-x
2019-10-15 13:08
setarch
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
setfacl
37.65
KB
-rwxr-xr-x
2024-04-06 12:15
setfattr
23.19
KB
-rwxr-xr-x
2019-10-11 17:58
setfont
45.19
KB
-rwxr-xr-x
2023-10-14 21:01
setkeycodes
12.56
KB
-rwxr-xr-x
2023-10-14 21:01
setleds
16.6
KB
-rwxr-xr-x
2023-10-14 21:01
setmetamode
12.56
KB
-rwxr-xr-x
2023-10-14 21:01
setpriv
45.16
KB
-rwxr-xr-x
2026-02-04 20:18
setsid
16.38
KB
-rwxr-xr-x
2026-02-04 20:18
setterm
45.13
KB
-rwxr-xr-x
2026-02-04 20:18
setup-nsssysinit
1.5
KB
-rwxr-xr-x
2026-04-14 17:44
setup-nsssysinit.sh
1.5
KB
-rwxr-xr-x
2026-04-14 17:44
setvtrgb
16.64
KB
-rwxr-xr-x
2023-10-14 21:01
sfdp
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
sftp
159.74
KB
-rwxr-xr-x
2026-05-04 20:25
sg
42.46
KB
-rwsr-xr-x
2025-12-18 13:51
sg_bg_ctl
16.07
KB
-rwxr-xr-x
2022-10-08 11:49
sg_compare_and_write
20.9
KB
-rwxr-xr-x
2022-10-08 11:49
sg_copy_results
20.81
KB
-rwxr-xr-x
2022-10-08 11:49
sg_dd
44.58
KB
-rwxr-xr-x
2022-10-08 11:49
sg_decode_sense
20.33
KB
-rwxr-xr-x
2022-10-08 11:49
sg_emc_trespass
12.26
KB
-rwxr-xr-x
2022-10-08 11:49
sg_format
33.37
KB
-rwxr-xr-x
2022-10-08 11:49
sg_get_config
33.31
KB
-rwxr-xr-x
2022-10-08 11:49
sg_get_lba_status
20.46
KB
-rwxr-xr-x
2022-10-08 11:49
sg_ident
16.17
KB
-rwxr-xr-x
2022-10-08 11:49
sg_inq
117.91
KB
-rwxr-xr-x
2022-10-08 11:49
sg_logs
150.02
KB
-rwxr-xr-x
2022-10-08 11:49
sg_luns
24.85
KB
-rwxr-xr-x
2022-10-08 11:49
sg_map
16.41
KB
-rwxr-xr-x
2022-10-08 11:49
sg_map26
24.87
KB
-rwxr-xr-x
2022-10-08 11:49
sg_modes
43.88
KB
-rwxr-xr-x
2022-10-08 11:49
sg_opcodes
28.69
KB
-rwxr-xr-x
2022-10-08 11:49
sg_persist
34.13
KB
-rwxr-xr-x
2022-10-08 11:49
sg_prevent
12.07
KB
-rwxr-xr-x
2022-10-08 11:49
sg_raw
24.38
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rbuf
20.84
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rdac
15.88
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read
24.41
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_attr
34.79
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_block_limits
12.12
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_buffer
20.96
KB
-rwxr-xr-x
2022-10-08 11:49
sg_read_long
16.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_readcap
20.86
KB
-rwxr-xr-x
2022-10-08 11:49
sg_reassign
16.22
KB
-rwxr-xr-x
2022-10-08 11:49
sg_referrals
16.23
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rep_zones
20.66
KB
-rwxr-xr-x
2022-10-08 11:49
sg_requests
16.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_reset
16.73
KB
-rwxr-xr-x
2022-10-08 11:49
sg_reset_wp
16.17
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rmsn
12.06
KB
-rwxr-xr-x
2022-10-08 11:49
sg_rtpg
16.16
KB
-rwxr-xr-x
2022-10-08 11:49
sg_safte
20.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sanitize
24.58
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_identify
16.71
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_phy_event
20.59
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_read_gplog
16.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sat_set_features
16.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_scan
16.5
KB
-rwxr-xr-x
2022-10-08 11:49
sg_seek
16.85
KB
-rwxr-xr-x
2022-10-08 11:49
sg_senddiag
25.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_ses
118.23
KB
-rwxr-xr-x
2022-10-08 11:49
sg_ses_microcode
29.48
KB
-rwxr-xr-x
2022-10-08 11:49
sg_start
20.93
KB
-rwxr-xr-x
2022-10-08 11:49
sg_stpg
20.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_stream_ctl
20.27
KB
-rwxr-xr-x
2022-10-08 11:49
sg_sync
16.22
KB
-rwxr-xr-x
2022-10-08 11:49
sg_test_rwbuf
20.73
KB
-rwxr-xr-x
2022-10-08 11:49
sg_timestamp
20.74
KB
-rwxr-xr-x
2022-10-08 11:49
sg_turs
16.74
KB
-rwxr-xr-x
2022-10-08 11:49
sg_unmap
24.32
KB
-rwxr-xr-x
2022-10-08 11:49
sg_verify
20.46
KB
-rwxr-xr-x
2022-10-08 11:49
sg_vpd
108.75
KB
-rwxr-xr-x
2022-10-08 11:49
sg_wr_mode
20.3
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_buffer
21.24
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_long
16.33
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_same
24.48
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_verify
20.78
KB
-rwxr-xr-x
2022-10-08 11:49
sg_write_x
53.75
KB
-rwxr-xr-x
2022-10-08 11:49
sg_xcopy
40.59
KB
-rwxr-xr-x
2022-10-08 11:49
sg_zone
16.3
KB
-rwxr-xr-x
2022-10-08 11:49
sginfo
74.85
KB
-rwxr-xr-x
2022-10-08 11:49
sgm_dd
32.55
KB
-rwxr-xr-x
2022-10-08 11:49
sgp_dd
36.95
KB
-rwxr-xr-x
2022-10-08 11:49
sh
1.1
MB
-rwxr-xr-x
2025-08-26 08:48
sha1hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha1sum
45.55
KB
-rwxr-xr-x
2026-03-24 13:05
sha224hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha224sum
45.58
KB
-rwxr-xr-x
2026-03-24 13:05
sha256hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha256sum
45.58
KB
-rwxr-xr-x
2026-03-24 13:05
sha384hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha384sum
45.59
KB
-rwxr-xr-x
2026-03-24 13:05
sha512hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
sha512sum
45.59
KB
-rwxr-xr-x
2026-03-24 13:05
shasum
9.66
KB
-rwxr-xr-x
2019-10-14 12:00
showconsolefont
20.73
KB
-rwxr-xr-x
2023-10-14 21:01
showkey
16.58
KB
-rwxr-xr-x
2023-10-14 21:01
showrgb
13.05
KB
-rwxr-xr-x
2019-10-15 13:08
shred
61.85
KB
-rwxr-xr-x
2026-03-24 13:05
shuf
58.09
KB
-rwxr-xr-x
2026-03-24 13:05
sieve-dump
30.84
KB
-rwxr-xr-x
2026-02-03 19:40
sieve-filter
40.27
KB
-rwxr-xr-x
2026-02-03 19:40
sieve-test
40.2
KB
-rwxr-xr-x
2026-02-03 19:40
sievec
35.1
KB
-rwxr-xr-x
2026-02-03 19:40
signver
114.79
KB
-rwxr-xr-x
2026-04-14 17:44
sim_client
16.27
KB
-rwxr-xr-x
2026-05-13 06:34
sim_lsmplugin
1.22
KB
-rwxr-xr-x
2023-10-11 23:25
simc_lsmplugin
114.45
KB
-rwxr-xr-x
2023-10-11 23:25
size
33.25
KB
-rwxr-xr-x
2025-12-18 14:21
skill
28.8
KB
-rwxr-xr-x
2023-10-14 20:31
slabinfo
36.15
KB
-rwxr-xr-x
2026-05-15 08:40
slabtop
20.84
KB
-rwxr-xr-x
2023-10-14 20:31
sleep
37.4
KB
-rwxr-xr-x
2026-03-24 13:05
slencheck
12.29
KB
-rwxr-xr-x
2025-12-18 13:02
sm3hmac
32.66
KB
-rwxr-xr-x
2024-03-30 14:16
smtpd2.7.py
18.11
KB
-rwxr-xr-x
2024-04-10 04:57
smtpd2.py
18.11
KB
-rwxr-xr-x
2024-04-10 04:57
snice
28.8
KB
-rwxr-xr-x
2023-10-14 20:31
snmpconf
25.44
KB
-rwxr-xr-x
2026-01-19 08:19
socat
406.49
KB
-rwxr-xr-x
2025-07-15 09:33
soelim
42.55
KB
-rwxr-xr-x
2019-10-13 14:29
sort
123.48
KB
-rwxr-xr-x
2026-03-24 13:05
sotruss
4.18
KB
-rwxr-xr-x
2026-05-05 10:52
spell
122
B
-rwxr-xr-x
2022-04-18 15:10
splain
18.7
KB
-rwxr-xr-x
2025-07-28 08:08
split
58.05
KB
-rwxr-xr-x
2026-03-24 13:05
sprof
28.67
KB
-rwxr-xr-x
2026-05-05 10:58
sqlite3
1.28
MB
-rwxr-xr-x
2025-07-29 01:27
sscg
57.14
KB
-rwxr-xr-x
2023-04-02 05:28
ssh
757.61
KB
-rwxr-xr-x
2026-05-04 20:25
ssh-add
346.13
KB
-rwxr-xr-x
2026-05-04 20:25
ssh-agent
325.59
KB
-rwxr-xr-x
2026-05-04 20:25
ssh-copy-id
10.44
KB
-rwxr-xr-x
2026-05-04 20:25
ssh-keygen
427.17
KB
-rwxr-xr-x
2026-05-04 20:25
ssh-keyscan
432.59
KB
-rwxr-xr-x
2026-05-04 20:25
ssltap
130.51
KB
-rwxr-xr-x
2026-04-14 17:44
sss_ssh_authorizedkeys
28.78
KB
-rwxr-xr-x
2026-02-10 17:01
sss_ssh_knownhostsproxy
28.78
KB
-rwxr-xr-x
2026-02-10 17:01
stat
86.16
KB
-rwxr-xr-x
2026-03-24 13:05
stdbuf
49.5
KB
-rwxr-xr-x
2026-03-24 13:05
strace
1.94
MB
-rwxr-xr-x
2025-01-28 01:32
strace-log-merge
1.78
KB
-rwxr-xr-x
2021-02-16 08:00
stream
11.83
KB
-rwxr-xr-x
2025-04-01 13:15
strings
37.43
KB
-rwxr-xr-x
2025-12-18 14:21
strip
240.09
KB
-rwxr-xr-x
2025-12-18 14:21
stty
77.61
KB
-rwxr-xr-x
2026-03-24 13:05
su
48.99
KB
-rwsr-x---
2026-02-04 20:18
sudo
186.52
KB
---s--x--x
2026-04-29 08:49
sudoedit
186.52
KB
---s--x--x
2026-04-29 08:49
sudoreplay
119.2
KB
---x--x--x
2026-04-29 08:49
sum
45.53
KB
-rwxr-xr-x
2026-03-24 13:05
sw-engine
20.12
MB
-rwxr-xr-x
1990-01-01 12:00
sxpm
28.81
KB
-rwxr-xr-x
2024-03-30 13:53
symlinks
17.16
KB
-rwxr-xr-x
2019-10-21 15:07
sync
37.35
KB
-rwxr-xr-x
2026-03-24 13:05
systemctl
218.45
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-analyze
1.56
MB
-rwxr-xr-x
2026-04-23 11:13
systemd-ask-password
12.02
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-cat
16.03
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-cgls
16.44
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-cgtop
32.88
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-delta
24.45
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-detect-virt
11.88
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-escape
16.01
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-firstboot
36.98
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-hwdb
28.91
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-inhibit
16.03
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-machine-id-setup
24.75
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-mount
52.63
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-notify
16.03
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-path
16.02
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-resolve
195.75
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-run
48.95
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-socket-activate
24.77
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-stdio-bridge
16.02
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-sysusers
53.05
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-tmpfiles
73.3
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-tty-ask-password-agent
32.82
KB
-rwxr-xr-x
2026-04-23 11:13
systemd-umount
52.63
KB
-rwxr-xr-x
2026-04-23 11:13
tabs
16.55
KB
-rwxr-xr-x
2023-10-14 18:54
tac
41.49
KB
-rwxr-xr-x
2026-03-24 13:05
tail
74.13
KB
-rwxr-xr-x
2026-03-24 13:05
tapestat
41.32
KB
-rwxr-xr-x
2024-07-03 09:57
tar
448.99
KB
-rwxr-xr-x
2025-08-26 08:57
taskset
37.26
KB
-rwxr-xr-x
2026-02-04 20:18
tbl
154.61
KB
-rwxr-xr-x
2019-10-13 14:29
tcamgr
25.13
KB
-rwxr-xr-x
2019-10-13 01:22
tcamttest
21.16
KB
-rwxr-xr-x
2019-10-13 01:22
tcatest
57.6
KB
-rwxr-xr-x
2019-10-13 01:22
tcbmgr
29.1
KB
-rwxr-xr-x
2019-10-13 01:22
tcbmttest
53.22
KB
-rwxr-xr-x
2019-10-13 01:22
tcbtest
69.56
KB
-rwxr-xr-x
2019-10-13 01:22
tcfmgr
25.09
KB
-rwxr-xr-x
2019-10-13 01:22
tcfmttest
37.2
KB
-rwxr-xr-x
2019-10-13 01:22
tcftest
45.18
KB
-rwxr-xr-x
2019-10-13 01:22
tchmgr
25.09
KB
-rwxr-xr-x
2019-10-13 01:22
tchmttest
49.22
KB
-rwxr-xr-x
2019-10-13 01:22
tchtest
57.53
KB
-rwxr-xr-x
2019-10-13 01:22
tclsh
9.04
KB
-rwxr-xr-x
2019-10-12 00:25
tclsh8.6
9.04
KB
-rwxr-xr-x
2019-10-12 00:25
tcptraceroute
1.55
KB
-rwxr-xr-x
2025-03-11 07:45
tctmgr
37.09
KB
-rwxr-xr-x
2019-10-13 01:22
tctmttest
45.2
KB
-rwxr-xr-x
2019-10-13 01:22
tcttest
57.19
KB
-rwxr-xr-x
2019-10-13 01:22
tcucodec
37.08
KB
-rwxr-xr-x
2019-10-13 01:22
tcumttest
25.16
KB
-rwxr-xr-x
2019-10-13 01:22
tcutest
73.17
KB
-rwxr-xr-x
2019-10-13 01:22
teamd
160.52
KB
-rwxr-xr-x
2023-03-31 20:40
teamdctl
30.37
KB
-rwxr-xr-x
2023-03-31 20:40
teamnl
20.47
KB
-rwxr-xr-x
2023-03-31 20:40
tee
41.48
KB
-rwxr-xr-x
2026-03-24 13:05
telnet
104.88
KB
-rwxr-xr-x
2021-04-09 10:39
test
53.55
KB
-rwxr-xr-x
2026-03-24 13:05
tic
85.31
KB
-rwxr-xr-x
2023-10-14 18:54
time
27.54
KB
-rwxr-xr-x
2019-10-11 15:23
timedatectl
36.96
KB
-rwxr-xr-x
2026-04-23 11:13
timeout
41.85
KB
-rwxr-xr-x
2026-03-24 13:05
tload
16.76
KB
-rwxr-xr-x
2023-10-14 20:31
tmon
39.63
KB
-rwxr-xr-x
2026-05-15 08:40
tmpwatch
35.47
KB
-rwxr-xr-x
2019-10-12 11:32
toe
16.45
KB
-rwxr-xr-x
2023-10-14 18:54
top
121.7
KB
-rwxr-xr-x
2023-10-14 20:31
touch
93.94
KB
-rwxr-xr-x
2026-03-24 13:05
tput
24.8
KB
-rwxr-xr-x
2023-10-14 18:54
tr
49.63
KB
-rwxr-xr-x
2026-03-24 13:05
tracepath
20.44
KB
-rwxr-xr-x
2023-10-14 17:19
tracer
1.15
KB
-rwxr-xr-x
2024-04-06 12:27
traceroute
70.97
KB
-rwxr-xr-x
2025-03-11 07:45
traceroute6
70.97
KB
-rwxr-xr-x
2025-03-11 07:45
tred
16.59
KB
-rwxr-xr-x
2024-04-06 12:47
tree
81.59
KB
-rwxr-xr-x
2019-10-12 00:35
troff
805.02
KB
-rwxr-xr-x
2019-10-13 14:29
true
33.33
KB
-rwxr-xr-x
2026-03-24 13:05
truncate
41.36
KB
-rwxr-xr-x
2026-03-24 13:05
trust
219.55
KB
-rwxr-xr-x
2024-04-06 14:16
tset
24.76
KB
-rwxr-xr-x
2023-10-14 18:54
tsort
41.49
KB
-rwxr-xr-x
2026-03-24 13:05
tty
33.31
KB
-rwxr-xr-x
2026-03-24 13:05
turbostat
130.8
KB
-rwxr-xr-x
2026-05-15 08:40
twopi
12.26
KB
-rwxr-xr-x
2024-04-06 12:47
type
28
B
-rwxr-xr-x
2025-08-26 08:48
tzselect
15.01
KB
-rwxr-xr-x
2026-05-05 10:52
uapi
3.38
MB
-rwxr-xr-x
2026-05-09 05:01
ucs2any
24.41
KB
-rwxr-xr-x
2021-10-09 23:42
udevadm
424.56
KB
-rwxr-xr-x
2026-04-23 11:13
ul
20.59
KB
-rwxr-xr-x
2026-02-04 20:18
ulimit
30
B
-rwxr-xr-x
2025-08-26 08:48
umask
29
B
-rwxr-xr-x
2025-08-26 08:48
umount
32.75
KB
-rwsr-xr-x
2026-02-04 20:18
unalias
31
B
-rwxr-xr-x
2025-08-26 08:48
uname
37.33
KB
-rwxr-xr-x
2026-03-24 13:05
uname26
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
unexpand
45.61
KB
-rwxr-xr-x
2026-03-24 13:05
unflatten
16.63
KB
-rwxr-xr-x
2024-04-06 12:47
unicode_start
2.55
KB
-rwxr-xr-x
2023-10-14 20:59
unicode_stop
363
B
-rwxr-xr-x
2023-10-14 20:59
uniq
49.64
KB
-rwxr-xr-x
2026-03-24 13:05
unix2dos
58.53
KB
-rwxr-xr-x
2019-10-12 00:46
unix2mac
58.53
KB
-rwxr-xr-x
2019-10-12 00:46
unlink
33.34
KB
-rwxr-xr-x
2026-03-24 13:05
unpigz
125.38
KB
-rwxr-xr-x
2020-06-01 15:15
unshare
24.93
KB
-rwxr-xr-x
2026-02-04 20:18
unversioned-python
157
B
-rwxr-xr-x
2026-04-28 05:55
unxz
82.09
KB
-rwxr-xr-x
2022-06-14 13:03
unzip
201.88
KB
-rwxr-xr-x
2025-06-03 02:10
unzipsfx
101.48
KB
-rwxr-xr-x
2025-06-03 02:10
update-ca-trust
1.24
KB
-rwxr-xr-x
2025-10-30 14:25
update-crypto-policies
87
B
-rwxr-xr-x
2023-08-01 15:18
update-gtk-immodules
313
B
-rwxr-xr-x
2021-04-06 13:52
update-mime-database
57.22
KB
-rwxr-xr-x
2024-04-06 14:07
updatedb
53.84
KB
-rwxr-xr-x
2019-10-14 15:43
uptime
12.59
KB
-rwxr-xr-x
2023-10-14 20:31
usb-devices
4.01
KB
-rwxr-xr-x
2018-05-15 10:05
usbhid-dump
31.04
KB
-rwxr-xr-x
2019-10-21 16:04
users
37.4
KB
-rwxr-xr-x
2026-03-24 13:05
usleep
11.86
KB
-rwxr-xr-x
2025-11-04 09:19
utmpdump
28.66
KB
-rwxr-xr-x
2026-02-04 20:18
uuclient
15.88
KB
-rwxr-xr-x
2026-05-13 06:34
uuidgen
16.38
KB
-rwxr-xr-x
2026-02-04 20:18
uuidparse
37.13
KB
-rwxr-xr-x
2026-02-04 20:18
vdir
139.91
KB
-rwxr-xr-x
2026-03-24 13:05
vdo
5
KB
-rwxr-xr-x
2024-12-17 09:08
vdo-by-dev
1.83
KB
-rwxr-xr-x
2024-12-17 09:08
vdodmeventd
62.45
KB
-rwxr-xr-x
2024-12-17 09:08
vdodumpconfig
536.63
KB
-rwxr-xr-x
2024-12-17 09:08
vdoforcerebuild
524.27
KB
-rwxr-xr-x
2024-12-17 09:08
vdoformat
549.13
KB
-rwxr-xr-x
2024-12-17 09:08
vdosetuuid
536.66
KB
-rwxr-xr-x
2024-12-17 09:08
vdostats
10.26
KB
-rwxr-xr-x
2024-12-17 09:08
verify_blkparse
11.87
KB
-rwxr-xr-x
2024-09-24 08:24
vi
1.13
MB
-rwxr-xr-x
2026-04-29 09:00
view
1.13
MB
-rwxr-xr-x
2026-04-29 09:00
vim
2.93
MB
-rwxr-xr-x
2026-04-29 09:00
vimdiff
2.93
MB
-rwxr-xr-x
2026-04-29 09:00
vimdot
1.06
KB
-rwxr-xr-x
2024-04-06 12:47
vimtutor
2.07
KB
-rwxr-xr-x
2026-04-29 08:59
vlock
20.83
KB
-rwxr-xr-x
2023-10-14 21:01
vmstat
36.79
KB
-rwxr-xr-x
2023-10-14 20:31
w
20.75
KB
-rwxr-xr-x
2023-10-14 20:31
wait
28
B
-rwxr-xr-x
2025-08-26 08:48
wall
33.05
KB
-rwxr-xr-x
2026-02-04 20:18
watch
29.19
KB
-rwxr-xr-x
2023-10-14 20:31
watchgnupg
16.44
KB
-rwxr-xr-x
2026-01-16 01:48
wc
49.64
KB
-rwxr-xr-x
2026-03-24 13:05
wdctl
36.98
KB
-rwxr-xr-x
2026-02-04 20:18
wget
521.41
KB
-rwxr-xr-x
2024-08-13 22:22
whatis
54.04
KB
-rwxr-xr-x
2021-10-08 13:04
whereis
29.27
KB
-rwxr-xr-x
2026-02-04 20:18
which
29.38
KB
-rwxr-xr-x
2025-08-26 08:54
whiptail
33.09
KB
-rwxr-xr-x
2020-06-01 14:11
who
53.59
KB
-rwxr-xr-x
2026-03-24 13:05
whoami
33.34
KB
-rwxr-xr-x
2026-03-24 13:05
wish
13.05
KB
-rwxr-xr-x
2019-10-16 17:25
wish8.6
13.05
KB
-rwxr-xr-x
2019-10-16 17:25
wmf2eps
17.15
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2fig
17.15
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2gd
17.14
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2svg
17.16
KB
-rwxr-xr-x
2019-10-14 15:47
wmf2x
17.13
KB
-rwxr-xr-x
2019-10-14 15:47
word-list-compress
11.99
KB
-rwxr-xr-x
2022-04-18 15:10
write
20.62
KB
-rwxr-sr-x
2026-02-04 20:18
wsrep_sst_backup
2.39
KB
-rwxr-xr-x
2026-05-08 11:19
wsrep_sst_common
67.46
KB
-rw-r--r--
2026-05-08 11:19
wsrep_sst_mariabackup
49.27
KB
-rwxr-xr-x
2026-05-08 11:19
wsrep_sst_mysqldump
8.1
KB
-rwxr-xr-x
2026-05-08 11:19
wsrep_sst_rsync
29.84
KB
-rwxr-xr-x
2026-05-08 11:19
wsrep_sst_rsync_wan
29.84
KB
-rwxr-xr-x
2026-05-08 11:19
x86_64
20.76
KB
-rwxr-xr-x
2026-02-04 20:18
x86_64-redhat-linux-c++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-g++
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-gcc
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-gcc-8
1.21
MB
-rwxr-xr-x
2025-08-26 09:47
x86_64-redhat-linux-gnu-pkg-config
424
B
-rwxr-xr-x
2019-10-13 06:57
x86_energy_perf_policy
31.95
KB
-rwxr-xr-x
2026-05-15 08:40
xargs
74.11
KB
-rwxr-xr-x
2025-12-18 14:57
xgamma
17.08
KB
-rwxr-xr-x
2019-10-15 13:08
xgettext
283.88
KB
-rwxr-xr-x
2019-11-18 17:17
xhost
17.12
KB
-rwxr-xr-x
2019-10-15 13:08
xinput
63.61
KB
-rwxr-xr-x
2019-10-15 13:08
xkill
17.1
KB
-rwxr-xr-x
2019-10-15 13:08
xml2-config
1.71
KB
-rwxr-xr-x
2017-07-23 05:10
xmlcatalog
20.38
KB
-rwxr-xr-x
2026-04-28 11:31
xmllint
73.37
KB
-rwxr-xr-x
2026-04-28 11:31
xmlwf
36.96
KB
-rwxr-xr-x
2025-11-20 07:31
xmodmap
39.98
KB
-rwxr-xr-x
2019-10-15 13:08
xorg-x11-fonts-update-dirs
1.29
KB
-rwxr--r--
2021-10-09 23:42
xrandr
65.46
KB
-rwxr-xr-x
2019-10-15 13:08
xrdb
33.98
KB
-rwxr-xr-x
2019-10-15 13:08
xrefresh
17.94
KB
-rwxr-xr-x
2019-10-15 13:08
xset
37.2
KB
-rwxr-xr-x
2019-10-15 13:08
xsetpointer
13.05
KB
-rwxr-xr-x
2019-10-15 13:08
xsetroot
21.44
KB
-rwxr-xr-x
2019-10-15 13:08
xslt-config
2.36
KB
-rwxr-xr-x
2015-05-10 14:11
xsltproc
28.47
KB
-rwxr-xr-x
2025-08-26 08:55
xstdcmap
17.68
KB
-rwxr-xr-x
2019-10-15 13:08
xsubpp
4.96
KB
-rwxr-xr-x
2019-10-13 08:58
xxd
20.54
KB
-rwxr-xr-x
2026-04-29 09:00
xz
82.09
KB
-rwxr-xr-x
2022-06-14 13:03
xzcat
82.09
KB
-rwxr-xr-x
2022-06-14 13:03
xzcmp
6.48
KB
-rwxr-xr-x
2022-06-14 13:03
xzdec
16.48
KB
-rwxr-xr-x
2022-06-14 13:03
xzdiff
6.48
KB
-rwxr-xr-x
2022-06-14 13:03
xzegrep
5.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzfgrep
5.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzgrep
5.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzless
1.76
KB
-rwxr-xr-x
2022-06-14 13:03
xzmore
2.11
KB
-rwxr-xr-x
2022-06-14 13:03
yat2m
33.34
KB
-rwxr-xr-x
2019-10-12 12:20
yes
33.37
KB
-rwxr-xr-x
2026-03-24 13:05
ypdomainname
21.16
KB
-rwxr-xr-x
2019-10-11 13:06
yum
2.05
KB
-rwxr-xr-x
2025-03-11 09:47
yum-builddep
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-config-manager
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-debug-dump
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-debug-restore
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yum-groups-manager
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
yumdownloader
3.62
KB
-rwxr-xr-x
2024-04-08 10:02
zcat
1.94
KB
-rwxr-xr-x
2022-04-27 05:49
zcmp
1.64
KB
-rwxr-xr-x
2022-04-27 05:49
zdiff
5.74
KB
-rwxr-xr-x
2022-04-27 05:49
zegrep
29
B
-rwxr-xr-x
2022-04-27 05:49
zfgrep
29
B
-rwxr-xr-x
2022-04-27 05:49
zforce
2.03
KB
-rwxr-xr-x
2022-04-27 05:49
zgrep
7.4
KB
-rwxr-xr-x
2022-04-27 05:49
zip
229
KB
-rwxr-xr-x
2019-10-11 13:11
zipcloak
102.91
KB
-rwxr-xr-x
2019-10-11 13:11
zipdetails
49.39
KB
-rwxr-xr-x
2019-10-13 09:48
zipgrep
2.88
KB
-rwxr-xr-x
2008-10-10 17:40
zipinfo
201.88
KB
-rwxr-xr-x
2025-06-03 02:10
zipnote
97.76
KB
-rwxr-xr-x
2019-10-11 13:11
zipsplit
97.76
KB
-rwxr-xr-x
2019-10-11 13:11
zless
2.15
KB
-rwxr-xr-x
2022-04-27 05:49
zmore
1.8
KB
-rwxr-xr-x
2022-04-27 05:49
znew
4.45
KB
-rwxr-xr-x
2022-04-27 05:49
zone2json
1.38
MB
-rwxr-xr-x
2025-08-26 16:35
zone2sql
1.4
MB
-rwxr-xr-x
2025-08-26 16:35
zsoelim
42.55
KB
-rwxr-xr-x
2019-10-13 14:29
Save
Rename
# 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"