X7ROOT File Manager
Current Path:
/usr/bin
usr
/
bin
/
📁
..
📄
2to3
(106 B)
📄
2to3-3.6
(106 B)
📄
GET
(15.84 KB)
📄
HEAD
(15.84 KB)
📄
Magick-config
(1.43 KB)
📄
MagickCore-config
(1.56 KB)
📄
MagickWand-config
(1.56 KB)
📄
Mail
(408.89 KB)
📄
POST
(15.84 KB)
📄
Wand-config
(1.42 KB)
📄
[
(53.67 KB)
📄
ab
(72.63 KB)
📄
ac
(33.07 KB)
📄
aclocal
(35.62 KB)
📄
aclocal-1.16
(35.62 KB)
📄
acyclic
(12.41 KB)
📄
addr2line
(33.41 KB)
📄
agentxtrap
(24.53 KB)
📄
alias
(29 B)
📄
alt-mysql-reconfigure
(21.16 KB)
📄
alt-php-mysql-reconfigure
(21.16 KB)
📄
alt-php-mysql-reconfigure.py
(21.16 KB)
📄
animate
(11.84 KB)
📄
apropos
(54.04 KB)
📄
ar
(61.96 KB)
📄
arch
(37.41 KB)
📄
aria_chk
(4.53 MB)
📄
aria_dump_log
(4.33 MB)
📄
aria_ftdump
(4.34 MB)
📄
aria_pack
(4.37 MB)
📄
aria_read_log
(4.49 MB)
📄
arpaname
(11.82 KB)
📄
as
(889.91 KB)
📄
aspell
(159.5 KB)
📄
at
(57.33 KB)
📄
atop
(284.66 KB)
📄
atopconvert
(24.66 KB)
📄
atopd
(922 B)
📄
atopsar
(284.66 KB)
📄
atq
(57.33 KB)
📄
atrm
(57.33 KB)
📄
attr
(13.06 KB)
📄
aulast
(20.58 KB)
📄
aulastlog
(12.44 KB)
📄
ausyscall
(12.27 KB)
📄
authselect
(41.13 KB)
📄
autoconf
(14.42 KB)
📄
autoheader
(8.33 KB)
📄
autom4te
(31.43 KB)
📄
automake
(251.9 KB)
📄
automake-1.16
(251.9 KB)
📄
autopoint
(25.95 KB)
📄
autoreconf
(20.57 KB)
📄
autoscan
(16.72 KB)
📄
autoupdate
(33.08 KB)
📄
auvirt
(32.73 KB)
📄
awk
(669.77 KB)
📄
b2sum
(57.76 KB)
📄
base32
(41.55 KB)
📄
base64
(41.56 KB)
📄
basename
(37.49 KB)
📄
bash
(1.1 MB)
📄
bashbug
(7.18 KB)
📄
bashbug-64
(7.18 KB)
📄
batch
(137 B)
📄
bc
(94.98 KB)
📄
bcomps
(20.62 KB)
📄
bdftopcf
(45.4 KB)
📄
bg
(26 B)
📄
bind9-config
(3.33 KB)
📄
bison
(437.72 KB)
📄
blkiomon
(25.7 KB)
📄
blkparse
(51.39 KB)
📄
blkrawverify
(16.4 KB)
📄
blktrace
(43.07 KB)
📄
bno_plot.py
(3.47 KB)
📄
bond2team
(22.74 KB)
📄
bootctl
(45.15 KB)
📄
brotli
(739.2 KB)
📄
btrace
(891 B)
📄
btrecord
(17.39 KB)
📄
btreplay
(29.72 KB)
📄
btt
(80.84 KB)
📄
bunzip2
(36.86 KB)
📄
busctl
(77.26 KB)
📄
bzcat
(36.86 KB)
📄
bzcmp
(2.08 KB)
📄
bzdiff
(2.08 KB)
📄
bzegrep
(1.64 KB)
📄
bzfgrep
(1.64 KB)
📄
bzgrep
(1.64 KB)
📄
bzip2
(36.86 KB)
📄
bzip2recover
(16.44 KB)
📄
bzless
(1.23 KB)
📄
bzmore
(1.23 KB)
📄
c++
(1.21 MB)
📄
c++filt
(28.89 KB)
📄
c89
(224 B)
📄
c99
(215 B)
📄
ca-legacy
(1.61 KB)
📄
cairo-sphinx
(69.71 KB)
📄
cal
(65.98 KB)
📄
captoinfo
(85.31 KB)
📄
cat
(37.54 KB)
📄
catchsegv
(3.21 KB)
📄
catman
(41.45 KB)
📄
cc
(1.21 MB)
📄
ccomps
(24.72 KB)
📄
cd
(26 B)
📄
centrino-decode
(11.27 KB)
📄
certutil
(195.26 KB)
📄
chacl
(16.36 KB)
📄
chage
(77.68 KB)
📄
chardetect
(400 B)
📄
chattr
(16.41 KB)
📄
chcon
(70.43 KB)
📄
chfn
(32.89 KB)
📄
chgrp
(66.35 KB)
📄
chmem
(45.47 KB)
📄
chmod
(62.29 KB)
📄
chown
(70.39 KB)
📄
chronyc
(127.6 KB)
📄
chrt
(37.18 KB)
📄
chsh
(24.71 KB)
📄
chvt
(12.53 KB)
📄
cifsiostat
(41.35 KB)
📄
circo
(12.26 KB)
📄
cksum
(37.46 KB)
📄
cl-linksafe-reconfigure
(4.83 KB)
📄
clear
(12.54 KB)
📄
cluster
(518.33 KB)
📄
cmp
(103.76 KB)
📄
cmsutil
(118.27 KB)
📄
col
(29 KB)
📄
colcrt
(16.48 KB)
📄
colrm
(24.88 KB)
📄
column
(49.47 KB)
📄
comm
(41.63 KB)
📄
command
(31 B)
📄
compare
(11.85 KB)
📄
compile_et
(1.31 KB)
📄
composite
(11.84 KB)
📄
config_data
(6.97 KB)
📄
conjure
(11.84 KB)
📄
convert
(11.84 KB)
📄
coredumpctl
(44.91 KB)
📄
corelist
(14.64 KB)
📄
cp
(148.05 KB)
📄
cpan
(8.17 KB)
📄
cpan-mirrors
(4.19 KB)
📄
cpapi1
(3.18 MB)
📄
cpapi2
(3.18 MB)
📄
cpapi3
(3.18 MB)
📄
cpio
(159.8 KB)
📄
cpp
(1.21 MB)
📄
cpupower
(66.91 KB)
📄
crb
(2.58 KB)
📄
crc32
(1.02 KB)
📄
crlutil
(134.74 KB)
📄
cronnext
(49.8 KB)
📄
crontab
(61.67 KB)
📄
csplit
(53.76 KB)
📄
csslint-0.6
(24.56 KB)
📄
curl
(230.09 KB)
📄
cut
(49.59 KB)
📄
cvtsudoers
(284.13 KB)
📄
cxpm
(29.11 KB)
📄
date
(106.03 KB)
📄
db_archive
(12.45 KB)
📄
db_checkpoint
(16.48 KB)
📄
db_deadlock
(16.48 KB)
📄
db_dump
(16.51 KB)
📄
db_dump185
(69.55 KB)
📄
db_hotbackup
(20.49 KB)
📄
db_load
(28.61 KB)
📄
db_log_verify
(16.52 KB)
📄
db_printlog
(33.4 KB)
📄
db_recover
(16.51 KB)
📄
db_replicate
(16.49 KB)
📄
db_stat
(16.48 KB)
📄
db_tuner
(24.55 KB)
📄
db_upgrade
(12.45 KB)
📄
db_verify
(16.46 KB)
📄
dbilogstrip
(1.35 KB)
📄
dbiprof
(6.06 KB)
📄
dbus-binding-tool
(110.43 KB)
📄
dbus-cleanup-sockets
(16.38 KB)
📄
dbus-daemon
(239.76 KB)
📄
dbus-monitor
(28.63 KB)
📄
dbus-run-session
(15.95 KB)
📄
dbus-send
(28.6 KB)
📄
dbus-test-tool
(24.66 KB)
📄
dbus-update-activation-environment
(16.47 KB)
📄
dbus-uuidgen
(12.37 KB)
📄
dc
(53.02 KB)
📄
dd
(78.05 KB)
📄
deallocvt
(12.54 KB)
📄
debuginfo-install
(3.62 KB)
📄
debuginfod-find
(16.47 KB)
📄
delv
(42.46 KB)
📄
desktop-file-edit
(95.45 KB)
📄
desktop-file-install
(95.45 KB)
📄
desktop-file-validate
(83.61 KB)
📄
df
(91.16 KB)
📄
diff
(268.01 KB)
📄
diff3
(128.6 KB)
📄
diffimg
(12.27 KB)
📄
dig
(162.19 KB)
📄
dijkstra
(16.71 KB)
📄
dir
(139.97 KB)
📄
dircolors
(49.63 KB)
📄
dirmngr
(580.16 KB)
📄
dirmngr-client
(120.12 KB)
📄
dirname
(33.44 KB)
📄
display
(11.84 KB)
📄
dltest
(13.05 KB)
📄
dmesg
(77.88 KB)
📄
dnf
(2.05 KB)
📄
dnf-3
(2.05 KB)
📄
dnsdomainname
(21.16 KB)
📄
dnstap-read
(20.43 KB)
📄
domainname
(21.16 KB)
📄
dos2unix
(58.54 KB)
📄
dot
(12.26 KB)
📄
dot2gxl
(41.3 KB)
📄
dotty
(2.04 KB)
📄
doveadm
(983.31 KB)
📄
doveconf
(228.41 KB)
📄
dovecot-sysreport
(5.8 KB)
📄
dpkg
(316.17 KB)
📄
dpkg-deb
(165.5 KB)
📄
dpkg-divert
(157.75 KB)
📄
dpkg-maintscript-helper
(20.67 KB)
📄
dpkg-query
(165.84 KB)
📄
dpkg-realpath
(4.05 KB)
📄
dpkg-split
(132.39 KB)
📄
dpkg-statoverride
(66.41 KB)
📄
dpkg-trigger
(87.66 KB)
📄
dracut
(67.56 KB)
📄
dsync
(983.31 KB)
📄
dtrace
(17.39 KB)
📄
du
(107.1 KB)
📄
dumpkeys
(169.88 KB)
📄
dumpsexp
(16.43 KB)
📄
dwp
(2.13 MB)
📄
dwz
(167.64 KB)
📄
ea-php74
(6.09 MB)
📄
ea-php74-pear
(383 B)
📄
ea-php74-pecl
(299 B)
📄
ea-php80
(7.61 MB)
📄
ea-php80-pear
(383 B)
📄
ea-php80-pecl
(299 B)
📄
ea-php81
(7.72 MB)
📄
ea-php81-pear
(383 B)
📄
ea-php81-pecl
(299 B)
📄
ea-php82
(7.77 MB)
📄
ea-php82-pear
(383 B)
📄
ea-php82-pecl
(299 B)
📄
easy_install-2
(234 B)
📄
easy_install-2.7
(234 B)
📄
easy_install-3
(246 B)
📄
easy_install-3.6
(246 B)
📄
echo
(37.43 KB)
📄
ed
(57.28 KB)
📄
edgepaint
(420.79 KB)
📄
egrep
(28 B)
📄
eject
(57.78 KB)
📄
elfedit
(33.3 KB)
📄
elinks
(1.55 MB)
📄
enc2xs
(40.97 KB)
📄
encguess
(2.91 KB)
📄
enchant
(21.08 KB)
📄
enchant-2
(20.25 KB)
📄
enchant-lsmod
(13.09 KB)
📄
enchant-lsmod-2
(12.35 KB)
📄
env
(41.43 KB)
📄
envml
(4.1 KB)
📄
envsubst
(48.99 KB)
📄
eps2eps
(639 B)
📄
eqn
(232.16 KB)
📄
event_rpcgen.py
(54.26 KB)
📄
evmctl
(62.54 KB)
📄
ex
(1.13 MB)
📄
expand
(41.66 KB)
📄
expr
(49.65 KB)
📄
factor
(86.05 KB)
📄
fallocate
(28.96 KB)
📄
false
(33.39 KB)
📄
fc
(26 B)
📄
fc-cache
(132 B)
📄
fc-cache-64
(20.35 KB)
📄
fc-cat
(16.35 KB)
📄
fc-conflist
(12.25 KB)
📄
fc-list
(12.25 KB)
📄
fc-match
(16.26 KB)
📄
fc-pattern
(12.26 KB)
📄
fc-query
(12.24 KB)
📄
fc-scan
(12.26 KB)
📄
fc-validate
(16.26 KB)
📄
fdp
(12.26 KB)
📄
fg
(26 B)
📄
fgconsole
(12.55 KB)
📄
fgrep
(28 B)
📄
filan
(94.72 KB)
📄
file
(24.68 KB)
📄
fincore
(33.03 KB)
📄
find
(223.3 KB)
📄
find-repos-of-install
(3.62 KB)
📄
findmnt
(70.6 KB)
📄
fips-finish-install
(1.29 KB)
📄
fips-mode-setup
(3.91 KB)
📄
firewall-cmd
(139.6 KB)
📄
firewall-offline-cmd
(120.73 KB)
📄
flex
(428.45 KB)
📄
flex++
(428.45 KB)
📄
flock
(33.2 KB)
📄
fmt
(45.57 KB)
📄
fold
(41.48 KB)
📄
fonttosfnt
(41.18 KB)
📄
fprintd-delete
(77.29 KB)
📄
fprintd-enroll
(85.88 KB)
📄
fprintd-list
(77.27 KB)
📄
fprintd-verify
(81.38 KB)
📄
free
(20.79 KB)
📄
freetype-config
(4.31 KB)
📄
fribidi
(21.14 KB)
📄
ftp
(101.2 KB)
📄
funzip
(36.63 KB)
📄
g++
(1.21 MB)
📄
g13
(212.02 KB)
📄
galera_new_cluster
(917 B)
📄
galera_recovery
(3.29 KB)
📄
gapplication
(20.45 KB)
📄
garb-systemd
(1.2 KB)
📄
garbd
(1.65 MB)
📄
gawk
(669.77 KB)
📄
gc
(16.64 KB)
📄
gcc
(1.21 MB)
📄
gcc-ar
(36.66 KB)
📄
gcc-nm
(36.66 KB)
📄
gcc-ranlib
(36.66 KB)
📄
gcov
(1.31 MB)
📄
gcov-dump
(570.88 KB)
📄
gcov-tool
(607.75 KB)
📄
gdbm_dump
(21.05 KB)
📄
gdbm_load
(25.31 KB)
📄
gdbmtool
(111.57 KB)
📄
gdbus
(48.72 KB)
📄
gdk-pixbuf-query-loaders-64
(15.93 KB)
📄
gdk-pixbuf-thumbnailer
(20.45 KB)
📄
gdlib-config
(2.79 KB)
📄
gencat
(24.84 KB)
📄
genl-ctrl-list
(12.04 KB)
📄
geqn
(232.16 KB)
📄
getconf
(32.46 KB)
📄
getent
(33.13 KB)
📄
getfacl
(25.38 KB)
📄
getfattr
(23.03 KB)
📄
getkeycodes
(12.54 KB)
📄
getopt
(20.52 KB)
📄
getopts
(31 B)
📄
gettext
(48.97 KB)
📄
gettext.sh
(4.52 KB)
📄
gettextize
(42.69 KB)
📄
ghostscript
(12.35 KB)
📄
gio
(85.22 KB)
📄
gio-querymodules-64
(16.3 KB)
📄
git
(26.38 MB)
📄
git-receive-pack
(26.38 MB)
📄
git-shell
(15.79 MB)
📄
git-upload-archive
(26.38 MB)
📄
git-upload-pack
(26.38 MB)
📄
glib-compile-schemas
(48.85 KB)
📄
gmake
(235.32 KB)
📄
gml2gv
(41.23 KB)
📄
gneqn
(908 B)
📄
gnroff
(3.23 KB)
📄
gpasswd
(82.16 KB)
📄
gpg
(1.04 MB)
📄
gpg-agent
(419.29 KB)
📄
gpg-connect-agent
(165.3 KB)
📄
gpg-error
(34.16 KB)
📄
gpg-error-config
(2.26 KB)
📄
gpg-wks-server
(206.69 KB)
📄
gpg-zip
(3.44 KB)
📄
gpg2
(1.04 MB)
📄
gpgconf
(176.09 KB)
📄
gpgme-json
(85.68 KB)
📄
gpgparsemail
(28.74 KB)
📄
gpgrt-config
(2.26 KB)
📄
gpgsm
(514.45 KB)
📄
gpgsplit
(87.02 KB)
📄
gpgv
(451.58 KB)
📄
gpgv2
(451.58 KB)
📄
gpic
(293.84 KB)
📄
gpio-event-mon
(14.96 KB)
📄
gpio-hammer
(14.96 KB)
📄
gprof
(103.36 KB)
📄
gr2fonttest
(29.95 KB)
📄
graphml2gv
(20.65 KB)
📄
grep
(193.63 KB)
📄
groff
(124.92 KB)
📄
grops
(191.14 KB)
📄
grotty
(141.9 KB)
📄
groups
(37.47 KB)
📄
grub2-editenv
(448.09 KB)
📄
grub2-file
(928.48 KB)
📄
grub2-fstest
(1.15 MB)
📄
grub2-glue-efi
(279.35 KB)
📄
grub2-kbdcomp
(1.63 KB)
📄
grub2-menulst2cfg
(262.64 KB)
📄
grub2-mkfont
(312.09 KB)
📄
grub2-mkimage
(431.35 KB)
📄
grub2-mklayout
(285.46 KB)
📄
grub2-mknetdir
(485.73 KB)
📄
grub2-mkpasswd-pbkdf2
(291.84 KB)
📄
grub2-mkrelpath
(279.23 KB)
📄
grub2-mkrescue
(1.12 MB)
📄
grub2-mkstandalone
(594.47 KB)
📄
grub2-render-label
(937.11 KB)
📄
grub2-script-check
(315.96 KB)
📄
grub2-syslinux2cfg
(861.64 KB)
📄
gs
(12.35 KB)
📄
gsettings
(28.61 KB)
📄
gsnd
(277 B)
📄
gsoelim
(42.55 KB)
📄
gss-client
(24.56 KB)
📄
gtar
(448.99 KB)
📄
gtbl
(154.61 KB)
📄
gtk-query-immodules-2.0-64
(16.29 KB)
📄
gtk-update-icon-cache
(33.03 KB)
📄
gtroff
(805.02 KB)
📄
gunzip
(2.29 KB)
📄
gv2gml
(24.7 KB)
📄
gv2gxl
(41.3 KB)
📄
gvcolor
(46.9 KB)
📄
gvgen
(24.8 KB)
📄
gvmap
(526.31 KB)
📄
gvmap.sh
(2.14 KB)
📄
gvpack
(460.59 KB)
📄
gvpr
(7.83 KB)
📄
gxl2dot
(41.3 KB)
📄
gxl2gv
(41.3 KB)
📄
gzexe
(6.23 KB)
📄
gzip
(94.67 KB)
📄
h2ph
(28.69 KB)
📄
h2xs
(59.44 KB)
📄
hash
(28 B)
📄
head
(45.58 KB)
📄
hexdump
(57.5 KB)
📄
hmac256
(16.86 KB)
📄
host
(142.3 KB)
📄
hostid
(33.41 KB)
📄
hostname
(21.16 KB)
📄
hostnamectl
(20.83 KB)
📄
htdbm
(31.72 KB)
📄
htdigest
(21.71 KB)
📄
html2text
(406 B)
📄
htop
(304.73 KB)
📄
htpasswd
(31.55 KB)
📄
httxt2dbm
(21.1 KB)
📄
hunspell
(144.7 KB)
📄
i386
(20.76 KB)
📄
iceauth
(41.87 KB)
📄
iconv
(61.44 KB)
📄
id
(45.52 KB)
📄
identify
(11.84 KB)
📄
idiag-socket-details
(12.09 KB)
📄
idle2
(93 B)
📄
idle2.7
(93 B)
📄
idn
(39.41 KB)
📄
ifnames
(4.03 KB)
📄
iio_event_monitor
(22.98 KB)
📄
iio_generic_buffer
(26.98 KB)
📄
import
(11.84 KB)
📄
imunify-agent-proxy
(6.99 MB)
📄
imunify-antivirus
(1 KB)
📄
imunify-service
(1020 B)
📄
imunify360-agent
(1 KB)
📄
imunify360-command-wrapper
(8.4 KB)
📄
info
(249.89 KB)
📄
infocmp
(61.05 KB)
📄
infotocap
(85.31 KB)
📄
innochecksum
(3.59 MB)
📄
install
(156.25 KB)
📄
instmodsh
(4.1 KB)
📄
intel-speed-select
(93.02 KB)
📄
ionice
(28.98 KB)
📄
iostat
(57.69 KB)
📄
ipcalc
(46.08 KB)
📄
ipcmk
(29.14 KB)
📄
ipcrm
(28.99 KB)
📄
ipcs
(53.39 KB)
📄
isc-config.sh
(3.33 KB)
📄
isosize
(24.88 KB)
📄
ispell
(988 B)
📄
isql
(37.29 KB)
📄
iusql
(29.68 KB)
📄
jobs
(28 B)
📄
join
(53.77 KB)
📄
journalctl
(76.99 KB)
📄
json_pp
(4.19 KB)
📄
json_reformat
(16.55 KB)
📄
json_verify
(12.27 KB)
📄
json_xs
(6.84 KB)
📄
kbd_mode
(12.55 KB)
📄
kbdinfo
(16.56 KB)
📄
kbdrate
(16.45 KB)
📄
kbxutil
(177.32 KB)
📄
kdumpctl
(32.93 KB)
📄
kernel-install
(4.41 KB)
📄
keyctl
(36.82 KB)
📄
kill
(37.27 KB)
📄
killall
(29.77 KB)
📄
kmod
(159.95 KB)
📄
krb5-config
(6.98 KB)
📄
kvm_stat
(60.85 KB)
📄
last
(49.23 KB)
📄
lastb
(49.23 KB)
📄
lastcomm
(37.8 KB)
📄
lastlog
(20.62 KB)
📄
lchfn
(20.35 KB)
📄
lchsh
(16.35 KB)
📄
ld
(1.71 MB)
📄
ld.bfd
(1.71 MB)
📄
ld.gold
(2.35 MB)
📄
ld.so
(1.05 MB)
📄
ldd
(5.31 KB)
📄
lefty
(304.52 KB)
📄
less
(173.76 KB)
📄
lessecho
(12.4 KB)
📄
lesskey
(21.99 KB)
📄
lesspipe.sh
(3.07 KB)
📄
lex
(428.45 KB)
📄
lexgrog
(93.7 KB)
📄
libgcrypt-config
(3.84 KB)
📄
libnetcfg
(15.41 KB)
📄
libpng-config
(2.33 KB)
📄
libpng16-config
(2.33 KB)
📄
libtool
(359.11 KB)
📄
libtoolize
(126.17 KB)
📄
libwmf-fontmap
(13.03 KB)
📄
link
(33.41 KB)
📄
links
(1.55 MB)
📄
linux-boot-prober
(5.85 KB)
📄
linux32
(20.76 KB)
📄
linux64
(20.76 KB)
📄
ln
(70.57 KB)
📄
lnav
(3.57 MB)
📄
lneato
(1.51 KB)
📄
loadkeys
(210.53 KB)
📄
loadunimap
(29.03 KB)
📄
locale
(56.45 KB)
📄
localectl
(28.86 KB)
📄
localedef
(307.47 KB)
📄
locate
(47.41 KB)
📄
logger
(49.98 KB)
📄
login
(40.96 KB)
📄
loginctl
(57.28 KB)
📄
logname
(33.42 KB)
📄
logresolve
(21.45 KB)
📄
look
(16.45 KB)
📄
ls
(139.97 KB)
📄
lsattr
(11.93 KB)
📄
lsblk
(90.13 KB)
📄
lscpu
(81.7 KB)
📄
lsgpio
(15.06 KB)
📄
lsiio
(22.98 KB)
📄
lsinitrd
(8.68 KB)
📄
lsipc
(73.74 KB)
📄
lslocks
(37.53 KB)
📄
lslogins
(65.6 KB)
📄
lsmcli
(954 B)
📄
lsmd
(24.88 KB)
📄
lsmem
(45.34 KB)
📄
lsns
(49.28 KB)
📄
lsof
(175.4 KB)
📄
lsphp
(937 B)
📄
lsscsi
(86.01 KB)
📄
lsusb
(244.14 KB)
📄
lsusb.py
(14.89 KB)
📄
lua
(20.45 KB)
📄
luac
(152.77 KB)
📄
lwp-download
(10.05 KB)
📄
lwp-dump
(2.65 KB)
📄
lwp-mirror
(2.36 KB)
📄
lwp-request
(15.84 KB)
📄
lynx
(1.84 MB)
📄
lzcat
(82.09 KB)
📄
lzcmp
(6.48 KB)
📄
lzdiff
(6.48 KB)
📄
lzegrep
(5.76 KB)
📄
lzfgrep
(5.76 KB)
📄
lzgrep
(5.76 KB)
📄
lzless
(1.76 KB)
📄
lzma
(82.09 KB)
📄
lzmadec
(16.48 KB)
📄
lzmainfo
(12.36 KB)
📄
lzmore
(2.11 KB)
📄
m4
(185.56 KB)
📄
mac2unix
(58.54 KB)
📄
mail
(408.89 KB)
📄
mailx
(408.89 KB)
📄
make
(235.32 KB)
📄
make-dummy-cert
(610 B)
📄
makedb
(24.84 KB)
📄
man
(112.52 KB)
📄
mandb
(134.52 KB)
📄
manpath
(33.42 KB)
📄
mapscrn
(24.84 KB)
📄
mariadb
(4.34 MB)
📄
mariadb-access
(109.34 KB)
📄
mariadb-admin
(3.88 MB)
📄
mariadb-binlog
(4.14 MB)
📄
mariadb-check
(3.88 MB)
📄
mariadb-config
(12.2 KB)
📄
mariadb-conv
(3.59 MB)
📄
mariadb-convert-table-format
(4.12 KB)
📄
mariadb-dump
(3.96 MB)
📄
mariadb-dumpslow
(8.05 KB)
📄
mariadb-embedded
(22.6 MB)
📄
mariadb-find-rows
(3.21 KB)
📄
mariadb-fix-extensions
(1.22 KB)
📄
mariadb-hotcopy
(34.15 KB)
📄
mariadb-import
(3.87 MB)
📄
mariadb-install-db
(22.46 KB)
📄
mariadb-plugin
(3.57 MB)
📄
mariadb-secure-installation
(13.49 KB)
📄
mariadb-service-convert
(2.45 KB)
📄
mariadb-setpermission
(17.56 KB)
📄
mariadb-show
(3.87 MB)
📄
mariadb-slap
(3.89 MB)
📄
mariadb-tzinfo-to-sql
(3.57 MB)
📄
mariadb-upgrade
(4 MB)
📄
mariadb-waitpid
(3.55 MB)
📄
mariadb_config
(12.2 KB)
📄
mariadbd-multi
(26.71 KB)
📄
mariadbd-safe
(30.42 KB)
📄
mariadbd-safe-helper
(3.52 MB)
📄
mc
(1.3 MB)
📄
mcdiff
(1.3 MB)
📄
mcedit
(1.3 MB)
📄
mcookie
(33.26 KB)
📄
mcpp
(9.02 KB)
📄
mcview
(1.3 MB)
📄
md5sum
(45.62 KB)
📄
mdig
(48.52 KB)
📄
memstrack
(83.78 KB)
📄
mesg
(16.36 KB)
📄
mkdir
(82.79 KB)
📄
mkfifo
(66.56 KB)
📄
mkfontdir
(65 B)
📄
mkfontscale
(41.59 KB)
📄
mkinitrd
(6.43 KB)
📄
mknod
(70.55 KB)
📄
mktemp
(45.73 KB)
📄
mm2gv
(90.53 KB)
📄
mmdblookup
(16.74 KB)
📄
modulecmd
(384.75 KB)
📄
modulemd-validator
(24.96 KB)
📄
modutil
(177.2 KB)
📄
mogrify
(11.84 KB)
📄
montage
(11.84 KB)
📄
more
(44.94 KB)
📄
mount
(49.15 KB)
📄
mountpoint
(16.48 KB)
📄
mpicalc
(20.38 KB)
📄
mpstat
(53.51 KB)
📄
msgattrib
(25.58 KB)
📄
msgcat
(25.55 KB)
📄
msgcmp
(26.12 KB)
📄
msgcomm
(25.55 KB)
📄
msgconv
(21.55 KB)
📄
msgen
(21.55 KB)
📄
msgexec
(21.55 KB)
📄
msgfilter
(34.53 KB)
📄
msgfmt
(90.3 KB)
📄
msgfmt2.7.py
(6.33 KB)
📄
msgfmt2.py
(6.33 KB)
📄
msggrep
(43.6 KB)
📄
msginit
(67.85 KB)
📄
msgmerge
(71.48 KB)
📄
msgunfmt
(35.8 KB)
📄
msguniq
(25.56 KB)
📄
msql2mysql
(1.41 KB)
📄
multitail
(329.2 KB)
📄
mv
(144.03 KB)
📄
my_print_defaults
(3.56 MB)
📄
myisam_ftdump
(3.89 MB)
📄
myisamchk
(4.01 MB)
📄
myisamlog
(3.87 MB)
📄
myisampack
(3.91 MB)
📄
mysql
(4.34 MB)
📄
mysql_config
(4.51 KB)
📄
mysql_embedded
(22.6 MB)
📄
mysql_find_rows
(3.21 KB)
📄
mysql_fix_extensions
(1.22 KB)
📄
mysql_install_db
(22.46 KB)
📄
mysql_plugin
(3.57 MB)
📄
mysql_tzinfo_to_sql
(3.57 MB)
📄
mysql_upgrade
(4 MB)
📄
mysql_waitpid
(3.55 MB)
📄
mysqlaccess
(109.34 KB)
📄
mysqladmin
(3.88 MB)
📄
mysqlbinlog
(4.14 MB)
📄
mysqlcheck
(3.88 MB)
📄
mysqld_multi
(26.71 KB)
📄
mysqld_safe
(30.42 KB)
📄
mysqld_safe_helper
(3.52 MB)
📄
mysqldump
(3.96 MB)
📄
mysqlimport
(3.87 MB)
📄
mysqlshow
(3.87 MB)
📄
mysqlslap
(3.89 MB)
📄
mytop
(71.95 KB)
📄
nail
(408.89 KB)
📄
named-rrchecker
(19.88 KB)
📄
namei
(33.1 KB)
📄
nano
(247.94 KB)
📄
nc
(436.87 KB)
📄
ncat
(436.87 KB)
📄
ncdu
(89.88 KB)
📄
ncurses6-config
(5.87 KB)
📄
ncursesw6-config
(5.88 KB)
📄
ndptool
(24.45 KB)
📄
neato
(12.26 KB)
📄
needs-restarting
(3.62 KB)
📄
neqn
(908 B)
📄
net-snmp-create-v3-user
(3.15 KB)
📄
netstat
(158.68 KB)
📄
newgidmap
(47.8 KB)
📄
newgrp
(42.45 KB)
📄
newuidmap
(47.76 KB)
📄
nf-ct-add
(16.46 KB)
📄
nf-ct-events
(12.38 KB)
📄
nf-ct-list
(16.49 KB)
📄
nf-exp-add
(16.87 KB)
📄
nf-exp-delete
(16.66 KB)
📄
nf-exp-list
(16.49 KB)
📄
nf-log
(12.35 KB)
📄
nf-monitor
(12.36 KB)
📄
nf-queue
(16.35 KB)
📄
ngettext
(48.97 KB)
📄
nice
(37.41 KB)
📄
nisdomainname
(21.16 KB)
📄
nl
(45.63 KB)
📄
nl-addr-add
(12.34 KB)
📄
nl-addr-delete
(16.77 KB)
📄
nl-addr-list
(16.88 KB)
📄
nl-class-add
(16.73 KB)
📄
nl-class-delete
(12.63 KB)
📄
nl-class-list
(12.59 KB)
📄
nl-classid-lookup
(12.47 KB)
📄
nl-cls-add
(16.77 KB)
📄
nl-cls-delete
(16.77 KB)
📄
nl-cls-list
(12.73 KB)
📄
nl-fib-lookup
(12.5 KB)
📄
nl-link-enslave
(11.87 KB)
📄
nl-link-ifindex2name
(11.87 KB)
📄
nl-link-list
(12.23 KB)
📄
nl-link-name2ifindex
(11.86 KB)
📄
nl-link-release
(11.86 KB)
📄
nl-link-set
(12.77 KB)
📄
nl-link-stats
(12.59 KB)
📄
nl-list-caches
(12.27 KB)
📄
nl-list-sockets
(11.87 KB)
📄
nl-monitor
(12.52 KB)
📄
nl-neigh-add
(12.63 KB)
📄
nl-neigh-delete
(12.66 KB)
📄
nl-neigh-list
(12.19 KB)
📄
nl-neightbl-list
(12.01 KB)
📄
nl-pktloc-lookup
(12.56 KB)
📄
nl-qdisc-add
(12.65 KB)
📄
nl-qdisc-delete
(12.63 KB)
📄
nl-qdisc-list
(16.74 KB)
📄
nl-route-add
(16.39 KB)
📄
nl-route-delete
(16.88 KB)
📄
nl-route-get
(12.35 KB)
📄
nl-route-list
(16.44 KB)
📄
nl-rule-list
(12.05 KB)
📄
nl-tctree-list
(12.66 KB)
📄
nl-util-addr
(11.85 KB)
📄
nload
(234.35 KB)
📄
nm
(50.38 KB)
📄
nm-online
(20.84 KB)
📄
nmcli
(1009.01 KB)
📄
nmtui
(784.12 KB)
📄
nmtui-connect
(784.12 KB)
📄
nmtui-edit
(784.12 KB)
📄
nmtui-hostname
(784.12 KB)
📄
node
(29.74 MB)
📄
nohup
(37.48 KB)
📄
nop
(12.5 KB)
📄
npm
(2.83 KB)
📄
nproc
(37.48 KB)
📄
npx
(173 B)
📄
nroff
(3.23 KB)
📄
nsenter
(33.3 KB)
📄
nslookup
(146.26 KB)
📄
nss-policy-check
(16.3 KB)
📄
nsupdate
(73.05 KB)
📄
numfmt
(65.71 KB)
📄
objcopy
(240.07 KB)
📄
objdump
(419.76 KB)
📄
od
(73.88 KB)
📄
odbc_config
(13.05 KB)
📄
odbcinst
(37.68 KB)
📄
oddjob_request
(41.24 KB)
📄
open
(20.97 KB)
📄
openssl
(745.95 KB)
📄
openvt
(20.97 KB)
📄
os-prober
(5.78 KB)
📄
osage
(12.26 KB)
📄
p11-kit
(37.15 KB)
📄
package-cleanup
(3.62 KB)
📄
page_owner_sort
(11.34 KB)
📄
pango-list
(11.88 KB)
📄
pango-view
(57.44 KB)
📄
paperconf
(13.07 KB)
📄
passwd
(32.77 KB)
📄
paste
(37.46 KB)
📄
patch
(206.46 KB)
📄
patchwork
(12.26 KB)
📄
pathchk
(37.41 KB)
📄
pathfix.py
(6.63 KB)
📄
pcre2-config
(1.9 KB)
📄
pdf2dsc
(698 B)
📄
pdf2ps
(909 B)
📄
peekfd
(16.51 KB)
📄
perl
(12.43 KB)
📄
perl5.26.3
(12.43 KB)
📄
perlbug
(44.39 KB)
📄
perldoc
(118 B)
📄
perlivp
(10.56 KB)
📄
perlml
(6.86 KB)
📄
perlthanks
(44.39 KB)
📄
perror
(3.75 MB)
📄
pflags
(2.57 KB)
📄
pftp
(101.2 KB)
📄
pgrep
(28.84 KB)
📄
php
(937 B)
📄
pic
(293.84 KB)
📄
piconv
(8.08 KB)
📄
pidof
(16.7 KB)
📄
pidstat
(65.72 KB)
📄
pigz
(125.38 KB)
📄
pinentry
(2.35 KB)
📄
pinentry-curses
(77.89 KB)
📄
pinfo
(109.34 KB)
📄
ping
(66.13 KB)
📄
pinky
(41.53 KB)
📄
pip-2
(206 B)
📄
pip-2.7
(206 B)
📄
pip-3
(209 B)
📄
pip-3.6
(209 B)
📄
pip2
(206 B)
📄
pip2.7
(206 B)
📄
pip3
(209 B)
📄
pip3.6
(209 B)
📄
pk12util
(106.88 KB)
📄
pkaction
(16.38 KB)
📄
pkcheck
(24.43 KB)
📄
pkexec
(28.41 KB)
📄
pkg-config
(40.04 KB)
📄
pkgconf
(40.04 KB)
📄
pkill
(28.84 KB)
📄
pkla-admin-identities
(25.72 KB)
📄
pkla-check-authorization
(33.78 KB)
📄
pkttyagent
(20.38 KB)
📄
pl2pm
(4.43 KB)
📄
pldd
(16.75 KB)
📄
plesk_configure
(342 B)
📄
plymouth
(45.36 KB)
📄
pmap
(32.78 KB)
📄
png-fix-itxt
(13.04 KB)
📄
pngfix
(53.53 KB)
📄
pod2html
(4.04 KB)
📄
pod2man
(14.68 KB)
📄
pod2text
(10.55 KB)
📄
pod2usage
(3.86 KB)
📄
podchecker
(3.57 KB)
📄
podselect
(2.47 KB)
📄
post-grohtml
(238.73 KB)
📄
powernow-k8-decode
(10.88 KB)
📄
pr
(82.23 KB)
📄
pre-grohtml
(130.55 KB)
📄
precat
(5.52 KB)
📄
preconv
(57.65 KB)
📄
preunzip
(5.52 KB)
📄
prezip
(5.52 KB)
📄
prezip-bin
(11.98 KB)
📄
printenv
(33.4 KB)
📄
printf
(53.64 KB)
📄
prlimit
(37.54 KB)
📄
procan
(82.6 KB)
📄
protoc
(16.48 KB)
📄
protoc-c
(244.79 KB)
📄
protoc-gen-c
(244.79 KB)
📄
prove
(13.24 KB)
📄
prtstat
(20.51 KB)
📄
prune
(16.73 KB)
📄
ps
(134.75 KB)
📄
ps2ascii
(631 B)
📄
ps2epsi
(2.69 KB)
📄
ps2pdf
(272 B)
📄
ps2pdf12
(215 B)
📄
ps2pdf13
(215 B)
📄
ps2pdf14
(215 B)
📄
ps2pdfwr
(1.07 KB)
📄
ps2ps
(647 B)
📄
ps2ps2
(669 B)
📄
ps_mem
(17.69 KB)
📄
psfaddtable
(20.66 KB)
📄
psfgettable
(20.66 KB)
📄
psfstriptable
(20.66 KB)
📄
psfxtable
(20.66 KB)
📄
pslog
(12.48 KB)
📄
pstree
(33.53 KB)
📄
pstree.x11
(33.53 KB)
📄
ptar
(3.38 KB)
📄
ptardiff
(2.48 KB)
📄
ptargrep
(4.2 KB)
📄
ptx
(78.07 KB)
📄
pure-pw
(38.83 KB)
📄
pure-pwconvert
(10.72 KB)
📄
pure-statsdecode
(10.72 KB)
📄
pwd
(37.5 KB)
📄
pwdx
(12.68 KB)
📄
pwmake
(12.27 KB)
📄
pwscore
(12.27 KB)
📄
pydoc-3
(89 B)
📄
pydoc2
(78 B)
📄
pydoc2.7
(78 B)
📄
pydoc3
(89 B)
📄
pydoc3.6
(89 B)
📄
pygettext2.7.py
(21.56 KB)
📄
pygettext2.py
(21.56 KB)
📄
pynche2
(138 B)
📄
pynche2.7
(138 B)
📄
python-html2text
(406 B)
📄
python2
(7.84 KB)
📄
python2-config
(1.8 KB)
📄
python2.7
(7.84 KB)
📄
python2.7-config
(1.8 KB)
📄
python3
(11.59 KB)
📄
python3-config
(204 B)
📄
python3-html2text
(406 B)
📄
python3.6
(11.59 KB)
📄
python3.6-config
(204 B)
📄
python3.6m
(11.59 KB)
📄
python3.6m-config
(204 B)
📄
python3.6m-x86_64-config
(3.54 KB)
📄
pyvenv-3
(446 B)
📄
pyvenv-3.6
(446 B)
📄
quota
(91.49 KB)
📄
quotasync
(74.69 KB)
📄
ranlib
(61.98 KB)
📄
raw
(16.49 KB)
📄
read
(28 B)
📄
readelf
(624.54 KB)
📄
readlink
(45.96 KB)
📄
realpath
(50.02 KB)
📄
recode-sr-latin
(17.99 KB)
📄
red
(89 B)
📄
rename
(16.5 KB)
📄
renew-dummy-cert
(725 B)
📄
renice
(16.46 KB)
📄
replace
(3.54 MB)
📄
repo-graph
(3.62 KB)
📄
repoclosure
(3.62 KB)
📄
repodiff
(3.62 KB)
📄
repomanage
(3.62 KB)
📄
repoquery
(3.62 KB)
📄
reposync
(3.62 KB)
📄
repotrack
(3.62 KB)
📄
rescan-scsi-bus.sh
(38.24 KB)
📄
reset
(24.76 KB)
📄
resizecons
(20.77 KB)
📄
resolve_stack_dump
(3.56 MB)
📄
resolvectl
(195.74 KB)
📄
resolveip
(3.56 MB)
📄
rev
(12.45 KB)
📄
rm
(70.47 KB)
📄
rmdir
(45.54 KB)
📄
rnano
(247.94 KB)
📄
rpcbind
(61.55 KB)
📄
rpcinfo
(32.64 KB)
📄
rpm
(20.85 KB)
📄
rpm2archive
(20.46 KB)
📄
rpm2cpio
(11.84 KB)
📄
rpmdb
(16.96 KB)
📄
rpmkeys
(16.87 KB)
📄
rpmquery
(20.85 KB)
📄
rpmverify
(20.85 KB)
📄
rsync
(510.15 KB)
📄
rsyslog-recover-qi.pl
(5.96 KB)
📄
run-parts
(1.94 KB)
📄
run-with-aspell
(85 B)
📄
runcon
(37.45 KB)
📄
rvi
(1.13 MB)
📄
rview
(1.13 MB)
📄
rvim
(2.93 MB)
📄
sadf
(334.57 KB)
📄
sar
(135.77 KB)
📄
sccmap
(20.62 KB)
📄
scl
(36.87 KB)
📄
scl_enabled
(258 B)
📄
scl_source
(1.82 KB)
📄
scp
(102.85 KB)
📄
screen
(482.46 KB)
📄
script
(36.79 KB)
📄
scriptreplay
(28.99 KB)
📄
scsi-rescan
(38.24 KB)
📄
scsi_logging_level
(8.38 KB)
📄
scsi_mandat
(3.52 KB)
📄
scsi_readcap
(1.3 KB)
📄
scsi_ready
(1.09 KB)
📄
scsi_satl
(3.77 KB)
📄
scsi_start
(1.25 KB)
📄
scsi_stop
(1.44 KB)
📄
scsi_temperature
(936 B)
📄
sdiff
(105.33 KB)
📄
secon
(25.46 KB)
📄
secret-tool
(21.17 KB)
📄
sed
(115.48 KB)
📄
semodule_expand
(12.28 KB)
📄
semodule_link
(12.28 KB)
📄
semodule_package
(16.68 KB)
📄
semodule_unpackage
(12.3 KB)
📄
seq
(53.52 KB)
📄
sessreg
(17.38 KB)
📄
setarch
(20.76 KB)
📄
setfacl
(37.65 KB)
📄
setfattr
(23.19 KB)
📄
setfont
(45.19 KB)
📄
setkeycodes
(12.56 KB)
📄
setleds
(16.6 KB)
📄
setmetamode
(12.56 KB)
📄
setpriv
(45.15 KB)
📄
setsid
(16.38 KB)
📄
setterm
(45.12 KB)
📄
setup-nsssysinit
(1.5 KB)
📄
setup-nsssysinit.sh
(1.5 KB)
📄
setvtrgb
(16.64 KB)
📄
sfdp
(12.26 KB)
📄
sftp
(159.74 KB)
📄
sg
(42.45 KB)
📄
sg_bg_ctl
(16.07 KB)
📄
sg_compare_and_write
(20.9 KB)
📄
sg_copy_results
(20.81 KB)
📄
sg_dd
(44.58 KB)
📄
sg_decode_sense
(20.33 KB)
📄
sg_emc_trespass
(12.26 KB)
📄
sg_format
(33.37 KB)
📄
sg_get_config
(33.31 KB)
📄
sg_get_lba_status
(20.46 KB)
📄
sg_ident
(16.17 KB)
📄
sg_inq
(117.91 KB)
📄
sg_logs
(150.02 KB)
📄
sg_luns
(24.85 KB)
📄
sg_map
(16.41 KB)
📄
sg_map26
(24.87 KB)
📄
sg_modes
(43.88 KB)
📄
sg_opcodes
(28.69 KB)
📄
sg_persist
(34.13 KB)
📄
sg_prevent
(12.07 KB)
📄
sg_raw
(24.38 KB)
📄
sg_rbuf
(20.84 KB)
📄
sg_rdac
(15.88 KB)
📄
sg_read
(24.41 KB)
📄
sg_read_attr
(34.79 KB)
📄
sg_read_block_limits
(12.12 KB)
📄
sg_read_buffer
(20.96 KB)
📄
sg_read_long
(16.27 KB)
📄
sg_readcap
(20.86 KB)
📄
sg_reassign
(16.22 KB)
📄
sg_referrals
(16.23 KB)
📄
sg_rep_zones
(20.66 KB)
📄
sg_requests
(16.3 KB)
📄
sg_reset
(16.73 KB)
📄
sg_reset_wp
(16.17 KB)
📄
sg_rmsn
(12.06 KB)
📄
sg_rtpg
(16.16 KB)
📄
sg_safte
(20.27 KB)
📄
sg_sanitize
(24.58 KB)
📄
sg_sat_identify
(16.71 KB)
📄
sg_sat_phy_event
(20.59 KB)
📄
sg_sat_read_gplog
(16.3 KB)
📄
sg_sat_set_features
(16.27 KB)
📄
sg_scan
(16.5 KB)
📄
sg_seek
(16.85 KB)
📄
sg_senddiag
(25.27 KB)
📄
sg_ses
(118.23 KB)
📄
sg_ses_microcode
(29.48 KB)
📄
sg_start
(20.93 KB)
📄
sg_stpg
(20.3 KB)
📄
sg_stream_ctl
(20.27 KB)
📄
sg_sync
(16.22 KB)
📄
sg_test_rwbuf
(20.73 KB)
📄
sg_timestamp
(20.74 KB)
📄
sg_turs
(16.74 KB)
📄
sg_unmap
(24.32 KB)
📄
sg_verify
(20.46 KB)
📄
sg_vpd
(108.75 KB)
📄
sg_wr_mode
(20.3 KB)
📄
sg_write_buffer
(21.24 KB)
📄
sg_write_long
(16.33 KB)
📄
sg_write_same
(24.48 KB)
📄
sg_write_verify
(20.78 KB)
📄
sg_write_x
(53.75 KB)
📄
sg_xcopy
(40.59 KB)
📄
sg_zone
(16.3 KB)
📄
sginfo
(74.85 KB)
📄
sgm_dd
(32.55 KB)
📄
sgp_dd
(36.95 KB)
📄
sh
(1.1 MB)
📄
sha1hmac
(32.66 KB)
📄
sha1sum
(45.63 KB)
📄
sha224hmac
(32.66 KB)
📄
sha224sum
(45.66 KB)
📄
sha256hmac
(32.66 KB)
📄
sha256sum
(45.66 KB)
📄
sha384hmac
(32.66 KB)
📄
sha384sum
(45.66 KB)
📄
sha512hmac
(32.66 KB)
📄
sha512sum
(45.66 KB)
📄
shasum
(9.66 KB)
📄
showconsolefont
(20.73 KB)
📄
showkey
(16.58 KB)
📄
showrgb
(13.05 KB)
📄
shred
(61.94 KB)
📄
shuf
(58.16 KB)
📄
signver
(110.59 KB)
📄
sim_client
(16.28 KB)
📄
sim_lsmplugin
(1.22 KB)
📄
simc_lsmplugin
(114.45 KB)
📄
size
(33.25 KB)
📄
skill
(28.8 KB)
📄
slabinfo
(36.15 KB)
📄
slabtop
(20.84 KB)
📄
sleep
(37.47 KB)
📄
slencheck
(13.07 KB)
📄
sm3hmac
(32.66 KB)
📄
smtpd2.7.py
(18.11 KB)
📄
smtpd2.py
(18.11 KB)
📄
snice
(28.8 KB)
📄
snmpconf
(25.44 KB)
📄
socat
(406.49 KB)
📄
soelim
(42.55 KB)
📄
sort
(123.55 KB)
📄
sotruss
(4.18 KB)
📄
spell
(122 B)
📄
splain
(18.7 KB)
📄
split
(58.13 KB)
📄
sprof
(28.67 KB)
📄
sqlite3
(1.28 MB)
📄
ssh
(757.54 KB)
📄
ssh-add
(346.13 KB)
📄
ssh-agent
(325.58 KB)
📄
ssh-copy-id
(10.44 KB)
📄
ssh-keygen
(427.16 KB)
📄
ssh-keyscan
(428.57 KB)
📄
ssltap
(126.29 KB)
📄
sss_ssh_authorizedkeys
(28.79 KB)
📄
sss_ssh_knownhostsproxy
(28.79 KB)
📄
stat
(86.23 KB)
📄
stdbuf
(49.58 KB)
📄
strace
(1.94 MB)
📄
strace-log-merge
(1.78 KB)
📄
stream
(11.83 KB)
📄
strings
(37.43 KB)
📄
strip
(240.09 KB)
📄
stty
(77.68 KB)
📄
su
(48.98 KB)
📄
sudo
(186.52 KB)
📄
sudoedit
(186.52 KB)
📄
sudoreplay
(115.2 KB)
📄
sum
(45.61 KB)
📄
switch_mod_lsapi
(30.99 KB)
📄
sxpm
(28.81 KB)
📄
symlinks
(17.16 KB)
📄
sync
(37.43 KB)
📄
systemctl
(218.45 KB)
📄
systemd-analyze
(1.55 MB)
📄
systemd-ask-password
(12.02 KB)
📄
systemd-cat
(16.03 KB)
📄
systemd-cgls
(16.44 KB)
📄
systemd-cgtop
(32.88 KB)
📄
systemd-delta
(24.45 KB)
📄
systemd-detect-virt
(11.88 KB)
📄
systemd-escape
(16.01 KB)
📄
systemd-firstboot
(36.98 KB)
📄
systemd-hwdb
(28.91 KB)
📄
systemd-inhibit
(16.03 KB)
📄
systemd-machine-id-setup
(24.75 KB)
📄
systemd-mount
(52.63 KB)
📄
systemd-notify
(16.03 KB)
📄
systemd-path
(16.02 KB)
📄
systemd-resolve
(195.74 KB)
📄
systemd-run
(48.94 KB)
📄
systemd-socket-activate
(24.77 KB)
📄
systemd-stdio-bridge
(16.02 KB)
📄
systemd-sysusers
(53.05 KB)
📄
systemd-tmpfiles
(73.29 KB)
📄
systemd-tty-ask-password-agent
(32.82 KB)
📄
systemd-umount
(52.63 KB)
📄
tabs
(16.55 KB)
📄
tac
(41.57 KB)
📄
tail
(74.2 KB)
📄
tapestat
(41.32 KB)
📄
tar
(448.99 KB)
📄
taskset
(37.25 KB)
📄
tbl
(154.61 KB)
📄
tcamgr
(25.13 KB)
📄
tcamttest
(21.16 KB)
📄
tcatest
(57.6 KB)
📄
tcbmgr
(29.1 KB)
📄
tcbmttest
(53.22 KB)
📄
tcbtest
(69.56 KB)
📄
tcfmgr
(25.09 KB)
📄
tcfmttest
(37.2 KB)
📄
tcftest
(45.18 KB)
📄
tchmgr
(25.09 KB)
📄
tchmttest
(49.22 KB)
📄
tchtest
(57.53 KB)
📄
tclsh
(9.04 KB)
📄
tclsh8.6
(9.04 KB)
📄
tcptraceroute
(1.55 KB)
📄
tctmgr
(37.09 KB)
📄
tctmttest
(45.2 KB)
📄
tcttest
(57.19 KB)
📄
tcucodec
(37.08 KB)
📄
tcumttest
(25.16 KB)
📄
tcutest
(73.17 KB)
📄
teamd
(160.52 KB)
📄
teamdctl
(30.37 KB)
📄
teamnl
(20.47 KB)
📄
tee
(41.55 KB)
📄
telnet
(104.88 KB)
📄
test
(53.63 KB)
📄
tic
(85.31 KB)
📄
time
(27.54 KB)
📄
timedatectl
(36.96 KB)
📄
timeout
(41.93 KB)
📄
tload
(16.76 KB)
📄
tmon
(39.63 KB)
📄
tmpwatch
(35.47 KB)
📄
toe
(16.45 KB)
📄
top
(121.7 KB)
📄
touch
(94.02 KB)
📄
tput
(24.8 KB)
📄
tr
(49.7 KB)
📄
tracepath
(20.44 KB)
📄
traceroute
(70.97 KB)
📄
traceroute6
(70.97 KB)
📄
tred
(16.59 KB)
📄
tree
(81.59 KB)
📄
troff
(805.02 KB)
📄
true
(33.4 KB)
📄
truncate
(41.44 KB)
📄
trust
(219.55 KB)
📄
tset
(24.76 KB)
📄
tsort
(41.57 KB)
📄
tty
(33.39 KB)
📄
turbostat
(130.8 KB)
📄
twopi
(12.26 KB)
📄
type
(28 B)
📄
tzselect
(15.01 KB)
📄
uapi
(3.18 MB)
📄
ucs2any
(24.41 KB)
📄
udevadm
(424.59 KB)
📄
ul
(20.58 KB)
📄
ulimit
(30 B)
📄
umask
(29 B)
📄
umount
(32.75 KB)
📄
unalias
(31 B)
📄
uname
(37.41 KB)
📄
uname26
(20.76 KB)
📄
unexpand
(45.68 KB)
📄
unflatten
(16.63 KB)
📄
unicode_start
(2.55 KB)
📄
unicode_stop
(363 B)
📄
uniq
(49.72 KB)
📄
unix2dos
(58.53 KB)
📄
unix2mac
(58.53 KB)
📄
unlink
(33.41 KB)
📄
unlzma
(82.09 KB)
📄
unpigz
(125.38 KB)
📄
unshare
(24.92 KB)
📄
unversioned-python
(157 B)
📄
unxz
(82.09 KB)
📄
unzip
(201.88 KB)
📄
unzipsfx
(101.48 KB)
📄
update-ca-trust
(1.24 KB)
📄
update-crypto-policies
(87 B)
📄
update-desktop-database
(24.55 KB)
📄
update-gtk-immodules
(313 B)
📄
update-mime-database
(57.22 KB)
📄
updatedb
(53.84 KB)
📄
uptime
(12.59 KB)
📄
usb-devices
(4.01 KB)
📄
usbhid-dump
(31.04 KB)
📄
users
(37.47 KB)
📄
usleep
(11.85 KB)
📄
utmpdump
(28.66 KB)
📄
uuclient
(15.88 KB)
📄
uuidgen
(16.37 KB)
📄
uuidparse
(37.13 KB)
📄
vdir
(139.97 KB)
📄
vdo
(5 KB)
📄
vdo-by-dev
(1.83 KB)
📄
vdodmeventd
(62.45 KB)
📄
vdodumpconfig
(536.63 KB)
📄
vdoforcerebuild
(524.27 KB)
📄
vdoformat
(549.13 KB)
📄
vdosetuuid
(536.66 KB)
📄
vdostats
(10.26 KB)
📄
verify_blkparse
(11.87 KB)
📄
vi
(1.13 MB)
📄
view
(1.13 MB)
📄
vim
(2.93 MB)
📄
vimdiff
(2.93 MB)
📄
vimdot
(1.06 KB)
📄
vimtutor
(2.07 KB)
📄
vlock
(20.83 KB)
📄
vmstat
(36.79 KB)
📄
w
(20.75 KB)
📄
wait
(28 B)
📄
wall
(33.05 KB)
📄
watch
(29.19 KB)
📄
watchgnupg
(16.43 KB)
📄
wc
(49.72 KB)
📄
wdctl
(36.98 KB)
📄
wget
(521.41 KB)
📄
whatis
(54.04 KB)
📄
whereis
(29.27 KB)
📄
which
(29.44 KB)
📄
whiptail
(33.09 KB)
📄
who
(53.68 KB)
📄
whoami
(33.41 KB)
📄
wish
(13.05 KB)
📄
wish8.6
(13.05 KB)
📄
wmf2eps
(17.15 KB)
📄
wmf2fig
(17.15 KB)
📄
wmf2gd
(17.14 KB)
📄
wmf2svg
(17.16 KB)
📄
wmf2x
(17.13 KB)
📄
word-list-compress
(11.99 KB)
📄
write
(20.62 KB)
📄
wsrep_sst_backup
(2.39 KB)
📄
wsrep_sst_common
(66.86 KB)
📄
wsrep_sst_mariabackup
(49.47 KB)
📄
wsrep_sst_mysqldump
(8.1 KB)
📄
wsrep_sst_rsync
(29.72 KB)
📄
wsrep_sst_rsync_wan
(29.72 KB)
📄
x86_64
(20.76 KB)
📄
x86_64-redhat-linux-c++
(1.21 MB)
📄
x86_64-redhat-linux-g++
(1.21 MB)
📄
x86_64-redhat-linux-gcc
(1.21 MB)
📄
x86_64-redhat-linux-gcc-8
(1.21 MB)
📄
x86_64-redhat-linux-gnu-pkg-config
(424 B)
📄
x86_energy_perf_policy
(31.95 KB)
📄
xargs
(74.11 KB)
📄
xdg-desktop-icon
(20.61 KB)
📄
xdg-desktop-menu
(43.42 KB)
📄
xdg-email
(26.56 KB)
📄
xdg-icon-resource
(29.89 KB)
📄
xdg-mime
(41.68 KB)
📄
xdg-open
(24.76 KB)
📄
xdg-screensaver
(36.9 KB)
📄
xdg-settings
(37.04 KB)
📄
xgamma
(17.08 KB)
📄
xgettext
(283.88 KB)
📄
xhost
(17.12 KB)
📄
xinput
(63.61 KB)
📄
xkill
(17.1 KB)
📄
xml2-config
(1.71 KB)
📄
xmlcatalog
(20.38 KB)
📄
xmllint
(73.37 KB)
📄
xmlwf
(32.96 KB)
📄
xmodmap
(39.98 KB)
📄
xorg-x11-fonts-update-dirs
(1.29 KB)
📄
xrandr
(65.46 KB)
📄
xrdb
(33.98 KB)
📄
xrefresh
(17.94 KB)
📄
xset
(37.2 KB)
📄
xsetpointer
(13.05 KB)
📄
xsetroot
(21.44 KB)
📄
xslt-config
(2.36 KB)
📄
xsltproc
(28.47 KB)
📄
xstdcmap
(17.68 KB)
📄
xsubpp
(4.96 KB)
📄
xxd
(20.52 KB)
📄
xz
(82.09 KB)
📄
xzcat
(82.09 KB)
📄
xzcmp
(6.48 KB)
📄
xzdec
(16.48 KB)
📄
xzdiff
(6.48 KB)
📄
xzegrep
(5.76 KB)
📄
xzfgrep
(5.76 KB)
📄
xzgrep
(5.76 KB)
📄
xzless
(1.76 KB)
📄
xzmore
(2.11 KB)
📄
yat2m
(33.34 KB)
📄
yes
(33.45 KB)
📄
ypdomainname
(21.16 KB)
📄
yum
(2.05 KB)
📄
yum-builddep
(3.62 KB)
📄
yum-config-manager
(3.62 KB)
📄
yum-debug-dump
(3.62 KB)
📄
yum-debug-restore
(3.62 KB)
📄
yum-groups-manager
(3.62 KB)
📄
yumdownloader
(3.62 KB)
📄
zcat
(1.94 KB)
📄
zcmp
(1.64 KB)
📄
zdiff
(5.74 KB)
📄
zegrep
(29 B)
📄
zfgrep
(29 B)
📄
zforce
(2.03 KB)
📄
zgrep
(7.4 KB)
📄
zip
(229 KB)
📄
zipcloak
(102.91 KB)
📄
zipdetails
(49.39 KB)
📄
zipgrep
(2.88 KB)
📄
zipinfo
(201.88 KB)
📄
zipnote
(97.76 KB)
📄
zipsplit
(97.76 KB)
📄
zless
(2.15 KB)
📄
zmore
(1.8 KB)
📄
znew
(4.45 KB)
📄
zsoelim
(42.55 KB)
Editing: kdumpctl
#!/bin/bash KEXEC=/sbin/kexec KDUMP_KERNELVER="" KDUMP_KERNEL="" KDUMP_COMMANDLINE="" KEXEC_ARGS="" KDUMP_CONFIG_FILE="/etc/kdump.conf" KDUMP_LOG_PATH="/var/log" 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" INITRD_CHECKSUM_LOCATION="/boot/.fadump_initrd_checksum" DUMP_TARGET="" DEFAULT_INITRD="" DEFAULT_INITRD_BAK="" KDUMP_INITRD="" TARGET_INITRD="" FADUMP_REGISTER_SYS_NODE="/sys/kernel/fadump_registered" #kdump shall be the default dump mode DEFAULT_DUMP_MODE="kdump" image_time=0 standard_kexec_args="-d -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 dlog_init if [ $? -ne 0 ]; then echo "failed to initiate the kdump logger." exit 1 fi single_instance_lock() { local rc timeout=5 exec 9>/var/lock/kdump if [ $? -ne 0 ]; 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" cp --sparse=always /proc/vmcore $coredir/vmcore-incomplete if [ $? == 0 ]; 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" dumpoops -d $coredir/dmesg >/dev/null 2>&1 if [ $? == 0 ]; 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 sync -f "$TARGET_INITRD" return 0 } check_earlykdump_is_enabled() { grep -q -w "rd.earlykdump" /proc/cmdline return $? } rebuild_kdump_initrd() { ddebug "rebuild kdump initrd: $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER" $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER if [ $? != 0 ]; 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 sync -f "$TARGET_INITRD" return 0 } rebuild_initrd() { if [[ ! -w $(dirname $TARGET_INITRD) ]];then derror "$(dirname $TARGET_INITRD) does not have write permission. Cannot rebuild $TARGET_INITRD" return 1 fi if [ $DEFAULT_DUMP_MODE == "fadump" ]; then rebuild_fadump_initrd else rebuild_kdump_initrd fi return $? } #$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 cp $DEFAULT_INITRD $DEFAULT_INITRD_BAK if [ $? -ne 0 ]; then dwarn "WARNING: failed to backup $DEFAULT_INITRD." 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=`cat $INITRD_CHECKSUM_LOCATION | awk '{ print $1 }'` if [ "$default_checksum" != "$backup_checksum" ]; then dwarn "WARNING: checksum mismatch! Can't restore original initrd.." else rm -f $INITRD_CHECKSUM_LOCATION mv $DEFAULT_INITRD_BAK $DEFAULT_INITRD if [[ $? -eq 0 ]]; then derror "Restoring original initrd as fadump mode is disabled." sync -f "$DEFAULT_INITRD" 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 derror "WARNING: Won't capture opalcore when 'raw' dump target is used." return 1 fi config_opt=_target ;; ext[234]|minix|btrfs|xfs|nfs|ssh) 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) ;; 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 <<< "$(read_strip_comments $KDUMP_CONFIG_FILE)" 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 -a $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() { prepare_kdump_bootinfo if [ $? -ne 0 ]; then derror "failed to prepare for kdump bootinfo." return 1 fi DEFAULT_INITRD_BAK="$KDUMP_BOOTDIR/.$(basename $DEFAULT_INITRD).default" if [ $DEFAULT_DUMP_MODE == "fadump" ]; then TARGET_INITRD="$DEFAULT_INITRD" if [ ! -s "$TARGET_INITRD" ]; then derror "Error: No initrd found to rebuild!" return 1 fi # 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=`grep ^kdump_post $KDUMP_CONFIG_FILE | cut -d\ -f2` CHECK_FILES=`grep ^kdump_pre $KDUMP_CONFIG_FILE | cut -d\ -f2` 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=`grep ^core_collector $KDUMP_CONFIG_FILE | cut -d\ -f2` 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=`grep ^extra_bins $KDUMP_CONFIG_FILE | cut -d\ -f2-` 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="$(grep ^extra_modules $KDUMP_CONFIG_FILE | sed 's/^extra_modules\s*//')" 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 _module_file="$(modinfo --set-version "$KDUMP_KERNELVER" --filename "$_module" 2>/dev/null)" if [[ $? -eq 0 ]]; 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" [ $? -ne 0 ] && 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 || is_dracut_mod_omitted watchdog-modules || _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/loaded-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 [ $? -ne 0 ] || [ -z "$_module_name" ] || [[ "$_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/thinp target is specified if is_ssh_dump_target || is_nfs_dump_target || is_raw_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 echo $_dracut_args | grep "\-\-mount" &> /dev/null if [[ $? -eq 0 ]];then 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_rebuild="0" local _force_no_rebuild force_no_rebuild="0" local ret system_modified="0" setup_initrd if [ $? -ne 0 ]; then return 1 fi _force_no_rebuild=`grep ^force_no_rebuild $KDUMP_CONFIG_FILE 2>/dev/null` if [ $? -eq 0 ]; then force_no_rebuild=`echo $_force_no_rebuild | cut -d' ' -f2` if [ "$force_no_rebuild" != "0" ] && [ "$force_no_rebuild" != "1" ];then derror "Error: force_no_rebuild value is invalid" return 1 fi fi _force_rebuild=`grep ^force_rebuild $KDUMP_CONFIG_FILE 2>/dev/null` if [ $? -eq 0 ]; then force_rebuild=`echo $_force_rebuild | cut -d' ' -f2` if [ "$force_rebuild" != "0" ] && [ "$force_rebuild" != "1" ];then derror "Error: force_rebuild value is invalid" return 1 fi 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 -e ^kdumpbase$ -e ^zz-fadumpinit$ | wc -l) 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 return $? } # 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 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 ret KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}") KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}") ddebug "$KEXEC $KEXEC_ARGS $standard_kexec_args --command-line=$KDUMP_COMMANDLINE --initrd=$TARGET_INITRD $KDUMP_KERNEL" # The '12' represents an intermediate temporary file descriptor # to store the standard error file descriptor '2', and later # restore the error file descriptor with the file descriptor '12' # and release it. exec 12>&2 exec 2>> $KDUMP_LOG_PATH/kdump.log chmod 600 $KDUMP_LOG_PATH/kdump.log PS4='+ $(date "+%Y-%m-%d %H:%M:%S") ${BASH_SOURCE}@${LINENO}: ' set -x $KEXEC $KEXEC_ARGS $standard_kexec_args \ --command-line="$KDUMP_COMMANDLINE" \ --initrd=$TARGET_INITRD $KDUMP_KERNEL ret=$? set +x exec 2>&12 12>&- if [[ $ret == 0 ]]; then dinfo "kexec: loaded kdump kernel" return 0 else derror "kexec: failed to load kdump kernel" return 1 fi } check_ssh_config() { while read 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 <<< "$(read_strip_comments $KDUMP_CONFIG_FILE)" #make sure they've configured kdump.conf for ssh dumps local 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=$(date +%s) local warn_once=1 local cur local diff local retval local errmsg 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" echo $errmsg | grep -q "Permission denied\|No such file or directory\|Host key verification failed" &> /dev/null if [ $? -eq 0 ]; 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) let "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 if [ $? -ne 0 ]; then return 1 fi return 0 } propagate_ssh_key() { check_ssh_config if [ $? -ne 0 ]; 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\ -f2 | 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=$(get_reserved_mem_size) local mem_mb=$(expr $mem / 1024 / 1024) dinfo "Reserved "$mem_mb"MB memory for crash kernel" } check_current_fadump_status() { # Check if firmware-assisted dump has been registered. rc=`cat $FADUMP_REGISTER_SYS_NODE` [ $rc -eq 1 ] && return 0 return 1 } check_current_status() { if [ $DEFAULT_DUMP_MODE == "fadump" ]; then check_current_fadump_status else check_current_kdump_status fi return $? } save_raw() { local kdump_dir local raw_target raw_target=$(awk '$1 ~ /^raw$/ { print $2; }' $KDUMP_CONFIG_FILE) [ -z "$raw_target" ] && return 0 [ -b "$raw_target" ] || { derror "raw partition $raw_target not found" return 1 } kdump_dir=`grep ^path $KDUMP_CONFIG_FILE | cut -d' ' -f2-` 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 _target=$(egrep "^ext[234]|^xfs|^btrfs|^minix" /etc/kdump.conf) if [ $? -eq 0 ]; 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=`hostname` local ipaddrs=`hostname -I` local nodes=$(get_option_value "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 echo "$ipaddrs " | grep "$node " > /dev/null if [ $? -eq 0 ]; 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 return $? } start_fadump() { echo 1 > $FADUMP_REGISTER_SYS_NODE if ! check_current_fadump_status; 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 return $? } check_failure_action_config() { local default_option local failure_action local option="failure_action" default_option=$(awk '$1 ~ /^default$/ {print $2;}' $KDUMP_CONFIG_FILE) failure_action=$(awk '$1 ~ /^failure_action$/ {print $2;}' $KDUMP_CONFIG_FILE) if [ -z "$failure_action" -a -z "$default_option" ]; then return 0 elif [ -n "$failure_action" -a -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=$(awk '$1 ~ /^final_action$/ {print $2;}' $KDUMP_CONFIG_FILE) 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 } start() { check_dump_feasibility if [ $? -ne 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi check_config if [ $? -ne 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi if sestatus 2>/dev/null | grep -q "SELinux status.*enabled"; then selinux_relabel fi save_raw if [ $? -ne 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi check_current_status if [ $? == 0 ]; 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 check_rebuild if [ $? != 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi start_dump if [ $? != 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi dinfo "Starting kdump: [OK]" } reload() { check_current_status if [ $? -ne 0 ]; then dwarn "Kdump was not running: [WARNING]" fi if [ $DEFAULT_DUMP_MODE == "fadump" ]; then reload_fadump return $? else stop_kdump fi if [ $? -ne 0 ]; then derror "Stopping kdump: [FAILED]" return 1 fi dinfo "Stopping kdump: [OK]" setup_initrd if [ $? -ne 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi start_dump if [ $? -ne 0 ]; then derror "Starting kdump: [FAILED]" return 1 fi dinfo "Starting kdump: [OK]" } stop_fadump() { echo 0 > $FADUMP_REGISTER_SYS_NODE if check_current_fadump_status; 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 if [ $? != 0 ]; then derror "kexec: failed to unload kdump kernel" return 1 fi dinfo "kexec: unloaded kdump kernel" return 0 } reload_fadump() { echo 1 > $FADUMP_REGISTER_SYS_NODE if [ $? == 0 ]; 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. stop_fadump if [ $? == 0 ]; then start_fadump return $? fi fi return 1 } stop() { if [ $DEFAULT_DUMP_MODE == "fadump" ]; then stop_fadump else stop_kdump fi if [ $? != 0 ]; then derror "Stopping kdump: [FAILED]" return 1 fi dinfo "Stopping kdump: [OK]" return 0 } rebuild() { check_config if [ $? -ne 0 ]; then return 1 fi if check_ssh_config; then if ! check_ssh_target; then return 1 fi fi setup_initrd if [ $? -ne 0 ]; then return 1 fi dinfo "Rebuilding $TARGET_INITRD" rebuild_initrd return $? } 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 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/loaded-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 value when using crashkernel=auto 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 ); do crypt_size=$((crypt_size + _mem * 1024)) break done done [[ $crypt_size -ne 0 ]] && echo -e "Encrypted kdump target requires extra memory, assuming using the keyslot with minimun memory requirement\n" 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 } if [ ! -f "$KDUMP_CONFIG_FILE" ]; then derror "Error: No kdump config file found!" exit 1 fi 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 check_current_status case "$?" in 0) dinfo "Kdump is operational" EXIT_CODE=0 ;; 1) dinfo "Kdump is not operational" EXIT_CODE=3 ;; esac exit $EXIT_CODE ;; reload) reload ;; restart) stop start ;; rebuild) rebuild ;; condrestart) ;; propagate) propagate_ssh_key ;; showmem) show_reserved_mem ;; estimate) do_estimate ;; *) dinfo $"Usage: $0 {estimate|start|stop|status|restart|reload|rebuild|propagate|showmem}" 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 $1) exit $?
Upload File
Create Folder