Linux ip-172-31-23-120.eu-west-1.compute.internal 5.10.245-245.983.amzn2.x86_64 #1 SMP Wed Dec 3 00:02:10 UTC 2025 x86_64
Apache/2.4.65 () OpenSSL/1.0.2k-fips
: 172.31.23.120 | : 64.252.114.221
Cant Read [ /etc/named.conf ]
8.2.29
apache
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
accessdb
11.38
KB
-rwxr-xr-x
accton
11.1
KB
-rwxr-xr-x
acpid
48.22
KB
-rwxr-xr-x
addgnupghome
3.05
KB
-rwxr-xr-x
addpart
19.66
KB
-rwxr-xr-x
adduser
111.3
KB
-rwxr-x---
agetty
52.72
KB
-rwxr-xr-x
alternatives
27.51
KB
-rwxr-xr-x
amazon-linux-https
1.01
KB
-rwxr-xr-x
anacron
35.45
KB
-rwxr-xr-x
apachectl
3.84
KB
-rwxr-xr-x
applygnupgdefaults
2.21
KB
-rwxr-xr-x
arp
63.89
KB
-rwxr-xr-x
arpd
70.19
KB
-rwxr-xr-x
arping
19.11
KB
-rwxr-xr-x
atd
27.07
KB
-rwxr-xr-x
atrun
67
B
-rwxr-xr-x
audispd
39.59
KB
-rwxr-xr-x
auditctl
39.44
KB
-rwxr-xr-x
auditd
121.48
KB
-rwxr-xr-x
augenrules
3.7
KB
-rwxr-xr-x
aureport
101.27
KB
-rwxr-xr-x
ausearch
109.7
KB
-rwxr-xr-x
authconfig
43.49
KB
-rwxr-xr-x
authconfig-tui
43.49
KB
-rwxr-xr-x
autrace
15.34
KB
-rwxr-x---
avcstat
11.16
KB
-rwxr-xr-x
badblocks
27.59
KB
-rwxr-xr-x
biosdecode
19.91
KB
-rwxr-xr-x
blkdeactivate
15.97
KB
-r-xr-xr-x
blkdiscard
23.81
KB
-rwxr-xr-x
blkid
86.17
KB
-rwxr-xr-x
blkmapd
43.73
KB
-rwxr-xr-x
blkzone
44.88
KB
-rwxr-xr-x
blockdev
36.38
KB
-rwxr-xr-x
brctl
32.04
KB
-rwxr-xr-x
bridge
121.07
KB
-rwxr-xr-x
build-locale-archive
748.58
KB
-rwx------
cacertdir_rehash
644
B
-rwxr-xr-x
cache_check
1.19
MB
-rwxr-xr-x
cache_dump
1.19
MB
-rwxr-xr-x
cache_metadata_size
1.19
MB
-rwxr-xr-x
cache_repair
1.19
MB
-rwxr-xr-x
cache_restore
1.19
MB
-rwxr-xr-x
cache_writeback
1.19
MB
-rwxr-xr-x
capsh
38.24
KB
-rwxr-xr-x
cfdisk
86.57
KB
-rwxr-xr-x
cgdisk
168.98
KB
-rwxr-xr-x
chcpu
23.59
KB
-rwxr-xr-x
chkconfig
40.15
KB
-rwxr-xr-x
chpasswd
51.55
KB
-rwxr-xr-x
chronyd
296.88
KB
-rwxr-xr-x
chroot
32.38
KB
-rwxr-xr-x
clock
52.22
KB
-rwxr-xr-x
clockdiff
18.96
KB
-rwxr-xr-x
consoletype
6.86
KB
-rwxr-xr-x
convertquota
70.59
KB
-rwxr-xr-x
cracklib-check
6.95
KB
-rwxr-xr-x
cracklib-format
246
B
-rwxr-xr-x
cracklib-packer
6.98
KB
-rwxr-xr-x
cracklib-unpacker
6.93
KB
-rwxr-xr-x
create-cracklib-dict
990
B
-rwxr-xr-x
crond
64.41
KB
-rwxr-xr-x
cryptsetup
63.66
KB
-rwxr-xr-x
ctrlaltdel
19.52
KB
-rwxr-xr-x
ctstat
20.05
KB
-rwxr-xr-x
debugfs
116.65
KB
-rwxr-xr-x
delpart
19.66
KB
-rwxr-xr-x
depmod
147.19
KB
-rwxr-xr-x
devlink
152.16
KB
-rwxr-xr-x
dhclient
406.38
KB
-rwxr-xr-x
dhclient-script
33.32
KB
-rwxr-xr-x
dm_dso_reg_tool
11.2
KB
-rwxr-xr-x
dmevent_tool
11.2
KB
-rwxr-xr-x
dmeventd
39.48
KB
-r-xr-xr-x
dmfilemapd
19.08
KB
-r-xr-xr-x
dmidecode
120.2
KB
-rwxr-xr-x
dmraid
22.01
KB
-rwxr-xr-x
dmraid.static
22.01
KB
-rwxr-xr-x
dmsetup
149.14
KB
-r-xr-xr-x
dmstats
149.14
KB
-r-xr-xr-x
dosfsck
56.08
KB
-rwxr-xr-x
dosfslabel
52.05
KB
-rwxr-xr-x
dracut
53.08
KB
-rwxr-xr-x
dump-acct
19.53
KB
-rwxr-xr-x
dump-utmp
15.4
KB
-rwxr-xr-x
dumpe2fs
23.61
KB
-rwxr-xr-x
e2freefrag
11.16
KB
-rwxr-xr-x
e2fsck
246.56
KB
-rwxr-xr-x
e2image
31.87
KB
-rwxr-xr-x
e2label
69.47
KB
-rwxr-xr-x
e2undo
11.32
KB
-rwxr-xr-x
e4defrag
23.46
KB
-rwxr-xr-x
ebsnvme
15.13
KB
-rwxr-xr-x
ebsnvme-id
6.89
KB
-rwxr-xr-x
ec2ifdown
514
B
-rwxr-xr-x
ec2ifscan
690
B
-rwxr-xr-x
ec2ifup
510
B
-rwxr-xr-x
ec2udev-vbd
485
B
-rwxr-xr-x
ec2udev-vcpu
554
B
-rwxr-xr-x
edquota
79.03
KB
-rwxr-xr-x
era_check
1.19
MB
-rwxr-xr-x
era_dump
1.19
MB
-rwxr-xr-x
era_invalidate
1.19
MB
-rwxr-xr-x
era_restore
1.19
MB
-rwxr-xr-x
ether-wake
69.18
KB
-rwxr-xr-x
ethtool
289.73
KB
-rwxr-xr-x
exportfs
72.85
KB
-rwxr-xr-x
faillock
14.93
KB
-rwxr-xr-x
fatlabel
52.05
KB
-rwxr-xr-x
fcgistarter
10.92
KB
-rwxr-xr-x
fdformat
28.01
KB
-rwxr-xr-x
fdisk
115.54
KB
-rwxr-xr-x
filefrag
15.14
KB
-rwxr-xr-x
findfs
11.12
KB
-rwxr-xr-x
fixfiles
10.89
KB
-rwxr-xr-x
fixparts
57.7
KB
-rwxr-xr-x
fsadm
23.97
KB
-r-xr-xr-x
fsck
44.72
KB
-rwxr-xr-x
fsck.cramfs
36.33
KB
-rwxr-xr-x
fsck.ext2
246.56
KB
-rwxr-xr-x
fsck.ext3
246.56
KB
-rwxr-xr-x
fsck.ext4
246.56
KB
-rwxr-xr-x
fsck.fat
56.08
KB
-rwxr-xr-x
fsck.minix
77.58
KB
-rwxr-xr-x
fsck.msdos
56.08
KB
-rwxr-xr-x
fsck.vfat
56.08
KB
-rwxr-xr-x
fsck.xfs
1.92
KB
-rwxr-xr-x
fsfreeze
11.14
KB
-rwxr-xr-x
fstrim
40.8
KB
-rwxr-xr-x
fuser
32.32
KB
-rwxr-xr-x
gdisk
176.7
KB
-rwxr-xr-x
genhomedircon
23.69
KB
-rwxr-xr-x
genhostid
6.85
KB
-rwxr-xr-x
genl
77.94
KB
-rwxr-xr-x
genl-ctrl-list
11.2
KB
-rwxr-xr-x
getcap
11.02
KB
-rwxr-xr-x
getenforce
6.91
KB
-rwxr-xr-x
getpcaps
11.04
KB
-rwxr-xr-x
getsebool
11.05
KB
-rwxr-xr-x
glibc_post_upgrade.x86_64
690.84
KB
-rwx------
groupadd
59.84
KB
-rwxr-x---
groupdel
55.59
KB
-rwxr-x---
groupmems
55.63
KB
-rwxr-x---
groupmod
70.48
KB
-rwxr-x---
grpck
55.59
KB
-rwxr-xr-x
grpconv
51.4
KB
-rwxr-xr-x
grpunconv
47.39
KB
-rwxr-xr-x
grub2-bios-setup
1.31
MB
-rwxr-xr-x
grub2-get-kernel-settings
2.34
KB
-rwxr-xr-x
grub2-install
1.62
MB
-rwxr-xr-x
grub2-macbless
1.3
MB
-rwxr-xr-x
grub2-mkconfig
8.78
KB
-rwxr-xr-x
grub2-probe
1.31
MB
-rwxr-xr-x
grub2-reboot
4.7
KB
-rwxr-xr-x
grub2-rpm-sort
277.84
KB
-rwxr-xr-x
grub2-set-bootflag
10.95
KB
-rwxr-xr-x
grub2-set-default
3.45
KB
-rwxr-xr-x
grub2-set-password
2.74
KB
-rwxr-xr-x
grub2-setpassword
2.74
KB
-rwxr-xr-x
grubby
67.17
KB
-rwxr-xr-x
gssproxy
130.62
KB
-rwxr-xr-x
halt
676.78
KB
-rwxr-xr-x
hardlink
15.17
KB
-rwxr-xr-x
htcacheclean
31.09
KB
-rwxr-xr-x
httpd
573.09
KB
-rwxr-xr-x
hwclock
52.22
KB
-rwxr-xr-x
iconvconfig
28.96
KB
-rwxr-xr-x
iconvconfig.x86_64
28.96
KB
-rwxr-xr-x
ifcfg
3.04
KB
-rwxr-xr-x
ifconfig
75.97
KB
-rwxr-xr-x
ifdown
1.61
KB
-rwxr-xr-x
ifenslave
19.65
KB
-rwxr-xr-x
ifstat
78.29
KB
-rwxr-xr-x
ifup
4.89
KB
-rwxr-xr-x
init
1.52
MB
-rwxr-xr-x
insmod
147.19
KB
-rwxr-xr-x
install-info
110.23
KB
-rwxr-xr-x
installkernel
2.69
KB
-rwxr-xr-x
intel-microcode2ucode
11.02
KB
-rwxr-xr-x
ip
571.24
KB
-rwxr-xr-x
ip6tables
87.59
KB
-rwxr-xr-x
ip6tables-legacy
87.59
KB
-rwxr-xr-x
ip6tables-legacy-restore
87.59
KB
-rwxr-xr-x
ip6tables-legacy-save
87.59
KB
-rwxr-xr-x
ip6tables-restore
87.59
KB
-rwxr-xr-x
ip6tables-save
87.59
KB
-rwxr-xr-x
ipmaddr
19.25
KB
-rwxr-xr-x
iptables
87.59
KB
-rwxr-xr-x
iptables-apply
3.43
KB
-rwxr-xr-x
iptables-legacy
87.59
KB
-rwxr-xr-x
iptables-legacy-restore
87.59
KB
-rwxr-xr-x
iptables-legacy-save
87.59
KB
-rwxr-xr-x
iptables-restore
87.59
KB
-rwxr-xr-x
iptables-save
87.59
KB
-rwxr-xr-x
iptunnel
23.26
KB
-rwxr-xr-x
irqbalance
56.66
KB
-rwxr-xr-x
kacpimon
23.29
KB
-rwxr-xr-x
key.dns_resolver
19.48
KB
-rwxr-xr-x
killall5
23.1
KB
-rwxr-xr-x
kpartx
39.41
KB
-rwxr-xr-x
kpatch
17.59
KB
-rwxr-xr-x
lchage
15.23
KB
-rwxr-xr-x
ldattach
27.9
KB
-rwxr-xr-x
ldconfig
884.74
KB
-rwxr-xr-x
lgroupadd
11.12
KB
-rwxr-xr-x
lgroupdel
11.09
KB
-rwxr-xr-x
lgroupmod
15.27
KB
-rwxr-xr-x
lid
15.23
KB
-rwxr-xr-x
lnewusers
15.3
KB
-rwxr-xr-x
lnstat
20.05
KB
-rwxr-xr-x
load_policy
10.89
KB
-rwxr-xr-x
logrotate
68.54
KB
-rwxr-xr-x
logsave
11.18
KB
-rwxr-xr-x
losetup
77.9
KB
-rwxr-xr-x
lpasswd
15.34
KB
-rwxr-xr-x
lsmod
147.19
KB
-rwxr-xr-x
lsof
150.42
KB
-rwxr-xr-x
lspci
77.61
KB
-rwxr-xr-x
luseradd
15.22
KB
-rwxr-xr-x
luserdel
11.14
KB
-rwxr-xr-x
lusermod
19.26
KB
-rwxr-xr-x
lvchange
2.13
MB
-r-xr-xr-x
lvconvert
2.13
MB
-r-xr-xr-x
lvcreate
2.13
MB
-r-xr-xr-x
lvdisplay
2.13
MB
-r-xr-xr-x
lvextend
2.13
MB
-r-xr-xr-x
lvm
2.13
MB
-r-xr-xr-x
lvmconf
12.55
KB
-r-xr-xr-x
lvmconfig
2.13
MB
-r-xr-xr-x
lvmdiskscan
2.13
MB
-r-xr-xr-x
lvmdump
10.07
KB
-r-xr-xr-x
lvmetad
67.56
KB
-r-xr-xr-x
lvmpolld
63.99
KB
-r-xr-xr-x
lvmsadc
2.13
MB
-r-xr-xr-x
lvmsar
2.13
MB
-r-xr-xr-x
lvreduce
2.13
MB
-r-xr-xr-x
lvremove
2.13
MB
-r-xr-xr-x
lvrename
2.13
MB
-r-xr-xr-x
lvresize
2.13
MB
-r-xr-xr-x
lvs
2.13
MB
-r-xr-xr-x
lvscan
2.13
MB
-r-xr-xr-x
matchpathcon
11.09
KB
-rwxr-xr-x
mdadm
565
KB
-rwxr-xr-x
mdmon
311.18
KB
-rwxr-xr-x
mii-diag
20
KB
-rwxr-xr-x
mii-tool
19.43
KB
-rwxr-xr-x
mkdict
246
B
-rwxr-xr-x
mkdosfs
27.84
KB
-rwxr-xr-x
mke2fs
94.05
KB
-rwxr-xr-x
mkfs
11.16
KB
-rwxr-xr-x
mkfs.cramfs
36.08
KB
-rwxr-xr-x
mkfs.ext2
94.05
KB
-rwxr-xr-x
mkfs.ext3
94.05
KB
-rwxr-xr-x
mkfs.ext4
94.05
KB
-rwxr-xr-x
mkfs.fat
27.84
KB
-rwxr-xr-x
mkfs.minix
77.86
KB
-rwxr-xr-x
mkfs.msdos
27.84
KB
-rwxr-xr-x
mkfs.vfat
27.84
KB
-rwxr-xr-x
mkfs.xfs
441.73
KB
-rwxr-xr-x
mkhomedir_helper
18.96
KB
-rwxr-xr-x
mklost+found
7
KB
-rwxr-xr-x
mkswap
77.89
KB
-rwxr-xr-x
modinfo
147.19
KB
-rwxr-xr-x
modprobe
147.19
KB
-rwxr-xr-x
mount.nfs
110.62
KB
-rwsr-xr-x
mount.nfs4
110.62
KB
-rwsr-xr-x
mountstats
34.97
KB
-rwxr-xr-x
mtr
69.94
KB
-rwxr-xr-x
mtr-packet
27.52
KB
-rwxr-xr-x
nameif
15.24
KB
-rwxr-xr-x
netreport
6.88
KB
-rwxr-sr-x
new-kernel-pkg
24.96
KB
-rwxr-xr-x
newusers
70.28
KB
-rwxr-xr-x
nfsdcltrack
36.01
KB
-rwxr-xr-x
nfsidmap
19.23
KB
-rwxr-xr-x
nfsiostat
23.64
KB
-rwxr-xr-x
nfsstat
29.77
KB
-rwxr-xr-x
nl-class-add
11.59
KB
-rwxr-xr-x
nl-class-delete
11.47
KB
-rwxr-xr-x
nl-class-list
11.4
KB
-rwxr-xr-x
nl-classid-lookup
11.21
KB
-rwxr-xr-x
nl-cls-add
11.68
KB
-rwxr-xr-x
nl-cls-delete
11.58
KB
-rwxr-xr-x
nl-cls-list
11.5
KB
-rwxr-xr-x
nl-link-list
11.42
KB
-rwxr-xr-x
nl-pktloc-lookup
11.25
KB
-rwxr-xr-x
nl-qdisc-add
11.5
KB
-rwxr-xr-x
nl-qdisc-delete
11.47
KB
-rwxr-xr-x
nl-qdisc-list
11.55
KB
-rwxr-xr-x
nologin
11.02
KB
-rwxr-xr-x
nstat
74.26
KB
-rwxr-xr-x
ntsysv
36.18
KB
-rwxr-xr-x
osd_login
2.55
KB
-rwxr-xr-x
ownership
10.94
KB
-rwxr-xr-x
packer
6.98
KB
-rwxr-xr-x
pam_console_apply
39.59
KB
-rwxr-xr-x
pam_tally2
14.96
KB
-rwxr-xr-x
pam_timestamp_check
10.89
KB
-rwsr-xr-x
parted
77.1
KB
-rwxr-xr-x
partprobe
11.12
KB
-rwxr-xr-x
partx
82.01
KB
-rwxr-xr-x
pdata_tools
1.19
MB
-rwxr-xr-x
php-fpm
6.08
MB
-rwxr-xr-x
pidof
23.1
KB
-rwxr-xr-x
ping6
60.52
KB
-rwxr-xr-x
pivot_root
11.1
KB
-rwxr-xr-x
plipconfig
10.97
KB
-rwxr-xr-x
plymouth-set-default-theme
6.21
KB
-rwxr-xr-x
plymouthd
84.16
KB
-rwxr-xr-x
pm-hibernate
2.86
KB
-rwxr-xr-x
pm-powersave
2.09
KB
-rwxr-xr-x
pm-suspend
2.86
KB
-rwxr-xr-x
pm-suspend-hybrid
2.86
KB
-rwxr-xr-x
pm-utils-bugreport-info.sh
1.47
KB
-rwxr-xr-x
postalias
241.73
KB
-rwxr-xr-x
postcat
127.96
KB
-rwxr-xr-x
postconf
355.08
KB
-rwxr-xr-x
postdrop
205.4
KB
-rwxr-sr-x
postfix
115.05
KB
-rwxr-xr-x
postkick
123.31
KB
-rwxr-xr-x
postlock
123.26
KB
-rwxr-xr-x
postlog
115.27
KB
-rwxr-xr-x
postmap
245.55
KB
-rwxr-xr-x
postmulti
131.78
KB
-rwxr-xr-x
postqueue
245.82
KB
-rwxr-sr-x
postsuper
135.84
KB
-rwxr-xr-x
poweroff
676.78
KB
-rwxr-xr-x
ppp-watch
23.12
KB
-rwxr-xr-x
pvchange
2.13
MB
-r-xr-xr-x
pvck
2.13
MB
-r-xr-xr-x
pvcreate
2.13
MB
-r-xr-xr-x
pvdisplay
2.13
MB
-r-xr-xr-x
pvmove
2.13
MB
-r-xr-xr-x
pvremove
2.13
MB
-r-xr-xr-x
pvresize
2.13
MB
-r-xr-xr-x
pvs
2.13
MB
-r-xr-xr-x
pvscan
2.13
MB
-r-xr-xr-x
pwck
47.39
KB
-rwxr-xr-x
pwconv
43.26
KB
-rwxr-xr-x
pwhistory_helper
15.34
KB
-rwxr-xr-x
pwunconv
38.08
KB
-rwxr-xr-x
quot
66.59
KB
-rwxr-xr-x
quotacheck
103.22
KB
-rwxr-xr-x
quotaoff
74.97
KB
-rwxr-xr-x
quotaon
74.97
KB
-rwxr-xr-x
quotastats
13.97
KB
-rwxr-xr-x
raid-check
3.7
KB
-rwxr-xr-x
rdisc
23.09
KB
-rwxr-xr-x
rdma
123.63
KB
-rwxr-xr-x
readprofile
15.35
KB
-rwxr-xr-x
reboot
676.78
KB
-rwxr-xr-x
repquota
71.09
KB
-rwxr-xr-x
request-key
19.42
KB
-rwxr-xr-x
resize2fs
48.43
KB
-rwxr-xr-x
resizepart
36.67
KB
-rwxr-xr-x
restorecon
27.08
KB
-rwxr-xr-x
rmmod
147.19
KB
-rwxr-xr-x
rngd
62.36
KB
-rwxr-xr-x
rotatelogs
19
KB
-rwxr-xr-x
route
62.53
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rpc.gssd
84.57
KB
-rwxr-xr-x
rpc.idmapd
35.81
KB
-rwxr-xr-x
rpc.mountd
124.77
KB
-rwxr-xr-x
rpc.nfsd
36.09
KB
-rwxr-xr-x
rpc.rquotad
74.88
KB
-rwxr-xr-x
rpc.statd
93.52
KB
-rwxr-xr-x
rpcbind
59.99
KB
-rwxr-xr-x
rpcdebug
13.98
KB
-rwxr-xr-x
rpcinfo
27.22
KB
-rwxr-xr-x
rsyslogd
636.33
KB
-rwxr-xr-x
rtacct
41.88
KB
-rwxr-xr-x
rtcwake
40.39
KB
-rwxr-xr-x
rtmon
73.82
KB
-rwxr-xr-x
rtpr
70
B
-rwxr-xr-x
rtstat
20.05
KB
-rwxr-xr-x
runlevel
676.78
KB
-rwxr-xr-x
runuser
32.12
KB
-rwxr-xr-x
sa
36.7
KB
-rwxr-xr-x
safe_finger
11.01
KB
-rwxr-xr-x
sasldblistusers2
19.18
KB
-rwxr-xr-x
saslpasswd2
15.01
KB
-rwxr-xr-x
sefcontext_compile
60.45
KB
-rwxr-xr-x
selabel_digest
11.08
KB
-rwxr-xr-x
selabel_lookup
11.05
KB
-rwxr-xr-x
selabel_lookup_best_match
11.06
KB
-rwxr-xr-x
selabel_partial_match
10.98
KB
-rwxr-xr-x
selinux_restorecon
11.12
KB
-rwxr-xr-x
selinuxconlist
11.01
KB
-rwxr-xr-x
selinuxdefcon
11.02
KB
-rwxr-xr-x
selinuxenabled
6.88
KB
-rwxr-xr-x
selinuxexeccon
6.99
KB
-rwxr-xr-x
semodule
23.69
KB
-rwxr-xr-x
sendmail
234.05
KB
-rwxr-xr-x
sendmail.postfix
234.05
KB
-rwxr-xr-x
service
3.17
KB
-rwxr-xr-x
sestatus
14.94
KB
-rwxr-xr-x
setcap
11.08
KB
-rwxr-xr-x
setenforce
6.96
KB
-rwxr-xr-x
setfiles
27.08
KB
-rwxr-xr-x
setpci
23.3
KB
-rwxr-xr-x
setquota
83.09
KB
-rwxr-xr-x
setsebool
14.91
KB
-rwxr-xr-x
setup
15.32
KB
-rwxr-xr-x
sfdisk
106.84
KB
-rwxr-xr-x
sgdisk
160.45
KB
-rwxr-xr-x
sgpio
15.53
KB
-rwxr-xr-x
showmount
19.48
KB
-rwxr-xr-x
shutdown
676.78
KB
-rwxr-xr-x
slattach
38.29
KB
-rwxr-xr-x
sln
884.74
KB
-rwxr-xr-x
sm-notify
64.37
KB
-rwxr-xr-x
smtp-sink
86.88
KB
-rwxr-xr-x
smtp-source
73.66
KB
-rwxr-xr-x
ss
166.49
KB
-rwxr-xr-x
sshd
816.87
KB
-rwxr-xr-x
sshd-keygen
3.53
KB
-rwxr-xr-x
start-statd
842
B
-rwxr-xr-x
suexec
14.92
KB
-r-x--x---
sulogin
44.53
KB
-rwxr-xr-x
sushell
67
B
-rwxr-xr-x
swaplabel
15.26
KB
-rwxr-xr-x
swapoff
19.59
KB
-rwxr-xr-x
swapon
44.63
KB
-rwxr-xr-x
switch_root
15.28
KB
-rwxr-xr-x
sys-unconfig
184
B
-rwxr-xr-x
sysctl
23.48
KB
-rwxr-xr-x
tcpd
36.58
KB
-rwxr-xr-x
tcpdmatch
40.77
KB
-rwxr-xr-x
tcpdump
904.13
KB
-rwxr-xr-x
tcpslice
23.55
KB
-rwxr-xr-x
telinit
676.78
KB
-rwxr-xr-x
thin_check
1.19
MB
-rwxr-xr-x
thin_delta
1.19
MB
-rwxr-xr-x
thin_dump
1.19
MB
-rwxr-xr-x
thin_ls
1.19
MB
-rwxr-xr-x
thin_metadata_size
1.19
MB
-rwxr-xr-x
thin_repair
1.19
MB
-rwxr-xr-x
thin_restore
1.19
MB
-rwxr-xr-x
thin_rmap
1.19
MB
-rwxr-xr-x
thin_trim
1.19
MB
-rwxr-xr-x
tipc
119.49
KB
-rwxr-xr-x
tracepath
14.97
KB
-rwxr-xr-x
tracepath6
14.97
KB
-rwxr-xr-x
try-from
23.41
KB
-rwxr-xr-x
tune2fs
69.47
KB
-rwxr-xr-x
udevadm
410.14
KB
-rwxr-xr-x
umount.nfs
110.62
KB
-rwsr-xr-x
umount.nfs4
110.62
KB
-rwsr-xr-x
unix_chkpwd
35.34
KB
-rwsr-xr-x
unix_update
35.33
KB
-rwx------
update-alternatives
27.51
KB
-rwxr-xr-x
update-motd
2.47
KB
-rwxr-xr-x
update-pciids
1.71
KB
-rwxr-xr-x
useradd
111.3
KB
-rwxr-x---
userdel
74.37
KB
-rwxr-x---
userhelper
39.3
KB
-rws--x--x
usermod
111.03
KB
-rwxr-x---
usernetctl
10.94
KB
-rwsr-xr-x
vgcfgbackup
2.13
MB
-r-xr-xr-x
vgcfgrestore
2.13
MB
-r-xr-xr-x
vgchange
2.13
MB
-r-xr-xr-x
vgck
2.13
MB
-r-xr-xr-x
vgconvert
2.13
MB
-r-xr-xr-x
vgcreate
2.13
MB
-r-xr-xr-x
vgdisplay
2.13
MB
-r-xr-xr-x
vgexport
2.13
MB
-r-xr-xr-x
vgextend
2.13
MB
-r-xr-xr-x
vgimport
2.13
MB
-r-xr-xr-x
vgimportclone
2.13
MB
-r-xr-xr-x
vgmerge
2.13
MB
-r-xr-xr-x
vgmknodes
2.13
MB
-r-xr-xr-x
vgreduce
2.13
MB
-r-xr-xr-x
vgremove
2.13
MB
-r-xr-xr-x
vgrename
2.13
MB
-r-xr-xr-x
vgs
2.13
MB
-r-xr-xr-x
vgscan
2.13
MB
-r-xr-xr-x
vgsplit
2.13
MB
-r-xr-xr-x
vigr
58.13
KB
-rwxr-xr-x
vipw
58.13
KB
-rwxr-xr-x
virt-what
11.35
KB
-rwxr-xr-x
visudo
200.83
KB
-rwxr-xr-x
vpddecode
15.02
KB
-rwxr-xr-x
weak-modules
15.35
KB
-rwxr-xr-x
wipefs
32.05
KB
-rwxr-xr-x
xfs_admin
1.38
KB
-rwxr-xr-x
xfs_bmap
695
B
-rwxr-xr-x
xfs_copy
401.61
KB
-rwxr-xr-x
xfs_db
667.9
KB
-rwxr-xr-x
xfs_estimate
11.06
KB
-rwxr-xr-x
xfs_freeze
800
B
-rwxr-xr-x
xfs_fsr
44.52
KB
-rwxr-xr-x
xfs_growfs
389.55
KB
-rwxr-xr-x
xfs_info
1.26
KB
-rwxr-xr-x
xfs_io
171.63
KB
-rwxr-xr-x
xfs_logprint
421.77
KB
-rwxr-xr-x
xfs_mdrestore
377.06
KB
-rwxr-xr-x
xfs_metadump
782
B
-rwxr-xr-x
xfs_mkfile
1.02
KB
-rwxr-xr-x
xfs_ncheck
685
B
-rwxr-xr-x
xfs_quota
85.02
KB
-rwxr-xr-x
xfs_repair
666.55
KB
-rwxr-xr-x
xfs_rtcp
15.15
KB
-rwxr-xr-x
xfs_spaceman
40.29
KB
-rwxr-xr-x
xfsdump
287.52
KB
-rwxr-xr-x
xfsinvutil
57.77
KB
-rwxr-xr-x
xfsrestore
341.02
KB
-rwxr-xr-x
xqmstats
9.96
KB
-rwxr-xr-x
xtables-legacy-multi
87.59
KB
-rwxr-xr-x
yum-complete-transaction
9.22
KB
-rwxr-xr-x
yumdb
8.67
KB
-rwxr-xr-x
zdump
22.8
KB
-rwxr-xr-x
zic
49.59
KB
-rwxr-xr-x
zramctl
90.48
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : kpatch
#!/bin/bash # # kpatch hot patch module management script # # Copyright (C) 2014 Seth Jennings <sjenning@redhat.com> # Copyright (C) 2014 Josh Poimboeuf <jpoimboe@redhat.com> # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA, # 02110-1301, USA. # This is the kpatch user script that manages installing, loading, and # displaying information about kernel patch modules installed on the system. INSTALLDIR=/var/lib/kpatch SCRIPTDIR="$(readlink -f "$(dirname "$(type -p "$0")")")" VERSION="0.9.4" POST_ENABLE_WAIT=15 # seconds POST_SIGNAL_WAIT=60 # seconds MODULE_REF_WAIT=15 # seconds # How many times to try loading the patch if activeness safety check fails. MAX_LOAD_ATTEMPTS=5 # How long to wait before retry, in seconds. RETRY_INTERVAL=2 # service reliability MAX_DIRTY_REBOOT=3 TEMPDIR=$INSTALLDIR FILE_PREFIX='kpatch_dirty-' usage_cmd() { printf ' %-20s\n%s\n' "$1" "$(fmt -w 80 <(echo " $2"))" >&2 } usage () { # ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION # When changing this, please also update the man page. Thanks! echo "usage: kpatch <command> [<args>]" >&2 echo >&2 echo "Valid commands:" >&2 usage_cmd "install [-k|--kernel-version=<kernel version>] <module>" "install patch module to be loaded at boot" usage_cmd "uninstall [-k|--kernel-version=<kernel version>] <module>" "uninstall patch module" echo >&2 usage_cmd "load --all" "load all installed patch modules into the running kernel" usage_cmd "load <module>" "load patch module into the running kernel" usage_cmd "unload --all" "unload all patch modules from the running kernel" usage_cmd "unload <module>" "unload patch module from the running kernel" echo >&2 usage_cmd "info <module>" "show information about a patch module" echo >&2 usage_cmd "list" "list installed patch modules" echo >&2 usage_cmd "signal" "signal/poke any process stalling the current patch transition. This is only useful on systems that have the sysfs livepatch signal interface. On other systems, the signaling should be done automatically by the OS and this subcommand is a no-op." echo >&2 usage_cmd "version" "display the kpatch version" exit 1 } warn() { echo "<4>kpatch: $*" >&2 } die() { warn "$@" exit 1 } __find_module () { MODULE="$1" [[ -f "$MODULE" ]] && return MODULE="$INSTALLDIR/$(uname -r)/$1" [[ -f "$MODULE" ]] && return return 1 } mod_name () { MODNAME="$(basename "$1")" MODNAME="${MODNAME%.ko}" MODNAME="${MODNAME//-/_}" } find_module () { arg="$1" if [[ "$arg" =~ \.ko ]]; then __find_module "$arg" || return 1 mod_name "$MODULE" return else for i in "$INSTALLDIR/$(uname -r)"/*; do mod_name "$i" if [[ "$MODNAME" == "$arg" ]]; then MODULE="$i" return fi done fi return 1 } find_core_module() { COREMOD="$SCRIPTDIR"/../kmod/core/kpatch.ko [[ -f "$COREMOD" ]] && return COREMOD="/usr/local/lib/kpatch/$(uname -r)/kpatch.ko" [[ -f "$COREMOD" ]] && return COREMOD="/usr/lib/kpatch/$(uname -r)/kpatch.ko" [[ -f "$COREMOD" ]] && return COREMOD="/usr/local/lib/modules/$(uname -r)/extra/kpatch/kpatch.ko" [[ -f "$COREMOD" ]] && return COREMOD="/usr/lib/modules/$(uname -r)/extra/kpatch/kpatch.ko" [[ -f "$COREMOD" ]] && return return 1 } kpatch_core_loaded() { [[ -d "/sys/kernel/kpatch" ]] } core_loaded () { [[ -d "/sys/kernel/kpatch" ]] || [[ -d "/sys/kernel/livepatch" ]] } get_module_name () { readelf -p .gnu.linkonce.this_module "$1" | grep '\[.*\]' | awk '{print $3}' } init_sysfs_var() { # If the kernel is configured with CONFIG_LIVEPATCH, use that. # Otherwise, use the kpatch core module (kpatch.ko). if [[ -e /sys/kernel/livepatch ]] ; then # livepatch ABI SYSFS="/sys/kernel/livepatch" elif [[ -e /sys/kernel/kpatch/patches ]] ; then # kpatch pre-0.4 ABI SYSFS="/sys/kernel/kpatch/patches" else # kpatch 0.4 ABI SYSFS="/sys/kernel/kpatch" fi } verify_module_checksum () { modname="$(get_module_name "$1")" [[ -z "$modname" ]] && return 1 checksum="$(readelf -p .kpatch.checksum "$1" 2>&1 | grep '\[.*\]' | awk '{print $3}')" # Fail checksum match only if both exist and diverge if [[ -n "$checksum" ]] && [[ -e "$SYSFS/${modname}/checksum" ]] ; then sysfs_checksum="$(cat "$SYSFS/${modname}/checksum")" [[ "$checksum" == "$sysfs_checksum" ]] || return 1 fi return 0 } in_transition() { local moddir="$SYSFS/$1" [[ $(cat "$moddir/transition" 2>/dev/null) == "1" ]] && return 0 return 1 } is_stalled() { local module="$1" local pid="$2" local patch_enabled local patch_state patch_enabled="$(cat "$SYSFS/$module/enabled" 2>/dev/null)" patch_state="$(cat "/proc/$pid/patch_state" 2>/dev/null)" # No patch transition in progress [[ "$patch_state" == "-1" ]] && return 1 [[ -z "$patch_enabled" ]] || [[ -z "$patch_state" ]] && return 1 # Stalls can be determined if the process state does not match # the transition target (ie, "enabled" and "patched", "disabled" # and "unpatched"). The state value enumerations match, so we # can just compare them directly: [[ "$patch_enabled" != "$patch_state" ]] && return 0 return 1 } get_transition_patch() { local module local modname for module in "$SYSFS"/*; do modname=$(basename "$module") if in_transition "$modname" ; then echo "$modname" return fi done } show_stalled_processes() { local module local proc_task local tid module=$(get_transition_patch) [[ -z "$module" ]] && return echo "" echo "Stalled processes:" for proc_task in /proc/[0-9]*/task/[0-9]*; do tid=${proc_task#*/task/} is_stalled "$module" "$tid" && echo -e "$tid $(cat "$proc_task"/comm 2>/dev/null)\nstack:\n$(cat "$proc_task"/stack 2>/dev/null)" done } signal_stalled_processes() { local module local proc_task local tid module=$(get_transition_patch) [[ -z "$module" ]] && return if [[ -e "/sys/kernel/livepatch/$module/signal" ]] ; then echo "signaling stalled process(es):" echo 1 > "/sys/kernel/livepatch/$module/signal" else warn "Livepatch process signaling is performed automatically on your system." warn "Skipping manual process signaling." fi } wait_for_patch_transition() { local module="$1" local i in_transition "$module" || return 0 echo "waiting (up to $POST_ENABLE_WAIT seconds) for patch transition to complete..." for (( i=0; i<POST_ENABLE_WAIT; i++ )); do if ! in_transition "$module" ; then echo "transition complete ($i seconds)" return 0 fi sleep 1s done echo "patch transition has stalled!" signal_stalled_processes echo "waiting (up to $POST_SIGNAL_WAIT seconds) for patch transition to complete..." for (( i=0; i<POST_SIGNAL_WAIT; i++ )); do if ! in_transition "$module" ; then echo "transition complete ($i seconds)" return 0 fi sleep 1s done return 1 } module_ref_count() { local modname="$1" [[ $(cat "/sys/module/$modname/refcnt" 2>/dev/null) -gt "0" ]] } wait_for_zero_module_ref_count() { local modname="$1" local i=0 # We can't rely on a zero refcount with kpatch.ko as it # implements KPATCH_FORCE_UNSAFE with an additional reference on # kpatch-patch modules to avoid potential crashes. kpatch_core_loaded && return 0 module_ref_count "$modname" || return 0 echo "waiting (up to $MODULE_REF_WAIT seconds) for module refcount..." for (( i=0; i<MODULE_REF_WAIT; i++ )); do module_ref_count "$modname" || return 0 sleep 1s done return 1 } load_module () { local module="$1" if ! core_loaded; then if modprobe -q kpatch; then echo "loaded core module" else find_core_module || die "can't find core module" echo "loading core module: $COREMOD" insmod "$COREMOD" || die "failed to load core module" fi # Now that the core module has been loaded, set $SYSFS to the # correct value based on the loaded core module's ABI. init_sysfs_var fi local modname modname="$(get_module_name "$module")" local moddir="$SYSFS/$modname" if [[ -d "$moddir" ]] ; then if [[ "$(cat "${moddir}/enabled")" -eq 0 ]]; then if verify_module_checksum "$module"; then # same checksum echo "module already loaded, re-enabling" echo 1 > "${moddir}/enabled" || die "failed to re-enable module $modname" if ! wait_for_patch_transition "$modname" ; then show_stalled_processes echo "module $modname did not complete its transition, disabling..." echo 0 > "${moddir}/enabled" || die "failed to disable module $modname" wait_for_patch_transition "$modname" die "error: failed to re-enable module $modname (transition stalled), patch disabled" fi return else die "error: cannot re-enable patch module $modname, cannot verify checksum match" fi else echo "module named $modname already loaded and enabled" fi else # Cleanup possibly loaded, but disabled patch. remove_module "$modname" "quiet" echo "loading patch module: $module" local i=0 while true; do out="$(LC_ALL=C insmod "$module" 2>&1)" [[ -z "$out" ]] && break echo "$out" 1>&2 [[ ! "$out" =~ "Device or resource busy" ]] && die "failed to load module $module" # "Device or resource busy" means the activeness safety check # failed. Retry in a few seconds. i=$((i+1)) if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then die "failed to load module $module" break else warn "retrying..." sleep $RETRY_INTERVAL fi done fi if ! wait_for_patch_transition "$modname" ; then show_stalled_processes echo "module $modname did not complete its transition, unloading..." unload_module "$modname" die "error: failed to load module $modname (transition stalled)" fi return 0 } disable_patch () { local modname="$1" local enabled="$SYSFS/$modname/enabled" if ! [[ -e "$enabled" ]]; then warn "patch module $modname is not loaded" return 1 fi if [[ "$(cat "$enabled")" -eq 1 ]]; then echo "disabling patch module: $modname" local i=0 while true; do out="$(export LC_ALL=C; sh -c "echo 0 > $enabled" 2>&1)" [[ -z "$out" ]] && break echo "$out" 1>&2 if [[ ! "$out" =~ "Device or resource busy" ]]; then return 1 fi # "Device or resource busy" means the activeness safety check # failed. Retry in a few seconds. i=$((i+1)) if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then return 1 else warn "retrying..." sleep $RETRY_INTERVAL fi done fi } disable_patch_strict () { local modname="$1" disable_patch "$modname" || die "failed to disable module $modname" if ! wait_for_patch_transition "$modname" ; then die "transition stalled for $modname" fi } remove_module () { local modname="$1" if ! wait_for_zero_module_ref_count "$modname"; then die "failed to unload module $modname (refcnt)" fi if [[ "$#" -lt 2 || "$2" != "quiet" ]] ; then echo "unloading patch module: $modname" fi # ignore any error here because rmmod can fail if the module used # KPATCH_FORCE_UNSAFE. rmmod "$modname" 2> /dev/null || return 0 } unload_module () { PATCH="${1//-/_}" PATCH="${PATCH%.ko}" disable_patch_strict "$PATCH" remove_module "$PATCH" } get_module_version() { MODVER="$(modinfo -F vermagic "$1")" || return 1 MODVER="${MODVER/ */}" } check_start_all() { local i=0 while true; do if [[ $i -eq $MAX_DIRTY_REBOOT ]]; then warn "system has crashed $MAX_DIRTY_REBOOT times and the patch modules will not be loaded." return elif [[ ! -e "$INSTALLDIR/$FILE_PREFIX$i" ]]; then echo "touch file $INSTALLDIR/$FILE_PREFIX$i" mkdir -p "$INSTALLDIR" || die "failed to create install directory" touch "$INSTALLDIR/$FILE_PREFIX$i" sync break fi i=$((i+1)) done for i in "$INSTALLDIR/$(uname -r)"/*.ko; do [[ -e "$i" ]] || continue load_module "$i" || die "failed to load module $i" done # Confirm that all modules remain loaded not_loaded=0 for i in "$INSTALLDIR/$(uname -r)"/*.ko; do [[ -e "$i" ]] || continue klp_name=$(modinfo "$i" | awk '/^name:/ {print $2}') klp_path="/sys/kernel/livepatch/${klp_name}" if [[ ! -e "$klp_path" ]] || [[ $(cat "${klp_path}/enabled") -ne 1 ]]; then warn "$klp_name not properly loaded!" not_loaded=$((not_loaded+1)) fi done if [[ $not_loaded -ne 0 ]]; then die "WARNING! ${not_loaded} kernel livepatches are not enabled after loading" fi } check_stop_all() { local i=0 while true; do if [[ $i -eq $MAX_DIRTY_REBOOT ]]; then return elif [[ -e "$INSTALLDIR/$FILE_PREFIX$i" ]]; then echo "remove file $INSTALLDIR/$FILE_PREFIX$i" rm "$INSTALLDIR/$FILE_PREFIX$i" fi i=$((i+1)) done } unset MODULE # Initialize the $SYSFS var. This only works if the core module has been # loaded. Otherwise, the value of $SYSFS doesn't matter at this point anyway, # and we'll have to call this function again after loading it. init_sysfs_var [[ "$#" -lt 1 ]] && usage case "$1" in "load") [[ "$#" -ne 2 ]] && usage case "$2" in "--all") for i in "$INSTALLDIR/$(uname -r)"/*.ko; do [[ -e "$i" ]] || continue load_module "$i" || die "failed to load module $i" done ;; *) PATCH="$2" find_module "$PATCH" || die "can't find $PATCH" load_module "$MODULE" || die "failed to load module $PATCH" ;; esac ;; "unload") [[ "$#" -ne 2 ]] && usage case "$2" in "--all") # Versions of linux < 5.1 livepatching require patches to be # disabled in the inverse order in which they were enabled. while true; do nr_disabled=0 for module in "$SYSFS"/*; do modname="$(basename "$module")" [[ -e "$module" ]] || continue disable_patch "$modname" || continue if ! wait_for_patch_transition "$modname" ; then warn "transition stalled for $modname" continue fi remove_module "$modname" nr_disabled=$((nr_disabled + 1)) done if [ $nr_disabled -eq 0 ]; then break fi done nr_remaining=0 for module in "$SYSFS"/*; do modname="$(basename "$module")" [[ -e "$module" ]] || continue nr_remaining=$((nr_remaining + 1)) warn "failed to unload module $modname" done if [ $nr_remaining -gt 0 ]; then exit 1 fi ;; *) unload_module "$(basename "$2")" || die "failed to unload module $2" ;; esac ;; "install") KVER="$(uname -r)" shift options="$(getopt -o k: -l "kernel-version:" -- "$@")" || die "getopt failed" eval set -- "$options" while [[ $# -gt 0 ]]; do case "$1" in -k|--kernel-version) KVER="$2" shift ;; --) [[ -z "$2" ]] && die "no module file specified" PATCH="$2" ;; esac shift done [[ ! -e "$PATCH" ]] && die "$PATCH doesn't exist" [[ "${PATCH: -3}" == ".ko" ]] || die "$PATCH isn't a .ko file" get_module_version "$PATCH" || die "modinfo failed" [[ "$KVER" != "$MODVER" ]] && die "invalid module version $MODVER for kernel $KVER" [[ -e "$INSTALLDIR/$KVER/$(basename "$PATCH")" ]] && die "$PATCH is already installed" echo "installing $PATCH ($KVER)" mkdir -p "$INSTALLDIR/$KVER" || die "failed to create install directory" cp -f "$PATCH" "$INSTALLDIR/$KVER" || die "failed to install module $PATCH" command -v systemctl > /dev/null 2>&1 && systemctl enable kpatch.service ;; "uninstall") KVER="$(uname -r)" shift options="$(getopt -o k: -l "kernel-version:" -- "$@")" || die "getopt failed" eval set -- "$options" while [[ $# -gt 0 ]]; do case "$1" in -k|--kernel-version) KVER="$2" shift ;; --) [[ -z "$2" ]] && die "no module file specified" PATCH="$2" [[ "$PATCH" != "$(basename "$PATCH")" ]] && die "please supply patch module name without path" ;; esac shift done MODULE="$INSTALLDIR/$KVER/$PATCH" if [[ ! -f "$MODULE" ]]; then mod_name "$PATCH" PATCHNAME="$MODNAME" for i in "$INSTALLDIR/$KVER"/*; do mod_name "$i" if [[ "$MODNAME" == "$PATCHNAME" ]]; then MODULE="$i" break fi done fi [[ ! -e "$MODULE" ]] && die "$PATCH is not installed for kernel $KVER" echo "uninstalling $PATCH ($KVER)" rm -f "$MODULE" || die "failed to uninstall module $PATCH" rmdir --ignore-fail-on-non-empty "$INSTALLDIR/$KVER" || die "failed to remove directory $INSTALLDIR/$KVER" rmdir --ignore-fail-on-non-empty "$INSTALLDIR" || die "failed to remove directory $INSTALLDIR" ;; "list") [[ "$#" -ne 1 ]] && usage echo "Loaded patch modules:" for module in "$SYSFS"/*; do if [[ -e "$module" ]]; then modname=$(basename "$module") if [[ "$(cat "$module/enabled" 2>/dev/null)" -eq 1 ]]; then in_transition "$modname" && state="enabling..." \ || state="enabled" else in_transition "$modname" && state="disabling..." \ || state="disabled" fi echo "$modname [$state]" fi done show_stalled_processes echo "" echo "Installed patch modules:" for kdir in "$INSTALLDIR"/*; do [[ -e "$kdir" ]] || continue for module in "$kdir"/*.ko; do [[ -e "$module" ]] || continue mod_name "$module" echo "$MODNAME ($(basename "$kdir"))" done done ;; "info") [[ "$#" -ne 2 ]] && usage PATCH="$2" find_module "$PATCH" || die "can't find $PATCH" echo "Patch information for $PATCH:" modinfo "$MODULE" || die "failed to get info for module $PATCH" ;; "signal") [[ "$#" -ne 1 ]] && usage signal_stalled_processes ;; "check-start") case "$2" in "--all") check_start_all ;; esac ;; "check-stop") case "$2" in "--all") check_stop_all esac ;; "help"|"-h"|"--help") usage ;; "version"|"-v"|"--version") echo "$VERSION" ;; *) echo "subcommand $1 not recognized" usage ;; esac
Close