X7ROOT File Manager
Current Path:
/usr/sbin
usr
/
sbin
/
📁
..
📄
NetworkManager
(3.41 MB)
📄
accessdb
(12.59 KB)
📄
accton
(13.69 KB)
📄
adcli
(179.27 KB)
📄
addgnupghome
(3 KB)
📄
addpart
(24.86 KB)
📄
adduser
(148.17 KB)
📄
agetty
(62.38 KB)
📄
alternatives
(36.66 KB)
📄
anacron
(40.99 KB)
📄
apachectl
(4.52 KB)
📄
applygnupgdefaults
(2.17 KB)
📄
arp
(64.71 KB)
📄
arpd
(109.52 KB)
📄
arping
(28.74 KB)
📄
atd
(32.63 KB)
📄
atopacctd
(25.29 KB)
📄
atrun
(67 B)
📄
auditctl
(45.04 KB)
📄
auditd
(151.73 KB)
📄
augenrules
(4.04 KB)
📄
aureport
(122.35 KB)
📄
ausearch
(130.36 KB)
📄
authconfig
(21.54 KB)
📄
autrace
(16.54 KB)
📄
avcstat
(16.4 KB)
📄
badblocks
(32.59 KB)
📄
biosdecode
(21.45 KB)
📄
biosdevname
(46.16 KB)
📄
blkdeactivate
(15.97 KB)
📄
blkdiscard
(29.05 KB)
📄
blkid
(98.66 KB)
📄
blkmapd
(53.47 KB)
📄
blkzone
(49.74 KB)
📄
blockdev
(41.3 KB)
📄
bpftool
(2.74 MB)
📄
bridge
(158.25 KB)
📄
build-locale-archive
(841.02 KB)
📄
cache_check
(1.43 MB)
📄
cache_dump
(1.43 MB)
📄
cache_metadata_size
(1.43 MB)
📄
cache_repair
(1.43 MB)
📄
cache_restore
(1.43 MB)
📄
cache_writeback
(1.43 MB)
📄
capsh
(32.44 KB)
📄
cfdisk
(98.4 KB)
📄
chcpu
(28.84 KB)
📄
chgpasswd
(69.69 KB)
📄
chkconfig
(45.11 KB)
📄
chpasswd
(61.42 KB)
📄
chronyd
(375.66 KB)
📄
chroot
(41.52 KB)
📄
clock
(65.22 KB)
📄
clockdiff
(20.43 KB)
📄
consoletype
(11.85 KB)
📄
convertquota
(78.68 KB)
📄
cracklib-check
(13.05 KB)
📄
cracklib-format
(251 B)
📄
cracklib-packer
(13.05 KB)
📄
cracklib-unpacker
(9.03 KB)
📄
create-cracklib-dict
(990 B)
📄
crond
(73.94 KB)
📄
cryptsetup
(147.42 KB)
📄
csf
(245.1 KB)
📄
ctrlaltdel
(24.79 KB)
📄
ctstat
(25.33 KB)
📄
dcb
(155.04 KB)
📄
ddns-confgen
(20.46 KB)
📄
debugfs
(231.63 KB)
📄
delpart
(24.86 KB)
📄
depmod
(159.95 KB)
📄
devlink
(215.87 KB)
📄
dhclient
(453.68 KB)
📄
dhclient-script
(32.86 KB)
📄
dmeventd
(45.08 KB)
📄
dmfilemapd
(24.55 KB)
📄
dmidecode
(141.8 KB)
📄
dmsetup
(158.64 KB)
📄
dmstats
(158.64 KB)
📄
dnssec-checkds
(936 B)
📄
dnssec-coverage
(938 B)
📄
dnssec-dsfromkey
(60.84 KB)
📄
dnssec-importkey
(60.84 KB)
📄
dnssec-keyfromlabel
(64.76 KB)
📄
dnssec-keygen
(72.84 KB)
📄
dnssec-keymgr
(934 B)
📄
dnssec-revoke
(56.74 KB)
📄
dnssec-settime
(60.84 KB)
📄
dnssec-signzone
(117.2 KB)
📄
dnssec-verify
(52.84 KB)
📄
dosfsck
(65.13 KB)
📄
dosfslabel
(61.1 KB)
📄
dovecot
(137.48 KB)
📄
dovecot_cpshutdown
(3.27 KB)
📄
dpkg-fsys-usrunmess
(12.11 KB)
📄
dump-acct
(29.15 KB)
📄
dump-utmp
(25.02 KB)
📄
dumpe2fs
(32.52 KB)
📄
e2freefrag
(16.42 KB)
📄
e2fsck
(328.52 KB)
📄
e2image
(36.61 KB)
📄
e2label
(110.63 KB)
📄
e2mmpstatus
(32.52 KB)
📄
e2undo
(20.38 KB)
📄
e4crypt
(24.55 KB)
📄
e4defrag
(28.49 KB)
📄
ebtables
(220.8 KB)
📄
ebtables-restore
(220.8 KB)
📄
ebtables-save
(220.8 KB)
📄
edquota
(91.24 KB)
📄
era_check
(1.43 MB)
📄
era_dump
(1.43 MB)
📄
era_invalidate
(1.43 MB)
📄
era_restore
(1.43 MB)
📄
ether-wake
(73.99 KB)
📄
ethtool
(557.79 KB)
📄
exicyclog
(11.1 KB)
📄
exigrep
(10.52 KB)
📄
exim
(1.49 MB)
📄
exim_checkaccess
(4.83 KB)
📄
exim_dbmbuild
(23.23 KB)
📄
exim_dumpdb
(38.02 KB)
📄
exim_fixdb
(47.56 KB)
📄
exim_lock
(26.59 KB)
📄
exim_tidydb
(42.35 KB)
📄
eximstats
(148.26 KB)
📄
exinext
(7.14 KB)
📄
exiqgrep
(5.66 KB)
📄
exiqsumm
(5.32 KB)
📄
exiwhat
(4.42 KB)
📄
exportfs
(82.38 KB)
📄
faillock
(20.52 KB)
📄
fatlabel
(61.1 KB)
📄
fcgistarter
(17.11 KB)
📄
fdformat
(33.17 KB)
📄
fdisk
(130.92 KB)
📄
filefrag
(16.47 KB)
📄
findfs
(12.37 KB)
📄
firewalld
(6.92 KB)
📄
fix-info-dir
(7.84 KB)
📄
fixfiles
(10.48 KB)
📄
fsadm
(24 KB)
📄
fsck
(53.47 KB)
📄
fsck.cramfs
(41.4 KB)
📄
fsck.ext2
(328.52 KB)
📄
fsck.ext3
(328.52 KB)
📄
fsck.ext4
(328.52 KB)
📄
fsck.fat
(65.13 KB)
📄
fsck.minix
(98.74 KB)
📄
fsck.msdos
(65.13 KB)
📄
fsck.vfat
(65.13 KB)
📄
fsck.xfs
(1.92 KB)
📄
fsfreeze
(16.38 KB)
📄
fstrim
(49.6 KB)
📄
fuse2fs
(70.39 KB)
📄
fuser
(38.14 KB)
📄
g13-syshelp
(189.71 KB)
📄
genhomedircon
(29.27 KB)
📄
genhostid
(11.85 KB)
📄
genl
(121.41 KB)
📄
genrandom
(12.38 KB)
📄
getcap
(12.34 KB)
📄
getenforce
(7.84 KB)
📄
getpcaps
(12.27 KB)
📄
getsebool
(11.88 KB)
📄
groupadd
(95.34 KB)
📄
groupdel
(91.09 KB)
📄
groupmems
(61.48 KB)
📄
groupmod
(99.37 KB)
📄
grpck
(61.48 KB)
📄
grpconv
(57.26 KB)
📄
grpunconv
(57.25 KB)
📄
grub2-bios-setup
(1.16 MB)
📄
grub2-get-kernel-settings
(2.68 KB)
📄
grub2-install
(1.44 MB)
📄
grub2-macbless
(1.14 MB)
📄
grub2-mkconfig
(8.68 KB)
📄
grub2-ofpathname
(242.26 KB)
📄
grub2-probe
(1.16 MB)
📄
grub2-reboot
(3.99 KB)
📄
grub2-rpm-sort
(279.16 KB)
📄
grub2-set-bootflag
(16.34 KB)
📄
grub2-set-default
(3.45 KB)
📄
grub2-set-password
(3.05 KB)
📄
grub2-setpassword
(3.05 KB)
📄
grub2-sparc64-setup
(1.16 MB)
📄
grub2-switch-to-blscfg
(8.6 KB)
📄
grubby
(260 B)
📄
gss-server
(24.62 KB)
📄
gssproxy
(132.08 KB)
📄
halt
(218.45 KB)
📄
hardlink
(17.09 KB)
📄
hdparm
(131.91 KB)
📄
htcacheclean
(44.36 KB)
📄
httpd
(990.57 KB)
📄
hwclock
(65.22 KB)
📄
iconvconfig
(33.05 KB)
📄
ifconfig
(80.86 KB)
📄
ifdown
(2.07 KB)
📄
ifenslave
(24.95 KB)
📄
ifstat
(117.67 KB)
📄
iftop
(75.42 KB)
📄
ifup
(5.33 KB)
📄
imunify-notifier
(9.82 MB)
📄
init
(1.53 MB)
📄
insmod
(159.95 KB)
📄
install-info
(50.23 KB)
📄
installkernel
(323 B)
📄
intel_sdsi
(15.62 KB)
📄
iotop
(511 B)
📄
ip
(693.3 KB)
📄
ip6tables
(220.8 KB)
📄
ip6tables-apply
(6.89 KB)
📄
ip6tables-restore
(220.8 KB)
📄
ip6tables-restore-translate
(220.8 KB)
📄
ip6tables-save
(220.8 KB)
📄
ip6tables-translate
(220.8 KB)
📄
ipmaddr
(21 KB)
📄
iprconfig
(408.03 KB)
📄
iprdbg
(137.57 KB)
📄
iprdump
(129.3 KB)
📄
iprinit
(125.28 KB)
📄
iprsos
(2.18 KB)
📄
iprupdate
(129.3 KB)
📄
ipset
(9.01 KB)
📄
iptables
(220.8 KB)
📄
iptables-apply
(6.89 KB)
📄
iptables-restore
(220.8 KB)
📄
iptables-restore-translate
(220.8 KB)
📄
iptables-save
(220.8 KB)
📄
iptables-translate
(220.8 KB)
📄
iptstate
(92.05 KB)
📄
iptunnel
(25 KB)
📄
irqbalance
(62.28 KB)
📄
irqbalance-ui
(41.29 KB)
📄
isc-hmac-fixup
(11.85 KB)
📄
iscsi-iname
(16.42 KB)
📄
iscsiadm
(406.38 KB)
📄
iscsid
(419.23 KB)
📄
iscsistart
(374.54 KB)
📄
iscsiuio
(183.51 KB)
📄
kexec
(194.98 KB)
📄
key.dns_resolver
(24.52 KB)
📄
kpartx
(49.05 KB)
📄
kpatch
(16.59 KB)
📄
lchage
(16.41 KB)
📄
ldattach
(32.99 KB)
📄
ldconfig
(986.02 KB)
📄
ledctl
(101.16 KB)
📄
ledmon
(101.11 KB)
📄
lfd
(382.45 KB)
📄
lgroupadd
(11.88 KB)
📄
lgroupdel
(11.88 KB)
📄
lgroupmod
(19.88 KB)
📄
lid
(16.27 KB)
📄
lnewusers
(19.87 KB)
📄
lnstat
(25.33 KB)
📄
load_policy
(12.28 KB)
📄
logrotate
(93.03 KB)
📄
logsave
(16.41 KB)
📄
losetup
(90.59 KB)
📄
lpasswd
(20.35 KB)
📄
lshw
(966.2 KB)
📄
lsmod
(159.95 KB)
📄
lspci
(94.85 KB)
📄
luseradd
(19.88 KB)
📄
luserdel
(15.88 KB)
📄
lusermod
(19.88 KB)
📄
lvchange
(2.61 MB)
📄
lvconvert
(2.61 MB)
📄
lvcreate
(2.61 MB)
📄
lvdisplay
(2.61 MB)
📄
lvextend
(2.61 MB)
📄
lvm
(2.61 MB)
📄
lvm_import_vdo
(23.14 KB)
📄
lvmconfig
(2.61 MB)
📄
lvmdevices
(2.61 MB)
📄
lvmdiskscan
(2.61 MB)
📄
lvmdump
(10.12 KB)
📄
lvmpolld
(200.69 KB)
📄
lvmsadc
(2.61 MB)
📄
lvmsar
(2.61 MB)
📄
lvreduce
(2.61 MB)
📄
lvremove
(2.61 MB)
📄
lvrename
(2.61 MB)
📄
lvresize
(2.61 MB)
📄
lvs
(2.61 MB)
📄
lvscan
(2.61 MB)
📄
lwresd
(840.86 KB)
📄
makedumpfile
(425.19 KB)
📄
mariadbd
(24.3 MB)
📄
matchpathcon
(12.37 KB)
📄
mcelog
(206.3 KB)
📄
mdadm
(620.63 KB)
📄
mdmon
(375.48 KB)
📄
mii-diag
(25.4 KB)
📄
mii-tool
(21.03 KB)
📄
mkdict
(251 B)
📄
mkdosfs
(39.07 KB)
📄
mkdumprd
(12.68 KB)
📄
mke2fs
(138.45 KB)
📄
mkfadumprd
(2.23 KB)
📄
mkfs
(16.47 KB)
📄
mkfs.cramfs
(41.26 KB)
📄
mkfs.ext2
(138.45 KB)
📄
mkfs.ext3
(138.45 KB)
📄
mkfs.ext4
(138.45 KB)
📄
mkfs.fat
(39.07 KB)
📄
mkfs.minix
(86.55 KB)
📄
mkfs.msdos
(39.07 KB)
📄
mkfs.vfat
(39.07 KB)
📄
mkfs.xfs
(475.98 KB)
📄
mkhomedir_helper
(24.43 KB)
📄
mklost+found
(11.86 KB)
📄
mksquashfs
(186.83 KB)
📄
mkswap
(86.47 KB)
📄
modinfo
(159.95 KB)
📄
modprobe
(159.95 KB)
📄
modsec-sdbm-util
(25.83 KB)
📄
mount.nfs
(197.24 KB)
📄
mount.nfs4
(197.24 KB)
📄
mountstats
(42.22 KB)
📄
mpathconf
(16.17 KB)
📄
mpathpersist
(29.34 KB)
📄
mtr
(110.92 KB)
📄
mtr-packet
(58.3 KB)
📄
multipath
(32.61 KB)
📄
multipathd
(134.76 KB)
📄
mysqld
(24.3 MB)
📄
named
(840.86 KB)
📄
named-checkconf
(36.77 KB)
📄
named-checkzone
(36.63 KB)
📄
named-compilezone
(36.63 KB)
📄
named-journalprint
(11.85 KB)
📄
nameif
(16.98 KB)
📄
newusers
(107.23 KB)
📄
nfsconf
(37.48 KB)
📄
nfsconvert
(13.03 KB)
📄
nfsdcld
(65.87 KB)
📄
nfsdclddb
(10 KB)
📄
nfsdclnts
(9.02 KB)
📄
nfsdcltrack
(49.78 KB)
📄
nfsidmap
(45.36 KB)
📄
nfsiostat
(23.36 KB)
📄
nfsref
(65.8 KB)
📄
nfsstat
(35.52 KB)
📄
nft
(24.41 KB)
📄
nginx
(1.85 MB)
📄
nginx-debug
(1.98 MB)
📄
nologin
(11.87 KB)
📄
nrpe
(76.13 KB)
📄
nscd
(160.68 KB)
📄
nsec3hash
(12.29 KB)
📄
nstat
(113.57 KB)
📄
nvme
(721.45 KB)
📄
oddjobd
(77.63 KB)
📄
ownership
(12.4 KB)
📄
packer
(13.05 KB)
📄
pam_console_apply
(45.2 KB)
📄
pam_timestamp_check
(11.87 KB)
📄
paperconfig
(4.07 KB)
📄
parted
(85.6 KB)
📄
partprobe
(16.39 KB)
📄
partx
(94.5 KB)
📄
pdata_tools
(1.43 MB)
📄
pidof
(16.7 KB)
📄
ping
(66.13 KB)
📄
ping6
(66.13 KB)
📄
pivot_root
(12.38 KB)
📄
plipconfig
(12.71 KB)
📄
plymouth-set-default-theme
(6.05 KB)
📄
plymouthd
(141.97 KB)
📄
poweroff
(218.45 KB)
📄
pure-authd
(19.23 KB)
📄
pure-certd
(19.13 KB)
📄
pure-config.pl
(4.64 KB)
📄
pure-ftpd
(182.06 KB)
📄
pure-ftpwho
(26.82 KB)
📄
pure-mrtginfo
(11.16 KB)
📄
pure-quotacheck
(18.81 KB)
📄
pure-uploadscript
(19.07 KB)
📄
pvchange
(2.61 MB)
📄
pvck
(2.61 MB)
📄
pvcreate
(2.61 MB)
📄
pvdisplay
(2.61 MB)
📄
pvmove
(2.61 MB)
📄
pvremove
(2.61 MB)
📄
pvresize
(2.61 MB)
📄
pvs
(2.61 MB)
📄
pvscan
(2.61 MB)
📄
pwck
(57.27 KB)
📄
pwconv
(53.1 KB)
📄
pwhistory_helper
(20.43 KB)
📄
pwunconv
(53.13 KB)
📄
quot
(78.67 KB)
📄
quotacheck
(115.75 KB)
📄
quotaoff
(83.16 KB)
📄
quotaon
(83.16 KB)
📄
quotastats
(16.54 KB)
📄
raid-check
(3.7 KB)
📄
rcmysql
(0 B)
📄
rdisc
(24.55 KB)
📄
rdma
(187.38 KB)
📄
readprofile
(20.55 KB)
📄
realm
(144.26 KB)
📄
reboot
(218.45 KB)
📄
repquota
(83.24 KB)
📄
request-key
(24.38 KB)
📄
resize2fs
(64.91 KB)
📄
resizepart
(41.56 KB)
📄
resolvconf
(195.74 KB)
📄
restorecon
(20.53 KB)
📄
restorecon_xattr
(16.41 KB)
📄
rfkill
(53.46 KB)
📄
rmmod
(159.95 KB)
📄
rndc
(36.53 KB)
📄
rndc-confgen
(20.45 KB)
📄
rotatelogs
(30.51 KB)
📄
route
(67.63 KB)
📄
rpc.gssd
(106.55 KB)
📄
rpc.idmapd
(61.73 KB)
📄
rpc.mountd
(158.92 KB)
📄
rpc.nfsd
(49.91 KB)
📄
rpc.statd
(103.29 KB)
📄
rpcbind
(61.55 KB)
📄
rpcctl
(9.41 KB)
📄
rpcdebug
(19.38 KB)
📄
rpcinfo
(32.64 KB)
📄
rsyslogd
(724.73 KB)
📄
rtacct
(46.94 KB)
📄
rtcwake
(49.31 KB)
📄
rtmon
(117.27 KB)
📄
rtstat
(25.33 KB)
📄
runlevel
(218.45 KB)
📄
runq
(1.49 MB)
📄
runuser
(48.99 KB)
📄
sa
(46.62 KB)
📄
sasldblistusers2
(20.77 KB)
📄
saslpasswd2
(16.42 KB)
📄
sefcontext_compile
(65.35 KB)
📄
selabel_digest
(12.28 KB)
📄
selabel_lookup
(12.27 KB)
📄
selabel_lookup_best_match
(11.89 KB)
📄
selabel_partial_match
(11.88 KB)
📄
selinux_check_access
(12.36 KB)
📄
selinuxconlist
(11.88 KB)
📄
selinuxdefcon
(11.88 KB)
📄
selinuxenabled
(7.84 KB)
📄
selinuxexeccon
(11.86 KB)
📄
semodule
(29.27 KB)
📄
sendmail
(16.91 KB)
📄
service
(3.64 KB)
📄
sestatus
(20.41 KB)
📄
setcap
(16.27 KB)
📄
setenforce
(12.27 KB)
📄
setfiles
(20.53 KB)
📄
setpci
(28.56 KB)
📄
setquota
(91.38 KB)
📄
setsebool
(16.38 KB)
📄
sfdisk
(118.5 KB)
📄
showmount
(21.06 KB)
📄
shutdown
(218.45 KB)
📄
sim_server
(11.87 KB)
📄
slattach
(43.76 KB)
📄
sm-notify
(78.14 KB)
📄
smartctl
(907.08 KB)
📄
smartd
(733.2 KB)
📄
snmpd
(32.45 KB)
📄
snmptrapd
(32.6 KB)
📄
sos
(627 B)
📄
sos-collector
(139 B)
📄
sosreport
(132 B)
📄
ss
(191.3 KB)
📄
sshd
(869.77 KB)
📄
sss_cache
(61.09 KB)
📄
sssd
(73.01 KB)
📄
start-statd
(838 B)
📄
start-stop-daemon
(45.98 KB)
📄
suexec
(25.3 KB)
📄
sulogin
(49.24 KB)
📄
suphp
(6.56 MB)
📄
swaplabel
(16.5 KB)
📄
swapoff
(20.74 KB)
📄
swapon
(49.4 KB)
📄
switch_root
(16.49 KB)
📄
sysctl
(28.88 KB)
📄
syspurpose
(415 B)
📄
tcpdump
(1.01 MB)
📄
tcpslice
(32.63 KB)
📄
tcsd
(309.72 KB)
📄
telinit
(218.45 KB)
📄
thin_check
(1.43 MB)
📄
thin_delta
(1.43 MB)
📄
thin_dump
(1.43 MB)
📄
thin_ls
(1.43 MB)
📄
thin_metadata_pack
(907.47 KB)
📄
thin_metadata_size
(1.43 MB)
📄
thin_metadata_unpack
(895.45 KB)
📄
thin_repair
(1.43 MB)
📄
thin_restore
(1.43 MB)
📄
thin_rmap
(1.43 MB)
📄
thin_trim
(1.43 MB)
📄
timedatex
(33.43 KB)
📄
tipc
(163.07 KB)
📄
tmpwatch
(35.47 KB)
📄
tracepath
(20.44 KB)
📄
tracepath6
(20.44 KB)
📄
tsig-keygen
(20.46 KB)
📄
tune2fs
(110.63 KB)
📄
tuned
(3.88 KB)
📄
tuned-adm
(6.5 KB)
📄
udevadm
(424.59 KB)
📄
umount.nfs
(197.24 KB)
📄
umount.nfs4
(197.24 KB)
📄
unbound-anchor
(57.34 KB)
📄
unix_chkpwd
(36.86 KB)
📄
unix_update
(36.87 KB)
📄
unsquashfs
(99.57 KB)
📄
update-alternatives
(36.66 KB)
📄
update-pciids
(1.71 KB)
📄
update-smart-drivedb
(14.44 KB)
📄
useradd
(148.17 KB)
📄
userdel
(107.29 KB)
📄
usermod
(144.07 KB)
📄
usernetctl
(12.4 KB)
📄
uuserver
(15.88 KB)
📄
vdpa
(118.04 KB)
📄
vgcfgbackup
(2.61 MB)
📄
vgcfgrestore
(2.61 MB)
📄
vgchange
(2.61 MB)
📄
vgck
(2.61 MB)
📄
vgconvert
(2.61 MB)
📄
vgcreate
(2.61 MB)
📄
vgdisplay
(2.61 MB)
📄
vgexport
(2.61 MB)
📄
vgextend
(2.61 MB)
📄
vgimport
(2.61 MB)
📄
vgimportclone
(2.61 MB)
📄
vgimportdevices
(2.61 MB)
📄
vgmerge
(2.61 MB)
📄
vgmknodes
(2.61 MB)
📄
vgreduce
(2.61 MB)
📄
vgremove
(2.61 MB)
📄
vgrename
(2.61 MB)
📄
vgs
(2.61 MB)
📄
vgscan
(2.61 MB)
📄
vgsplit
(2.61 MB)
📄
vigr
(68.05 KB)
📄
vipw
(68.05 KB)
📄
virt-what
(14.22 KB)
📄
visudo
(239.22 KB)
📄
vmcore-dmesg
(28.58 KB)
📄
vpddecode
(16.47 KB)
📄
weak-modules
(33.6 KB)
📄
whmapi0
(3.18 MB)
📄
whmapi1
(3.18 MB)
📄
whmlogin
(2.33 KB)
📄
wipefs
(41.11 KB)
📄
xfs_admin
(1.38 KB)
📄
xfs_bmap
(695 B)
📄
xfs_copy
(434.59 KB)
📄
xfs_db
(760.47 KB)
📄
xfs_estimate
(12.39 KB)
📄
xfs_freeze
(800 B)
📄
xfs_fsr
(53.41 KB)
📄
xfs_growfs
(422.48 KB)
📄
xfs_info
(1.26 KB)
📄
xfs_io
(188.28 KB)
📄
xfs_logprint
(454.7 KB)
📄
xfs_mdrestore
(410.09 KB)
📄
xfs_metadump
(782 B)
📄
xfs_mkfile
(1.02 KB)
📄
xfs_ncheck
(685 B)
📄
xfs_quota
(93.98 KB)
📄
xfs_repair
(715.24 KB)
📄
xfs_rtcp
(16.38 KB)
📄
xfs_spaceman
(45.42 KB)
📄
xfsdump
(308.02 KB)
📄
xfsinvutil
(66.91 KB)
📄
xfsrestore
(369.39 KB)
📄
xqmstats
(16.45 KB)
📄
xtables-monitor
(220.8 KB)
📄
xtables-nft-multi
(220.8 KB)
📄
zdump
(20.57 KB)
📄
zic
(52.83 KB)
📄
zramctl
(99.09 KB)
Editing: blkdeactivate
#!/bin/bash # # Copyright (C) 2012-2020 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions # of the GNU General Public License v.2. # # 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 # # Author: Peter Rajnoha <prajnoha at redhat.com> # # Script for deactivating block devices # # Requires: # bash >= 4.0 (associative array support) # util-linux { # lsblk >= 2.22 (lsblk -s support) # umount # } # dmsetup >= 1.02.68 (--retry option support) # lvm >= 2.2.89 (activation/retry_deactivation config support) # #set -x shopt -s dotglob nullglob TOOL=blkdeactivate DEV_DIR="/dev" SYS_BLK_DIR="/sys/block" MDADM="/sbin/mdadm" MOUNTPOINT="/bin/mountpoint" MPATHD="/sbin/multipathd" UMOUNT="/bin/umount" VDO="/bin/vdo" sbindir="/usr/sbin" DMSETUP="$sbindir/dmsetup" LVM="$sbindir/lvm" if "$UMOUNT" --help | grep -- "--all-targets" >"$DEV_DIR/null"; then UMOUNT_OPTS="--all-targets " else UMOUNT_OPTS="" FINDMNT="/bin/findmnt -r --noheadings -u -o TARGET" FINDMNT_READ="read -r mnt" fi DMSETUP_OPTS="" LVM_OPTS="" MDADM_OPTS="" MPATHD_OPTS="" VDO_OPTS="" LSBLK="/bin/lsblk -r --noheadings -o TYPE,KNAME,NAME,MOUNTPOINT" LSBLK_VARS="local devtype local kname local name local mnt" LSBLK_READ="read -r devtype kname name mnt" SORT_MNT="/bin/sort -r -u -k 4" # Do not show tool errors by default (only done/skipping summary # message provided by this script) and no verbose mode by default. ERRORS=0 VERBOSE=0 # Do not unmount mounted devices by default. DO_UMOUNT=0 # Deactivate each LV separately by default (not the whole VG). LVM_DO_WHOLE_VG=0 # Do not retry LV deactivation by default. LVM_CONFIG="activation{retry_deactivation=0}" # Do not wait for MD RAID device resync, recovery or reshape. MDRAID_DO_WAIT=0 # Do not disable queueing if set on multipath devices. MPATHD_DO_DISABLEQUEUEING=0 # # List of device names and/or VGs to be skipped. # Device name is the KNAME from lsblk output. # # If deactivation of any device fails, it's automatically # added to the SKIP_DEVICE_LIST (also a particular VG # added to the SKIP_VG_LIST for a device that is an LV). # # These lists provide device tree pruning to skip # particular device/VG deactivation that failed already. # (lists are associative arrays!) # declare -A SKIP_DEVICE_LIST=() declare -A SKIP_VG_LIST=() # # List of mountpoints to be skipped. Any device that is mounted on the mountpoint # listed here will be added to SKIP_DEVICE_LIST (and SKIP_VG_LIST) automatically. # (list is an associative array!) # declare -A SKIP_UMOUNT_LIST=(["/"]=1 \ ["/lib"]=1 ["/lib64"]=1 \ ["/bin"]=1 ["/sbin"]=1 \ ["/var"]=1 ["/var/log"]=1 \ ["/usr"]=1 \ ["/usr/lib"]=1 ["/usr/lib64"]=1 \ ["/usr/sbin"]=1 ["/usr/bin"]=1) # Bash can't properly handle '[' and ']' used as a subscript # within the '()'initialization - it needs to be done separately! SKIP_UMOUNT_LIST["[SWAP]"]=1 usage() { echo "${TOOL}: Utility to deactivate block devices" echo echo " ${TOOL} [options] [device...]" echo " - Deactivate block device tree." echo " If devices are specified, deactivate only supplied devices and their holders." echo echo " Options:" echo " -e | --errors Show errors reported from tools" echo " -h | --help Show this help message" echo " -d | --dmoptions DM_OPTIONS Comma separated DM specific options" echo " -l | --lvmoptions LVM_OPTIONS Comma separated LVM specific options" echo " -m | --mpathoptions MPATH_OPTIONS Comma separated DM-multipath specific options" echo " -r | --mdraidoptions MDRAID_OPTIONS Comma separated MD RAID specific options" echo " -o | --vdooptions VDO_OPTIONS Comma separated VDO specific options" echo " -u | --umount Unmount the device if mounted" echo " -v | --verbose Verbose mode (also implies -e)" echo echo " Device specific options:" echo " DM_OPTIONS:" echo " retry retry removal several times in case of failure" echo " force force device removal" echo " LVM_OPTIONS:" echo " retry retry removal several times in case of failure" echo " wholevg deactivate the whole VG when processing an LV" echo " MDRAID_OPTIONS:" echo " wait wait for resync, recovery or reshape to complete first" echo " MPATH_OPTIONS:" echo " disablequeueing disable queueing on all DM-multipath devices first" echo " VDO_OPTIONS:" echo " configfile=file use specified VDO configuration file" exit } add_device_to_skip_list() { SKIP_DEVICE_LIST+=(["$kname"]=1) return 1 } add_vg_to_skip_list() { SKIP_VG_LIST+=(["$DM_VG_NAME"]=1) return 1 } is_top_level_device() { # top level devices do not have any holders, that is # the SYS_BLK_DIR/<device_name>/holders dir is empty files=$(echo "$SYS_BLK_DIR/$kname/holders/"*) test -z "$files" } device_umount_one() { test -z "$mnt" && return 0 if test -z "${SKIP_UMOUNT_LIST["$mnt"]}" -a "$DO_UMOUNT" -eq "1"; then echo -n " [UMOUNT]: unmounting $name ($kname) mounted on $mnt... " if eval "$UMOUNT" $UMOUNT_OPTS "$(printf "%s" "$mnt")" "$OUT" "$ERR"; then echo "done" elif "$MOUNTPOINT" -q "$mnt"; then echo "skipping" add_device_to_skip_list else echo "already unmounted" fi else echo " [SKIP]: unmount of $name ($kname) mounted on $mnt" add_device_to_skip_list fi } device_umount() { test "$devtype" != "lvm" && test "${kname:0:3}" != "dm-" \ && test "${kname:0:2}" != "md" && return 0 # FINDMNT is defined only if umount --all-targets is not available. # In that case, read the list of multiple mount points of one device # using FINDMNT and unmount it one by one manually. if test -z "$FINDMNT"; then device_umount_one else while $FINDMNT_READ; do device_umount_one || return 1 done <<< "$($FINDMNT "$DEV_DIR/$kname")" fi } deactivate_holders () { local skip=1; $LSBLK_VARS # Get holders for the device - either a mount or another device. # First line on the lsblk output is the device itself - skip it for # the deactivate call as this device is already being deactivated. while $LSBLK_READ; do test -e "$SYS_BLK_DIR/$kname" || continue # check if the device not on the skip list already test -z "${SKIP_DEVICE_LIST["$kname"]}" || return 1 # try to deactivate the holder test "$skip" -eq 1 && skip=0 && continue deactivate || return 1 done <<< "$($LSBLK "$1")" } deactivate_dm () { local xname xname=$(printf "%s" "$name") test -b "$DEV_DIR/mapper/$xname" || return 0 test -z "${SKIP_DEVICE_LIST["$kname"]}" || return 1 deactivate_holders "$DEV_DIR/mapper/$xname" || return 1 echo -n " [DM]: deactivating $devtype device $xname ($kname)... " if eval "$DMSETUP" $DMSETUP_OPTS remove "$xname" "$OUT" "$ERR"; then echo "done" else echo "skipping" add_device_to_skip_list fi } deactivate_lvm () { local DM_VG_NAME; local DM_LV_NAME eval "$(eval "$DMSETUP" splitname --nameprefixes --noheadings --rows "$name" LVM "$ERR")" test -b "$DEV_DIR/$DM_VG_NAME/$DM_LV_NAME" || return 0 test -z "${SKIP_VG_LIST["$DM_VG_NAME"]}" || return 1 if test "$LVM_DO_WHOLE_VG" -eq 0; then # Skip LVM device deactivation if LVM tools missing. test "$LVM_AVAILABLE" -eq 0 && { add_device_to_skip_list return 1 } # Deactivating only the LV specified deactivate_holders "$DEV_DIR/$DM_VG_NAME/$DM_LV_NAME" || { add_device_to_skip_list return 1 } echo -n " [LVM]: deactivating Logical Volume $DM_VG_NAME/$DM_LV_NAME... " if eval "$LVM" lvchange $LVM_OPTS --config \'log\{prefix=\"\"\} $LVM_CONFIG\' -aln "$DM_VG_NAME/$DM_LV_NAME" "$OUT" "$ERR"; then echo "done" else echo "skipping" add_device_to_skip_list fi else # Skip LVM VG deactivation if LVM tools missing. test "$LVM_AVAILABLE" -eq 0 && { add_vg_to_skip_list return 1 } # Deactivating the whole VG the LV is part of lv_list=$(eval "$LVM" vgs --config "$LVM_CONFIG" --noheadings --rows -o lv_name "$DM_VG_NAME" "$ERR") for lv in $lv_list; do test -b "$DEV_DIR/$DM_VG_NAME/$lv" || continue deactivate_holders "$DEV_DIR/$DM_VG_NAME/$lv" || { add_vg_to_skip_list return 1 } done echo -n " [LVM]: deactivating Volume Group $DM_VG_NAME... " if eval "$LVM" vgchange $LVM_OPTS --config \'log\{prefix=\" \"\} $LVM_CONFIG\' -aln "$DM_VG_NAME" "$OUT" "$ERR"; then echo "done" else echo "skipping" add_vg_to_skip_list fi fi } deactivate_md () { local xname xname=$(printf "%s" "$name") local sync_action test -b "$DEV_DIR/$xname" || return 0 test -z "${SKIP_DEVICE_LIST["$kname"]}" || return 1 # Skip MD device deactivation if MD tools missing. test "$MDADM_AVAILABLE" -eq 0 && { add_device_to_skip_list return 1 } deactivate_holders "$DEV_DIR/$xname" || return 1 echo -n " [MD]: deactivating $devtype device $kname... " test "$MDRAID_DO_WAIT" -eq 1 && { sync_action=$(cat "$SYS_BLK_DIR/$kname/md/sync_action") test "$sync_action" != "idle" && { echo -n "$sync_action action in progress... " if eval "$MDADM" $MDADM_OPTS -W "$DEV_DIR/$kname" "$OUT" "$ERR"; then echo -n "complete... " else test $? -ne 1 && echo -n "failed to wait for $sync_action action... " fi } } if eval "$MDADM" $MDADM_OPTS -S "$xname" "$OUT" "$ERR"; then echo "done" else echo "skipping" add_device_to_skip_list fi } deactivate_vdo() { local xname xname=$(printf "%s" "$name") test -b "$DEV_DIR/mapper/$xname" || return 0 test -z "${SKIP_DEVICE_LIST["$kname"]}" || return 1 # Skip VDO device deactivation if VDO tools missing. test "$VDO_AVAILABLE" -eq 0 && { add_device_to_skip_list return 1 } deactivate_holders "$DEV_DIR/mapper/$xname" || return 1 echo -n " [VDO]: deactivating VDO volume $xname... " if eval "$VDO" stop $VDO_OPTS --name="$xname" "$OUT" "$ERR"; then echo "done" else echo "skipping" add_device_to_skip_list fi } deactivate () { ###################################################################### # DEACTIVATION HOOKS FOR NEW DEVICE TYPES GO HERE! # # # # Identify a new device type either by inspecting the TYPE provided # # by lsblk directly ($devtype) or by any other mean that is suitable # # e.g. the KNAME provided by lsblk ($kname). See $LSBLK_VARS for # # complete list of variables that may be used. Then call a # # device-specific deactivation function that handles the exact type. # # # # This device-specific function will certainly need to call # # deactivate_holders first to recursively deactivate any existing # # holders it might have before deactivating the device it processes. # ###################################################################### if test "$devtype" = "lvm"; then deactivate_lvm elif test "$devtype" = "vdo"; then deactivate_vdo elif test "${kname:0:3}" = "dm-"; then deactivate_dm elif test "${kname:0:2}" = "md"; then deactivate_md fi } deactivate_all() { $LSBLK_VARS skip=0 echo "Deactivating block devices:" test "$MPATHD_RUNNING" -eq 1 && { echo -n " [DM]: disabling queueing on all multipath devices... " eval "$MPATHD" $MPATHD_OPTS disablequeueing maps "$ERR" | grep '^ok$' >"$DEV_DIR/null" && echo "done" || echo "failed" } if test $# -eq 0; then ####################### # Process all devices # ####################### # Unmount all relevant mountpoints first while $LSBLK_READ; do device_umount done <<< "$($LSBLK | $SORT_MNT)" # Do deactivate while $LSBLK_READ; do # 'disk' is at the bottom already and it's a real device test "$devtype" = "disk" && continue # if deactivation of any device fails, skip processing # any subsequent devices within its subtree as the # top-level device could not be deactivated anyway test "$skip" -eq 1 && { # reset 'skip' on top level device if is_top_level_device ; then skip=0 else continue fi } # check if the device is not on the skip list already test -z "${SKIP_DEVICE_LIST["$kname"]}" || continue # try to deactivate top-level device, set 'skip=1' # if it fails to do so - this will cause all the # device's subtree to be skipped when processing # devices further in this loop deactivate || skip=1 done <<< "$($LSBLK -s)" else ################################## # Process only specified devices # ################################## while test $# -ne 0; do # Unmount all relevant mountpoints first while $LSBLK_READ; do device_umount done <<< "$($LSBLK "$1" | $SORT_MNT)" # Do deactivate # Single dm device tree deactivation. if test -b "$1"; then $LSBLK_READ <<< "$($LSBLK --nodeps "$1")" # check if the device is not on the skip list already test -z "${SKIP_DEVICE_LIST["$kname"]}" || { shift continue } deactivate else echo "$1: device not found" return 1 fi shift done; fi } get_dmopts() { ORIG_IFS=$IFS; IFS=',' for opt in $1; do case $opt in "") ;; "retry") DMSETUP_OPTS+="--retry " ;; "force") DMSETUP_OPTS+="--force " ;; *) echo "$opt: unknown DM option" esac done IFS=$ORIG_IFS } get_lvmopts() { ORIG_IFS=$IFS; IFS=',' for opt in $1; do case "$opt" in "") ;; "retry") LVM_CONFIG="activation{retry_deactivation=1}" ;; "wholevg") LVM_DO_WHOLE_VG=1 ;; *) echo "$opt: unknown LVM option" esac done IFS=$ORIG_IFS } get_mdraidopts() { ORIG_IFS=$IFS; IFS=',' for opt in $1; do case "$opt" in "") ;; "wait") MDRAID_DO_WAIT=1 ;; *) echo "$opt: unknown MD RAID option" esac done IFS=$ORIG_IFS } get_mpathopts() { ORIG_IFS=$IFS; IFS=',' for opt in $1; do case "$opt" in "") ;; "disablequeueing") MPATHD_DO_DISABLEQUEUEING=1 ;; *) echo "$opt: unknown DM-multipath option" esac done IFS=$ORIG_IFS } get_vdoopts() { ORIG_IFS=$IFS; IFS=',' for opt in $1; do case "$opt" in "") ;; configfile=*) tmp=${opt#*=}; VDO_OPTS+="--confFile=${tmp%%,*} " ;; *) echo "$opt: unknown VDO option" esac done IFS=$ORIG_IFS } set_env() { if test "$ERRORS" -eq "1"; then unset ERR else ERR="2>$DEV_DIR/null" fi if test "$VERBOSE" -eq "1"; then unset OUT UMOUNT_OPTS+="-v" DMSETUP_OPTS+="-vvvv" LVM_OPTS+="-vvvv" MDADM_OPTS+="-vv" MPATHD_OPTS+="-v 3" VDO_OPTS+="--verbose " else OUT="1>$DEV_DIR/null" fi if test -f "$LVM"; then LVM_AVAILABLE=1 else LVM_AVAILABLE=0 fi if test -f $MDADM; then MDADM_AVAILABLE=1 else MDADM_AVAILABLE=0 fi if test -f $VDO; then VDO_AVAILABLE=1 else VDO_AVAILABLE=0 fi MPATHD_RUNNING=0 test "$MPATHD_DO_DISABLEQUEUEING" -eq 1 && { if test -f "$MPATHD"; then if eval "$MPATHD" show daemon "$ERR" | grep "running" >"$DEV_DIR/null"; then MPATHD_RUNNING=1 fi fi } } while test $# -ne 0; do case "$1" in "") ;; "-e"|"--errors") ERRORS=1 ;; "-h"|"--help") usage ;; "-d"|"--dmoptions") get_dmopts "$2" ; shift ;; "-l"|"--lvmoptions") get_lvmopts "$2" ; shift ;; "-m"|"--mpathoptions") get_mpathopts "$2" ; shift ;; "-r"|"--mdraidoptions") get_mdraidopts "$2"; shift ;; "-o"|"--vdooptions") get_vdoopts "$2"; shift ;; "-u"|"--umount") DO_UMOUNT=1 ;; "-v"|"--verbose") VERBOSE=1 ; ERRORS=1 ;; "-vv") VERBOSE=1 ; ERRORS=1 ; set -x ;; *) break ;; esac shift done set_env deactivate_all "$@"
Upload File
Create Folder