Linux s1.hostinginusa.com 5.14.0-687.26.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jul 14 16:32:02 EDT 2026 x86_64
Apache
Server IP : 67.222.28.226 & Your IP : 216.73.216.79
Domains : 206 Domain
User : agvfen
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
bin /
Delete
Unzip
Name
Size
Permission
Date
Action
2to3
95
B
-rwxr-xr-x
2026-07-15 11:47
GET
15.82
KB
-rwxr-xr-x
2022-03-25 08:00
HEAD
15.82
KB
-rwxr-xr-x
2022-03-25 08:00
Mail
1013.25
KB
-rwxr-xr-x
2025-12-17 11:27
POST
15.82
KB
-rwxr-xr-x
2022-03-25 08:00
[
51.63
KB
-rwxr-xr-x
2026-06-25 00:26
ab
81.46
KB
-rwxr-xr-x
2026-07-07 16:31
aclocal
35.52
KB
-rwxr-xr-x
2023-09-27 12:16
aclocal-1.16
35.52
KB
-rwxr-xr-x
2023-09-27 12:16
acyclic
15.3
KB
-rwxr-xr-x
2024-04-03 11:16
addr2line
27.74
KB
-rwxr-xr-x
2026-04-04 21:15
alias
33
B
-rwxr-xr-x
2024-04-30 14:33
animate
15.09
KB
-rwxr-xr-x
2026-07-22 08:31
appstream-compose
31.47
KB
-rwxr-xr-x
2024-06-13 08:53
appstream-util
116.57
KB
-rwxr-xr-x
2024-06-13 08:53
apropos
48.52
KB
-rwxr-xr-x
2025-09-21 12:57
apropos.man-db
48.52
KB
-rwxr-xr-x
2025-09-21 12:57
ar
55.98
KB
-rwxr-xr-x
2026-04-04 21:15
arch
31.47
KB
-rwxr-xr-x
2026-06-25 00:26
aria_chk
5.36
MB
-rwxr-xr-x
2026-05-23 16:01
aria_dump_log
5.16
MB
-rwxr-xr-x
2026-05-23 16:01
aria_ftdump
5.18
MB
-rwxr-xr-x
2026-05-23 16:01
aria_pack
5.2
MB
-rwxr-xr-x
2026-05-23 16:01
aria_read_log
5.32
MB
-rwxr-xr-x
2026-05-23 16:01
arpaname
15.11
KB
-rwxr-xr-x
2026-06-10 13:21
arping
27.25
KB
-rwxr-xr-x
2025-10-20 12:44
as
710.31
KB
-rwxr-xr-x
2026-04-04 21:15
aserver
39.47
KB
-rwxr-xr-x
2026-03-31 10:28
aspell
151.12
KB
-rwxr-xr-x
2022-01-26 21:47
at
55.49
KB
-rwxr-xr-x
2025-11-12 00:38
atq
55.49
KB
-rwxr-xr-x
2025-11-12 00:38
atrm
55.49
KB
-rwxr-xr-x
2025-11-12 00:38
attr
15.72
KB
-rwxr-xr-x
2022-01-28 12:44
audit2allow
14.71
KB
-rwxr-xr-x
2026-04-05 11:05
audit2why
14.71
KB
-rwxr-xr-x
2026-04-05 11:05
aulast
19.2
KB
-rwxr-xr-x
2026-04-04 20:12
aulastlog
15.13
KB
-rwxr-xr-x
2026-04-04 20:12
ausyscall
15.12
KB
-rwxr-xr-x
2026-04-04 20:12
authselect
43.68
KB
-rwxr-xr-x
2025-03-12 14:22
autoconf
14.42
KB
-rwxr-xr-x
2025-09-21 12:23
autoheader
8.33
KB
-rwxr-xr-x
2025-09-21 12:23
autom4te
31.43
KB
-rwxr-xr-x
2025-09-21 12:23
automake
251.93
KB
-rwxr-xr-x
2023-09-27 12:16
automake-1.16
251.93
KB
-rwxr-xr-x
2023-09-27 12:16
autopoint
26.36
KB
-rwxr-xr-x
2023-09-27 06:51
autoreconf
20.57
KB
-rwxr-xr-x
2025-09-21 12:23
autoscan
16.72
KB
-rwxr-xr-x
2025-09-21 12:23
autoupdate
33.08
KB
-rwxr-xr-x
2025-09-21 12:23
auvirt
35.3
KB
-rwxr-xr-x
2026-04-04 20:12
avinfo
23.35
KB
-rwxr-xr-x
2026-04-04 21:25
awk
698.17
KB
-rwxr-xr-x
2022-03-30 22:25
b2sum
51.59
KB
-rwxr-xr-x
2026-06-25 00:26
base32
35.49
KB
-rwxr-xr-x
2026-06-25 00:26
base64
35.49
KB
-rwxr-xr-x
2026-06-25 00:26
basename
31.48
KB
-rwxr-xr-x
2026-06-25 00:26
basenc
47.83
KB
-rwxr-xr-x
2026-06-25 00:26
bash
1.32
MB
-rwxr-xr-x
2024-04-30 14:33
bashbug
6.91
KB
-rwxr-xr-x
2024-04-30 14:33
bashbug-64
6.91
KB
-rwxr-xr-x
2024-04-30 14:33
batch
140
B
-rwxr-xr-x
2025-11-12 00:38
bcomps
23.37
KB
-rwxr-xr-x
2024-04-03 11:16
bg
30
B
-rwxr-xr-x
2024-04-30 14:33
bison
494.76
KB
-rwxr-xr-x
2022-01-27 00:15
bluemoon
43.75
KB
-rwxr-xr-x
2026-04-04 21:25
bluetoothctl
593.66
KB
-rwxr-xr-x
2026-04-04 21:25
bond2team
22.75
KB
-rwxr-xr-x
2020-07-20 10:00
bootconfig
30.29
KB
-rwxr-xr-x
2026-07-23 20:52
bootctl
100.54
KB
-rwxr-xr-x
2026-06-25 00:28
brotli
753.3
KB
-rwxr-xr-x
2026-02-05 11:07
bsqldb
35.46
KB
-rwxr-xr-x
2025-05-28 13:07
bsqlodbc
31.36
KB
-rwxr-xr-x
2025-05-28 13:07
btattach
31.5
KB
-rwxr-xr-x
2026-04-04 21:25
btmon
1.13
MB
-rwxr-xr-x
2026-04-04 21:25
bunzip2
39.45
KB
-rwxr-xr-x
2026-04-04 21:34
busctl
100.16
KB
-rwxr-xr-x
2026-06-25 00:28
bwrap
72.22
KB
-rwxr-xr-x
2025-09-21 13:44
bzcat
39.45
KB
-rwxr-xr-x
2026-04-04 21:34
bzcmp
2.09
KB
-rwxr-xr-x
2026-04-04 21:34
bzdiff
2.09
KB
-rwxr-xr-x
2026-04-04 21:34
bzegrep
2.01
KB
-rwxr-xr-x
2026-04-04 21:34
bzfgrep
2.01
KB
-rwxr-xr-x
2026-04-04 21:34
bzgrep
2.01
KB
-rwxr-xr-x
2026-04-04 21:34
bzip2
39.45
KB
-rwxr-xr-x
2026-04-04 21:34
bzip2recover
15.23
KB
-rwxr-xr-x
2026-04-04 21:34
bzless
1.23
KB
-rwxr-xr-x
2026-04-04 21:34
bzmore
1.23
KB
-rwxr-xr-x
2026-04-04 21:34
c++
1.05
MB
-rwxr-xr-x
2026-04-04 22:27
c++filt
27.19
KB
-rwxr-xr-x
2026-04-04 21:15
c89
228
B
-rwxr-xr-x
2026-04-04 22:18
c99
219
B
-rwxr-xr-x
2026-04-04 22:18
ca-legacy
1.61
KB
-rwxr-xr-x
2025-11-19 09:34
cal
51.82
KB
-rwxr-xr-x
2026-04-04 22:15
canberra-boot
19.07
KB
-rwxr-xr-x
2023-09-25 19:08
canberra-gtk-play
19.18
KB
-rwxr-xr-x
2023-09-25 19:08
captoinfo
87.79
KB
-rwxr-xr-x
2025-09-21 09:23
cat
35.45
KB
-rwxr-xr-x
2026-06-25 00:26
catchsegv
3.21
KB
-rwxr-xr-x
2026-07-22 07:08
catman
35.86
KB
-rwxr-xr-x
2025-09-21 12:57
cc
1.04
MB
-rwxr-xr-x
2026-04-04 22:27
ccomps
27.47
KB
-rwxr-xr-x
2024-04-03 11:16
cd
30
B
-rwxr-xr-x
2024-04-30 14:33
centrino-decode
14.13
KB
-rwxr-xr-x
2026-07-23 20:52
certutil
172.57
KB
-rwxr-xr-x
2026-03-23 05:10
chacl
19.15
KB
-rwxr-xr-x
2026-07-21 15:58
chage
71.98
KB
-rwsr-xr-x
2026-04-08 19:49
chardetect
225
B
-rwxr-xr-x
2022-03-25 13:26
chattr
15.19
KB
-rwxr-xr-x
2025-09-21 15:03
chcat
13.63
KB
-rwxr-xr-x
2026-04-05 11:05
chcon
60.05
KB
-rwxr-xr-x
2026-06-25 00:26
checkmodule
450.88
KB
-rwxr-xr-x
2024-04-03 10:07
checkpolicy
527.52
KB
-rwxr-xr-x
2024-04-03 10:07
chfn
31.28
KB
-rws--x--x
2026-04-04 22:15
chgrp
55.98
KB
-rwxr-xr-x
2026-06-25 00:26
chmem
35.4
KB
-rwxr-xr-x
2026-04-04 22:15
chmod
55.96
KB
-rwxr-xr-x
2026-06-25 00:26
choom
23.3
KB
-rwxr-xr-x
2026-04-04 22:15
chown
59.99
KB
-rwxr-xr-x
2026-06-25 00:26
chronyc
104.74
KB
-rwxr-xr-x
2026-04-09 00:49
chrt
27.3
KB
-rwxr-xr-x
2026-04-04 22:15
chsh
23.23
KB
-rwx--x--x
2026-04-04 22:15
chvt
15.35
KB
-rwxr-xr-x
2025-03-13 08:15
cifsiostat
23.36
KB
-rwxr-xr-x
2026-04-15 10:16
circo
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
cksum
31.38
KB
-rwxr-xr-x
2026-06-25 00:26
clear
15.15
KB
-rwxr-xr-x
2025-09-21 09:23
clockdiff
23.2
KB
-rwxr-xr-x
2025-10-20 12:44
cloud-id
966
B
-rwxr-xr-x
2026-06-25 14:50
cloud-init
970
B
-rwxr-xr-x
2026-06-25 14:50
cloud-init-per
2.06
KB
-rwxr-xr-x
2026-06-25 14:50
cluster
47.7
KB
-rwxr-xr-x
2024-04-03 11:16
cmp
40.13
KB
-rwxr-xr-x
2022-01-29 18:15
cmsutil
47.37
KB
-rwxr-xr-x
2026-03-23 05:10
cockpit-bridge
213
B
-rwxr-xr-x
2026-05-28 04:12
col
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
colcrt
15.19
KB
-rwxr-xr-x
2026-04-04 22:15
colrm
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
column
35.34
KB
-rwxr-xr-x
2026-04-04 22:15
comm
35.55
KB
-rwxr-xr-x
2026-06-25 00:26
command
35
B
-rwxr-xr-x
2024-04-30 14:33
compare
15.09
KB
-rwxr-xr-x
2026-07-22 08:31
compile_et
1.31
KB
-rwxr-xr-x
2025-09-21 15:02
composite
15.09
KB
-rwxr-xr-x
2026-07-22 08:31
config_data
6.97
KB
-rwxr-xr-x
2022-02-16 11:46
conjure
15.1
KB
-rwxr-xr-x
2026-07-22 08:31
consolehelper
15.1
KB
-rwxr-xr-x
2025-09-21 11:17
convert
15.1
KB
-rwxr-xr-x
2026-07-22 08:31
coredumpctl
59.84
KB
-rwxr-xr-x
2026-06-25 00:28
corelist
14.92
KB
-rwxr-xr-x
2025-03-12 23:43
cp
141.02
KB
-rwxr-xr-x
2026-06-25 00:26
cpan
8.37
KB
-rwxr-xr-x
2025-05-13 21:00
cpan-mirrors
4.19
KB
-rwxr-xr-x
2025-05-13 21:00
cpansign
1.98
KB
-rwxr-xr-x
2022-03-29 21:13
cpapi1
3.32
MB
-rwxr-xr-x
2026-07-24 04:42
cpapi2
3.32
MB
-rwxr-xr-x
2026-07-24 04:42
cpapi3
3.32
MB
-rwxr-xr-x
2026-07-24 04:42
cpio
145.52
KB
-rwxr-xr-x
2022-01-29 20:51
cpp
1.05
MB
-rwxr-xr-x
2026-04-04 22:27
cpupower
80.02
KB
-rwxr-xr-x
2026-07-23 20:50
crb
2.59
KB
-rwxr--r--
2026-06-23 22:05
crc32
1.02
KB
-rwxr-xr-x
2022-03-24 22:30
crlutil
91.98
KB
-rwxr-xr-x
2026-03-23 05:10
cronnext
39.75
KB
-rwxr-xr-x
2026-04-09 05:59
crontab
55.77
KB
-rwsr-xr-x
2026-04-09 05:59
csplit
108.67
KB
-rwxr-xr-x
2026-06-25 00:26
curl
248.48
KB
-rwxr-xr-x
2026-04-04 23:21
cut
43.6
KB
-rwxr-xr-x
2026-06-25 00:26
cvtsudoers
352.23
KB
-rwxr-xr-x
2026-05-21 01:23
cxpm
27.41
KB
-rwxr-xr-x
2024-04-01 18:32
cyrusbdb2current
1.58
MB
-rwxr-xr-x
2025-09-25 11:46
datacopy
31.42
KB
-rwxr-xr-x
2025-05-28 13:07
date
103.84
KB
-rwxr-xr-x
2026-06-25 00:26
dbilogstrip
1.35
KB
-rwxr-xr-x
2026-07-13 16:18
dbiprof
6.06
KB
-rwxr-xr-x
2026-07-13 16:18
dbus-broker
232
KB
-rwxr-xr-x
2022-10-14 17:11
dbus-broker-launch
130.02
KB
-rwxr-xr-x
2022-10-14 17:11
dbus-monitor
27.27
KB
-rwxr-xr-x
2023-09-26 21:51
dbus-send
27.22
KB
-rwxr-xr-x
2023-09-26 21:51
dbus-update-activation-environment
15.17
KB
-rwxr-xr-x
2023-09-26 21:51
dbus-uuidgen
15.14
KB
-rwxr-xr-x
2023-09-26 21:51
dbxtool
23.34
KB
-rwxr-xr-x
2026-04-13 08:36
dconf
64.71
KB
-rwxr-xr-x
2022-01-29 19:03
dd
67.95
KB
-rwxr-xr-x
2026-06-25 00:26
deallocvt
15.36
KB
-rwxr-xr-x
2025-03-13 08:15
debuginfo-install
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
debuginfod-find
19.27
KB
-rwxr-xr-x
2026-04-05 00:39
defncopy
31.43
KB
-rwxr-xr-x
2025-05-28 13:07
delv
45.38
KB
-rwxr-xr-x
2026-06-10 13:21
df
80.53
KB
-rwxr-xr-x
2026-06-25 00:26
diff
194.7
KB
-rwxr-xr-x
2022-01-29 18:15
diff3
52.3
KB
-rwxr-xr-x
2022-01-29 18:15
diffimg
15.26
KB
-rwxr-xr-x
2024-04-03 11:16
dig
136.59
KB
-rwxr-xr-x
2026-06-10 13:21
dijkstra
19.44
KB
-rwxr-xr-x
2024-04-03 11:16
dir
137.45
KB
-rwxr-xr-x
2026-06-25 00:26
dircolors
39.62
KB
-rwxr-xr-x
2026-06-25 00:26
dirmngr
439.97
KB
-rwxr-xr-x
2026-01-15 21:34
dirmngr-client
56.13
KB
-rwxr-xr-x
2026-01-15 21:34
dirname
27.3
KB
-rwxr-xr-x
2026-06-25 00:26
display
15.09
KB
-rwxr-xr-x
2026-07-22 08:31
distro
953
B
-rwxr-xr-x
2022-03-25 07:52
dltest
15.1
KB
-rwxr-xr-x
2026-03-31 12:14
dmesg
71.77
KB
-rwxr-xr-x
2026-04-04 22:15
dnf
2.04
KB
-rwxr-xr-x
2026-05-20 19:48
dnf-3
2.04
KB
-rwxr-xr-x
2026-05-20 19:48
dnf4
2.04
KB
-rwxr-xr-x
2026-05-20 19:48
dnsdomainname
23.84
KB
-rwxr-xr-x
2022-02-14 11:22
dnstap-read
23.19
KB
-rwxr-xr-x
2026-06-10 13:21
domainname
23.84
KB
-rwxr-xr-x
2022-02-14 11:22
dot
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
dot2gxl
39.93
KB
-rwxr-xr-x
2024-04-03 11:16
dotty
2.04
KB
-rwxr-xr-x
2024-04-03 11:16
doveadm
820.06
KB
-rwxr-xr-x
2026-07-15 21:53
doveconf
370.6
KB
-rwxr-xr-x
2026-07-15 21:53
dovecot-sysreport
6.28
KB
-rwxr-xr-x
2026-07-15 21:52
dpkg
320.52
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-deb
153.71
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-divert
129.77
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-maintscript-helper
20.63
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-query
146.16
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-realpath
35.63
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-split
104.76
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-statoverride
56.05
KB
-rwxr-xr-x
2026-03-23 13:44
dpkg-trigger
48.08
KB
-rwxr-xr-x
2026-03-23 13:44
dracut
98.55
KB
-rwxr-xr-x
2026-06-30 09:56
dtrace
17.38
KB
-rwxr-xr-x
2026-04-04 21:42
du
149.27
KB
-rwxr-xr-x
2026-06-25 00:26
dumpkeys
164.05
KB
-rwxr-xr-x
2025-03-13 08:15
dwp
851.59
KB
-rwxr-xr-x
2026-04-04 21:15
dwz
227.99
KB
-rwxr-xr-x
2025-09-21 14:45
ea-php83
10.93
MB
-rwxr-xr-x
2026-07-07 16:35
ea-php83-pear
383
B
-rwxr-xr-x
2026-07-08 21:53
ea-php83-pecl
299
B
-rwxr-xr-x
2026-07-08 21:53
ea-php84
11.02
MB
-rwxr-xr-x
2026-07-07 16:44
ea-php84-pear
383
B
-rwxr-xr-x
2026-07-08 21:53
ea-php84-pecl
299
B
-rwxr-xr-x
2026-07-08 21:53
ea-wappspector
104
B
-rwxr-xr-x
2026-05-18 19:31
echo
27.28
KB
-rwxr-xr-x
2026-06-25 00:26
ed
52.51
KB
-rwxr-xr-x
2022-01-30 05:02
edgepaint
2.46
MB
-rwxr-xr-x
2024-04-03 11:16
egrep
32
B
-rwxr-xr-x
2022-01-31 20:22
eject
43.61
KB
-rwxr-xr-x
2026-04-04 22:15
elfedit
35.84
KB
-rwxr-xr-x
2026-04-04 21:15
enc2xs
40.69
KB
-rwxr-xr-x
2022-02-11 16:42
encguess
2.92
KB
-rwxr-xr-x
2022-02-11 16:42
env
44.03
KB
-rwxr-xr-x
2026-06-25 00:26
envml
4.11
KB
-rwxr-xr-x
2023-05-14 17:11
envsubst
35.39
KB
-rwxr-xr-x
2023-09-27 06:53
eps2eps
643
B
-rwxr-xr-x
2025-05-14 16:03
eqn
189.52
KB
-rwxr-xr-x
2022-02-01 10:44
event_rpcgen.py
53.65
KB
-rwxr-xr-x
2020-07-05 12:01
evmctl
69.59
KB
-rwxr-xr-x
2025-09-21 09:11
ex
1.38
MB
-rwxr-xr-x
2026-07-13 16:20
exempi
28.18
KB
-rwxr-xr-x
2022-01-30 23:19
exiv2
199.82
KB
-rwxr-xr-x
2022-04-14 10:43
expand
39.54
KB
-rwxr-xr-x
2026-06-25 00:26
expr
108.43
KB
-rwxr-xr-x
2026-06-25 00:26
factor
71.87
KB
-rwxr-xr-x
2026-06-25 00:26
fallocate
23.2
KB
-rwxr-xr-x
2026-04-04 22:15
false
27.28
KB
-rwxr-xr-x
2026-06-25 00:26
fc
30
B
-rwxr-xr-x
2024-04-30 14:33
fc-cache
139
B
-rwxr-xr-x
2023-01-23 15:48
fc-cache-64
23.17
KB
-rwxr-xr-x
2023-01-23 19:48
fc-cat
19.16
KB
-rwxr-xr-x
2023-01-23 19:48
fc-conflist
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-list
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-match
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-pattern
15.14
KB
-rwxr-xr-x
2023-01-23 19:48
fc-query
15.13
KB
-rwxr-xr-x
2023-01-23 19:48
fc-scan
15.14
KB
-rwxr-xr-x
2023-01-23 19:48
fc-validate
15.14
KB
-rwxr-xr-x
2023-01-23 19:48
fdp
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
fg
30
B
-rwxr-xr-x
2024-04-30 14:33
fgconsole
15.34
KB
-rwxr-xr-x
2025-03-13 08:15
fgrep
32
B
-rwxr-xr-x
2022-01-31 20:22
filan
47.63
KB
-rwxr-xr-x
2026-02-12 18:05
file
27.63
KB
-rwxr-xr-x
2026-04-05 00:57
fincore
23.3
KB
-rwxr-xr-x
2026-04-04 22:15
find
284.95
KB
-rwxr-xr-x
2024-10-02 21:04
find-repos-of-install
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
findmnt
64.75
KB
-rwxr-xr-x
2026-04-04 22:15
fips-finish-install
1.72
KB
-rwxr-xr-x
2026-02-24 11:47
fips-mode-setup
8.02
KB
-rwxr-xr-x
2026-02-24 11:47
fisql
35.46
KB
-rwxr-xr-x
2025-05-28 13:07
flatpak
1.77
MB
-rwxr-xr-x
2026-05-28 21:34
flatpak-bisect
7.66
KB
-rwxr-xr-x
2024-04-17 17:19
flatpak-coredumpctl
3.35
KB
-rwxr-xr-x
2024-04-17 17:19
flex
412.64
KB
-rwxr-xr-x
2022-01-30 08:23
flex++
412.64
KB
-rwxr-xr-x
2022-01-30 08:23
flock
23.37
KB
-rwxr-xr-x
2026-04-04 22:15
fmt
39.58
KB
-rwxr-xr-x
2026-06-25 00:26
fold
39.51
KB
-rwxr-xr-x
2026-06-25 00:26
free
23.36
KB
-rwxr-xr-x
2024-04-30 16:43
freebcp
23.37
KB
-rwxr-xr-x
2025-05-28 13:07
freetype-config
4.32
KB
-rwxr-xr-x
2025-03-31 15:40
fribidi
28.59
KB
-rwxr-xr-x
2022-10-14 17:30
ftp
100.66
KB
-rwxr-xr-x
2022-01-30 23:49
funzip
31.25
KB
-rwxr-xr-x
2026-04-09 11:24
fuse2fs
72.68
KB
-rwxr-xr-x
2025-09-21 15:03
fusermount
35.52
KB
-rwsr-xr-x
2025-03-12 19:30
fwupdmgr
157.02
KB
-rwxr-xr-x
2026-04-13 08:36
fwupdtool
177.2
KB
-rwxr-xr-x
2026-04-13 08:36
g++
1.05
MB
-rwxr-xr-x
2026-04-04 22:27
g13
110.29
KB
-rwxr-xr-x
2026-01-15 21:34
galera_new_cluster
936
B
-rwxr-xr-x
2026-05-23 15:25
galera_recovery
3.29
KB
-rwxr-xr-x
2026-05-23 15:25
gapplication
23.2
KB
-rwxr-xr-x
2026-07-20 23:56
garb-systemd
1.32
KB
-rwxr-xr-x
2026-05-22 03:36
garbd
1.63
MB
-rwxr-xr-x
2026-05-22 03:37
gawk
698.17
KB
-rwxr-xr-x
2022-03-30 22:25
gc
19.39
KB
-rwxr-xr-x
2024-04-03 11:16
gcc
1.04
MB
-rwxr-xr-x
2026-04-04 22:27
gcc-ar
27.67
KB
-rwxr-xr-x
2026-04-04 22:27
gcc-nm
27.65
KB
-rwxr-xr-x
2026-04-04 22:27
gcc-ranlib
27.67
KB
-rwxr-xr-x
2026-04-04 22:27
gcov
477.13
KB
-rwxr-xr-x
2026-04-04 22:27
gcov-dump
291.77
KB
-rwxr-xr-x
2026-04-04 22:28
gcov-tool
320.47
KB
-rwxr-xr-x
2026-04-04 22:27
gdbm_dump
28.22
KB
-rwxr-xr-x
2024-10-02 21:50
gdbm_load
36.48
KB
-rwxr-xr-x
2024-10-02 21:50
gdbmtool
149.26
KB
-rwxr-xr-x
2024-10-02 21:50
gdbus
51.5
KB
-rwxr-xr-x
2026-07-20 23:56
gdbus-codegen
1.99
KB
-rwxr-xr-x
2026-07-20 23:54
gdk-pixbuf-query-loaders-64
15.16
KB
-rwxr-xr-x
2026-05-21 11:01
gdk-pixbuf-thumbnailer
19.15
KB
-rwxr-xr-x
2026-05-21 11:01
gen_grub_cfgstub
660
B
-rwx------
2026-04-06 12:55
gencat
27.45
KB
-rwxr-xr-x
2026-07-22 07:10
genl-ctrl-list
15.48
KB
-rwxr-xr-x
2025-03-17 12:12
geqn
189.52
KB
-rwxr-xr-x
2022-02-01 10:44
getconf
35.23
KB
-rwxr-xr-x
2026-07-22 07:10
getent
35.86
KB
-rwxr-xr-x
2026-07-22 07:10
getfacl
31.28
KB
-rwxr-xr-x
2026-07-21 15:58
getfattr
24.35
KB
-rwxr-xr-x
2022-01-28 12:44
getkeycodes
15.34
KB
-rwxr-xr-x
2025-03-13 08:15
getopt
23.27
KB
-rwxr-xr-x
2026-04-04 22:15
getopts
35
B
-rwxr-xr-x
2024-04-30 14:33
gettext
35.35
KB
-rwxr-xr-x
2023-09-27 06:53
gettext.sh
5.07
KB
-rwxr-xr-x
2023-09-27 06:50
gettextize
41.25
KB
-rwxr-xr-x
2023-09-27 06:51
ghostscript
15.13
KB
-rwxr-xr-x
2025-05-14 16:03
gio
91.82
KB
-rwxr-xr-x
2026-07-20 23:56
gio-querymodules-64
15.13
KB
-rwxr-xr-x
2026-07-20 23:56
git
22.29
MB
-rwxr-xr-x
2025-07-09 21:55
git-receive-pack
22.29
MB
-rwxr-xr-x
2025-07-09 21:55
git-shell
6.26
MB
-rwxr-xr-x
2025-07-09 21:55
git-upload-archive
22.29
MB
-rwxr-xr-x
2025-07-09 21:55
git-upload-pack
22.29
MB
-rwxr-xr-x
2025-07-09 21:55
glib-compile-resources
43.34
KB
-rwxr-xr-x
2026-07-20 23:56
glib-compile-schemas
51.47
KB
-rwxr-xr-x
2026-07-20 23:56
glib-genmarshal
40.14
KB
-rwxr-xr-x
2026-07-20 23:54
glib-gettextize
5.26
KB
-rwxr-xr-x
2026-07-20 23:54
glib-mkenums
30.08
KB
-rwxr-xr-x
2026-07-20 23:54
gmake
249.8
KB
-rwxr-xr-x
2024-04-02 12:55
gml2gv
47.78
KB
-rwxr-xr-x
2024-04-03 11:16
gneqn
916
B
-rwxr-xr-x
2022-02-01 10:44
gnroff
3.21
KB
-rwxr-xr-x
2022-02-01 10:44
gobject-query
15.17
KB
-rwxr-xr-x
2026-07-20 23:56
gpasswd
76.19
KB
-rwsr-xr-x
2026-04-08 19:49
gpg
1.07
MB
-rwxr-xr-x
2026-01-15 21:34
gpg-agent
342.27
KB
-rwxr-xr-x
2026-01-15 21:34
gpg-card
170.13
KB
-rwxr-xr-x
2026-01-15 21:34
gpg-connect-agent
84.75
KB
-rwxr-xr-x
2026-01-15 21:34
gpg-error
36.1
KB
-rwxr-xr-x
2022-02-09 23:24
gpg-error-config
1.98
KB
-rwxr-xr-x
2022-02-09 23:24
gpg-wks-client
129.55
KB
-rwxr-xr-x
2026-01-15 21:34
gpg-wks-server
113.33
KB
-rwxr-xr-x
2026-01-15 21:34
gpg2
1.07
MB
-rwxr-xr-x
2026-01-15 21:34
gpgconf
100.98
KB
-rwxr-xr-x
2026-01-15 21:34
gpgme-json
84.63
KB
-rwxr-xr-x
2022-03-30 19:37
gpgparsemail
35.33
KB
-rwxr-xr-x
2026-01-15 21:34
gpgrt-config
13.13
KB
-rwxr-xr-x
2022-02-09 23:24
gpgsplit
27.5
KB
-rwxr-xr-x
2026-01-15 21:34
gpgtar
64.87
KB
-rwxr-xr-x
2026-01-15 21:34
gpgv
295.43
KB
-rwxr-xr-x
2026-01-15 21:34
gpgv2
295.43
KB
-rwxr-xr-x
2026-01-15 21:34
gpic
201.72
KB
-rwxr-xr-x
2022-02-01 10:44
gpio-event-mon
18.13
KB
-rwxr-xr-x
2026-07-23 20:52
gpio-hammer
14.12
KB
-rwxr-xr-x
2026-07-23 20:52
gpio-watch
14.12
KB
-rwxr-xr-x
2026-07-23 20:52
gprof
101.48
KB
-rwxr-xr-x
2026-04-04 21:15
gr2fonttest
28
KB
-rwxr-xr-x
2022-01-31 13:10
graphml2gv
23.55
KB
-rwxr-xr-x
2024-04-03 11:16
grep
154.49
KB
-rwxr-xr-x
2022-01-31 20:22
gresource
23.29
KB
-rwxr-xr-x
2026-07-20 23:56
groff
96.77
KB
-rwxr-xr-x
2022-02-01 10:44
grops
167.26
KB
-rwxr-xr-x
2022-02-01 10:44
grotty
122.2
KB
-rwxr-xr-x
2022-02-01 10:44
groups
35.48
KB
-rwxr-xr-x
2026-06-25 00:26
growpart
29.2
KB
-rwxr-xr-x
2023-04-07 01:45
grub2-editenv
486.73
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-file
1.11
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-fstest
1.67
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-glue-efi
301.34
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-kbdcomp
1.63
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-menulst2cfg
284.52
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkfont
334.02
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkimage
465.64
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mklayout
311.45
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mknetdir
532.59
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkpasswd-pbkdf2
314.01
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkrelpath
301.16
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkrescue
1.34
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkstandalone
636.96
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-mount
1.02
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-render-label
1.11
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-script-check
333.95
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-syslinux2cfg
1.04
MB
-rwxr-xr-x
2026-04-06 12:55
gs
15.13
KB
-rwxr-xr-x
2025-05-14 16:03
gsbj
354
B
-rwxr-xr-x
2025-05-14 16:03
gsdj
356
B
-rwxr-xr-x
2025-05-14 16:03
gsdj500
356
B
-rwxr-xr-x
2025-05-14 16:03
gsettings
31.38
KB
-rwxr-xr-x
2026-07-20 23:56
gsf-office-thumbnailer
20.07
KB
-rwxr-xr-x
2022-02-09 23:44
gslj
357
B
-rwxr-xr-x
2025-05-14 16:03
gslp
354
B
-rwxr-xr-x
2025-05-14 16:03
gsnd
281
B
-rwxr-xr-x
2025-05-14 16:03
gsoelim
32.18
KB
-rwxr-xr-x
2022-02-01 10:44
gst-inspect-1.0
71.75
KB
-rwxr-xr-x
2025-03-13 09:20
gst-launch-1.0
39.48
KB
-rwxr-xr-x
2025-03-13 09:20
gst-stats-1.0
35.64
KB
-rwxr-xr-x
2025-03-13 09:20
gst-typefind-1.0
19.34
KB
-rwxr-xr-x
2025-03-13 09:20
gtar
518.13
KB
-rwxr-xr-x
2026-04-04 21:56
gtbl
130.86
KB
-rwxr-xr-x
2022-02-01 10:44
gtester
31.29
KB
-rwxr-xr-x
2026-07-20 23:56
gtester-report
18.64
KB
-rwxr-xr-x
2026-07-20 23:54
gtk-launch
19.28
KB
-rwxr-xr-x
2025-09-17 21:32
gtk-query-immodules-2.0-64
19.17
KB
-rwxr-xr-x
2023-04-07 07:55
gtk-query-immodules-3.0-64
23.27
KB
-rwxr-xr-x
2025-09-17 21:32
gtk-update-icon-cache
39.83
KB
-rwxr-xr-x
2025-09-17 21:32
gtroff
732.07
KB
-rwxr-xr-x
2022-02-01 10:44
gunzip
2.29
KB
-rwxr-xr-x
2022-10-15 17:26
gv2gml
23.41
KB
-rwxr-xr-x
2024-04-03 11:16
gv2gxl
39.93
KB
-rwxr-xr-x
2024-04-03 11:16
gvcolor
49.59
KB
-rwxr-xr-x
2024-04-03 11:16
gvgen
23.41
KB
-rwxr-xr-x
2024-04-03 11:16
gvmap
2.75
MB
-rwxr-xr-x
2024-04-03 11:16
gvmap.sh
2.14
KB
-rwxr-xr-x
2024-04-03 11:16
gvpack
398.14
KB
-rwxr-xr-x
2024-04-03 11:16
gvpr
15.2
KB
-rwxr-xr-x
2024-04-03 11:16
gxl2dot
39.93
KB
-rwxr-xr-x
2024-04-03 11:16
gxl2gv
39.93
KB
-rwxr-xr-x
2024-04-03 11:16
gzexe
6.3
KB
-rwxr-xr-x
2022-10-15 17:26
gzip
89.63
KB
-rwxr-xr-x
2022-10-15 17:26
h2ph
28.69
KB
-rwxr-xr-x
2025-07-28 03:54
h2xs
59.5
KB
-rwxr-xr-x
2025-07-28 03:53
hardlink
35.43
KB
-rwxr-xr-x
2026-04-04 22:15
hash
32
B
-rwxr-xr-x
2024-04-30 14:33
hb-ot-shape-closure
43.66
KB
-rwxr-xr-x
2024-04-02 17:02
hb-shape
47.91
KB
-rwxr-xr-x
2024-04-02 17:02
hb-subset
39.66
KB
-rwxr-xr-x
2024-04-02 17:02
hb-view
64.01
KB
-rwxr-xr-x
2024-04-02 17:02
head
39.6
KB
-rwxr-xr-x
2026-06-25 00:26
hex2hcd
19.05
KB
-rwxr-xr-x
2026-04-04 21:25
hexdump
51.41
KB
-rwxr-xr-x
2026-04-04 22:15
host
108.57
KB
-rwxr-xr-x
2026-06-10 13:21
hostid
31.47
KB
-rwxr-xr-x
2026-06-25 00:26
hostname
23.84
KB
-rwxr-xr-x
2022-02-14 11:22
hostnamectl
31.49
KB
-rwxr-xr-x
2026-06-25 00:28
htdbm
38.53
KB
-rwxr-xr-x
2026-07-07 16:31
htdigest
25.71
KB
-rwxr-xr-x
2026-07-07 16:31
html2text
980
B
-rwxr-xr-x
2022-03-26 14:11
htpasswd
38.66
KB
-rwxr-xr-x
2026-07-07 16:31
httxt2dbm
24.73
KB
-rwxr-xr-x
2026-07-07 16:31
hunspell
102.67
KB
-rwxr-xr-x
2022-01-31 20:22
i386
27.48
KB
-rwxr-xr-x
2026-04-04 22:15
iconv
64.09
KB
-rwxr-xr-x
2026-07-22 07:10
icu-config
205
B
-rwxr-xr-x
2025-07-29 16:13
icu-config-64
21.67
KB
-rwxr-xr-x
2025-07-29 16:16
icuinfo
15.49
KB
-rwxr-xr-x
2025-07-29 16:17
id
39.52
KB
-rwxr-xr-x
2026-06-25 00:26
identify
15.1
KB
-rwxr-xr-x
2026-07-22 08:31
idiag-socket-details
15.52
KB
-rwxr-xr-x
2025-03-17 12:12
idn
36.46
KB
-rwxr-xr-x
2022-02-14 15:33
ifnames
4.03
KB
-rwxr-xr-x
2025-09-21 12:23
iio_event_monitor
30.13
KB
-rwxr-xr-x
2026-07-23 20:52
iio_generic_buffer
34.14
KB
-rwxr-xr-x
2026-07-23 20:52
ima-add-sigs
3.67
KB
-rwxr-xr-x
2025-09-21 09:11
ima-setup
3.71
KB
-rwxr-xr-x
2025-09-21 09:11
import
15.09
KB
-rwxr-xr-x
2026-07-22 08:31
imunify-agent-proxy
13.13
MB
-rwxr-xr-x
2026-06-22 22:34
imunify-antivirus
1
KB
-rwxr-xr-x
2026-07-21 14:04
imunify-fgw-dump
7.8
MB
-rwxr-xr-x
2026-06-03 14:28
imunify-service
1020
B
-rwxr-xr-x
2026-07-21 14:04
imunify360-agent
1
KB
-rwxr-xr-x
2026-07-21 14:04
imunify360-command-wrapper
9.99
KB
-rwxr-xr-x
2026-06-03 18:04
info
312.73
KB
-rwxr-xr-x
2022-05-01 13:12
infocmp
63.68
KB
-rwxr-xr-x
2025-09-21 09:23
infotocap
87.79
KB
-rwxr-xr-x
2025-09-21 09:23
innochecksum
4.52
MB
-rwxr-xr-x
2026-05-23 16:01
install
149.08
KB
-rwxr-xr-x
2026-06-25 00:26
instmodsh
4.1
KB
-rwxr-xr-x
2022-02-24 09:56
intel-speed-select
116.66
KB
-rwxr-xr-x
2026-07-23 20:52
ionice
15.21
KB
-rwxr-xr-x
2026-04-04 22:15
iostat
55.7
KB
-rwxr-xr-x
2026-04-15 10:16
ipcalc
56.09
KB
-rwxr-xr-x
2022-03-25 10:49
ipcmk
23.29
KB
-rwxr-xr-x
2026-04-04 22:15
ipcrm
19.23
KB
-rwxr-xr-x
2026-04-04 22:15
ipcs
39.34
KB
-rwxr-xr-x
2026-04-04 22:15
iptables-xml
90.8
KB
-rwxr-xr-x
2025-02-13 04:00
iptc
29.3
KB
-rwxr-xr-x
2024-10-01 16:48
irqtop
35.27
KB
-rwxr-xr-x
2026-04-04 22:15
isosize
15.15
KB
-rwxr-xr-x
2026-04-04 22:15
ispell
992
B
-rwxr-xr-x
2019-10-08 00:15
isql
39.34
KB
-rwxr-xr-x
2026-03-31 12:14
iusql
31.3
KB
-rwxr-xr-x
2026-03-31 12:14
jcat-tool
44.21
KB
-rwxr-xr-x
2022-02-11 20:37
jobs
32
B
-rwxr-xr-x
2024-04-30 14:33
join
51.69
KB
-rwxr-xr-x
2026-06-25 00:26
journalctl
88.11
KB
-rwxr-xr-x
2026-06-25 00:28
jq
31.18
KB
-rwxr-xr-x
2026-05-20 09:55
json_pp
4.78
KB
-rwxr-xr-x
2022-02-16 13:39
json_reformat
19.52
KB
-rwxr-xr-x
2025-03-12 20:01
json_verify
15.3
KB
-rwxr-xr-x
2025-03-12 20:01
json_xs
6.85
KB
-rwxr-xr-x
2025-10-02 11:42
jsondiff
1021
B
-rwxr-xr-x
2022-02-10 23:53
jsondiff-3
1021
B
-rwxr-xr-x
2022-02-10 23:53
jsondiff-3.9
1021
B
-rwxr-xr-x
2022-02-10 23:53
jsonpatch
3.58
KB
-rwxr-xr-x
2022-02-10 23:53
jsonpatch-3
3.58
KB
-rwxr-xr-x
2022-02-10 23:53
jsonpatch-3.9
3.58
KB
-rwxr-xr-x
2022-02-10 23:53
jsonpointer
1.8
KB
-rwxr-xr-x
2022-02-10 23:59
jsonpointer-3
1.8
KB
-rwxr-xr-x
2022-02-10 23:59
jsonpointer-3.9
1.8
KB
-rwxr-xr-x
2022-02-10 23:59
jsonschema
973
B
-rwxr-xr-x
2022-02-11 00:02
kbd_mode
15.69
KB
-rwxr-xr-x
2025-03-13 08:15
kbdinfo
19.38
KB
-rwxr-xr-x
2025-03-13 08:15
kbdrate
19.38
KB
-rwxr-xr-x
2025-03-13 08:15
kdumpctl
59.84
KB
-rwxr-xr-x
2026-04-08 18:11
kernel-install
13.7
KB
-rwxr-xr-x
2026-06-25 00:27
keyctl
64.02
KB
-rwxr-xr-x
2023-04-05 19:15
kill
31.28
KB
-rwxr-xr-x
2026-04-04 22:15
killall
32.95
KB
-rwxr-xr-x
2022-03-25 15:53
kmod
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
krb5-config
6.59
KB
-rwxr-xr-x
2026-05-20 23:47
kvm_stat
62.92
KB
-rwxr-xr-x
2026-07-21 06:17
l2ping
15.16
KB
-rwxr-xr-x
2026-04-04 21:25
last
35.29
KB
-rwxr-xr-x
2026-04-04 22:15
lastb
35.29
KB
-rwxr-xr-x
2026-04-04 22:15
lastlog
28.63
KB
-rwxr-xr-x
2026-04-08 19:49
lchfn
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
lchsh
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
ld
1.71
MB
-rwxr-xr-x
2026-04-04 21:15
ld.bfd
1.71
MB
-rwxr-xr-x
2026-04-04 21:15
ld.gold
2.03
MB
-rwxr-xr-x
2026-04-04 21:15
ld.so
916.79
KB
-rwxr-xr-x
2026-07-22 07:10
ldd
5.32
KB
-rwxr-xr-x
2026-07-22 07:08
lefty
300.45
KB
-rwxr-xr-x
2024-04-03 11:16
less
197.7
KB
-rwxr-xr-x
2025-09-21 12:35
lessecho
15.17
KB
-rwxr-xr-x
2025-09-21 12:35
lesskey
24.61
KB
-rwxr-xr-x
2025-09-21 12:35
lesspipe.sh
3.5
KB
-rwxr-xr-x
2025-09-21 11:44
lex
412.64
KB
-rwxr-xr-x
2022-01-30 08:23
lexgrog
88.19
KB
-rwxr-xr-x
2025-09-21 12:57
libnetcfg
15.41
KB
-rwxr-xr-x
2025-07-28 03:54
libpng-config
2.38
KB
-rwxr-xr-x
2026-06-25 00:19
libpng16-config
2.38
KB
-rwxr-xr-x
2026-06-25 00:19
libtool
359.18
KB
-rwxr-xr-x
2024-10-01 17:49
libtoolize
126.17
KB
-rwxr-xr-x
2024-10-01 17:49
libwmf-fontmap
13.03
KB
-rwxr-xr-x
2022-10-15 12:42
link
31.48
KB
-rwxr-xr-x
2026-06-25 00:26
linux-boot-prober
5.86
KB
-rwxr-xr-x
2025-02-04 09:32
linux32
27.48
KB
-rwxr-xr-x
2026-04-04 22:15
linux64
27.48
KB
-rwxr-xr-x
2026-04-04 22:15
ln
55.95
KB
-rwxr-xr-x
2026-06-25 00:26
lneato
1.51
KB
-rwxr-xr-x
2024-04-03 11:16
loadkeys
200.52
KB
-rwxr-xr-x
2025-03-13 08:15
loadunimap
31.61
KB
-rwxr-xr-x
2025-03-13 08:15
locale
59.08
KB
-rwxr-xr-x
2026-07-22 07:10
localectl
31.45
KB
-rwxr-xr-x
2026-06-25 00:28
localedef
314.05
KB
-rwxr-xr-x
2026-07-22 07:10
logger
35.98
KB
-rwxr-xr-x
2026-04-04 22:15
login
43.46
KB
-rwxr-xr-x
2026-04-04 22:15
loginctl
67.96
KB
-rwxr-xr-x
2026-06-25 00:28
logname
31.47
KB
-rwxr-xr-x
2026-06-25 00:26
logresolve
25.06
KB
-rwxr-xr-x
2026-07-07 16:31
look
19.17
KB
-rwxr-xr-x
2026-04-04 22:15
ls
137.45
KB
-rwxr-xr-x
2026-06-25 00:26
lsattr
15.18
KB
-rwxr-xr-x
2025-09-21 15:03
lsblk
124.37
KB
-rwxr-xr-x
2026-04-04 22:15
lscpu
108.23
KB
-rwxr-xr-x
2026-04-04 22:15
lsgpio
14.3
KB
-rwxr-xr-x
2026-07-23 20:52
lsiio
22.14
KB
-rwxr-xr-x
2026-07-23 20:52
lsinitrd
11.85
KB
-rwxr-xr-x
2026-06-30 09:56
lsipc
51.5
KB
-rwxr-xr-x
2026-04-04 22:15
lsirq
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
lslocks
31.59
KB
-rwxr-xr-x
2026-04-04 22:15
lslogins
51.5
KB
-rwxr-xr-x
2026-04-04 22:15
lsmem
35.52
KB
-rwxr-xr-x
2026-04-04 22:15
lsns
39.33
KB
-rwxr-xr-x
2026-04-04 22:15
lsof
175.06
KB
-rwxr-xr-x
2022-02-10 06:42
lsphp
937
B
-rwxr-xr-x
2026-05-18 16:41
lsscsi
89.44
KB
-rwxr-xr-x
2022-02-11 08:15
lto-dump
26.59
MB
-rwxr-xr-x
2026-04-04 22:27
lua
23.23
KB
-rwxr-xr-x
2023-09-26 18:28
luac
157.69
KB
-rwxr-xr-x
2023-09-26 18:28
lwp-download
10.05
KB
-rwxr-xr-x
2022-03-25 08:00
lwp-dump
2.65
KB
-rwxr-xr-x
2022-03-25 08:00
lwp-mirror
2.36
KB
-rwxr-xr-x
2022-03-25 08:00
lwp-request
15.82
KB
-rwxr-xr-x
2022-03-25 08:00
m4
240.4
KB
-rwxr-xr-x
2022-03-31 07:28
mail
1013.25
KB
-rwxr-xr-x
2025-12-17 11:27
mailx
1013.25
KB
-rwxr-xr-x
2025-12-17 11:27
mailx.s-nail
1013.25
KB
-rwxr-xr-x
2025-12-17 11:27
make
249.8
KB
-rwxr-xr-x
2024-04-02 12:55
make-dummy-cert
614
B
-rwxr-xr-x
2026-07-27 18:12
man
114.91
KB
-rwxr-xr-x
2025-09-21 12:57
man-recode
28.01
KB
-rwxr-xr-x
2025-09-21 12:57
man.man-db
114.91
KB
-rwxr-xr-x
2025-09-21 12:57
mandb
133.01
KB
-rwxr-xr-x
2025-09-21 12:57
manpath
31.82
KB
-rwxr-xr-x
2025-09-21 12:57
mapscrn
31.57
KB
-rwxr-xr-x
2025-03-13 08:15
mariadb
5
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-access
109.34
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-admin
4.78
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-binlog
5.05
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-check
4.77
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-config
15.64
KB
-rwxr-xr-x
2026-05-23 15:59
mariadb-conv
4.51
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-convert-table-format
4.12
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-dump
4.86
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-dumpslow
8.05
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-embedded
23.18
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-find-rows
3.21
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-fix-extensions
1.22
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-hotcopy
34.53
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-import
4.77
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-install-db
22.14
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-plugin
4.48
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-secure-installation
13.48
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-service-convert
2.45
KB
-rwxr-xr-x
2026-05-23 15:01
mariadb-setpermission
17.56
KB
-rwxr-xr-x
2026-05-23 15:25
mariadb-show
4.77
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-slap
4.79
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-tzinfo-to-sql
4.48
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb-upgrade
4.92
MB
-rwxr-xr-x
2026-05-23 16:01
mariadb-waitpid
4.47
MB
-rwxr-xr-x
2026-05-23 15:57
mariadb_config
15.64
KB
-rwxr-xr-x
2026-05-23 15:59
mariadbd-multi
26.71
KB
-rwxr-xr-x
2026-05-23 15:25
mariadbd-safe
30.43
KB
-rwxr-xr-x
2026-05-23 15:25
mariadbd-safe-helper
4.45
MB
-rwxr-xr-x
2026-05-23 16:01
mcookie
27.3
KB
-rwxr-xr-x
2026-04-04 22:15
md5sum
39.45
KB
-rwxr-xr-x
2026-06-25 00:26
mdb_copy
15.7
KB
-rwxr-xr-x
2022-02-10 07:49
mdb_dump
15.84
KB
-rwxr-xr-x
2022-02-10 07:49
mdb_load
23.84
KB
-rwxr-xr-x
2022-02-10 07:49
mdb_stat
15.8
KB
-rwxr-xr-x
2022-02-10 07:49
mdig
51.3
KB
-rwxr-xr-x
2026-06-10 13:21
mesg
15.14
KB
-rwxr-xr-x
2026-04-04 22:15
miniterm-3.9.py
34.28
KB
-rwxr-xr-x
2022-03-25 08:09
miniterm-3.py
34.28
KB
-rwxr-xr-x
2022-03-25 08:09
miniterm.py
34.28
KB
-rwxr-xr-x
2022-03-25 08:09
mkdir
68.12
KB
-rwxr-xr-x
2026-06-25 00:26
mkfifo
39.64
KB
-rwxr-xr-x
2026-06-25 00:26
mkfontdir
69
B
-rwxr-xr-x
2022-02-11 22:35
mkfontscale
44.77
KB
-rwxr-xr-x
2022-02-11 22:35
mknod
43.68
KB
-rwxr-xr-x
2026-06-25 00:26
mktemp
39.62
KB
-rwxr-xr-x
2026-06-25 00:26
mm2gv
39.45
KB
-rwxr-xr-x
2024-04-03 11:16
mmdblookup
27.72
KB
-rwxr-xr-x
2024-10-01 16:54
modulecmd
654.01
KB
-rwxr-xr-x
2025-09-21 09:06
modulemd-validator
28.39
KB
-rwxr-xr-x
2022-02-09 23:30
modutil
91.91
KB
-rwxr-xr-x
2026-03-23 05:10
mogrify
15.1
KB
-rwxr-xr-x
2026-07-22 08:31
mokutil
61.22
KB
-rwxr-xr-x
2026-04-09 22:34
montage
15.1
KB
-rwxr-xr-x
2026-07-22 08:31
more
43.42
KB
-rwxr-xr-x
2026-04-04 22:15
mount
47.34
KB
-rwsr-xr-x
2026-04-04 22:15
mountpoint
19.18
KB
-rwxr-xr-x
2026-04-04 22:15
mpris-proxy
101.09
KB
-rwxr-xr-x
2026-04-04 21:25
mpstat
51.59
KB
-rwxr-xr-x
2026-04-15 10:16
msgattrib
27.17
KB
-rwxr-xr-x
2023-09-27 06:53
msgcat
27.14
KB
-rwxr-xr-x
2023-09-27 06:53
msgcmp
27.27
KB
-rwxr-xr-x
2023-09-27 06:53
msgcomm
27.16
KB
-rwxr-xr-x
2023-09-27 06:53
msgconv
23.15
KB
-rwxr-xr-x
2023-09-27 06:53
msgen
23.15
KB
-rwxr-xr-x
2023-09-27 06:53
msgexec
23.15
KB
-rwxr-xr-x
2023-09-27 06:53
msgfilter
35.31
KB
-rwxr-xr-x
2023-09-27 06:53
msgfmt
84.09
KB
-rwxr-xr-x
2023-09-27 06:53
msgfmt.py
7.41
KB
-rwxr-xr-x
2025-10-31 18:40
msgfmt3.9.py
7.41
KB
-rwxr-xr-x
2025-10-31 18:40
msgfmt3.py
7.41
KB
-rwxr-xr-x
2025-10-31 18:40
msggrep
116.41
KB
-rwxr-xr-x
2023-09-27 06:53
msginit
67.44
KB
-rwxr-xr-x
2023-09-27 06:53
msgmerge
75.48
KB
-rwxr-xr-x
2023-09-27 06:53
msgunfmt
35.33
KB
-rwxr-xr-x
2023-09-27 06:53
msguniq
23.15
KB
-rwxr-xr-x
2023-09-27 06:53
msql2mysql
1.42
KB
-rwxr-xr-x
2026-05-23 15:25
mv
140.95
KB
-rwxr-xr-x
2026-06-25 00:26
my_print_defaults
4.48
MB
-rwxr-xr-x
2026-05-23 15:57
myisam_ftdump
4.77
MB
-rwxr-xr-x
2026-05-23 16:01
myisamchk
4.88
MB
-rwxr-xr-x
2026-05-23 16:01
myisamlog
4.75
MB
-rwxr-xr-x
2026-05-23 16:01
myisampack
4.79
MB
-rwxr-xr-x
2026-05-23 16:01
mysql
5
MB
-rwxr-xr-x
2026-05-23 15:57
mysql_config
4.5
KB
-rwxr-xr-x
2026-05-23 15:25
mysql_embedded
23.18
MB
-rwxr-xr-x
2026-05-23 15:57
mysql_find_rows
3.21
KB
-rwxr-xr-x
2026-05-23 15:25
mysql_fix_extensions
1.22
KB
-rwxr-xr-x
2026-05-23 15:25
mysql_install_db
22.14
KB
-rwxr-xr-x
2026-05-23 15:25
mysql_plugin
4.48
MB
-rwxr-xr-x
2026-05-23 15:57
mysql_tzinfo_to_sql
4.48
MB
-rwxr-xr-x
2026-05-23 15:57
mysql_upgrade
4.92
MB
-rwxr-xr-x
2026-05-23 16:01
mysql_waitpid
4.47
MB
-rwxr-xr-x
2026-05-23 15:57
mysqlaccess
109.34
KB
-rwxr-xr-x
2026-05-23 15:25
mysqladmin
4.78
MB
-rwxr-xr-x
2026-05-23 15:57
mysqlbinlog
5.05
MB
-rwxr-xr-x
2026-05-23 15:57
mysqlcheck
4.77
MB
-rwxr-xr-x
2026-05-23 15:57
mysqld_multi
26.71
KB
-rwxr-xr-x
2026-05-23 15:25
mysqld_safe
30.43
KB
-rwxr-xr-x
2026-05-23 15:25
mysqld_safe_helper
4.45
MB
-rwxr-xr-x
2026-05-23 16:01
mysqldump
4.86
MB
-rwxr-xr-x
2026-05-23 15:57
mysqlimport
4.77
MB
-rwxr-xr-x
2026-05-23 15:57
mysqlshow
4.77
MB
-rwxr-xr-x
2026-05-23 15:57
mysqlslap
4.79
MB
-rwxr-xr-x
2026-05-23 15:57
mytop
72.03
KB
-rwxr-xr-x
2026-05-23 15:25
nail
1013.25
KB
-rwxr-xr-x
2025-12-17 11:27
named-rrchecker
23.14
KB
-rwxr-xr-x
2026-06-10 13:21
namei
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
nano
346.2
KB
-rwxr-xr-x
2025-03-13 03:12
nc
51.86
KB
-rwxr-xr-x
2026-05-20 09:15
ncdu
100.2
KB
-rwxr-xr-x
2025-03-08 19:39
ncurses6-config
8.13
KB
-rwxr-xr-x
2025-09-21 09:23
ncursesw6-config
8.13
KB
-rwxr-xr-x
2025-09-21 09:23
ndptool
27.42
KB
-rwxr-xr-x
2024-10-01 17:03
neato
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
needs-restarting
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
neqn
916
B
-rwxr-xr-x
2022-02-01 10:44
netcat
51.86
KB
-rwxr-xr-x
2026-05-20 09:15
netstat
156.85
KB
-rwxr-xr-x
2024-10-02 19:02
newgidmap
41.95
KB
-rwxr-xr-x
2026-04-08 19:49
newgrp
40.77
KB
-rwsr-xr-x
2026-04-08 19:49
newuidmap
37.93
KB
-rwxr-xr-x
2026-04-08 19:49
nf-ct-add
15.89
KB
-rwxr-xr-x
2025-03-17 12:12
nf-ct-events
15.33
KB
-rwxr-xr-x
2025-03-17 12:12
nf-ct-list
15.93
KB
-rwxr-xr-x
2025-03-17 12:12
nf-exp-add
20.3
KB
-rwxr-xr-x
2025-03-17 12:12
nf-exp-delete
16.09
KB
-rwxr-xr-x
2025-03-17 12:12
nf-exp-list
15.93
KB
-rwxr-xr-x
2025-03-17 12:12
nf-log
15.31
KB
-rwxr-xr-x
2025-03-17 12:12
nf-monitor
15.33
KB
-rwxr-xr-x
2025-03-17 12:12
nf-queue
15.32
KB
-rwxr-xr-x
2025-03-17 12:12
ngettext
35.34
KB
-rwxr-xr-x
2023-09-27 06:53
nice
35.48
KB
-rwxr-xr-x
2026-06-25 00:26
nisdomainname
23.84
KB
-rwxr-xr-x
2022-02-14 11:22
nl
100.51
KB
-rwxr-xr-x
2026-06-25 00:26
nl-addr-add
15.77
KB
-rwxr-xr-x
2025-03-17 12:12
nl-addr-delete
15.82
KB
-rwxr-xr-x
2025-03-17 12:12
nl-addr-list
19.84
KB
-rwxr-xr-x
2025-03-17 12:12
nl-class-add
15.75
KB
-rwxr-xr-x
2025-03-17 12:12
nl-class-delete
15.66
KB
-rwxr-xr-x
2025-03-17 12:12
nl-class-list
15.63
KB
-rwxr-xr-x
2025-03-17 12:12
nl-classid-lookup
15.5
KB
-rwxr-xr-x
2025-03-17 12:12
nl-cls-add
19.81
KB
-rwxr-xr-x
2025-03-17 12:12
nl-cls-delete
15.73
KB
-rwxr-xr-x
2025-03-17 12:12
nl-cls-list
15.69
KB
-rwxr-xr-x
2025-03-17 12:12
nl-fib-lookup
15.52
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-enslave
15.29
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-ifindex2name
15.29
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-list
15.67
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-name2ifindex
15.29
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-release
15.29
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-set
15.74
KB
-rwxr-xr-x
2025-03-17 12:12
nl-link-stats
15.53
KB
-rwxr-xr-x
2025-03-17 12:12
nl-list-caches
15.3
KB
-rwxr-xr-x
2025-03-17 12:12
nl-list-sockets
15.29
KB
-rwxr-xr-x
2025-03-17 12:12
nl-monitor
15.48
KB
-rwxr-xr-x
2025-03-17 12:12
nl-neigh-add
15.66
KB
-rwxr-xr-x
2025-03-17 12:12
nl-neigh-delete
15.7
KB
-rwxr-xr-x
2025-03-17 12:12
nl-neigh-list
15.61
KB
-rwxr-xr-x
2025-03-17 12:12
nl-neightbl-list
15.45
KB
-rwxr-xr-x
2025-03-17 12:12
nl-nh-list
15.48
KB
-rwxr-xr-x
2025-03-17 12:12
nl-pktloc-lookup
15.53
KB
-rwxr-xr-x
2025-03-17 12:12
nl-qdisc-add
15.7
KB
-rwxr-xr-x
2025-03-17 12:12
nl-qdisc-delete
15.66
KB
-rwxr-xr-x
2025-03-17 12:12
nl-qdisc-list
19.69
KB
-rwxr-xr-x
2025-03-17 12:12
nl-route-add
19.84
KB
-rwxr-xr-x
2025-03-17 12:12
nl-route-delete
19.91
KB
-rwxr-xr-x
2025-03-17 12:12
nl-route-get
15.31
KB
-rwxr-xr-x
2025-03-17 12:12
nl-route-list
15.86
KB
-rwxr-xr-x
2025-03-17 12:12
nl-rule-list
15.48
KB
-rwxr-xr-x
2025-03-17 12:12
nl-tctree-list
15.6
KB
-rwxr-xr-x
2025-03-17 12:12
nl-util-addr
15.29
KB
-rwxr-xr-x
2025-03-17 12:12
nm
44.72
KB
-rwxr-xr-x
2026-04-04 21:15
nm-online
23.38
KB
-rwxr-xr-x
2026-06-03 11:03
nmcli
1.03
MB
-rwxr-xr-x
2026-06-03 11:03
nmtui
842.45
KB
-rwxr-xr-x
2026-06-03 11:03
nmtui-connect
842.45
KB
-rwxr-xr-x
2026-06-03 11:03
nmtui-edit
842.45
KB
-rwxr-xr-x
2026-06-03 11:03
nmtui-hostname
842.45
KB
-rwxr-xr-x
2026-06-03 11:03
nohup
35.4
KB
-rwxr-xr-x
2026-06-25 00:26
nop
15.33
KB
-rwxr-xr-x
2024-04-03 11:16
notify-send
19.75
KB
-rwxr-xr-x
2022-02-10 02:06
nproc
35.5
KB
-rwxr-xr-x
2026-06-25 00:26
nroff
3.21
KB
-rwxr-xr-x
2022-02-01 10:44
nsenter
27.47
KB
-rwxr-xr-x
2026-04-04 22:15
nslookup
112.52
KB
-rwxr-xr-x
2026-06-10 13:21
nss-policy-check
15.16
KB
-rwxr-xr-x
2026-03-23 05:10
nsupdate
71.8
KB
-rwxr-xr-x
2026-06-10 13:21
numfmt
55.63
KB
-rwxr-xr-x
2026-06-25 00:26
objcopy
185.37
KB
-rwxr-xr-x
2026-04-04 21:15
objdump
413.09
KB
-rwxr-xr-x
2026-04-04 21:15
od
63.88
KB
-rwxr-xr-x
2026-06-25 00:26
odbc_config
15.11
KB
-rwxr-xr-x
2026-03-31 12:14
odbcinst
23.16
KB
-rwxr-xr-x
2026-03-31 12:14
openssl
1.07
MB
-rwxr-xr-x
2026-07-27 18:12
openvt
23.73
KB
-rwxr-xr-x
2025-03-13 08:15
orc-bugreport
23.31
KB
-rwxr-xr-x
2024-10-02 21:27
os-prober
5.78
KB
-rwxr-xr-x
2025-02-04 09:32
osage
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
osinfo-db-export
27.35
KB
-rwxr-xr-x
2023-04-05 21:38
osinfo-db-import
27.3
KB
-rwxr-xr-x
2023-04-05 21:38
osinfo-db-path
15.3
KB
-rwxr-xr-x
2023-04-05 21:38
osinfo-db-validate
23.4
KB
-rwxr-xr-x
2023-04-05 21:38
osinfo-detect
27.4
KB
-rwxr-xr-x
2023-04-05 20:51
osinfo-install-script
31.77
KB
-rwxr-xr-x
2023-04-05 20:51
osinfo-query
32.19
KB
-rwxr-xr-x
2023-04-05 20:51
osql
9.48
KB
-rwxr-xr-x
2025-05-28 13:07
p11-kit
240.14
KB
-rwxr-xr-x
2026-04-04 23:35
package-cleanup
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
page_owner_sort
26.13
KB
-rwxr-xr-x
2026-07-23 20:52
pango-list
19.11
KB
-rwxr-xr-x
2023-04-07 10:19
pango-segmentation
19.13
KB
-rwxr-xr-x
2023-04-07 10:19
pango-view
60.17
KB
-rwxr-xr-x
2023-04-07 10:19
paperconf
15.8
KB
-rwxr-xr-x
2022-02-10 01:15
passwd
31.89
KB
-rwsr-xr-x
2022-04-14 14:45
paste
35.39
KB
-rwxr-xr-x
2026-06-25 00:26
patch
195.02
KB
-rwxr-xr-x
2022-03-25 15:42
patchwork
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
pathchk
35.47
KB
-rwxr-xr-x
2026-06-25 00:26
pathfix.py
6.63
KB
-rwxr-xr-x
2025-10-31 18:40
pathfix3.9.py
6.63
KB
-rwxr-xr-x
2025-10-31 18:40
pcre-config
2.09
KB
-rwxr-xr-x
2024-10-02 21:53
pcre2-config
1.91
KB
-rwxr-xr-x
2024-10-02 21:57
pdf2dsc
701
B
-rwxr-xr-x
2025-05-14 16:03
pdf2ps
913
B
-rwxr-xr-x
2025-05-14 16:03
pdns_control
479.88
KB
-rwxr-xr-x
2026-06-26 18:41
pdnsutil
4.82
MB
-rwxr-xr-x
2026-06-26 18:41
peekfd
15.8
KB
-rwxr-xr-x
2022-03-25 15:53
perl
15.13
KB
-rwxr-xr-x
2025-07-28 03:54
perl5.32.1
15.13
KB
-rwxr-xr-x
2025-07-28 03:54
perlbug
43.81
KB
-rwxr-xr-x
2025-07-28 03:54
perldoc
118
B
-rwxr-xr-x
2022-02-14 23:51
perlivp
10.56
KB
-rwxr-xr-x
2025-07-28 03:53
perlml
14.49
KB
-rwxr-xr-x
2025-10-02 19:40
perlthanks
43.81
KB
-rwxr-xr-x
2025-07-28 03:54
perror
4.67
MB
-rwxr-xr-x
2026-05-23 16:01
pf2afm
502
B
-rwxr-xr-x
2025-05-14 16:03
pfbtopfa
520
B
-rwxr-xr-x
2025-05-14 16:03
pflags
2.17
KB
-rwxr-xr-x
2026-04-09 15:06
pftp
100.66
KB
-rwxr-xr-x
2022-01-30 23:49
pgrep
31.42
KB
-rwxr-xr-x
2024-04-30 16:43
php
937
B
-rwxr-xr-x
2026-05-18 16:41
pic
201.72
KB
-rwxr-xr-x
2022-02-01 10:44
piconv
8.08
KB
-rwxr-xr-x
2022-02-11 16:42
pidof
23.33
KB
-rwxr-xr-x
2024-04-30 16:43
pidstat
51.59
KB
-rwxr-xr-x
2026-04-15 10:16
pidwait
31.42
KB
-rwxr-xr-x
2024-04-30 16:43
pigz
132.84
KB
-rwxr-xr-x
2025-03-12 23:06
ping
89.33
KB
-rwxr-xr-x
2025-10-20 12:44
pinky
35.41
KB
-rwxr-xr-x
2026-06-25 00:26
pip
648
B
-rwxr-xr-x
2026-05-23 08:59
pip-3
648
B
-rwxr-xr-x
2026-05-23 08:59
pip-3.9
648
B
-rwxr-xr-x
2026-05-23 08:59
pip3
648
B
-rwxr-xr-x
2026-05-23 08:59
pip3.9
648
B
-rwxr-xr-x
2026-05-23 08:59
pipewire
15.16
KB
-rwxr-xr-x
2026-04-14 13:06
pipewire-aes67
15.16
KB
-rwxr-xr-x
2026-04-14 13:06
pipewire-avb
15.16
KB
-rwxr-xr-x
2026-04-14 13:06
pipewire-pulse
15.16
KB
-rwxr-xr-x
2026-04-14 13:06
pipewire-vulkan
15.16
KB
-rwxr-xr-x
2026-04-14 13:06
pk12util
72.42
KB
-rwxr-xr-x
2026-03-23 05:10
pkaction
19.16
KB
-rwxr-xr-x
2025-09-21 09:51
pkcheck
23.17
KB
-rwxr-xr-x
2025-09-21 09:51
pkcon
63.63
KB
-rwxr-xr-x
2026-05-21 15:08
pkexec
31.18
KB
-rwxr-xr-x
2025-09-21 09:51
pkg-config
335
B
-rwxr-xr-x
2023-04-06 20:27
pkgconf
45.36
KB
-rwxr-xr-x
2023-04-06 20:27
pkill
31.42
KB
-rwxr-xr-x
2024-04-30 16:43
pkla-admin-identities
23.96
KB
-rwxr-xr-x
2022-03-25 20:04
pkla-check-authorization
36.1
KB
-rwxr-xr-x
2022-03-25 20:04
pkmon
27.51
KB
-rwxr-xr-x
2026-05-21 15:08
pkttyagent
23.16
KB
-rwxr-xr-x
2025-09-21 09:51
pl2pm
4.43
KB
-rwxr-xr-x
2025-07-28 03:54
pldd
23.37
KB
-rwxr-xr-x
2026-07-22 07:10
pmap
35.39
KB
-rwxr-xr-x
2024-04-30 16:43
png-fix-itxt
15.11
KB
-rwxr-xr-x
2026-06-25 00:20
pngfix
59.56
KB
-rwxr-xr-x
2026-06-25 00:20
pod2html
4.04
KB
-rwxr-xr-x
2025-07-28 03:54
pod2man
14.68
KB
-rwxr-xr-x
2022-03-25 12:10
pod2text
10.55
KB
-rwxr-xr-x
2022-03-25 12:10
pod2usage
4.01
KB
-rwxr-xr-x
2022-02-11 16:01
podchecker
3.57
KB
-rwxr-xr-x
2022-02-11 19:01
post-grohtml
199.76
KB
-rwxr-xr-x
2022-02-01 10:44
postupcp_disable_webalizer_rdns.sh
116
B
-rwxr-xr-x
2025-11-04 20:10
powernow-k8-decode
14.13
KB
-rwxr-xr-x
2026-07-23 20:52
pphs
408
B
-rwxr-xr-x
2025-05-14 16:03
pr
72.1
KB
-rwxr-xr-x
2026-06-25 00:26
pre-grohtml
92.92
KB
-rwxr-xr-x
2022-02-01 10:44
precat
5.53
KB
-rwxr-xr-x
2019-10-08 00:15
preconv
56.27
KB
-rwxr-xr-x
2022-02-01 10:44
preunzip
5.53
KB
-rwxr-xr-x
2019-10-08 00:15
prezip
5.53
KB
-rwxr-xr-x
2019-10-08 00:15
prezip-bin
15.69
KB
-rwxr-xr-x
2022-01-26 21:47
printafm
399
B
-rwxr-xr-x
2025-05-14 16:03
printenv
31.29
KB
-rwxr-xr-x
2026-06-25 00:26
printf
51.58
KB
-rwxr-xr-x
2026-06-25 00:26
prlimit
27.75
KB
-rwxr-xr-x
2026-04-04 22:15
procan
35.43
KB
-rwxr-xr-x
2026-02-12 18:05
protoc
23.32
KB
-rwxr-xr-x
2026-02-23 22:25
protoc-c
158.2
KB
-rwxr-xr-x
2023-09-26 20:08
protoc-gen-c
158.2
KB
-rwxr-xr-x
2023-09-26 20:08
prove
13.24
KB
-rwxr-xr-x
2022-02-16 11:58
prtstat
23.84
KB
-rwxr-xr-x
2022-03-25 15:53
prune
15.41
KB
-rwxr-xr-x
2024-04-03 11:16
ps
141.15
KB
-rwxr-xr-x
2024-04-30 16:43
ps2ascii
635
B
-rwxr-xr-x
2025-05-14 16:03
ps2epsi
1.24
KB
-rwxr-xr-x
2025-05-14 16:03
ps2pdf
276
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdf12
219
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdf13
219
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdf14
219
B
-rwxr-xr-x
2025-05-14 16:03
ps2pdfwr
1.06
KB
-rwxr-xr-x
2025-05-14 16:03
ps2ps
651
B
-rwxr-xr-x
2025-05-14 16:03
ps2ps2
673
B
-rwxr-xr-x
2025-05-14 16:03
psfaddtable
31.43
KB
-rwxr-xr-x
2025-03-13 08:15
psfgettable
31.43
KB
-rwxr-xr-x
2025-03-13 08:15
psfstriptable
31.43
KB
-rwxr-xr-x
2025-03-13 08:15
psfxtable
31.43
KB
-rwxr-xr-x
2025-03-13 08:15
pslog
15.7
KB
-rwxr-xr-x
2022-03-25 15:53
pstree
36.9
KB
-rwxr-xr-x
2022-03-25 15:53
pstree.x11
36.9
KB
-rwxr-xr-x
2022-03-25 15:53
ptar
3.39
KB
-rwxr-xr-x
2026-06-29 05:29
ptardiff
2.49
KB
-rwxr-xr-x
2026-06-29 05:29
ptargrep
4.2
KB
-rwxr-xr-x
2026-06-29 05:29
ptx
128.82
KB
-rwxr-xr-x
2026-06-25 00:26
pure-pw
38.59
KB
-rwxr-xr-x
2025-06-06 14:14
pure-pwconvert
14.52
KB
-rwxr-xr-x
2025-06-06 14:14
pure-statsdecode
14.52
KB
-rwxr-xr-x
2025-06-06 14:14
pv
65.35
KB
-rwxr-xr-x
2021-12-15 13:55
pw-jack
1.32
KB
-rwxr-xr-x
2026-04-14 13:06
pwd
35.52
KB
-rwxr-xr-x
2026-06-25 00:26
pwdx
15.28
KB
-rwxr-xr-x
2024-04-30 16:43
pwmake
15.7
KB
-rwxr-xr-x
2022-02-10 03:37
pwscore
15.7
KB
-rwxr-xr-x
2022-02-10 03:37
pydoc
78
B
-rwxr-xr-x
2026-07-15 11:47
pydoc3
78
B
-rwxr-xr-x
2026-07-15 11:47
pydoc3.9
78
B
-rwxr-xr-x
2026-07-15 11:47
pygettext.py
21.03
KB
-rwxr-xr-x
2025-10-31 18:40
pygettext3.9.py
21.03
KB
-rwxr-xr-x
2025-10-31 18:40
pygettext3.py
21.03
KB
-rwxr-xr-x
2025-10-31 18:40
pyinotify
968
B
-rwxr-xr-x
2022-03-25 07:16
python
15.09
KB
-rwxr-xr-x
2026-07-15 11:47
python-config
61
B
-rwxr-xr-x
2026-07-15 11:47
python-html2text
980
B
-rwxr-xr-x
2022-03-26 14:11
python3
15.09
KB
-rwxr-xr-x
2026-07-15 11:47
python3-config
61
B
-rwxr-xr-x
2026-07-15 11:47
python3-html2text
980
B
-rwxr-xr-x
2022-03-26 14:11
python3.9
15.09
KB
-rwxr-xr-x
2026-07-15 11:47
python3.9-config
61
B
-rwxr-xr-x
2026-07-15 11:47
python3.9-x86_64-config
3.54
KB
-rwxr-xr-x
2026-07-15 11:38
qemu-ga
1.84
MB
-rwxr-xr-x
2026-07-21 17:05
quota
81.67
KB
-rwsr-xr-x
2025-03-12 20:44
quotasync
64.88
KB
-rwxr-xr-x
2025-03-12 20:44
ranlib
55.99
KB
-rwxr-xr-x
2026-04-04 21:15
read
32
B
-rwxr-xr-x
2024-04-30 14:33
readelf
667.28
KB
-rwxr-xr-x
2026-04-04 21:15
readlink
39.5
KB
-rwxr-xr-x
2026-06-25 00:26
realpath
39.59
KB
-rwxr-xr-x
2026-06-25 00:26
recode-sr-latin
15.13
KB
-rwxr-xr-x
2023-09-27 06:53
red
92
B
-rwxr-xr-x
2022-01-30 05:02
rename
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
renew-dummy-cert
729
B
-rwxr-xr-x
2026-07-27 18:12
renice
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
replace
4.46
MB
-rwxr-xr-x
2026-05-23 15:57
repo-graph
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
repoclosure
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
repodiff
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
repomanage
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
repoquery
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
reposync
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
repotrack
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
rescan-scsi-bus.sh
38.09
KB
-rwxr-xr-x
2025-03-13 12:20
reset
27.34
KB
-rwxr-xr-x
2025-09-21 09:23
resizecons
27.55
KB
-rwxr-xr-x
2025-03-13 08:15
resolve_stack_dump
4.48
MB
-rwxr-xr-x
2026-05-23 16:01
resolveip
4.47
MB
-rwxr-xr-x
2026-05-23 16:01
rev
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
rm
59.99
KB
-rwxr-xr-x
2026-06-25 00:26
rmdir
43.42
KB
-rwxr-xr-x
2026-06-25 00:26
rnano
346.2
KB
-rwxr-xr-x
2025-03-13 03:12
rpcbind
59.89
KB
-rwxr-xr-x
2024-04-03 13:53
rpcinfo
35.58
KB
-rwxr-xr-x
2024-04-03 13:53
rpm
23.63
KB
-rwxr-xr-x
2026-04-05 01:49
rpm2archive
23.32
KB
-rwxr-xr-x
2026-04-05 01:49
rpm2cpio
15.12
KB
-rwxr-xr-x
2026-04-05 01:49
rpmdb
19.74
KB
-rwxr-xr-x
2026-04-05 01:49
rpmkeys
15.59
KB
-rwxr-xr-x
2026-04-05 01:49
rpmquery
23.63
KB
-rwxr-xr-x
2026-04-05 01:49
rpmverify
23.63
KB
-rwxr-xr-x
2026-04-05 01:49
rsync
574.77
KB
-rwxr-xr-x
2026-06-16 18:30
rsync-ssl
5.01
KB
-rwxr-xr-x
2021-09-26 23:44
run-parts
1.94
KB
-rwxr-xr-x
2022-04-11 19:54
run-with-aspell
89
B
-rwxr-xr-x
2022-01-26 21:47
runcon
35.46
KB
-rwxr-xr-x
2026-06-25 00:26
rvi
1.38
MB
-rwxr-xr-x
2026-07-13 16:20
rview
1.38
MB
-rwxr-xr-x
2026-07-13 16:20
s-nail
1013.25
KB
-rwxr-xr-x
2025-12-17 11:27
sadf
458.84
KB
-rwxr-xr-x
2026-04-15 10:16
sar
135.67
KB
-rwxr-xr-x
2026-04-15 10:16
sccmap
23.37
KB
-rwxr-xr-x
2024-04-03 11:16
scl
39.55
KB
-rwxr-xr-x
2023-04-07 01:57
scl_enabled
262
B
-rwxr-xr-x
2021-07-27 15:14
scl_source
1.88
KB
-rwxr-xr-x
2021-07-27 15:14
scp
132.91
KB
-rwxr-xr-x
2026-05-21 11:24
script
51.58
KB
-rwxr-xr-x
2026-04-04 22:15
scriptlive
43.48
KB
-rwxr-xr-x
2026-04-04 22:15
scriptreplay
35.3
KB
-rwxr-xr-x
2026-04-04 22:15
scsi-rescan
38.09
KB
-rwxr-xr-x
2025-03-13 12:20
scsi_logging_level
8.39
KB
-rwxr-xr-x
2016-03-25 02:46
scsi_mandat
3.52
KB
-rwxr-xr-x
2017-10-22 17:32
scsi_readcap
1.3
KB
-rwxr-xr-x
2013-05-15 13:35
scsi_ready
1.1
KB
-rwxr-xr-x
2013-05-15 13:35
scsi_satl
3.74
KB
-rwxr-xr-x
2020-07-17 03:50
scsi_start
1.26
KB
-rwxr-xr-x
2013-05-15 13:35
scsi_stop
1.44
KB
-rwxr-xr-x
2013-05-15 13:35
scsi_temperature
940
B
-rwxr-xr-x
2013-05-15 13:35
sdiff
44.2
KB
-rwxr-xr-x
2022-01-29 18:15
sealert
27.34
KB
-rwxr-xr-x
2024-11-26 13:18
secon
28.25
KB
-rwxr-xr-x
2026-04-04 23:52
sed
112.84
KB
-rwxr-xr-x
2026-04-04 20:24
sedismod
289.02
KB
-rwxr-xr-x
2024-04-03 10:07
sedispol
219.93
KB
-rwxr-xr-x
2024-04-03 10:07
semodule_expand
15.12
KB
-rwxr-xr-x
2026-04-04 23:52
semodule_link
15.13
KB
-rwxr-xr-x
2026-04-04 23:52
semodule_package
19.16
KB
-rwxr-xr-x
2026-04-04 23:52
semodule_unpackage
15.13
KB
-rwxr-xr-x
2026-04-04 23:52
seq
47.59
KB
-rwxr-xr-x
2026-06-25 00:26
sestatus
23.13
KB
-rwxr-xr-x
2026-04-04 23:52
setarch
27.48
KB
-rwxr-xr-x
2026-04-04 22:15
setfacl
43.38
KB
-rwxr-xr-x
2026-07-21 15:58
setfattr
20.16
KB
-rwxr-xr-x
2022-01-28 12:44
setfont
51.82
KB
-rwxr-xr-x
2025-03-13 08:15
setkeycodes
15.38
KB
-rwxr-xr-x
2025-03-13 08:15
setleds
19.45
KB
-rwxr-xr-x
2025-03-13 08:15
setmetamode
15.48
KB
-rwxr-xr-x
2025-03-13 08:15
setpriv
39.34
KB
-rwxr-xr-x
2026-04-04 22:15
setsid
15.15
KB
-rwxr-xr-x
2026-04-04 22:15
setterm
35.33
KB
-rwxr-xr-x
2026-04-04 22:15
setup-nsssysinit
1.51
KB
-rwxr-xr-x
2026-03-23 05:10
setup-nsssysinit.sh
1.51
KB
-rwxr-xr-x
2026-03-23 05:10
setvtrgb
15.44
KB
-rwxr-xr-x
2025-03-13 08:15
sfdp
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
sftp
157.09
KB
-rwxr-xr-x
2026-05-21 11:24
sg
40.77
KB
-rwsr-xr-x
2026-04-08 19:49
sg_bg_ctl
15.52
KB
-rwxr-xr-x
2025-03-13 12:20
sg_compare_and_write
27.95
KB
-rwxr-xr-x
2025-03-13 12:20
sg_copy_results
24.24
KB
-rwxr-xr-x
2025-03-13 12:20
sg_dd
55.56
KB
-rwxr-xr-x
2025-03-13 12:20
sg_decode_sense
15.84
KB
-rwxr-xr-x
2025-03-13 12:20
sg_emc_trespass
15.3
KB
-rwxr-xr-x
2025-03-13 12:20
sg_format
40.41
KB
-rwxr-xr-x
2025-03-13 12:20
sg_get_config
36.34
KB
-rwxr-xr-x
2025-03-13 12:20
sg_get_elem_status
27.82
KB
-rwxr-xr-x
2025-03-13 12:20
sg_get_lba_status
23.97
KB
-rwxr-xr-x
2025-03-13 12:20
sg_ident
15.6
KB
-rwxr-xr-x
2025-03-13 12:20
sg_inq
120.88
KB
-rwxr-xr-x
2025-03-13 12:20
sg_logs
153.07
KB
-rwxr-xr-x
2025-03-13 12:20
sg_luns
23.83
KB
-rwxr-xr-x
2025-03-13 12:20
sg_map
19.36
KB
-rwxr-xr-x
2025-03-13 12:20
sg_map26
27.82
KB
-rwxr-xr-x
2025-03-13 12:20
sg_modes
47.16
KB
-rwxr-xr-x
2025-03-13 12:20
sg_opcodes
36.13
KB
-rwxr-xr-x
2025-03-13 12:20
sg_persist
37.1
KB
-rwxr-xr-x
2025-03-13 12:20
sg_prevent
15.5
KB
-rwxr-xr-x
2025-03-13 12:20
sg_raw
27.92
KB
-rwxr-xr-x
2025-03-13 12:20
sg_rbuf
23.77
KB
-rwxr-xr-x
2025-03-13 12:20
sg_rdac
15.28
KB
-rwxr-xr-x
2025-03-13 12:20
sg_read
27.37
KB
-rwxr-xr-x
2025-03-13 12:20
sg_read_attr
37.7
KB
-rwxr-xr-x
2025-03-13 12:20
sg_read_block_limits
15.55
KB
-rwxr-xr-x
2025-03-13 12:20
sg_read_buffer
28.52
KB
-rwxr-xr-x
2025-03-13 12:20
sg_read_long
15.72
KB
-rwxr-xr-x
2025-03-13 12:20
sg_readcap
23.84
KB
-rwxr-xr-x
2025-03-13 12:20
sg_reassign
15.66
KB
-rwxr-xr-x
2025-03-13 12:20
sg_referrals
15.67
KB
-rwxr-xr-x
2025-03-13 12:20
sg_rep_pip
15.59
KB
-rwxr-xr-x
2025-03-13 12:20
sg_rep_zones
28.01
KB
-rwxr-xr-x
2025-03-13 12:20
sg_requests
23.77
KB
-rwxr-xr-x
2025-03-13 12:20
sg_reset
15.7
KB
-rwxr-xr-x
2025-03-13 12:20
sg_reset_wp
15.62
KB
-rwxr-xr-x
2025-03-13 12:20
sg_rmsn
15.51
KB
-rwxr-xr-x
2025-03-13 12:20
sg_rtpg
15.61
KB
-rwxr-xr-x
2025-03-13 12:20
sg_safte
23.72
KB
-rwxr-xr-x
2025-03-13 12:20
sg_sanitize
28.02
KB
-rwxr-xr-x
2025-03-13 12:20
sg_sat_identify
19.76
KB
-rwxr-xr-x
2025-03-13 12:20
sg_sat_phy_event
20.03
KB
-rwxr-xr-x
2025-03-13 12:20
sg_sat_read_gplog
19.74
KB
-rwxr-xr-x
2025-03-13 12:20
sg_sat_set_features
19.7
KB
-rwxr-xr-x
2025-03-13 12:20
sg_scan
19.36
KB
-rwxr-xr-x
2025-03-13 12:20
sg_seek
19.91
KB
-rwxr-xr-x
2025-03-13 12:20
sg_senddiag
28.27
KB
-rwxr-xr-x
2025-03-13 12:20
sg_ses
121.22
KB
-rwxr-xr-x
2025-03-13 12:20
sg_ses_microcode
28.42
KB
-rwxr-xr-x
2025-03-13 12:20
sg_start
19.89
KB
-rwxr-xr-x
2025-03-13 12:20
sg_stpg
23.73
KB
-rwxr-xr-x
2025-03-13 12:20
sg_stream_ctl
19.72
KB
-rwxr-xr-x
2025-03-13 12:20
sg_sync
15.68
KB
-rwxr-xr-x
2025-03-13 12:20
sg_test_rwbuf
19.69
KB
-rwxr-xr-x
2025-03-13 12:20
sg_timestamp
23.8
KB
-rwxr-xr-x
2025-03-13 12:20
sg_turs
27.78
KB
-rwxr-xr-x
2025-03-13 12:20
sg_unmap
23.8
KB
-rwxr-xr-x
2025-03-13 12:20
sg_verify
19.92
KB
-rwxr-xr-x
2025-03-13 12:20
sg_vpd
119.66
KB
-rwxr-xr-x
2025-03-13 12:20
sg_wr_mode
23.73
KB
-rwxr-xr-x
2025-03-13 12:20
sg_write_buffer
28.27
KB
-rwxr-xr-x
2025-03-13 12:20
sg_write_long
15.77
KB
-rwxr-xr-x
2025-03-13 12:20
sg_write_same
27.99
KB
-rwxr-xr-x
2025-03-13 12:20
sg_write_verify
27.83
KB
-rwxr-xr-x
2025-03-13 12:20
sg_write_x
60.75
KB
-rwxr-xr-x
2025-03-13 12:20
sg_xcopy
43.54
KB
-rwxr-xr-x
2025-03-13 12:20
sg_zone
19.81
KB
-rwxr-xr-x
2025-03-13 12:20
sginfo
73.76
KB
-rwxr-xr-x
2025-03-13 12:20
sgm_dd
39.52
KB
-rwxr-xr-x
2025-03-13 12:20
sgp_dd
43.71
KB
-rwxr-xr-x
2025-03-13 12:20
sh
1.32
MB
-rwxr-xr-x
2024-04-30 14:33
sha1hmac
35.27
KB
-rwxr-xr-x
2024-04-01 19:12
sha1sum
39.44
KB
-rwxr-xr-x
2026-06-25 00:26
sha224hmac
35.27
KB
-rwxr-xr-x
2024-04-01 19:12
sha224sum
39.45
KB
-rwxr-xr-x
2026-06-25 00:26
sha256hmac
35.27
KB
-rwxr-xr-x
2024-04-01 19:12
sha256sum
39.45
KB
-rwxr-xr-x
2026-06-25 00:26
sha384hmac
35.27
KB
-rwxr-xr-x
2024-04-01 19:12
sha384sum
39.45
KB
-rwxr-xr-x
2026-06-25 00:26
sha512hmac
35.27
KB
-rwxr-xr-x
2024-04-01 19:12
sha512sum
39.45
KB
-rwxr-xr-x
2026-06-25 00:26
shasum
9.66
KB
-rwxr-xr-x
2022-02-11 16:24
showconsolefont
19.46
KB
-rwxr-xr-x
2025-03-13 08:15
showkey
19.4
KB
-rwxr-xr-x
2025-03-13 08:15
shred
51.68
KB
-rwxr-xr-x
2026-06-25 00:26
shuf
47.8
KB
-rwxr-xr-x
2026-06-25 00:26
sieve-dump
37.88
KB
-rwxr-xr-x
2026-07-15 21:53
sieve-filter
43.34
KB
-rwxr-xr-x
2026-07-15 21:53
sieve-test
43.27
KB
-rwxr-xr-x
2026-07-15 21:53
sievec
38.13
KB
-rwxr-xr-x
2026-07-15 21:53
signver
39.6
KB
-rwxr-xr-x
2026-03-23 05:10
size
31.61
KB
-rwxr-xr-x
2026-04-04 21:15
skill
31.4
KB
-rwxr-xr-x
2024-04-30 16:43
slabinfo
42.95
KB
-rwxr-xr-x
2026-07-23 20:52
slabtop
23.42
KB
-rwxr-xr-x
2024-04-30 16:43
sleep
31.47
KB
-rwxr-xr-x
2026-06-25 00:26
slencheck
15.13
KB
-rwxr-xr-x
2026-03-31 12:14
sm3hmac
35.27
KB
-rwxr-xr-x
2024-04-01 19:12
snice
31.4
KB
-rwxr-xr-x
2024-04-30 16:43
socat
386.92
KB
-rwxr-xr-x
2026-02-12 18:05
soelim
32.18
KB
-rwxr-xr-x
2022-02-01 10:44
soelim.groff
32.18
KB
-rwxr-xr-x
2022-02-01 10:44
sort
112.89
KB
-rwxr-xr-x
2026-06-25 00:26
sotruss
4.18
KB
-rwxr-xr-x
2026-07-22 07:08
spell
125
B
-rwxr-xr-x
2019-10-08 00:15
splain
18.96
KB
-rwxr-xr-x
2025-07-28 03:54
split
52.11
KB
-rwxr-xr-x
2026-06-25 00:26
sprof
35.45
KB
-rwxr-xr-x
2026-07-22 07:10
sqlite3
1.54
MB
-rwxr-xr-x
2026-05-20 17:09
sscg
63.54
KB
-rwxr-xr-x
2026-04-08 23:33
ssh
896.36
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-add
305.73
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-agent
317.7
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-copy-id
13.84
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-keygen
475.41
KB
-rwxr-xr-x
2026-05-21 11:24
ssh-keyscan
338.26
KB
-rwxr-xr-x
2026-05-21 11:24
ssltap
71.53
KB
-rwxr-xr-x
2026-03-23 05:10
sss_ssh_authorizedkeys
23.29
KB
-rwxr-xr-x
2026-07-23 19:31
sss_ssh_knownhostsproxy
27.3
KB
-rwxr-xr-x
2026-07-23 19:31
stat
79.85
KB
-rwxr-xr-x
2026-06-25 00:26
stdbuf
43.55
KB
-rwxr-xr-x
2026-06-25 00:26
strace
2.08
MB
-rwxr-xr-x
2025-03-12 19:11
strace-log-merge
1.83
KB
-rwxr-xr-x
2024-07-19 12:18
stream
15.09
KB
-rwxr-xr-x
2026-07-22 08:31
streamzip
7.66
KB
-rwxr-xr-x
2026-06-29 05:31
strings
31.74
KB
-rwxr-xr-x
2026-04-04 21:15
strip
185.36
KB
-rwxr-xr-x
2026-04-04 21:15
stty
75.63
KB
-rwxr-xr-x
2026-06-25 00:26
su
55.6
KB
-rwsr-x---
2026-04-04 22:15
sudo
290.71
KB
---s--x--x
2026-05-21 01:23
sudoedit
290.71
KB
---s--x--x
2026-05-21 01:23
sudoreplay
97.55
KB
---x--x--x
2026-05-21 01:23
sum
35.38
KB
-rwxr-xr-x
2026-06-25 00:26
sxpm
31.58
KB
-rwxr-xr-x
2024-04-01 18:32
sync
35.34
KB
-rwxr-xr-x
2026-06-25 00:26
systemctl
298.41
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-analyze
201.58
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-ask-password
19.46
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-cat
19.27
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-cgls
23.47
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-cgtop
39.41
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-creds
43.8
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-cryptenroll
72.08
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-delta
27.31
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-detect-virt
19.26
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-dissect
47.78
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-escape
23.26
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-firstboot
56.09
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-hwdb
15.28
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-id128
27.38
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-inhibit
23.31
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-machine-id-setup
19.55
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-mount
60.03
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-notify
23.31
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-path
19.26
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-repart
169.27
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-run
64.02
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-socket-activate
27.35
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-stdio-bridge
23.27
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-sysext
47.76
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-sysusers
72.35
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-tmpfiles
124.54
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-tty-ask-password-agent
39.37
KB
-rwxr-xr-x
2026-06-25 00:28
systemd-umount
60.03
KB
-rwxr-xr-x
2026-06-25 00:28
tabs
19.16
KB
-rwxr-xr-x
2025-09-21 09:23
tac
100.39
KB
-rwxr-xr-x
2026-06-25 00:26
tail
67.9
KB
-rwxr-xr-x
2026-06-25 00:26
tapestat
27.37
KB
-rwxr-xr-x
2026-04-15 10:16
tar
518.13
KB
-rwxr-xr-x
2026-04-04 21:56
taskset
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
tbl
130.86
KB
-rwxr-xr-x
2022-02-01 10:44
tclsh
15.69
KB
-rwxr-xr-x
2022-10-15 21:29
tclsh8.6
15.69
KB
-rwxr-xr-x
2022-10-15 21:29
tcptraceroute
1.55
KB
-rwxr-xr-x
2025-03-12 23:57
tdspool
253.95
KB
-rwxr-xr-x
2025-05-28 13:07
team2bond
15.76
KB
-rwxr-xr-x
2023-01-23 19:53
teamd
166.59
KB
-rwxr-xr-x
2023-01-23 19:53
teamdctl
37.12
KB
-rwxr-xr-x
2023-01-23 19:53
teamnl
23.26
KB
-rwxr-xr-x
2023-01-23 19:53
tee
35.49
KB
-rwxr-xr-x
2026-06-25 00:26
test
43.61
KB
-rwxr-xr-x
2026-06-25 00:26
tic
87.79
KB
-rwxr-xr-x
2025-09-21 09:23
timedatectl
47.66
KB
-rwxr-xr-x
2026-06-25 00:28
timeout
35.98
KB
-rwxr-xr-x
2026-06-25 00:26
tload
19.34
KB
-rwxr-xr-x
2024-04-30 16:43
tmon
42.48
KB
-rwxr-xr-x
2026-07-23 20:52
tmpwatch
36.03
KB
-rwxr-xr-x
2022-02-11 11:52
toe
23.23
KB
-rwxr-xr-x
2025-09-21 09:23
top
132.27
KB
-rwxr-xr-x
2024-04-30 16:43
touch
91.84
KB
-rwxr-xr-x
2026-06-25 00:26
tput
27.25
KB
-rwxr-xr-x
2025-09-21 09:23
tr
43.68
KB
-rwxr-xr-x
2026-06-25 00:26
tracepath
19.22
KB
-rwxr-xr-x
2025-10-20 12:44
traceroute
77.29
KB
-rwxr-xr-x
2025-03-12 23:57
traceroute6
77.29
KB
-rwxr-xr-x
2025-03-12 23:57
tracker3
611.08
KB
-rwxr-xr-x
2023-01-23 15:49
tred
15.35
KB
-rwxr-xr-x
2024-04-03 11:16
troff
732.07
KB
-rwxr-xr-x
2022-02-01 10:44
true
27.28
KB
-rwxr-xr-x
2026-06-25 00:26
truncate
35.48
KB
-rwxr-xr-x
2026-06-25 00:26
trust
268.87
KB
-rwxr-xr-x
2026-04-04 23:35
tset
27.34
KB
-rwxr-xr-x
2025-09-21 09:23
tsort
47.6
KB
-rwxr-xr-x
2026-06-25 00:26
tsql
253.89
KB
-rwxr-xr-x
2025-05-28 13:07
tty
31.46
KB
-rwxr-xr-x
2026-06-25 00:26
turbostat
168.56
KB
-rwxr-xr-x
2026-07-23 20:52
twopi
15.23
KB
-rwxr-xr-x
2024-04-03 11:16
type
32
B
-rwxr-xr-x
2024-04-30 14:33
tzselect
14.99
KB
-rwxr-xr-x
2026-07-22 07:07
uapi
3.32
MB
-rwxr-xr-x
2026-07-24 04:42
udevadm
587.85
KB
-rwxr-xr-x
2026-06-25 00:28
ul
23.26
KB
-rwxr-xr-x
2026-04-04 22:15
ulimit
34
B
-rwxr-xr-x
2024-04-30 14:33
ulockmgr_server
19.38
KB
-rwxr-xr-x
2025-03-12 19:30
umask
33
B
-rwxr-xr-x
2024-04-30 14:33
umount
35.27
KB
-rwsr-xr-x
2026-04-04 22:15
unalias
35
B
-rwxr-xr-x
2024-04-30 14:33
uname
31.48
KB
-rwxr-xr-x
2026-06-25 00:26
uname26
27.48
KB
-rwxr-xr-x
2026-04-04 22:15
unexpand
39.53
KB
-rwxr-xr-x
2026-06-25 00:26
unflatten
15.37
KB
-rwxr-xr-x
2024-04-03 11:16
unicode_start
2.57
KB
-rwxr-xr-x
2025-03-13 08:14
unicode_stop
367
B
-rwxr-xr-x
2012-02-27 10:27
uniq
43.63
KB
-rwxr-xr-x
2026-06-25 00:26
unlink
31.47
KB
-rwxr-xr-x
2026-06-25 00:26
unpigz
132.84
KB
-rwxr-xr-x
2025-03-12 23:06
unshare
31.55
KB
-rwxr-xr-x
2026-04-04 22:15
unxz
84.94
KB
-rwxr-xr-x
2022-06-08 08:30
unzip
195.98
KB
-rwxr-xr-x
2026-04-09 11:24
unzipsfx
87.7
KB
-rwxr-xr-x
2026-04-09 11:24
update-ca-trust
4.36
KB
-rwxr-xr-x
2025-11-19 09:34
update-crypto-policies
87
B
-rwxr-xr-x
2026-02-24 11:47
update-gtk-immodules
316
B
-rwxr-xr-x
2023-04-07 07:55
update-mime-database
59.87
KB
-rwxr-xr-x
2023-04-06 23:20
upower
23.88
KB
-rwxr-xr-x
2022-02-11 07:06
uptime
15.29
KB
-rwxr-xr-x
2024-04-30 16:43
users
31.5
KB
-rwxr-xr-x
2026-06-25 00:26
usleep
15.29
KB
-rwxr-xr-x
2025-03-12 19:47
utmpdump
23.21
KB
-rwxr-xr-x
2026-04-04 22:15
uuidgen
19.16
KB
-rwxr-xr-x
2026-04-04 22:15
uuidparse
23.21
KB
-rwxr-xr-x
2026-04-04 22:15
vdir
137.45
KB
-rwxr-xr-x
2026-06-25 00:26
vi
1.38
MB
-rwxr-xr-x
2026-07-13 16:20
view
146
B
-rwxr-xr-x
2026-07-13 16:20
vimdot
1.06
KB
-rwxr-xr-x
2024-04-03 11:16
vlock
23.62
KB
-rwxr-xr-x
2025-03-13 08:15
vmstat
39.41
KB
-rwxr-xr-x
2024-04-30 16:43
w
23.37
KB
-rwxr-xr-x
2024-04-30 16:43
wait
32
B
-rwxr-xr-x
2024-04-30 14:33
wall
23.23
KB
-rwxr-xr-x
2026-04-04 22:15
watch
27.87
KB
-rwxr-xr-x
2024-04-30 16:43
watchgnupg
23.2
KB
-rwxr-xr-x
2026-01-15 21:34
wc
43.53
KB
-rwxr-xr-x
2026-06-25 00:26
wdctl
31.33
KB
-rwxr-xr-x
2026-04-04 22:15
wget
521.41
KB
-rwxr-xr-x
2024-09-03 11:58
whatis
48.52
KB
-rwxr-xr-x
2025-09-21 12:57
whatis.man-db
48.52
KB
-rwxr-xr-x
2025-09-21 12:57
whereis
31.84
KB
-rwxr-xr-x
2026-04-04 22:15
which
27.89
KB
-rwxr-xr-x
2025-08-05 06:19
whiptail
31.93
KB
-rwxr-xr-x
2022-02-10 13:07
who
51.59
KB
-rwxr-xr-x
2026-06-25 00:26
whoami
31.47
KB
-rwxr-xr-x
2026-06-25 00:26
wireplumber
23.63
KB
-rwxr-xr-x
2026-04-15 10:19
wmf2eps
19.72
KB
-rwxr-xr-x
2022-10-15 12:42
wmf2fig
19.81
KB
-rwxr-xr-x
2022-10-15 12:42
wmf2gd
15.81
KB
-rwxr-xr-x
2022-10-15 12:42
wmf2svg
19.82
KB
-rwxr-xr-x
2022-10-15 12:42
wmf2x
15.7
KB
-rwxr-xr-x
2022-10-15 12:42
word-list-compress
15.7
KB
-rwxr-xr-x
2022-01-26 21:47
wpctl
72.03
KB
-rwxr-xr-x
2026-04-15 10:19
wpexec
19.6
KB
-rwxr-xr-x
2026-04-15 10:19
write
23.24
KB
-rwxr-sr-x
2026-04-04 22:15
wsrep_sst_backup
2.39
KB
-rwxr-xr-x
2026-05-23 15:25
wsrep_sst_common
67.46
KB
-rw-r--r--
2026-05-23 15:25
wsrep_sst_mariabackup
49.27
KB
-rwxr-xr-x
2026-05-23 15:25
wsrep_sst_mysqldump
8.1
KB
-rwxr-xr-x
2026-05-23 15:25
wsrep_sst_rsync
29.92
KB
-rwxr-xr-x
2026-05-23 15:25
wsrep_sst_rsync_wan
29.92
KB
-rwxr-xr-x
2026-05-23 15:25
x86_64
27.48
KB
-rwxr-xr-x
2026-04-04 22:15
x86_64-redhat-linux-c++
1.05
MB
-rwxr-xr-x
2026-04-04 22:27
x86_64-redhat-linux-g++
1.05
MB
-rwxr-xr-x
2026-04-04 22:27
x86_64-redhat-linux-gcc
1.04
MB
-rwxr-xr-x
2026-04-04 22:27
x86_64-redhat-linux-gcc-11
1.04
MB
-rwxr-xr-x
2026-04-04 22:27
x86_64-redhat-linux-gnu-pkg-config
829
B
-rwxr-xr-x
2023-04-06 20:27
x86_energy_perf_policy
38.73
KB
-rwxr-xr-x
2026-07-23 20:52
xargs
64.09
KB
-rwxr-xr-x
2024-10-02 21:04
xb-tool
31.47
KB
-rwxr-xr-x
2026-04-09 12:26
xdg-dbus-proxy
56.54
KB
-rwxr-xr-x
2022-10-15 20:05
xgettext
296.7
KB
-rwxr-xr-x
2023-09-27 06:53
xml2-config
1.83
KB
-rwxr-xr-x
2022-01-16 17:37
xmlcatalog
23.16
KB
-rwxr-xr-x
2026-07-14 21:46
xmllint
80.55
KB
-rwxr-xr-x
2026-07-14 21:46
xmlwf
39.63
KB
-rwxr-xr-x
2026-06-04 13:47
xslt-config
2.58
KB
-rwxr-xr-x
2015-05-10 14:11
xsltproc
31.23
KB
-rwxr-xr-x
2026-06-25 00:22
xsubpp
4.96
KB
-rwxr-xr-x
2022-02-16 08:56
xz
84.94
KB
-rwxr-xr-x
2022-06-08 08:30
xzcat
84.94
KB
-rwxr-xr-x
2022-06-08 08:30
xzcmp
6.48
KB
-rwxr-xr-x
2022-06-08 08:30
xzdec
15.85
KB
-rwxr-xr-x
2022-06-08 08:30
xzdiff
6.48
KB
-rwxr-xr-x
2022-06-08 08:30
xzegrep
5.77
KB
-rwxr-xr-x
2022-06-08 08:30
xzfgrep
5.77
KB
-rwxr-xr-x
2022-06-08 08:30
xzgrep
5.77
KB
-rwxr-xr-x
2022-06-08 08:30
xzless
1.76
KB
-rwxr-xr-x
2022-06-08 08:30
xzmore
2.12
KB
-rwxr-xr-x
2022-06-08 08:30
yat2m
40.04
KB
-rwxr-xr-x
2022-02-09 23:24
yes
31.31
KB
-rwxr-xr-x
2026-06-25 00:26
ypdomainname
23.84
KB
-rwxr-xr-x
2022-02-14 11:22
yum
2.04
KB
-rwxr-xr-x
2026-05-20 19:48
yum-builddep
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
yum-config-manager
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
yum-debug-dump
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
yum-debug-restore
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
yum-groups-manager
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
yumdownloader
3.6
KB
-rwxr-xr-x
2026-04-15 12:44
zcat
1.94
KB
-rwxr-xr-x
2022-10-15 17:26
zcmp
1.64
KB
-rwxr-xr-x
2022-10-15 17:26
zdiff
6.31
KB
-rwxr-xr-x
2022-10-15 17:26
zdump
27.34
KB
-rwxr-xr-x
2026-07-22 07:10
zegrep
33
B
-rwxr-xr-x
2022-10-15 17:26
zfgrep
33
B
-rwxr-xr-x
2022-10-15 17:26
zforce
2.04
KB
-rwxr-xr-x
2022-10-15 17:26
zgrep
7.93
KB
-rwxr-xr-x
2022-10-15 17:26
zip
221.09
KB
-rwxr-xr-x
2023-04-07 14:02
zipcloak
75.7
KB
-rwxr-xr-x
2023-04-07 14:02
zipdetails
58.56
KB
-rwxr-xr-x
2026-06-29 05:31
zipgrep
2.89
KB
-rwxr-xr-x
2008-10-10 17:40
zipinfo
195.98
KB
-rwxr-xr-x
2026-04-09 11:24
zipnote
67.61
KB
-rwxr-xr-x
2023-04-07 14:02
zipsplit
63.58
KB
-rwxr-xr-x
2023-04-07 14:02
zless
2.16
KB
-rwxr-xr-x
2022-10-15 17:26
zmore
1.8
KB
-rwxr-xr-x
2022-10-15 17:26
znew
4.47
KB
-rwxr-xr-x
2022-10-15 17:26
zone2json
1.35
MB
-rwxr-xr-x
2026-06-26 18:41
zone2sql
1.37
MB
-rwxr-xr-x
2026-06-26 18:41
zsoelim
32.18
KB
-rwxr-xr-x
2022-02-01 10:44
Save
Rename
#!/usr/bin/bash KEXEC=/sbin/kexec KDUMP_KERNELVER="" KDUMP_KERNEL="" KDUMP_COMMANDLINE="" KEXEC_ARGS="" MKDUMPRD="/sbin/mkdumprd -f" MKFADUMPRD="/sbin/mkfadumprd" DRACUT_MODULES_FILE="/usr/lib/dracut/modules.txt" SAVE_PATH=/var/crash SSH_KEY_LOCATION="/root/.ssh/kdump_id_rsa" DUMP_TARGET="" DEFAULT_INITRD="" DEFAULT_INITRD_BAK="" INITRD_CHECKSUM_LOCATION="" KDUMP_INITRD="" TARGET_INITRD="" #kdump shall be the default dump mode DEFAULT_DUMP_MODE="kdump" VMCORE_CREATION_STATUS="/var/lib/kdump/vmcore-creation.status" image_time=0 standard_kexec_args="-p" # Some default values in case /etc/sysconfig/kdump doesn't include KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug" if [[ -f /etc/sysconfig/kdump ]]; then . /etc/sysconfig/kdump fi [[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut . $dracutbasedir/dracut-functions.sh . /lib/kdump/kdump-lib.sh . /lib/kdump/kdump-logger.sh #initiate the kdump logger if ! dlog_init; then echo "failed to initiate the kdump logger." exit 1 fi KDUMP_TMPDIR=$(mktemp --tmpdir -d kdump.XXXX) TMPMNT="$KDUMP_TMPDIR/target" trap ' ret=$?; is_mounted $TMPMNT && umount -f $TMPMNT; rm -rf "$KDUMP_TMPDIR" [[ -d $LUKS_CONFIGFS ]] && find $LUKS_CONFIGFS/ -mindepth 1 -type d -delete exit $ret; ' EXIT single_instance_lock() { local rc timeout=5 lockfile if [[ -d /run/lock ]]; then lockfile=/run/lock/kdump else # when updating package using virt-customize, /run/lock doesn't exist lockfile=/tmp/kdump.lock fi if ! exec 9> $lockfile; then derror "Create file lock failed" exit 1 fi flock -n 9 rc=$? while [[ $rc -ne 0 ]]; do dinfo "Another app is currently holding the kdump lock; waiting for it to exit..." flock -w $timeout 9 rc=$? done } determine_dump_mode() { # Check if firmware-assisted dump is enabled # if yes, set the dump mode as fadump if is_fadump_capable; then dinfo "Dump mode is fadump" DEFAULT_DUMP_MODE="fadump" fi ddebug "DEFAULT_DUMP_MODE=$DEFAULT_DUMP_MODE" } save_core() { coredir="/var/crash/$(date +"%Y-%m-%d-%H:%M")" mkdir -p "$coredir" ddebug "cp --sparse=always /proc/vmcore $coredir/vmcore-incomplete" if cp --sparse=always /proc/vmcore "$coredir/vmcore-incomplete"; then mv "$coredir/vmcore-incomplete" "$coredir/vmcore" dinfo "saved a vmcore to $coredir" else derror "failed to save a vmcore to $coredir" fi # pass the dmesg to Abrt tool if exists, in order # to collect the kernel oops message. # https://fedorahosted.org/abrt/ if [[ -x /usr/bin/dumpoops ]]; then ddebug "makedumpfile --dump-dmesg $coredir/vmcore $coredir/dmesg" makedumpfile --dump-dmesg "$coredir/vmcore" "$coredir/dmesg" > /dev/null 2>&1 ddebug "dumpoops -d $coredir/dmesg" if dumpoops -d "$coredir/dmesg" > /dev/null 2>&1; then dinfo "kernel oops has been collected by abrt tool" fi fi } rebuild_fadump_initrd() { if ! $MKFADUMPRD "$DEFAULT_INITRD_BAK" "$TARGET_INITRD" --kver "$KDUMP_KERNELVER"; then derror "mkfadumprd: failed to make fadump initrd" return 1 fi return 0 } check_earlykdump_is_enabled() { grep -q -w "rd.earlykdump" /proc/cmdline } rebuild_kdump_initrd() { ddebug "rebuild kdump initrd: $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER" if ! $MKDUMPRD "$TARGET_INITRD" "$KDUMP_KERNELVER"; then derror "mkdumprd: failed to make kdump initrd" return 1 fi if check_earlykdump_is_enabled; then dwarn "Tips: If early kdump is enabled, also require rebuilding the system initramfs to make the changes take effect for early kdump." fi return 0 } check_and_generate_vconsole_conf() { if [[ ! -e /etc/vconsole.conf ]]; then dwarn "/etc/vconsole.conf does not exist, trying to set keymap to us to reduce the initramfs size." if [[ -x "$(command -v localectl)" ]] ; then if localectl list-keymaps | grep -q "^us$"; then localectl set-keymap us 2>/dev/null fi fi fi } rebuild_initrd() { local _ret if [[ ! -w $(dirname "$TARGET_INITRD") ]]; then derror "$(dirname "$TARGET_INITRD") does not have write permission. Cannot rebuild $TARGET_INITRD" return 1 fi check_and_generate_vconsole_conf if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then rebuild_fadump_initrd else rebuild_kdump_initrd fi _ret=$? set_vmcore_creation_status 'clear' return $_ret } #$1: the files to be checked with IFS=' ' check_exist() { for file in $1; do if [[ ! -e $file ]]; then derror "Error: $file not found." return 1 fi done } #$1: the files to be checked with IFS=' ' check_executable() { for file in $1; do if [[ ! -x $file ]]; then derror "Error: $file is not executable." return 1 fi done } backup_default_initrd() { ddebug "backup default initrd: $DEFAULT_INITRD" if [[ ! -f $DEFAULT_INITRD ]]; then return fi if [[ ! -e $DEFAULT_INITRD_BAK ]]; then dinfo "Backing up $DEFAULT_INITRD before rebuild." # save checksum to verify before restoring sha1sum "$DEFAULT_INITRD" > "$INITRD_CHECKSUM_LOCATION" if ! cp "$DEFAULT_INITRD" "$DEFAULT_INITRD_BAK"; then dwarn "WARNING: failed to backup $DEFAULT_INITRD." rm -f -- "$INITRD_CHECKSUM_LOCATION" rm -f -- "$DEFAULT_INITRD_BAK" fi fi } restore_default_initrd() { ddebug "restore default initrd: $DEFAULT_INITRD" if [[ ! -f $DEFAULT_INITRD ]]; then return fi # If a backup initrd exists, we must be switching back from # fadump to kdump. Restore the original default initrd. if [[ -f $DEFAULT_INITRD_BAK ]] && [[ -f $INITRD_CHECKSUM_LOCATION ]]; then # verify checksum before restoring backup_checksum=$(sha1sum "$DEFAULT_INITRD_BAK" | awk '{ print $1 }') default_checksum=$(awk '{ print $1 }' "$INITRD_CHECKSUM_LOCATION") if [[ $default_checksum != "$backup_checksum" ]]; then dwarn "WARNING: checksum mismatch! Can't restore original initrd.." else rm -f $INITRD_CHECKSUM_LOCATION if mv "$DEFAULT_INITRD_BAK" "$DEFAULT_INITRD"; then derror "Restoring original initrd as fadump mode is disabled." sync fi fi fi } check_config() { local -A _opt_rec while read -r config_opt config_val; do case "$config_opt" in dracut_args) if [[ $config_val == *--mount* ]]; then if [[ $(echo "$config_val" | grep -o "\-\-mount" | wc -l) -ne 1 ]]; then derror 'Multiple mount targets specified in one "dracut_args".' return 1 fi config_opt=_target fi ;; raw) if [[ -d "/proc/device-tree/ibm,opal/dump" ]]; then dwarn "WARNING: Won't capture opalcore when 'raw' dump target is used." fi config_opt=_target ;; ext[234] | minix | btrfs | xfs | nfs | ssh | virtiofs) config_opt=_target ;; sshkey | path | core_collector | kdump_post | kdump_pre | extra_bins | extra_modules | failure_action | default | final_action | force_rebuild | force_no_rebuild | fence_kdump_args | fence_kdump_nodes | auto_reset_crashkernel) ;; net | options | link_delay | disk_timeout | debug_mem_level | blacklist) derror "Deprecated kdump config option: $config_opt. Refer to kdump.conf manpage for alternatives." return 1 ;; '') continue ;; *) derror "Invalid kdump config option $config_opt" return 1 ;; esac if [[ -z $config_val ]]; then derror "Invalid kdump config value for option '$config_opt'" return 1 fi if [[ -n ${_opt_rec[$config_opt]} ]]; then if [[ $config_opt == _target ]]; then derror "More than one dump targets specified" else derror "Duplicated kdump config value of option $config_opt" fi return 1 fi _opt_rec[$config_opt]="$config_val" done <<< "$(kdump_read_conf)" check_failure_action_config || return 1 check_final_action_config || return 1 check_fence_kdump_config || return 1 return 0 } # get_pcs_cluster_modified_files <image timestamp> # return list of modified file for fence_kdump modified in Pacemaker cluster get_pcs_cluster_modified_files() { local time_stamp local modified_files is_generic_fence_kdump && return 1 is_pcs_fence_kdump || return 1 time_stamp=$(pcs cluster cib | xmllint --xpath 'string(/cib/@cib-last-written)' - | xargs -0 date +%s --date) if [[ -n $time_stamp ]] && [[ $time_stamp -gt $image_time ]]; then modified_files="cluster-cib" fi if [[ -f $FENCE_KDUMP_CONFIG_FILE ]]; then time_stamp=$(stat -c "%Y" "$FENCE_KDUMP_CONFIG_FILE") if [[ $time_stamp -gt $image_time ]]; then modified_files="$modified_files $FENCE_KDUMP_CONFIG_FILE" fi fi echo "$modified_files" } setup_initrd() { if ! prepare_kdump_bootinfo; then derror "failed to prepare for kdump bootinfo." return 1 fi DEFAULT_INITRD_BAK="$KDUMP_BOOTDIR/.$(basename "$DEFAULT_INITRD").default" INITRD_CHECKSUM_LOCATION="$DEFAULT_INITRD_BAK.checksum" if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then TARGET_INITRD="$DEFAULT_INITRD" # backup initrd for reference before replacing it # with fadump aware initrd backup_default_initrd else TARGET_INITRD="$KDUMP_INITRD" # check if a backup of default initrd exists. If yes, # it signifies a switch from fadump mode. So, restore # the backed up default initrd. restore_default_initrd fi } check_files_modified() { local modified_files="" #also rebuild when Pacemaker cluster conf is changed and fence kdump is enabled. modified_files=$(get_pcs_cluster_modified_files) EXTRA_BINS=$(kdump_get_conf_val kdump_post) CHECK_FILES=$(kdump_get_conf_val kdump_pre) HOOKS="/etc/kdump/post.d/ /etc/kdump/pre.d/" if [[ -d /etc/kdump/post.d ]]; then for file in /etc/kdump/post.d/*; do if [[ -x $file ]]; then POST_FILES="$POST_FILES $file" fi done fi if [[ -d /etc/kdump/pre.d ]]; then for file in /etc/kdump/pre.d/*; do if [[ -x $file ]]; then PRE_FILES="$PRE_FILES $file" fi done fi HOOKS="$HOOKS $POST_FILES $PRE_FILES" CORE_COLLECTOR=$(kdump_get_conf_val core_collector | awk '{print $1}') CORE_COLLECTOR=$(type -P "$CORE_COLLECTOR") # POST_FILES and PRE_FILES are already checked against executable, need not to check again. EXTRA_BINS="$EXTRA_BINS $CHECK_FILES" CHECK_FILES=$(kdump_get_conf_val extra_bins) EXTRA_BINS="$EXTRA_BINS $CHECK_FILES" files="$KDUMP_CONFIG_FILE $KDUMP_KERNEL $EXTRA_BINS $CORE_COLLECTOR" [[ -e /etc/fstab ]] && files="$files /etc/fstab" # Check for any updated extra module EXTRA_MODULES="$(kdump_get_conf_val extra_modules)" if [[ -n $EXTRA_MODULES ]]; then if [[ -e /lib/modules/$KDUMP_KERNELVER/modules.dep ]]; then files="$files /lib/modules/$KDUMP_KERNELVER/modules.dep" fi for _module in $EXTRA_MODULES; do if _module_file="$(modinfo --set-version "$KDUMP_KERNELVER" --filename "$_module" 2> /dev/null)"; then files="$files $_module_file" for _dep_modules in $(modinfo -F depends "$_module" | tr ',' ' '); do files="$files $(modinfo --set-version "$KDUMP_KERNELVER" --filename "$_dep_modules" 2> /dev/null)" done else # If it's not a module nor builtin, give an error if ! (modprobe --set-version "$KDUMP_KERNELVER" --dry-run "$_module" &> /dev/null); then dwarn "Module $_module not found" fi fi done fi # HOOKS is mandatory and need to check the modification time files="$files $HOOKS" is_lvm2_thinp_dump_target && files="$files $LVM_CONF" check_exist "$files" && check_executable "$EXTRA_BINS" || return 2 for file in $files; do if [[ -e $file ]]; then time_stamp=$(stat -c "%Y" "$file") if [[ $time_stamp -gt $image_time ]]; then modified_files="$modified_files $file" fi if [[ -L $file ]]; then file=$(readlink -m "$file") time_stamp=$(stat -c "%Y" "$file") if [[ $time_stamp -gt $image_time ]]; then modified_files="$modified_files $file" fi fi else dwarn "$file doesn't exist" fi done if [[ -n $modified_files ]]; then dinfo "Detected change(s) in the following file(s): $modified_files" return 1 fi return 0 } check_drivers_modified() { local _target _new_drivers _old_drivers _module_name _module_filename # If it's dump target is on block device, detect the block driver _target=$(get_block_dump_target) if [[ -n $_target ]]; then _record_block_drivers() { local _drivers _drivers=$(udevadm info -a "/dev/block/$1" | sed -n 's/\s*DRIVERS=="\(\S\+\)"/\1/p') for _driver in $_drivers; do if ! [[ " $_new_drivers " == *" $_driver "* ]]; then _new_drivers="$_new_drivers $_driver" fi done ddebug "MAJ:MIN=$1 drivers='$_drivers'" } check_block_and_slaves_all _record_block_drivers "$(get_maj_min "$_target")" fi # Include watchdog drivers if watchdog module is not omitted is_dracut_mod_omitted watchdog || _new_drivers+=" $(get_watchdog_drvs)" [[ -z $_new_drivers ]] && return 0 if is_fadump_capable; then _old_drivers="$(lsinitrd "$TARGET_INITRD" -f /usr/lib/dracut/fadump-kernel-modules.txt | tr '\n' ' ')" else _old_drivers="$(lsinitrd "$TARGET_INITRD" -f /usr/lib/dracut/hostonly-kernel-modules.txt | tr '\n' ' ')" fi ddebug "Modules required for kdump: '$_new_drivers'" ddebug "Modules included in old initramfs: '$_old_drivers'" for _driver in $_new_drivers; do # Skip deprecated/invalid driver name or built-in module _module_name=$(modinfo --set-version "$KDUMP_KERNELVER" -F name "$_driver" 2> /dev/null) _module_filename=$(modinfo --set-version "$KDUMP_KERNELVER" -n "$_driver" 2> /dev/null) if [[ -z $_module_name ]] || [[ -z $_module_filename ]] || [[ $_module_filename == *"(builtin)"* ]]; then continue fi if ! [[ " $_old_drivers " == *" $_module_name "* ]]; then dinfo "Detected change in block device driver, new loaded module: $_module_name" return 1 fi done } check_fs_modified() { local _old_dev _old_mntpoint _old_fstype local _new_dev _new_mntpoint _new_fstype local _target _dracut_args # No need to check in case of mount target specified via "dracut_args". if is_mount_in_dracut_args; then return 0 fi # No need to check in case of raw target. # Currently we do not check also if ssh/nfs/virtiofs/thinp target is specified if is_ssh_dump_target || is_nfs_dump_target || is_raw_dump_target || is_virtiofs_dump_target || is_lvm2_thinp_dump_target; then return 0 fi _target=$(get_block_dump_target) _new_fstype=$(get_fs_type_from_target "$_target") if [[ -z $_target ]] || [[ -z $_new_fstype ]]; then derror "Dump target is invalid" return 2 fi ddebug "_target=$_target _new_fstype=$_new_fstype" _new_dev=$(kdump_get_persistent_dev "$_target") if [[ -z $_new_dev ]]; then perror "Get persistent device name failed" return 2 fi _new_mntpoint="$(get_kdump_mntpoint_from_target "$_target")" _dracut_args=$(lsinitrd "$TARGET_INITRD" -f usr/lib/dracut/build-parameter.txt) if [[ -z $_dracut_args ]]; then dwarn "Warning: No dracut arguments found in initrd" return 0 fi # if --mount argument present then match old and new target, mount # point and file system. If any of them mismatches then rebuild if echo "$_dracut_args" | grep -q "\-\-mount"; then # shellcheck disable=SC2046 set -- $(echo "$_dracut_args" | awk -F "--mount '" '{print $2}' | cut -d' ' -f1,2,3) _old_dev=$1 _old_mntpoint=$2 _old_fstype=$3 [[ $_new_dev == "$_old_dev" && $_new_mntpoint == "$_old_mntpoint" && $_new_fstype == "$_old_fstype" ]] && return 0 # otherwise rebuild if target device is not a root device else [[ $_target == "$(get_root_fs_device)" ]] && return 0 fi dinfo "Detected change in File System" return 1 } # returns 0 if system is not modified # returns 1 if system is modified # returns 2 if system modification is invalid check_system_modified() { local ret local CONF_ERROR=2 local CONF_MODIFY=1 local CONF_NO_MODIFY=0 local conf_status=$CONF_NO_MODIFY [[ -f $TARGET_INITRD ]] || return 1 for _func in check_files_modified check_fs_modified check_drivers_modified; do $_func ret=$? # return immediately if an error occurred. [[ $ret -eq "$CONF_ERROR" ]] && return "$ret" [[ $ret -eq "$CONF_MODIFY" ]] && { conf_status="$CONF_MODIFY"; } done return $conf_status } check_rebuild() { local capture_capable_initrd="1" local force_rebuild force_no_rebuild local ret system_modified="0" setup_initrd || return 1 force_no_rebuild=$(kdump_get_conf_val force_no_rebuild) force_no_rebuild=${force_no_rebuild:-0} if [[ $force_no_rebuild != "0" ]] && [[ $force_no_rebuild != "1" ]]; then derror "Error: force_no_rebuild value is invalid" return 1 fi force_rebuild=$(kdump_get_conf_val force_rebuild) force_rebuild=${force_rebuild:-0} if [[ $force_rebuild != "0" ]] && [[ $force_rebuild != "1" ]]; then derror "Error: force_rebuild value is invalid" return 1 fi if [[ $force_no_rebuild == "1" && $force_rebuild == "1" ]]; then derror "Error: force_rebuild and force_no_rebuild are enabled simultaneously in kdump.conf" return 1 fi # Will not rebuild kdump initrd if [[ $force_no_rebuild == "1" ]]; then return 0 fi #check to see if dependent files has been modified #since last build of the image file if [[ -f $TARGET_INITRD ]]; then image_time=$(stat -c "%Y" "$TARGET_INITRD" 2> /dev/null) #in case of fadump mode, check whether the default/target #initrd is already built with dump capture capability if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then capture_capable_initrd=$(lsinitrd -f $DRACUT_MODULES_FILE "$TARGET_INITRD" | grep -c -e ^kdumpbase$ -e ^zz-fadumpinit$) fi fi check_system_modified ret=$? if [[ $ret -eq 2 ]]; then return 1 elif [[ $ret -eq 1 ]]; then system_modified="1" fi if [[ $image_time -eq 0 ]]; then dinfo "No kdump initial ramdisk found." elif [[ $capture_capable_initrd == "0" ]]; then dinfo "Rebuild $TARGET_INITRD with dump capture support" elif [[ $force_rebuild != "0" ]]; then dinfo "Force rebuild $TARGET_INITRD" elif [[ $system_modified != "0" ]]; then : else return 0 fi dinfo "Rebuilding $TARGET_INITRD" rebuild_initrd } # On ppc64le LPARs, the keys trusted by firmware do not end up in # .builtin_trusted_keys. So instead, add the key to the .ima keyring function load_kdump_kernel_key() { # this is only called inside is_secure_boot_enforced, # no need to retest # this is only required if DT /ibm,secure-boot is a file. # if it is a dir, we are on OpenPower and don't need this. if ! [[ -f /proc/device-tree/ibm,secure-boot ]]; then return fi # %.ima keyring is writable to the user, no need to use # "sudo -i keyctl" keyctl padd asymmetric "" %:.ima < "/usr/share/doc/kernel-keys/$KDUMP_KERNELVER/kernel-signing-ppc.cer" } # Load the kdump kernel specified in /etc/sysconfig/kdump # If none is specified, try to load a kdump kernel with the same version # as the currently running kernel. load_kdump() { local uki KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}") KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}") if is_uki "$KDUMP_KERNEL"; then uki=$KDUMP_KERNEL KDUMP_KERNEL=$KDUMP_TMPDIR/vmlinuz objcopy -O binary --only-section .linux "$uki" "$KDUMP_KERNEL" sync -f "$KDUMP_KERNEL" # Make sure the temp file has the correct SELinux label. # Otherwise starting the kdump.service will fail. chcon -t boot_t "$KDUMP_KERNEL" fi if ! prepare_luks; then derror "kexec: failed to prepare for a LUKS target" return 1 fi [[ ${KEYCTL_CMD[0]} == sudo ]] && KEXEC="sudo -i $KEXEC" ddebug "$KEXEC $KEXEC_ARGS $standard_kexec_args --command-line=$KDUMP_COMMANDLINE --initrd=$TARGET_INITRD $KDUMP_KERNEL" # shellcheck disable=SC2086 $KEXEC $KEXEC_ARGS $standard_kexec_args \ --command-line="$KDUMP_COMMANDLINE" \ --initrd="$TARGET_INITRD" "$KDUMP_KERNEL" if [[ $? == 0 ]]; then dinfo "kexec: loaded kdump kernel" return 0 else derror "kexec: failed to load kdump kernel" return 1 fi } check_ssh_config() { local SSH_TARGET while read -r config_opt config_val; do case "$config_opt" in sshkey) # remove inline comments after the end of a directive. if [[ -f $config_val ]]; then # canonicalize the path SSH_KEY_LOCATION=$(/usr/bin/readlink -m "$config_val") else dwarn "WARNING: '$config_val' doesn't exist, using default value '$SSH_KEY_LOCATION'" fi ;; path) SAVE_PATH=$config_val ;; ssh) DUMP_TARGET=$config_val ;; *) ;; esac done <<< "$(kdump_read_conf)" #make sure they've configured kdump.conf for ssh dumps SSH_TARGET=$(echo -n "$DUMP_TARGET" | sed -n '/.*@/p') if [[ -z $SSH_TARGET ]]; then return 1 fi return 0 } # ipv6 host address may takes a long time to be ready. # Instead of checking against ipv6 address, we just check the network reachable # by the return val of 'ssh' check_and_wait_network_ready() { local start_time local warn_once=1 local cur local diff local retval local errmsg start_time=$(date +%s) while true; do errmsg=$(ssh -i "$SSH_KEY_LOCATION" -o BatchMode=yes "$DUMP_TARGET" mkdir -p "$SAVE_PATH" 2>&1) retval=$? # ssh exits with the exit status of the remote command or with 255 if an error occurred if [[ $retval -eq 0 ]]; then return 0 elif [[ $retval -ne 255 ]]; then derror "Could not create $DUMP_TARGET:$SAVE_PATH, you should check the privilege on server side" return 1 fi # if server removes the authorized_keys or, no /root/.ssh/kdump_id_rsa ddebug "$errmsg" if echo "$errmsg" | grep -q "Permission denied\|No such file or directory\|Host key verification failed"; then derror "Could not create $DUMP_TARGET:$SAVE_PATH, you probably need to run \"kdumpctl propagate\"" return 1 fi if [[ $warn_once -eq 1 ]]; then dwarn "Network dump target is not usable, waiting for it to be ready..." warn_once=0 fi cur=$(date +%s) diff=$((cur - start_time)) # 60s time out if [[ $diff -gt 180 ]]; then break fi sleep 1 done dinfo "Could not create $DUMP_TARGET:$SAVE_PATH, ipaddr is not ready yet. You should check network connection" return 1 } check_ssh_target() { check_and_wait_network_ready } propagate_ssh_key() { if ! check_ssh_config; then derror "No ssh config specified in $KDUMP_CONFIG_FILE. Can't propagate" exit 1 fi local KEYFILE=$SSH_KEY_LOCATION local errmsg="Failed to propagate ssh key" #Check to see if we already created key, if not, create it. if [[ -f $KEYFILE ]]; then dinfo "Using existing keys..." else dinfo "Generating new ssh keys... " /usr/bin/ssh-keygen -t rsa -f "$KEYFILE" -N "" 2>&1 > /dev/null dinfo "done." fi #now find the target ssh user and server to contact. SSH_USER=$(echo "$DUMP_TARGET" | cut -d@ -f1) SSH_SERVER=$(echo "$DUMP_TARGET" | sed -e's/\(.*@\)\(.*$\)/\2/') #now send the found key to the found server ssh-copy-id -i "$KEYFILE" "$SSH_USER@$SSH_SERVER" RET=$? if [[ $RET == 0 ]]; then dinfo "$KEYFILE has been added to ~$SSH_USER/.ssh/authorized_keys on $SSH_SERVER" return 0 else derror "$errmsg, $KEYFILE failed in transfer to $SSH_SERVER" exit 1 fi } show_reserved_mem() { local mem local mem_mb mem=$(get_reserved_mem_size) mem_mb=$((mem / 1024 / 1024)) dinfo "Reserved ${mem_mb}MB memory for crash kernel" } save_raw() { local kdump_dir local raw_target raw_target=$(kdump_get_conf_val raw) [[ -z $raw_target ]] && return 0 [[ -b $raw_target ]] || { derror "raw partition $raw_target not found" return 1 } check_fs=$(lsblk --nodeps -npo FSTYPE "$raw_target") if [[ $(echo "$check_fs" | wc -w) -ne 0 ]]; then dwarn "Warning: Detected '$check_fs' signature on $raw_target, data loss is expected." return 0 fi kdump_dir=$(kdump_get_conf_val path) if [[ -z ${kdump_dir} ]]; then coredir="/var/crash/$(date +"%Y-%m-%d-%H:%M")" else coredir="${kdump_dir}/$(date +"%Y-%m-%d-%H:%M")" fi mkdir -p "$coredir" [[ -d $coredir ]] || { derror "failed to create $coredir" return 1 } if makedumpfile -R "$coredir/vmcore" < "$raw_target" > /dev/null 2>&1; then # dump found dinfo "Dump saved to $coredir/vmcore" # wipe makedumpfile header dd if=/dev/zero of="$raw_target" bs=1b count=1 2> /dev/null else rm -rf "$coredir" fi return 0 } local_fs_dump_target() { local _target if _target=$(grep -E "^ext[234]|^xfs|^btrfs|^minix" /etc/kdump.conf); then echo "$_target" | awk '{print $2}' fi } path_to_be_relabeled() { local _path _target _mnt="/" _rmnt if is_user_configured_dump_target; then if is_mount_in_dracut_args; then return fi _target=$(local_fs_dump_target) if [[ -n $_target ]]; then _mnt=$(get_mntpoint_from_target "$_target") if ! is_mounted "$_mnt"; then return fi else return fi fi _path=$(get_save_path) # if $_path is masked by other mount, we will not relabel it. _rmnt=$(df "$_mnt/$_path" 2> /dev/null | tail -1 | awk '{ print $NF }') if [[ $_rmnt == "$_mnt" ]]; then echo "$_mnt/$_path" fi } selinux_relabel() { local _path _i _attr _path=$(path_to_be_relabeled) if [[ -z $_path ]] || ! [[ -d $_path ]]; then return fi while IFS= read -r -d '' _i; do _attr=$(getfattr -m "security.selinux" "$_i" 2> /dev/null) if [[ -z $_attr ]]; then restorecon "$_i" fi done < <(find "$_path" -print0) } check_fence_kdump_config() { local hostname local ipaddrs local nodes hostname=$(hostname) ipaddrs=$(hostname -I) nodes=$(kdump_get_conf_val "fence_kdump_nodes") for node in $nodes; do if [[ $node == "$hostname" ]]; then derror "Option fence_kdump_nodes cannot contain $hostname" return 1 fi # node can be ipaddr if echo "$ipaddrs " | grep -q "$node "; then derror "Option fence_kdump_nodes cannot contain $node" return 1 fi done return 0 } check_dump_feasibility() { if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then return 0 fi check_kdump_feasibility } fadump_bootargs_append() { if [[ -f "$FADUMP_APPEND_ARGS_SYS_NODE" ]]; then output=$( { echo "${FADUMP_COMMANDLINE_APPEND}" > "$FADUMP_APPEND_ARGS_SYS_NODE" ; } 2>&1) if [ $? -eq 0 ]; then output=$(cat "$FADUMP_APPEND_ARGS_SYS_NODE") dinfo "fadump: additional parameters for capture kernel: '$output'" else dwarn "WARNING: failed to setup additional parameters for fadump capture kernel: '$output'" fi else dwarn "WARNING: this kernel does not support passing additional parameters to fadump capture kernel." fi } start_fadump() { fadump_bootargs_append echo 1 > "$FADUMP_REGISTER_SYS_NODE" if ! is_kernel_loaded "fadump"; then derror "fadump: failed to register" return 1 fi dinfo "fadump: registered successfully" return 0 } start_dump() { # On secure boot enabled Power systems, load kernel signing key on .ima for signature # verification using kexec file based syscall. if [[ "$(uname -m)" == ppc64le ]] && is_secure_boot_enforced; then load_kdump_kernel_key fi if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then start_fadump else load_kdump fi } check_failure_action_config() { local default_option local failure_action local option="failure_action" default_option=$(kdump_get_conf_val default) failure_action=$(kdump_get_conf_val failure_action) if [[ -z $failure_action ]] && [[ -z $default_option ]]; then return 0 elif [[ -n $failure_action ]] && [[ -n $default_option ]]; then derror "Cannot specify 'failure_action' and 'default' option together" return 1 fi if [[ -n $default_option ]]; then option="default" failure_action="$default_option" fi case "$failure_action" in reboot | halt | poweroff | shell | dump_to_rootfs) return 0 ;; *) dinfo $"Usage kdump.conf: $option {reboot|halt|poweroff|shell|dump_to_rootfs}" return 1 ;; esac } check_final_action_config() { local final_action final_action=$(kdump_get_conf_val final_action) if [[ -z $final_action ]]; then return 0 else case "$final_action" in reboot | halt | poweroff) return 0 ;; *) dinfo $"Usage kdump.conf: final_action {reboot|halt|poweroff}" return 1 ;; esac fi } remove_luks_vol_keys() { local _key_line _key_id _key_desc _status=1 # Get all keys from @u keyring and process each line # sudo process by default only has the permission to list the keys # stored in user keyring i.e. "sudo keyctl list" can work not # "sudo keyctl unlink/show" while read -r _key_line; do # Skip header lines and empty lines [[ $_key_line =~ ^[0-9]+: ]] || continue # Extract key ID (first field before colon) _key_id=${_key_line%%:*} # Extract key description (everything after "logon: " or "user: ") if [[ $_key_line =~ logon:\ (.+)$ ]]; then _key_desc=${BASH_REMATCH[1]} else continue fi # Check if key description starts with LUKS_KEY_PRFIX if [[ $_key_desc == "$LUKS_KEY_PRFIX"* ]]; then "${KEYCTL_CMD[@]}" unlink "$_key_id" _status=0 fi done < <(keyctl list @u 2> /dev/null || true) return $_status } _get_luks_key_by_unlock() { local _devuuid=$1 _key_des=$2 local _max_retries local _attempt=1 local _luks_unlock_cmd="" # Check if stdin is a terminal. if [ -t 0 ]; then _max_retries=5 ddebug "Attempting to unlock LUKS device. You have $_max_retries attempts." else # Not a terminal (e.g., running as system service), so only try once # for cases where volume key is sealed to TPM which doesn't need user # interaction. _max_retries=1 ddebug "Attempting to unlock LUKS device (non-interactive mode)..." fi while [ "$_attempt" -le "$_max_retries" ]; do if cryptsetup open "UUID=$_devuuid" DUMMY "--link-vk-to-keyring=@u::%logon:$_key_des" --test-passphrase; then ddebug "Success: LUKS device unlocked." # For an interactive terminal, it's possible an user manually entered a passphrase [ -t 0 ] && dwarn "If you typed passphrase to unlock it manually, please run 'kdumpctl setup-crypttab' (see man kdumpctl)." return 0 fi _attempt=$((_attempt + 1)) done derror "Error: Could not unlock the LUKS device." return 1 } # Some users may use "sudo kdumpctl". sudo process by default inherits the # session keyring (@s) of the original user which means it can't read LUKS keys # stored in root's user (@u) which is only linked to root's session keyring. # So use "sudo -i keyctl" and "sudo kexec" automatically in order to be able to # search and read the LUKS key(s). KEYCTL_CMD=(keyctl) prepare_luks() { local _key_id _key_des _luks_unlock_cmd declare -a _luks_devs # Use "sudo -i" to use the root's session keyring to access LUKS keys if ! keyctl show @s | grep -qs "_uid.0$"; then KEYCTL_CMD=(sudo -i keyctl) fi mapfile -t _luks_devs < <(get_all_kdump_crypt_dev) if [[ ${#_luks_devs[@]} -lt 1 ]]; then if remove_luks_vol_keys; then dwarn "Encrypted device not in dump path, please drop the link-volume-key option in $CRYPTTAB_FILE" fi return 0 fi # Currently only x86_64 is supported if [[ "$(uname -m)" != "x86_64" ]]; then dwarn "Warning: Encrypted device is in dump path, which is not recommended, see kexec-kdump-howto.txt for more details." return 0 fi if [[ ! -d $LUKS_CONFIGFS ]]; then dwarn "$LUKS_CONFIGFS not available, please use a newer kernel or see kexec-kdump-howto.txt to make sure dumping to encrypted target will work." remove_luks_vol_keys return 0 fi # For the case of CPU/memory hotplugging, we can reuse loaded keys [[ $(cat $LUKS_CONFIGFS/reuse) == 1 ]] && return 0 for _devuuid in "${_luks_devs[@]}"; do _key_dir=$LUKS_CONFIGFS/$_devuuid _key_des=$LUKS_KEY_PRFIX$_devuuid if _key_id=$("${KEYCTL_CMD[@]}" request logon "$_key_des" 2> /dev/null); then ddebug "Succesfully get @u::%logon:$_key_des" elif _get_luks_key_by_unlock "$_devuuid" "$_key_des"; then if ! _key_id=$("${KEYCTL_CMD[@]}" request logon "$_key_des"); then derror "Probably you are using 'sudo kdumpctl' or 'sudo su', please retry with 'sudo -i kdumpctl'" return 1 fi ddebug "Succesfully get @u::%logon:$_key_des after cryptsetup" else derror "Failed to get logon key $_key_des. Run 'kdumpctl restart' manually to start kdump." return 1 fi # Let the key expire after 300 seconds "${KEYCTL_CMD[@]}" timeout "$_key_id" 300 mkdir "$_key_dir" printf "%s" "$_key_des" > "$_key_dir"/description done } start() { if ! check_dump_feasibility; then derror "Starting kdump: [FAILED]" return 1 fi if ! check_config; then derror "Starting kdump: [FAILED]" return 1 fi if sestatus 2> /dev/null | grep -q "SELinux status.*enabled"; then selinux_relabel fi if ! save_raw; then derror "Starting kdump: [FAILED]" return 1 fi if [[ $DEFAULT_DUMP_MODE == "kdump" ]] && is_kernel_loaded "kdump"; then dwarn "Kdump already running: [WARNING]" return 0 fi if check_ssh_config; then if ! check_ssh_target; then derror "Starting kdump: [FAILED]" return 1 fi fi if ! check_rebuild; then derror "Starting kdump: [FAILED]" return 1 fi if ! start_dump; then derror "Starting kdump: [FAILED]" return 1 fi dinfo "Starting kdump: [OK]" } # @description Updates a crypttab file to add the 'link-volume-key' option for kdump devices. # # It gets the list of kdump-related UUIDs by calling the 'get_all_kdump_crypt_dev' function. # The function is idempotent and performs pre-flight checks before making any modifications. # # @exitcode 0 If the update was successful or no changes were needed. # @exitcode 1 If there is an error (e.g. UUID mismatch). # # @stdout No output on success. # @stderr Progress and error messages are printed to stderr. CRYPTTAB_FILE=/etc/crypttab setup_crypttab() { local _devuuid uuids_string temp_file declare -a _luks_devs if [[ "$(uname -m)" != "x86_64" ]]; then dwarn "Currently only x86_64 supported" return 0 fi if [[ ! -f $CRYPTTAB_FILE ]]; then dinfo "$CRYPTTAB_FILE doesn't exist, skip setup" return 0 fi mapfile -t _luks_devs < <(get_all_kdump_crypt_dev) if [[ ${#_luks_devs[@]} -eq 0 ]]; then dinfo "No LUKS-encrypted device found to process. Exiting." return 0 fi for _devuuid in "${_luks_devs[@]}"; do if ! awk -v devuuid="$_devuuid" '!/^[[:space:]]*#/ && $2 == "UUID="devuuid { found=1; exit } END { exit !found }' "$CRYPTTAB_FILE"; then derror "Device UUID=${_devuuid} doesn't exist." return 1 fi done uuids_string="${_luks_devs[*]}" temp_file=$(mktemp) local status_updates status_updates=$({ awk -v prefix="$LUKS_KEY_PRFIX" -v targets="$uuids_string" ' BEGIN { split(targets, temp_arr, " ") for (i in temp_arr) { target_uuids[temp_arr[i]] = 1 } } /^#|^$/ { print; next } { split($2, uuid_parts, "=") current_uuid = uuid_parts[2] if (current_uuid in target_uuids) { target_option = "link-volume-key=@u::%logon:" prefix current_uuid if (!index($0, target_option)) { # If we need to modify, check if we are replacing or adding if (index($0, "link-volume-key=")) { print "STATUS:REPLACED:" current_uuid > "/dev/stderr" } else { print "STATUS:ADDED:" current_uuid > "/dev/stderr" } # Remove any existing, incorrect link-volume-key option sub(/,?link-volume-key=[^, ]+/, "", $4) sub(/^,/, "", $4) # Add the correct option if (NF < 3 || $3 == "") { $3 = "none" } if ($4 == "" || $4 == "none") { $4 = target_option } else { $4 = $4 "," target_option } } } print }' "$CRYPTTAB_FILE" > "$temp_file" } 2>&1) if cmp -s "$CRYPTTAB_FILE" "$temp_file"; then dinfo "No changes were needed. $CRYPTTAB_FILE is already up to date." rm "$temp_file" return 0 else mv "$temp_file" "$CRYPTTAB_FILE" restorecon "$CRYPTTAB_FILE" dinfo "Success! $CRYPTTAB_FILE has been updated." # Parse status updates and report on each changed UUID while IFS=: read -r _ status uuid; do if [[ $status == "ADDED" ]]; then dinfo " - Added link-volume-key for UUID: $uuid" elif [[ $status == "REPLACED" ]]; then dinfo " - Replaced link-volume-key for UUID: $uuid" fi done < <(echo "$status_updates" | grep "STATUS:") dinfo "If the dump target is rootfs and you call this command manually, you will need to run 'dracut -f --regenerate-all' to regenerate initramfs." return 0 fi } reload() { if ! is_kernel_loaded "$DEFAULT_DUMP_MODE"; then dwarn "Kdump was not running: [WARNING]" fi if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then reload_fadump return else if ! stop_kdump; then derror "Stopping kdump: [FAILED]" return 1 fi fi dinfo "Stopping kdump: [OK]" if ! setup_initrd; then derror "Starting kdump: [FAILED]" return 1 fi if ! start_dump; then derror "Starting kdump: [FAILED]" return 1 fi dinfo "Starting kdump: [OK]" } stop_fadump() { echo 0 > "$FADUMP_REGISTER_SYS_NODE" if is_kernel_loaded "fadump"; then derror "fadump: failed to unregister" return 1 fi dinfo "fadump: unregistered successfully" return 0 } stop_kdump() { if is_secure_boot_enforced; then $KEXEC -s -p -u else $KEXEC -p -u fi # shellcheck disable=SC2181 if [[ $? != 0 ]]; then derror "kexec: failed to unload kdump kernel" return 1 fi dinfo "kexec: unloaded kdump kernel" return 0 } reload_fadump() { fadump_bootargs_append if echo 1 > "$FADUMP_REGISTER_SYS_NODE"; then dinfo "fadump: re-registered successfully" return 0 else # FADump could fail on older kernel where re-register # support is not enabled. Try stop/start from userspace # to handle such scenario. if stop_fadump; then start_fadump return fi fi return 1 } stop() { if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then stop_fadump else stop_kdump fi # shellcheck disable=SC2181 if [[ $? != 0 ]]; then derror "Stopping kdump: [FAILED]" return 1 fi dinfo "Stopping kdump: [OK]" return 0 } rebuild() { check_config || return 1 if check_ssh_config; then if ! check_ssh_target; then return 1 fi fi setup_initrd || return 1 dinfo "Rebuilding $TARGET_INITRD" rebuild_initrd } check_vmlinux() { # Use readelf to check if it's a valid ELF readelf -h "$1" &> /dev/null || return 1 } get_vmlinux_size() { local size=0 _msize while read -r _msize; do size=$((size + _msize)) done <<< "$(readelf -l -W "$1" | awk '/^ LOAD/{print $6}' 2> /dev/stderr)" echo $size } try_decompress() { # The obscure use of the "tr" filter is to work around older versions of # "grep" that report the byte offset of the line instead of the pattern. # Try to find the header ($1) and decompress from here for pos in $(tr "$1\n$2" "\n$2=" < "$4" | grep -abo "^$2"); do if ! type -P "$3" > /dev/null; then ddebug "Signiature detected but '$3' is missing, skip this decompressor" break fi pos=${pos%%:*} tail "-c+$pos" "$img" | $3 > "$5" 2> /dev/null if check_vmlinux "$5"; then ddebug "Kernel is extracted with '$3'" return 0 fi done return 1 } # Borrowed from linux/scripts/extract-vmlinux get_kernel_size() { # Prepare temp files: local tmp img=$1 tmp="$KDUMP_TMPDIR/vmlinux" # Try to check if it's a vmlinux already check_vmlinux "$img" && get_vmlinux_size "$img" && return 0 # That didn't work, so retry after decompression. try_decompress '\037\213\010' xy gunzip "$img" "$tmp" || try_decompress '\3757zXZ\000' abcde unxz "$img" "$tmp" || try_decompress 'BZh' xy bunzip2 "$img" "$tmp" || try_decompress '\135\0\0\0' xxx unlzma "$img" "$tmp" || try_decompress '\211\114\132' xy 'lzop -d' "$img" "$tmp" || try_decompress '\002!L\030' xxx 'lz4 -d' "$img" "$tmp" || try_decompress '(\265/\375' xxx unzstd "$img" "$tmp" # Finally check for uncompressed images or objects: [[ $? -eq 0 ]] && get_vmlinux_size "$tmp" && return 0 # Fallback to use iomem local _size=0 _seg while read -r _seg; do _size=$((_size + 0x${_seg#*-} - 0x${_seg%-*})) done <<< "$(grep -E "Kernel (code|rodata|data|bss)" /proc/iomem | cut -d ":" -f 1)" echo $_size } do_estimate() { local kdump_mods local -A large_mods local baseline local kernel_size mod_size initrd_size baseline_size runtime_size reserved_size estimated_size recommended_size _cryptsetup_overhead local size_mb=$((1024 * 1024)) setup_initrd if [[ ! -f $TARGET_INITRD ]]; then derror "kdumpctl estimate: kdump initramfs is not built yet." exit 1 fi kdump_mods="$(lsinitrd "$TARGET_INITRD" -f /usr/lib/dracut/hostonly-kernel-modules.txt | tr '\n' ' ')" baseline=$(kdump_get_arch_recommend_size) if [[ ${baseline: -1} == "M" ]]; then baseline=${baseline%M} elif [[ ${baseline: -1} == "G" ]]; then baseline=$((${baseline%G} * 1024)) elif [[ ${baseline: -1} == "T" ]]; then baseline=$((${baseline%Y} * 1048576)) fi # The default pre-reserved crashkernel value baseline_size=$((baseline * size_mb)) # Current reserved crashkernel size reserved_size=$(get_reserved_mem_size) # A pre-estimated value for userspace usage and kernel # runtime allocation, 64M should good for most cases runtime_size=$((64 * size_mb)) # Kernel image size kernel_size=$(get_kernel_size "$KDUMP_KERNEL") # Kdump initramfs size initrd_size=$(du -b "$TARGET_INITRD" | awk '{print $1}') # Kernel modules static size after loaded mod_size=0 while read -r _name _size _; do if [[ " $kdump_mods " != *" $_name "* ]]; then continue fi mod_size=$((mod_size + _size)) # Mark module with static size larger than 2M as large module if [[ $((_size / size_mb)) -ge 1 ]]; then large_mods[$_name]=$_size fi done <<< "$(< /proc/modules)" # Extra memory usage required for LUKS2 decryption crypt_size=0 for _dev in $(get_all_kdump_crypt_dev); do _crypt_info=$(cryptsetup luksDump "/dev/block/$_dev") [[ $(echo "$_crypt_info" | sed -n "s/^Version:\s*\(.*\)/\1/p") == "2" ]] || continue for _mem in $(echo "$_crypt_info" | sed -n "s/\sMemory:\s*\(.*\)/\1/p" | sort -n -r); do crypt_size=$((crypt_size + _mem * 1024)) break done done if [[ $crypt_size -ne 0 ]]; then if [[ $(uname -m) == aarch64 ]]; then _cryptsetup_overhead=50 else _cryptsetup_overhead=20 fi crypt_size=$((crypt_size + _cryptsetup_overhead * size_mb)) echo -e "Encrypted kdump target requires extra memory, assuming using the keyslot with maximum memory requirement\n" fi estimated_size=$((kernel_size + mod_size + initrd_size + runtime_size + crypt_size)) if [[ $baseline_size -gt $estimated_size ]]; then recommended_size=$baseline_size else recommended_size=$estimated_size fi echo "Reserved crashkernel: $((reserved_size / size_mb))M" echo "Recommended crashkernel: $((recommended_size / size_mb))M" echo echo "Kernel image size: $((kernel_size / size_mb))M" echo "Kernel modules size: $((mod_size / size_mb))M" echo "Initramfs size: $((initrd_size / size_mb))M" echo "Runtime reservation: $((runtime_size / size_mb))M" [[ $crypt_size -ne 0 ]] && echo "LUKS required size: $((crypt_size / size_mb))M" echo -n "Large modules:" if [[ ${#large_mods[@]} -eq 0 ]]; then echo " <none>" else echo "" for _mod in "${!large_mods[@]}"; do echo " $_mod: ${large_mods[$_mod]}" done fi if [[ $reserved_size -lt $recommended_size ]]; then echo "WARNING: Current crashkernel size is lower than recommended size $((recommended_size / size_mb))M." fi } get_default_crashkernel() { local _dump_mode=$1 kdump_get_arch_recommend_crashkernel "$_dump_mode" } # Read kernel cmdline parameter for a specific kernel # $1: kernel path, DEFAULT or kernel path, ALL not accepted # $2: kernel cmldine parameter get_grub_kernel_boot_parameter() { local _kernel_path=$1 _para=$2 [[ $_kernel_path == ALL ]] && derror "kernel_path=ALL invalid for get_grub_kernel_boot_parameter" && return 1 grubby --info="$_kernel_path" | sed -En -e "/^args=.*$/{s/^.*(\s|\")${_para}=(\S*).*\"$/\2/p;q}" } # get dump mode by fadump value # return # - fadump, if fadump=on or fadump=nocma # - kdump, if fadump=off or empty fadump, return kdump # - error if otherwise get_dump_mode_by_fadump_val() { local _fadump_val=$1 if [[ -z $_fadump_val ]] || [[ $_fadump_val == off ]]; then echo -n kdump elif [[ $_fadump_val == on ]] || [[ $_fadump_val == nocma ]]; then echo -n fadump else derror "invalid fadump=$_fadump_val" return 1 fi } # get dump mode of a specific kernel # based on its fadump kernel cmdline parameter get_dump_mode_by_kernel() { local _kernel_path=$1 _fadump_val _dump_mode _fadump_val=$(get_grub_kernel_boot_parameter "$_kernel_path" fadump) if _dump_mode=$(get_dump_mode_by_fadump_val "$_fadump_val"); then echo -n "$_dump_mode" else derror "failed to get dump mode for kernel $_kernel_path" exit fi } _filter_grubby_kernel_str() { local _grubby_kernel_str=$1 echo -n "$_grubby_kernel_str" | sed -n -e 's/^kernel="\(.*\)"/\1/p' } _find_kernel_path_by_release() { local _release="$1" _grubby_kernel_str _kernel_path # Insert '/' before '+' to cope with grep's EREs _release=${_release//+/\\+} _grubby_kernel_str=$(grubby --info ALL | grep -E "^kernel=.*$_release(\/\w+)?\"$") _kernel_path=$(_filter_grubby_kernel_str "$_grubby_kernel_str") if [[ -z $_kernel_path ]]; then ddebug "kernel $_release doesn't exist" return 1 fi echo -n "$_kernel_path" } _get_current_running_kernel_path() { local _release _path _release=$(uname -r) if _path=$(_find_kernel_path_by_release "$_release"); then echo -n "$_path" else return 1 fi } _update_kernel_cmdline() { local _kernel_path=$1 _crashkernel=$2 _dump_mode=$3 _fadump_val=$4 if is_ostree; then if rpm-ostree kargs | grep -q "crashkernel="; then rpm-ostree kargs --replace="crashkernel=$_crashkernel" else rpm-ostree kargs --append="crashkernel=$_crashkernel" fi else grubby --args "crashkernel=$_crashkernel" --update-kernel "$_kernel_path" if [[ $_dump_mode == kdump ]]; then grubby --remove-args="fadump" --update-kernel "$_kernel_path" else grubby --args="fadump=$_fadump_val" --update-kernel "$_kernel_path" fi fi [[ -f /etc/zipl.conf ]] && zipl > /dev/null } _valid_grubby_kernel_path() { [[ -n "$1" ]] && grubby --info="$1" > /dev/null 2>&1 } # return all the kernel paths given a grubby kernel-path # # $1: kernel path accepted by grubby, e.g. DEFAULT, ALL, # /boot/vmlinuz-`uname -r` # return: kernel paths separated by space _get_all_kernels_from_grubby() { local _kernels _line _kernel_path _grubby_kernel_path=$1 for _line in $(grubby --info "$_grubby_kernel_path" | grep "^kernel="); do _kernel_path=$(_filter_grubby_kernel_str "$_line") _kernels="$_kernels $_kernel_path" done echo -n "$_kernels" } GRUB_ETC_DEFAULT="/etc/default/grub" # Update a kernel parameter in default grub conf # # If a value is specified, it will be inserted in the end. Otherwise it # would remove given kernel parameter. # # Note this function doesn't address the following cases, # 1. The kernel ignores everything on the command line after a '--'. So # simply adding the new entry to the end will fail if the cmdline # contains a --. # 2. If the value for a parameter contains spaces it can be quoted using # double quotes, for example param="value with spaces". This will # break the [^[:space:]\"] regex for the value. # 3. Dashes and underscores in the parameter name are equivalent. So # some_parameter and some-parameter are identical. # 4. Some parameters, e.g. efivar_ssdt, can be given multiple times. # 5. Some kernel parameters, e.g. quiet, doesn't have value # # $1: the name of the kernel command line parameter # $2: new value. If empty, given parameter would be removed _update_kernel_arg_in_grub_etc_default() { local _para=$1 _val=$2 _para_val if [[ $(uname -m) == s390x ]]; then return fi if [[ -n $_val ]]; then _para_val="$_para=$_val" fi # Update the command line /etc/default/grub, i.e. # on the line that starts with 'GRUB_CMDLINE_LINUX=', # 1) remove $para=$val if the it's the first arg # 2) remove all occurences of $para=$val # 3) insert $_para_val to end # 4) remove duplicate spaces left over by 1) or 2) or 3) # 5) remove space at the beginning of the string left over by 1) or 2) or 3) # 6) remove space at the end of the string left over by 1) or 2) or 3) sed -i -E "/^GRUB_CMDLINE_LINUX=/ { s/\"${_para}=[^[:space:]\"]*/\"/g; s/[[:space:]]+${_para}=[^[:space:]\"]*/ /g; s/\"$/ ${_para_val}\"/ s/[[:space:]]+/ /g; s/(\")[[:space:]]+/\1/g; s/[[:space:]]+(\")/\1/g; }" "$GRUB_ETC_DEFAULT" } # Read the kernel arg in default grub conf. # Note reading a kernel parameter that doesn't have a value isn't supported. # # $1: the name of the kernel command line parameter _read_kernel_arg_in_grub_etc_default() { sed -n -E "s/^GRUB_CMDLINE_LINUX=.*[[:space:]\"]${1}=([^[:space:]\"]*).*$/\1/p" "$GRUB_ETC_DEFAULT" } reset_crashkernel() { local _opt _val _dump_mode _fadump_val _reboot _grubby_kernel_path _kernel _kernels local _old_crashkernel _new_crashkernel _new_dump_mode _crashkernel_changed local _new_fadump_val _old_fadump_val _what_is_updated for _opt in "$@"; do case "$_opt" in --fadump=*) _val=${_opt#*=} if _dump_mode=$(get_dump_mode_by_fadump_val $_val); then _fadump_val=$_val else derror "failed to determine dump mode" exit fi ;; --kernel=*) _val=${_opt#*=} if ! _valid_grubby_kernel_path $_val; then derror "Invalid $_opt, please specify a valid kernel path, ALL or DEFAULT" exit fi _grubby_kernel_path=$_val ;; --reboot) # --reboot option was deprecated with # kdump-utils v1.0.45. Keep the code for now to # not break any user setup. dwarn "Option --reboot is deprecated and will be removed in RHEL11." _reboot=yes ;; *) derror "$_opt not recognized" exit 1 ;; esac done # 1. OSTree systems use "rpm-ostree kargs" instead of grubby to manage kernel command # line. --kernel=ALL doesn't make sense for OStree. # 2. We don't have any OSTree POWER systems so the dump mode is always kdump. # 3. "rpm-ostree kargs" would prompt the user to reboot the system after # modifying the kernel command line so there is no need for kexec-tools # to repeat it. if is_ostree; then _old_crashkernel=$(rpm-ostree kargs | sed -n -E 's/.*(^|\s)crashkernel=(\S*).*/\2/p') _new_dump_mode=kdump _new_crashkernel=$(kdump_get_arch_recommend_crashkernel "$_new_dump_mode") if [[ $_old_crashkernel != "$_new_crashkernel" ]]; then _update_kernel_cmdline "" "$_new_crashkernel" "$_new_dump_mode" "" if [[ $_reboot == yes ]]; then systemctl reboot fi fi return fi # For non-ppc64le systems, the dump mode is always kdump since only ppc64le # has FADump. if [[ -z $_dump_mode && $(uname -m) != ppc64le ]]; then _dump_mode=kdump _fadump_val=off fi # If the dump mode is determined, we can also know the default crashkernel value if [[ -n $_dump_mode ]]; then _crashkernel=$(kdump_get_arch_recommend_crashkernel "$_dump_mode") fi # If --kernel-path=ALL, update GRUB_CMDLINE_LINUX in /etc/default/grub. # # An exception case is when the ppc64le user doesn't specify the fadump value. # In this case, the dump mode would be determined by parsing the kernel # command line of the kernel(s) to be updated thus don't update GRUB_CMDLINE_LINUX. # # The following code has been simplified because of what has been done early, # - set the dump mode as kdump for non-ppc64le cases # - retrieved the default crashkernel value for given dump mode if [[ $_grubby_kernel_path == ALL && -n $_dump_mode ]]; then _update_kernel_arg_in_grub_etc_default crashkernel "$_crashkernel" # remove the fadump if fadump is disabled if [[ $_fadump_val == off ]]; then _fadump_val="" fi _update_kernel_arg_in_grub_etc_default fadump "$_fadump_val" fi # If kernel-path not specified, either # - use KDUMP_KERNELVER if it's defined # - use current running kernel if [[ -z $_grubby_kernel_path ]]; then if [[ -z $KDUMP_KERNELVER ]] || ! _kernel_path=$(_find_kernel_path_by_release "$KDUMP_KERNELVER"); then if ! _kernel_path=$(_get_current_running_kernel_path); then derror "no running kernel found" exit 1 fi fi _kernels=$_kernel_path else _kernels=$(_get_all_kernels_from_grubby "$_grubby_kernel_path") fi for _kernel in $_kernels; do if [[ -z $_dump_mode ]]; then _new_dump_mode=$(get_dump_mode_by_kernel "$_kernel") _new_crashkernel=$(kdump_get_arch_recommend_crashkernel "$_new_dump_mode") _new_fadump_val=$(get_grub_kernel_boot_parameter "$_kernel" fadump) else _new_dump_mode=$_dump_mode _new_crashkernel=$_crashkernel _new_fadump_val=$_fadump_val fi _old_crashkernel=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel) _old_fadump_val=$(get_grub_kernel_boot_parameter "$_kernel" fadump) [[ "$_new_fadump_val" == off ]] && _new_fadump_val="" if [[ $_old_crashkernel != "$_new_crashkernel" || $_old_fadump_val != "$_new_fadump_val" ]]; then _update_kernel_cmdline "$_kernel" "$_new_crashkernel" "$_new_dump_mode" "$_new_fadump_val" if [[ $_reboot != yes ]]; then if [[ $_old_crashkernel != "$_new_crashkernel" ]]; then _what_is_updated="Updated crashkernel=$_new_crashkernel" else # This case happens only when switching between fadump=on and fadump=nocma _what_is_updated="Updated fadump=$_new_fadump_val" fi dwarn "$_what_is_updated for kernel=$_kernel. Please reboot the system for the change to take effect." fi _crashkernel_changed=yes fi done if [[ $_reboot == yes && $_crashkernel_changed == yes ]]; then reboot fi } _is_bootloader_installed() { if [[ $(uname -m) == s390x ]]; then test -f /etc/zipl.conf else test -f /boot/grub2/grub.cfg fi } _update_crashkernel() { local _kernel _kver _dump_mode _old_default_crashkernel _new_default_crashkernel _fadump_val _msg _kernel=$1 _dump_mode=$(get_dump_mode_by_kernel "$_kernel") _old_default_crashkernel=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel) _kver=$(parse_kver_from_path "$_kernel") # The second argument is for the case of aarch64, where installing a 64k variant on a 4k kernel, or vice versa _new_default_crashkernel=$(kdump_get_arch_recommend_crashkernel "$_dump_mode" "$_kver") if [[ $_old_default_crashkernel != "$_new_default_crashkernel" ]]; then _fadump_val=$(get_grub_kernel_boot_parameter "$_kernel" fadump) if _update_kernel_cmdline "$_kernel" "$_new_default_crashkernel" "$_dump_mode" "$_fadump_val"; then _msg="For kernel=$_kernel, crashkernel=$_new_default_crashkernel now. Please reboot the system for the change to take effet." _msg+=" Note if you don't want kexec-tools to manage the crashkernel kernel parameter, please set auto_reset_crashkernel=no in /etc/kdump.conf." dinfo "$_msg" fi fi } # shellcheck disable=SC2154 # false positive when dereferencing an array reset_crashkernel_after_update() { local _kernel if ! _is_bootloader_installed; then return fi for _kernel in $(_get_all_kernels_from_grubby ALL); do _update_crashkernel "$_kernel" done } # read the value of an environ variable from given environ file path # # The environment variable entries in /proc/[pid]/environ are separated # by null bytes instead of by spaces. # # $1: environment variable # $2: environ file path read_proc_environ_var() { local _var=$1 _environ_path=$2 sed -n -E "s/.*(^|\x00)${_var}=([^\x00]*).*/\2/p" < "$_environ_path" } _OSBUILD_ENVIRON_PATH='/proc/1/environ' _is_osbuild() { [[ $(read_proc_environ_var container "$_OSBUILD_ENVIRON_PATH") == bwrap-osbuild ]] } reset_crashkernel_for_installed_kernel() { local _installed_kernel # During package install, only try to reset crashkernel for osbuild # thus to avoid calling grubby when installing os via anaconda if ! _is_bootloader_installed && ! _is_osbuild; then return fi if ! _installed_kernel=$(_find_kernel_path_by_release "$1"); then exit 1 fi if _is_osbuild; then if ! grep -qs crashkernel= /etc/kernel/cmdline; then reset_crashkernel "--kernel=$_installed_kernel" fi return fi _update_crashkernel "$_installed_kernel" } if [[ ! -f $KDUMP_CONFIG_FILE ]]; then derror "Error: No kdump config file found!" exit 1 fi set_kdump_test_id() { local _id=$1 KDUMP_COMMANDLINE_APPEND+=" $_id " if ! reload >& /dev/null; then derror "Set kdump test id fail." exit 1 fi } # $1: success/fail/pending/manual/clear # $2: test id set_vmcore_creation_status() { local _status=$1 local _kdump_test_id _dir=$(dirname "$VMCORE_CREATION_STATUS") [[ -d "$_dir" ]] || mkdir -p "$_dir" [[ -w "$_dir" ]] || chmod +w "$_dir" case "$_status" in pending) _kdump_test_id="kdump_test_id=$(date +%s-%N)" set_kdump_test_id "$_kdump_test_id" echo "$_status $_kdump_test_id" > "$VMCORE_CREATION_STATUS" ;; success | fail | manual) sed -E -i "s/^\w+/$_status/" "$VMCORE_CREATION_STATUS" ;; clear) rm -f "$VMCORE_CREATION_STATUS" ;; *) return esac sync -f "$_dir" } fetch_status() { local _test_id="$1" _mnt local _status _target is_raw_dump_target && return 2 _status="$(get_save_path)/kdump-test-$_test_id/vmcore-creation.status" if is_nfs_dump_target || is_fs_dump_target; then if is_fs_dump_target; then _target=$(fs_dump_target) else _target=$(kdump_get_conf_val nfs) fi _mnt=$(get_mntpoint_from_target "$_target") if [[ -z "$_mnt" ]] || ! is_mounted "$_mnt"; then mkdir -p "$TMPMNT" mount "$_target" "$TMPMNT" -o defaults || \ { dwarn "Failed to mount $_target" && return 2; } _mnt="$TMPMNT" fi _status="$_mnt/$_status" elif is_ssh_dump_target; then local _scp_address if is_ipv6_address "${OPT[_target]}"; then _scp_address="${OPT[_target]%@*}@[${OPT[_target]#*@}]" else _scp_address="${OPT[_target]}" fi scp -q -i "${OPT[sshkey]}" -o BatchMode=yes \ "$_scp_address:$_status" \ "$KDUMP_TMPDIR" case "$?" in 0) # success ;; 1) # file not found return 1 ;; 255) # no connection to host return 2 esac _status="$KDUMP_TMPDIR/vmcore-creation.status" fi [[ -f "$_status" ]] || return 1 grep -q "success" "$_status" && return 0 || return 1 } check_vmcore_creation_status() { local _status _test_id _timestamp _status_date [[ ${VMCORE_CREATION_NOTIFICATION,,} == "yes" ]] || return [[ "$DEFAULT_DUMP_MODE" == "kdump" ]] || return if [[ ! -s "$VMCORE_CREATION_STATUS" ]]; then dwarn "Notice: No vmcore creation test performed!" return fi read -r _status _test_id < "$VMCORE_CREATION_STATUS" _test_id=${_test_id#*=} _timestamp=${_test_id%-*} _status_date=$(date -d "@$_timestamp") if [[ "$_status" == "pending" ]]; then fetch_status "$_test_id" case "$?" in 0) _status="success" ;; 1) _status="fail" ;; *) _status="manual" ;; esac set_vmcore_creation_status "$_status" fi case "$_status" in success) dinfo "Notice: Last successful vmcore creation on $_status_date" ;; fail) dwarn "Notice: Last NOT successful vmcore creation on $_status_date" ;; manual) dwarn "Notice: Require manual check for kdump test of $_status_date" ;; *) derror "Unknown test status: $_status" ;; esac } kdump_test() { if ! is_kernel_loaded "$DEFAULT_DUMP_MODE"; then derror "Kdump needs be operational before test." exit 1 fi if [[ ! "$DEFAULT_DUMP_MODE" == "kdump" ]]; then derror "Only kdump is supported for test." exit 1 fi if [[ ! "$1" == "--force" ]]; then read -r -p "DANGER!!! Will perform a kdump test by crashing the system, proceed? (y/N): " input case $input in [Yy] ) dinfo "Start kdump test..." ;; * ) dinfo "Operation cancelled." exit 0 ;; esac fi set_vmcore_creation_status 'pending' echo c > /proc/sysrq-trigger } main() { # Determine if the dump mode is kdump or fadump determine_dump_mode case "$1" in start) if [[ -s /proc/vmcore ]]; then save_core reboot else start fi ;; stop) stop ;; status) EXIT_CODE=0 is_kernel_loaded "$DEFAULT_DUMP_MODE" case "$?" in 0) dinfo "Kdump is operational" EXIT_CODE=0 ;; 1) dinfo "Kdump is not operational" EXIT_CODE=3 ;; esac check_vmcore_creation_status exit $EXIT_CODE ;; reload) reload ;; restart) stop start ;; rebuild) rebuild ;; condrestart) ;; propagate) propagate_ssh_key ;; showmem) show_reserved_mem ;; estimate) do_estimate ;; get-default-crashkernel) get_default_crashkernel "$2" ;; reset-crashkernel) shift reset_crashkernel "$@" ;; test) shift kdump_test "$@" ;; _reset-crashkernel-after-update) if [[ $(kdump_get_conf_val auto_reset_crashkernel) != no ]]; then reset_crashkernel_after_update fi ;; _reset-crashkernel-for-installed_kernel) if [[ $(kdump_get_conf_val auto_reset_crashkernel) != no ]]; then reset_crashkernel_for_installed_kernel "$2" fi ;; setup-crypttab) setup_crypttab ;; *) dinfo $"Usage: $0 {estimate|start|stop|status|restart|reload|rebuild|reset-crashkernel|propagate|showmem|test|setup-crypttab}" exit 1 ;; esac } # Other kdumpctl instances will block in queue, until this one exits single_instance_lock # To avoid fd 9 leaking, we invoke a subshell, close fd 9 and call main. # So that fd isn't leaking when main is invoking a subshell. ( exec 9<&- main "$@" )