Linux ns8.secondary29.go.th 2.6.32-754.28.1.el6.x86_64 #1 SMP Wed Mar 11 18:38:45 UTC 2020 x86_64
Apache/2.2.15 (CentOS)
: 122.154.134.11 | : 122.154.134.9
Cant Read [ /etc/named.conf ]
5.6.40
apache
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
MAKEDEV
28.14
KB
-rwxr-xr-x
accton
10.45
KB
-rwxr-xr-x
addpart
8.26
KB
-rwxr-xr-x
agetty
26.09
KB
-rwxr-xr-x
alsactl
101.37
KB
-rwxr-xr-x
arp
61.37
KB
-rwxr-xr-x
arping
17.48
KB
-rwxr-xr-x
audispd
38.02
KB
-rwxr-x---
auditctl
38.03
KB
-rwxr-x---
augenrules
3.48
KB
-rwxr-x---
aureport
95.78
KB
-rwxr-xr-x
ausearch
93.02
KB
-rwxr-xr-x
autrace
16.13
KB
-rwxr-x---
badblocks
29.05
KB
-rwxr-xr-x
biosdevname
37.26
KB
-rwxr-xr-x
blkdeactivate
13.25
KB
-rwxr-xr-x
blkdiscard
18.73
KB
-rwxr-xr-x
blkid
27.17
KB
-rwxr-xr-x
blockdev
17.21
KB
-rwxr-xr-x
bridge
53.63
KB
-rwxr-xr-x
busybox
1021.48
KB
-rwxr-xr-x
cache_check
1.54
MB
-rwxr-xr-x
cache_dump
1.54
MB
-rwxr-xr-x
cache_metadata_size
1.54
MB
-rwxr-xr-x
cache_repair
1.54
MB
-rwxr-xr-x
cache_restore
1.54
MB
-rwxr-xr-x
cbq
32.77
KB
-rwxr-xr-x
cfdisk
68.41
KB
-rwxr-xr-x
chcpu
29.11
KB
-rwxr-xr-x
chkconfig
36.07
KB
-rwxr-xr-x
clock
47.52
KB
-rwxr-xr-x
consoletype
7.71
KB
-rwxr-xr-x
cryptsetup
43.6
KB
-rwxr-xr-x
ctrlaltdel
8.39
KB
-rwxr-xr-x
debugfs
94.08
KB
-rwxr-xr-x
delpart
8.22
KB
-rwxr-xr-x
depmod
133.05
KB
-rwxr-xr-x
dm_dso_reg_tool
13.6
KB
-rwxr-xr-x
dmevent_tool
13.6
KB
-rwxr-xr-x
dmeventd
42.18
KB
-r-xr-xr-x
dmraid
26.27
KB
-rwxr-xr-x
dmraid.static
26.27
KB
-rwxr-xr-x
dmsetup
142.03
KB
-rwxr-xr-x
dmstats
142.03
KB
-rwxr-xr-x
dosfsck
54.05
KB
-rwxr-xr-x
dosfslabel
51.06
KB
-rwxr-xr-x
dracut
11.86
KB
-rwxr-xr-x
dumpe2fs
22.74
KB
-rwxr-xr-x
e2fsck
192.73
KB
-rwxr-xr-x
e2image
28.74
KB
-rwxr-xr-x
e2label
41.73
KB
-rwxr-xr-x
e2undo
14.25
KB
-rwxr-xr-x
era_check
1.54
MB
-rwxr-xr-x
era_dump
1.54
MB
-rwxr-xr-x
era_invalidate
1.54
MB
-rwxr-xr-x
era_restore
1.54
MB
-rwxr-xr-x
ether-wake
14.37
KB
-rwxr-xr-x
ethtool
233.75
KB
-rwxr-xr-x
faillock
14.57
KB
-rwxr-xr-x
fdisk
112.05
KB
-rwxr-xr-x
findfs
9.38
KB
-rwxr-xr-x
fixfiles
7.75
KB
-rwxr-xr-x
fsadm
14.88
KB
-r-xr-xr-x
fsck
33.87
KB
-rwxr-xr-x
fsck.cramfs
15.82
KB
-rwxr-xr-x
fsck.ext2
192.73
KB
-rwxr-xr-x
fsck.ext3
192.73
KB
-rwxr-xr-x
fsck.ext4
192.73
KB
-rwxr-xr-x
fsck.ext4dev
192.73
KB
-rwxr-xr-x
fsck.msdos
54.05
KB
-rwxr-xr-x
fsck.vfat
54.05
KB
-rwxr-xr-x
fsfreeze
10.27
KB
-rwxr-xr-x
fstab-decode
8.14
KB
-rwxr-xr-x
fstrim
17.95
KB
-rwxr-xr-x
fuser
28.48
KB
-rwxr-xr-x
genhostid
7.91
KB
-rwxr-xr-x
getkey
11.71
KB
-rwxr-xr-x
grub
740.84
KB
-rwxr-xr-x
grub-crypt
2.41
KB
-rwxr-xr-x
grub-install
18
KB
-rwxr-xr-x
grub-md5-crypt
2.24
KB
-rwxr-xr-x
grub-terminfo
2.42
KB
-rwxr-xr-x
grubby
50.31
KB
-rwxr-xr-x
halt
14.48
KB
-rwxr-xr-x
hdparm
108.85
KB
-rwxr-xr-x
hwclock
47.52
KB
-rwxr-xr-x
ifcfg
2.98
KB
-rwxr-xr-x
ifconfig
72.23
KB
-rwxr-xr-x
ifdown
1.47
KB
-rwxr-xr-x
ifenslave
21.65
KB
-rwxr-xr-x
ifrename
31.43
KB
-rwxr-xr-x
ifup
4.58
KB
-rwxr-xr-x
initctl
135.53
KB
-rwxr-xr-x
insmod
13.79
KB
-rwxr-xr-x
insmod.static
784.58
KB
-rwxr-xr-x
install-info
42.56
KB
-rwxr-xr-x
installkernel
2.61
KB
-rwxr-xr-x
ip
241.45
KB
-rwxr-xr-x
ip6tables
49.64
KB
-rwxr-xr-x
ip6tables-1.4.7
49.64
KB
-rwxr-xr-x
ip6tables-multi
49.64
KB
-rwxr-xr-x
ip6tables-multi-1.4.7
49.64
KB
-rwxr-xr-x
ip6tables-restore
49.64
KB
-rwxr-xr-x
ip6tables-restore-1.4.7
49.64
KB
-rwxr-xr-x
ip6tables-save
49.64
KB
-rwxr-xr-x
ip6tables-save-1.4.7
49.64
KB
-rwxr-xr-x
ipmaddr
18.92
KB
-rwxr-xr-x
iptables
58.45
KB
-rwxr-xr-x
iptables-1.4.7
58.45
KB
-rwxr-xr-x
iptables-multi
58.45
KB
-rwxr-xr-x
iptables-multi-1.4.7
58.45
KB
-rwxr-xr-x
iptables-restore
58.45
KB
-rwxr-xr-x
iptables-restore-1.4.7
58.45
KB
-rwxr-xr-x
iptables-save
58.45
KB
-rwxr-xr-x
iptables-save-1.4.7
58.45
KB
-rwxr-xr-x
iptunnel
22.75
KB
-rwxr-xr-x
iw
160.43
KB
-rwxr-xr-x
iwconfig
29.58
KB
-rwxr-xr-x
iwevent
18.23
KB
-rwxr-xr-x
iwgetid
14.06
KB
-rwxr-xr-x
iwlist
35.68
KB
-rwxr-xr-x
iwpriv
14.87
KB
-rwxr-xr-x
iwspy
13.94
KB
-rwxr-xr-x
kdump
10.83
KB
-rwxr-xr-x
kexec
176.1
KB
-rwxr-xr-x
killall5
19.98
KB
-rwxr-xr-x
kpartx
38.43
KB
-rwxr-xr-x
ldconfig
878.12
KB
-rwxr-xr-x
load_policy
10.21
KB
-rwxr-xr-x
logsave
12.8
KB
-rwxr-xr-x
losetup
31.2
KB
-rwxr-xr-x
lsinitrd
3.93
KB
-rwxr-xr-x
lsmod
8.88
KB
-rwxr-xr-x
lspci
70.12
KB
-rwxr-xr-x
lspcmcia
35.33
KB
-rwxr-xr-x
lvchange
1.46
MB
-r-xr-xr-x
lvconvert
1.46
MB
-r-xr-xr-x
lvcreate
1.46
MB
-r-xr-xr-x
lvdisplay
1.46
MB
-r-xr-xr-x
lvextend
1.46
MB
-r-xr-xr-x
lvm
1.46
MB
-r-xr-xr-x
lvmchange
1.46
MB
-r-xr-xr-x
lvmconf
12.39
KB
-r-xr-xr-x
lvmconfig
1.46
MB
-r-xr-xr-x
lvmdiskscan
1.46
MB
-r-xr-xr-x
lvmdump
9.43
KB
-r-xr-xr-x
lvmetad
66.09
KB
-r-xr-xr-x
lvmsadc
1.46
MB
-r-xr-xr-x
lvmsar
1.46
MB
-r-xr-xr-x
lvreduce
1.46
MB
-r-xr-xr-x
lvremove
1.46
MB
-r-xr-xr-x
lvrename
1.46
MB
-r-xr-xr-x
lvresize
1.46
MB
-r-xr-xr-x
lvs
1.46
MB
-r-xr-xr-x
lvscan
1.46
MB
-r-xr-xr-x
matchpathcon
12.01
KB
-rwxr-xr-x
mdmon
229.84
KB
-rwxr-xr-x
microcode_ctl
11.61
KB
-rwxr-xr-x
mii-diag
21.25
KB
-rwxr-xr-x
mii-tool
17.8
KB
-rwxr-xr-x
mingetty
18.7
KB
-rwxr-xr-x
mkdosfs
29.88
KB
-rwxr-xr-x
mkdumprd
120.65
KB
-rwxr-xr-x
mke2fs
67.34
KB
-rwxr-xr-x
mkfs
10.09
KB
-rwxr-xr-x
mkfs.cramfs
26.26
KB
-rwxr-xr-x
mkfs.ext2
67.34
KB
-rwxr-xr-x
mkfs.ext3
67.34
KB
-rwxr-xr-x
mkfs.ext4
67.34
KB
-rwxr-xr-x
mkfs.ext4dev
67.34
KB
-rwxr-xr-x
mkfs.msdos
29.88
KB
-rwxr-xr-x
mkfs.vfat
29.88
KB
-rwxr-xr-x
mkhomedir_helper
22.01
KB
-rwxr-xr-x
mkinitrd
3.33
KB
-rwxr-xr-x
mkswap
30.78
KB
-rwxr-xr-x
modinfo
95.34
KB
-rwxr-xr-x
modprobe
121.42
KB
-rwxr-xr-x
mount.cifs
39.59
KB
-rwxr-xr-x
mount.nfs
122.47
KB
-rwsr-xr-x
mount.nfs4
122.47
KB
-rwsr-xr-x
mount.tmpfs
1.31
KB
-rwxr-xr-x
nameif
15.26
KB
-rwxr-xr-x
netreport
8.59
KB
-rwxr-sr-x
new-kernel-pkg
13.57
KB
-rwxr-xr-x
nfs_cache_getent
460
B
-rwxr-xr-x
nologin
7.63
KB
-rwxr-xr-x
pam_console_apply
41.13
KB
-rwxr-xr-x
pam_tally2
16.87
KB
-rwxr-xr-x
parted
85.11
KB
-rwxr-xr-x
partprobe
14.98
KB
-rwxr-xr-x
partx
24.9
KB
-rwxr-xr-x
pccardctl
35.33
KB
-rwxr-xr-x
pdata_tools
1.54
MB
-rwxr-xr-x
pidof
19.98
KB
-rwxr-xr-x
pivot_root
7.61
KB
-rwxr-xr-x
plipconfig
10.52
KB
-rwxr-xr-x
poweroff
14.48
KB
-rwxr-xr-x
ppp-watch
29.08
KB
-rwxr-xr-x
pvchange
1.46
MB
-r-xr-xr-x
pvck
1.46
MB
-r-xr-xr-x
pvcreate
1.46
MB
-r-xr-xr-x
pvdisplay
1.46
MB
-r-xr-xr-x
pvmove
1.46
MB
-r-xr-xr-x
pvremove
1.46
MB
-r-xr-xr-x
pvresize
1.46
MB
-r-xr-xr-x
pvs
1.46
MB
-r-xr-xr-x
pvscan
1.46
MB
-r-xr-xr-x
quotacheck
103.01
KB
-rwxr-xr-x
quotaoff
72.5
KB
-rwxr-xr-x
quotaon
72.5
KB
-rwxr-xr-x
readahead
25.51
KB
-rwxr-xr-x
readahead-collector
27.76
KB
-rwxr-xr-x
reboot
14.48
KB
-rwxr-xr-x
reload
135.53
KB
-rwxr-xr-x
request-key
20.91
KB
-rwxr-xr-x
resize2fs
41.49
KB
-rwxr-xr-x
restart
135.53
KB
-rwxr-xr-x
restorecon
26.63
KB
-rwxr-xr-x
rfkill
12.13
KB
-rwxr-xr-x
rmmod
16.28
KB
-rwxr-xr-x
rngd
23.47
KB
-rwxr-xr-x
route
58.38
KB
-rwxr-xr-x
rtmon
37.7
KB
-rwxr-xr-x
runlevel
14.02
KB
-rwxr-xr-x
runuser
32.7
KB
-rwxr-xr-x
scsi_id
34.55
KB
-rwxr-xr-x
securetty
10.7
KB
-rwxr-xr-x
service
1.65
KB
-rwxr-xr-x
setfiles
26.63
KB
-rwxr-xr-x
setpci
23.37
KB
-rwxr-xr-x
setsysfont
850
B
-rwxr-xr-x
sfdisk
71.53
KB
-rwxr-xr-x
sgpio
16.36
KB
-rwxr-xr-x
shutdown
62.98
KB
-rwxr-xr-x
slattach
37.35
KB
-rwxr-xr-x
sln
676.6
KB
-rwxr-xr-x
start
135.53
KB
-rwxr-xr-x
status
135.53
KB
-rwxr-xr-x
stop
135.53
KB
-rwxr-xr-x
sulogin
16.6
KB
-rwxr-xr-x
sushell
67
B
-rwxr-xr-x
swapoff
29.69
KB
-rwxr-xr-x
swapon
29.69
KB
-rwxr-xr-x
switch_root
11.95
KB
-rwxr-xr-x
sysctl
18.92
KB
-rwxr-xr-x
tc
253.53
KB
-rwxr-xr-x
telinit
50.33
KB
-rwxr-xr-x
thin_check
1.54
MB
-rwxr-xr-x
thin_delta
1.54
MB
-rwxr-xr-x
thin_dump
1.54
MB
-rwxr-xr-x
thin_ls
1.54
MB
-rwxr-xr-x
thin_metadata_size
1.54
MB
-rwxr-xr-x
thin_repair
1.54
MB
-rwxr-xr-x
thin_restore
1.54
MB
-rwxr-xr-x
thin_rmap
1.54
MB
-rwxr-xr-x
thin_trim
1.54
MB
-rwxr-xr-x
tune2fs
41.73
KB
-rwxr-xr-x
umount.hal
11.94
KB
-rwxr-xr-x
umount.nfs
122.47
KB
-rwsr-xr-x
umount.nfs4
122.47
KB
-rwsr-xr-x
unix_chkpwd
34.02
KB
-rwsr-xr-x
vconfig
13.16
KB
-rwxr-xr-x
vgcfgbackup
1.46
MB
-r-xr-xr-x
vgcfgrestore
1.46
MB
-r-xr-xr-x
vgchange
1.46
MB
-r-xr-xr-x
vgck
1.46
MB
-r-xr-xr-x
vgconvert
1.46
MB
-r-xr-xr-x
vgcreate
1.46
MB
-r-xr-xr-x
vgdisplay
1.46
MB
-r-xr-xr-x
vgexport
1.46
MB
-r-xr-xr-x
vgextend
1.46
MB
-r-xr-xr-x
vgimport
1.46
MB
-r-xr-xr-x
vgimportclone
9.4
KB
-r-xr-xr-x
vgmerge
1.46
MB
-r-xr-xr-x
vgmknodes
1.46
MB
-r-xr-xr-x
vgreduce
1.46
MB
-r-xr-xr-x
vgremove
1.46
MB
-r-xr-xr-x
vgrename
1.46
MB
-r-xr-xr-x
vgs
1.46
MB
-r-xr-xr-x
vgscan
1.46
MB
-r-xr-xr-x
vgsplit
1.46
MB
-r-xr-xr-x
vmcore-dmesg
16.99
KB
-rwxr-xr-x
weak-modules
15.83
KB
-rwxr-xr-x
wipefs
16.19
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : fsadm
#!/bin/bash # # Copyright (C) 2007-2012 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: Zdenek Kabelac <zkabelac at redhat.com> # # Script for resizing devices (usable for LVM resize) # # Needed utilities: # mount, umount, grep, readlink, blockdev, blkid, fsck, xfs_check # # ext2/ext3/ext4: resize2fs, tune2fs # reiserfs: resize_reiserfs, reiserfstune # xfs: xfs_growfs, xfs_info # # Return values: # 0 success # 1 error # 2 break detected # 3 unsupported online filesystem check for given mounted fs TOOL=fsadm _SAVEPATH=$PATH PATH=/sbin:/usr/sbin:/bin:/usr/sbin:$PATH # utilities TUNE_EXT=tune2fs RESIZE_EXT=resize2fs TUNE_REISER=reiserfstune RESIZE_REISER=resize_reiserfs TUNE_XFS=xfs_info RESIZE_XFS=xfs_growfs MOUNT=mount UMOUNT=umount MKDIR=mkdir RMDIR=rmdir BLOCKDEV=blockdev BLKID=blkid DATE=date GREP=grep READLINK=readlink READLINK_E="-e" FSCK=fsck XFS_CHECK=xfs_check # XFS_REPAIR -n is used when XFS_CHECK is not found XFS_REPAIR=xfs_repair # user may override lvm location by setting LVM_BINARY LVM=${LVM_BINARY:-lvm} YES=${_FSADM_YES} DRY=0 VERB= FORCE= EXTOFF=${_FSADM_EXTOFF:-0} DO_LVRESIZE=0 FSTYPE=unknown VOLUME=unknown TEMPDIR="${TMPDIR:-/tmp}/${TOOL}_${RANDOM}$$/m" DM_DEV_DIR="${DM_DEV_DIR:-/dev}" BLOCKSIZE= BLOCKCOUNT= MOUNTPOINT= MOUNTED= REMOUNT= PROCMOUNTS="/proc/mounts" PROCSELFMOUNTINFO="/proc/self/mountinfo" NULL="$DM_DEV_DIR/null" IFS_OLD=$IFS # without bash $'\n' NL=' ' tool_usage() { echo "${TOOL}: Utility to resize or check the filesystem on a device" echo echo " ${TOOL} [options] check <device>" echo " - Check the filesystem on device using fsck" echo echo " ${TOOL} [options] resize <device> [<new_size>[BKMGTPE]]" echo " - Change the size of the filesystem on device to new_size" echo echo " Options:" echo " -h | --help Show this help message" echo " -v | --verbose Be verbose" echo " -e | --ext-offline unmount filesystem before ext2/ext3/ext4 resize" echo " -f | --force Bypass sanity checks" echo " -n | --dry-run Print commands without running them" echo " -l | --lvresize Resize given device (if it is LVM device)" echo " -y | --yes Answer \"yes\" at any prompts" echo echo " new_size - Absolute number of filesystem blocks to be in the filesystem," echo " or an absolute size using a suffix (in powers of 1024)." echo " If new_size is not supplied, the whole device is used." exit } verbose() { test -n "$VERB" && echo "$TOOL: $@" || true } error() { echo "$TOOL: $@" >&2 cleanup 1 } dry() { if [ "$DRY" -ne 0 ]; then verbose "Dry execution $@" return 0 fi verbose "Executing $@" "$@" } cleanup() { trap '' 2 # reset MOUNTPOINT - avoid recursion test "$MOUNTPOINT" = "$TEMPDIR" && MOUNTPOINT="" temp_umount if [ -n "$REMOUNT" ]; then verbose "Remounting unmounted filesystem back" dry "$MOUNT" "$VOLUME" "$MOUNTED" fi IFS=$IFS_OLD trap 2 test "$1" -eq 2 && verbose "Break detected" if [ "$DO_LVRESIZE" -eq 2 ]; then # start LVRESIZE with the filesystem modification flag # and allow recursive call of fsadm _FSADM_YES=$YES _FSADM_EXTOFF=$EXTOFF export _FSADM_YES _FSADM_EXTOFF unset FSADM_RUNNING test -n "$LVM_BINARY" && PATH=$_SAVEPATH dry exec "$LVM" lvresize $VERB $FORCE -r -L${NEWSIZE}b "$VOLUME_ORIG" fi # error exit status for break exit ${1:-1} } # convert parameter from Exa/Peta/Tera/Giga/Mega/Kilo/Bytes and blocks # (2^(60/50/40/30/20/10/0)) decode_size() { case "$1" in *[eE]) NEWSIZE=$(( ${1%[eE]} * 1152921504606846976 )) ;; *[pP]) NEWSIZE=$(( ${1%[pP]} * 1125899906842624 )) ;; *[tT]) NEWSIZE=$(( ${1%[tT]} * 1099511627776 )) ;; *[gG]) NEWSIZE=$(( ${1%[gG]} * 1073741824 )) ;; *[mM]) NEWSIZE=$(( ${1%[mM]} * 1048576 )) ;; *[kK]) NEWSIZE=$(( ${1%[kK]} * 1024 )) ;; *[bB]) NEWSIZE=${1%[bB]} ;; *) NEWSIZE=$(( $1 * $2 )) ;; esac #NEWBLOCKCOUNT=$(round_block_size $NEWSIZE $2) NEWBLOCKCOUNT=$(( $NEWSIZE / $2 )) if [ $DO_LVRESIZE -eq 1 ]; then # start lvresize, but first cleanup mounted dirs DO_LVRESIZE=2 cleanup 0 fi } # detect filesystem on the given device # dereference device name if it is symbolic link detect_fs() { VOLUME_ORIG=$1 VOLUME=${1/#"${DM_DEV_DIR}/"/} VOLUME=$("$READLINK" $READLINK_E "$DM_DEV_DIR/$VOLUME") || error "Cannot get readlink \"$1\"" RVOLUME=$VOLUME case "$RVOLUME" in # hardcoded /dev since udev does not create these entries elsewhere /dev/dm-[0-9]*) read </sys/block/${RVOLUME#/dev/}/dm/name SYSVOLUME 2>&1 && VOLUME="$DM_DEV_DIR/mapper/$SYSVOLUME" read </sys/block/${RVOLUME#/dev/}/dev MAJORMINOR 2>&1 || error "Cannot get major:minor for \"$VOLUME\"" ;; *) STAT=$(stat --format "MAJOR=%t MINOR=%T" ${RVOLUME}) || error "Cannot get major:minor for \"$VOLUME\"" eval $STAT MAJOR=$((0x${MAJOR})) MINOR=$((0x${MINOR})) MAJORMINOR=${MAJOR}:${MINOR} ;; esac # use null device as cache file to be sure about the result # not using option '-o value' to be compatible with older version of blkid FSTYPE=$("$BLKID" -c "$NULL" -s TYPE "$VOLUME") || error "Cannot get FSTYPE of \"$VOLUME\"" FSTYPE=${FSTYPE##*TYPE=\"} # cut quotation marks FSTYPE=${FSTYPE%%\"*} verbose "\"$FSTYPE\" filesystem found on \"$VOLUME\"" } detect_mounted_with_proc_self_mountinfo() { MOUNTED=$("$GREP" "^[0-9]* [0-9]* $MAJORMINOR " "$PROCSELFMOUNTINFO") # extract 5th field which is mount point # echo -e translates \040 to spaces MOUNTED=$(echo ${MOUNTED} | cut -d " " -f 5) MOUNTED=$(echo -n -e ${MOUNTED}) test -n "$MOUNTED" } detect_mounted_with_proc_mounts() { MOUNTED=$("$GREP" "^$VOLUME[ \t]" "$PROCMOUNTS") # for empty string try again with real volume name test -z "$MOUNTED" && MOUNTED=$("$GREP" "^$RVOLUME[ \t]" "$PROCMOUNTS") # cut device name prefix and trim everything past mountpoint # echo translates \040 to spaces MOUNTED=${MOUNTED#* } MOUNTED=$(echo -n -e ${MOUNTED%% *}) # for systems with different device names - check also mount output if test -z "$MOUNTED" ; then MOUNTED=$(LC_ALL=C "$MOUNT" | "$GREP" "^$VOLUME[ \t]") test -z "$MOUNTED" && MOUNTED=$(LC_ALL=C "$MOUNT" | "$GREP" "^$RVOLUME[ \t]") MOUNTED=${MOUNTED##* on } MOUNTED=${MOUNTED% type *} # allow type in the mount name fi test -n "$MOUNTED" } # check if the given device is already mounted and where # FIXME: resolve swap usage and device stacking detect_mounted() { if test -e "$PROCSELFMOUNTINFO"; then detect_mounted_with_proc_self_mountinfo elif test -e "$PROCMOUNTS"; then detect_mounted_with_proc_mounts else error "Cannot detect mounted device \"$VOLUME\"" fi } # get the full size of device in bytes detect_device_size() { # check if blockdev supports getsize64 "$BLOCKDEV" 2>&1 | "$GREP" getsize64 >"$NULL" if test $? -eq 0; then DEVSIZE=$("$BLOCKDEV" --getsize64 "$VOLUME") || error "Cannot read size of device \"$VOLUME\"" else DEVSIZE=$("$BLOCKDEV" --getsize "$VOLUME") || error "Cannot read size of device \"$VOLUME\"" SSSIZE=$("$BLOCKDEV" --getss "$VOLUME") || error "Cannot block size read device \"$VOLUME\"" DEVSIZE=$(($DEVSIZE * $SSSIZE)) fi } # round up $1 / $2 # could be needed to gaurantee 'at least given size' # but it makes many troubles round_up_block_size() { echo $(( ($1 + $2 - 1) / $2 )) } temp_mount() { dry "$MKDIR" -p -m 0000 "$TEMPDIR" || error "Failed to create $TEMPDIR" dry "$MOUNT" "$VOLUME" "$TEMPDIR" || error "Failed to mount $TEMPDIR" } temp_umount() { dry "$UMOUNT" "$TEMPDIR" || error "Failed to umount \"$TEMPDIR\"" dry "$RMDIR" "${TEMPDIR}" || error "Failed to remove \"$TEMPDIR\"" dry "$RMDIR" "${TEMPDIR%%m}" || error "Failed to remove \"${TEMPDIR%%m}\"" } yes_no() { echo -n "$@? [Y|n] " if [ -n "$YES" ]; then echo y ; return 0 fi while read -r -s -n 1 ANS ; do case "$ANS" in "y" | "Y" | "") echo y ; return 0 ;; "n" | "N") echo n ; return 1 ;; esac done } try_umount() { yes_no "Do you want to unmount \"$MOUNTED\"" && dry "$UMOUNT" "$MOUNTED" && return 0 error "Cannot proceed with mounted filesystem \"$MOUNTED\"" } validate_parsing() { test -n "$BLOCKSIZE" && test -n "$BLOCKCOUNT" || error "Cannot parse $1 output" } #################################### # Resize ext2/ext3/ext4 filesystem # - unmounted or mounted for upsize # - unmounted for downsize #################################### resize_ext() { verbose "Parsing $TUNE_EXT -l \"$VOLUME\"" for i in $(LC_ALL=C "$TUNE_EXT" -l "$VOLUME"); do case "$i" in "Block size"*) BLOCKSIZE=${i##* } ;; "Block count"*) BLOCKCOUNT=${i##* } ;; esac done validate_parsing "$TUNE_EXT" decode_size $1 $BLOCKSIZE FSFORCE=$FORCE if [ "$NEWBLOCKCOUNT" -lt "$BLOCKCOUNT" -o "$EXTOFF" -eq 1 ]; then detect_mounted && verbose "$RESIZE_EXT needs unmounted filesystem" && try_umount REMOUNT=$MOUNTED if test -n "$MOUNTED" ; then # Forced fsck -f for umounted extX filesystem. case "$-" in *i*) dry "$FSCK" $YES -f "$VOLUME" ;; *) dry "$FSCK" -f -p "$VOLUME" ;; esac fi fi verbose "Resizing filesystem on device \"$VOLUME\" to $NEWSIZE bytes ($BLOCKCOUNT -> $NEWBLOCKCOUNT blocks of $BLOCKSIZE bytes)" dry "$RESIZE_EXT" $FSFORCE "$VOLUME" $NEWBLOCKCOUNT } ############################# # Resize reiserfs filesystem # - unmounted for upsize # - unmounted for downsize ############################# resize_reiser() { detect_mounted && verbose "ReiserFS resizes only unmounted filesystem" && try_umount REMOUNT=$MOUNTED verbose "Parsing $TUNE_REISER \"$VOLUME\"" for i in $(LC_ALL=C "$TUNE_REISER" "$VOLUME"); do case "$i" in "Blocksize"*) BLOCKSIZE=${i##*: } ;; "Count of blocks"*) BLOCKCOUNT=${i##*: } ;; esac done validate_parsing "$TUNE_REISER" decode_size $1 $BLOCKSIZE verbose "Resizing \"$VOLUME\" $BLOCKCOUNT -> $NEWBLOCKCOUNT blocks ($NEWSIZE bytes, bs: $NEWBLOCKCOUNT)" if [ -n "$YES" ]; then echo y | dry "$RESIZE_REISER" -s $NEWSIZE "$VOLUME" else dry "$RESIZE_REISER" -s $NEWSIZE "$VOLUME" fi } ######################## # Resize XFS filesystem # - mounted for upsize # - cannot downsize ######################## resize_xfs() { detect_mounted MOUNTPOINT=$MOUNTED if [ -z "$MOUNTED" ]; then MOUNTPOINT=$TEMPDIR temp_mount || error "Cannot mount Xfs filesystem" fi verbose "Parsing $TUNE_XFS \"$MOUNTPOINT\"" for i in $(LC_ALL=C "$TUNE_XFS" "$MOUNTPOINT"); do case "$i" in "data"*) BLOCKSIZE=${i##*bsize=} ; BLOCKCOUNT=${i##*blocks=} ;; esac done BLOCKSIZE=${BLOCKSIZE%%[^0-9]*} BLOCKCOUNT=${BLOCKCOUNT%%[^0-9]*} validate_parsing "$TUNE_XFS" decode_size $1 $BLOCKSIZE if [ $NEWBLOCKCOUNT -gt $BLOCKCOUNT ]; then verbose "Resizing Xfs mounted on \"$MOUNTPOINT\" to fill device \"$VOLUME\"" dry "$RESIZE_XFS" $MOUNTPOINT elif [ $NEWBLOCKCOUNT -eq $BLOCKCOUNT ]; then verbose "Xfs filesystem already has the right size" else error "Xfs filesystem shrinking is unsupported" fi } #################### # Resize filesystem #################### resize() { NEWSIZE=$2 detect_fs "$1" detect_device_size verbose "Device \"$VOLUME\" size is $DEVSIZE bytes" # if the size parameter is missing use device size #if [ -n "$NEWSIZE" -a $NEWSIZE < test -z "$NEWSIZE" && NEWSIZE=${DEVSIZE}b IFS=$NL case "$FSTYPE" in "ext3"|"ext2"|"ext4") resize_ext $NEWSIZE ;; "reiserfs") resize_reiser $NEWSIZE ;; "xfs") resize_xfs $NEWSIZE ;; *) error "Filesystem \"$FSTYPE\" on device \"$VOLUME\" is not supported by this tool" ;; esac || error "Resize $FSTYPE failed" cleanup 0 } #################################### # Calclulate diff between two dates # LC_ALL=C input is expected the # only one supported #################################### diff_dates() { echo $(( $("$DATE" -u -d"$1" +%s 2>"$NULL") - $("$DATE" -u -d"$2" +%s 2>"$NULL") )) } ################### # Check filesystem ################### check() { detect_fs "$1" if detect_mounted ; then verbose "Skipping filesystem check for device \"$VOLUME\" as the filesystem is mounted on $MOUNTED"; cleanup 3 fi case "$FSTYPE" in "ext2"|"ext3"|"ext4") IFS_CHECK=$IFS IFS=$NL for i in $(LC_ALL=C "$TUNE_EXT" -l "$VOLUME"); do case "$i" in "Last mount"*) LASTMOUNT=${i##*: } ;; "Last checked"*) LASTCHECKED=${i##*: } ;; esac done case "$LASTMOUNT" in *"n/a") ;; # nothing to do - system was not mounted yet *) LASTDIFF=$(diff_dates $LASTMOUNT $LASTCHECKED) if test "$LASTDIFF" -gt 0 ; then verbose "Filesystem has not been checked after the last mount, using fsck -f" FORCE="-f" fi ;; esac IFS=$IFS_CHECK esac case "$FSTYPE" in "xfs") if which "$XFS_CHECK" >"$NULL" 2>&1 ; then dry "$XFS_CHECK" "$VOLUME" else # Replacement for outdated xfs_check # FIXME: for small devices we need to force_geometry, # since we run in '-n' mode, it shouldn't be problem. # Think about better way.... dry "$XFS_REPAIR" -n -o force_geometry "$VOLUME" fi ;; *) # check if executed from interactive shell environment case "$-" in *i*) dry "$FSCK" $YES $FORCE "$VOLUME" ;; *) dry "$FSCK" $FORCE -p "$VOLUME" ;; esac esac } ############################# # start point of this script # - parsing parameters ############################# trap "cleanup 2" 2 # test if we are not invoked recursively test -n "$FSADM_RUNNING" && exit 0 # test some prerequisities for i in "$TUNE_EXT" "$RESIZE_EXT" "$TUNE_REISER" "$RESIZE_REISER" \ "$TUNE_XFS" "$RESIZE_XFS" "$MOUNT" "$UMOUNT" "$MKDIR" \ "$RMDIR" "$BLOCKDEV" "$BLKID" "$GREP" "$READLINK" \ "$DATE" "$FSCK" "$XFS_CHECK" "$XFS_REPAIR" "$LVM" ; do test -n "$i" || error "Required command definitions in the script are missing!" done "$LVM" version >"$NULL" 2>&1 || error "Could not run lvm binary \"$LVM\"" $("$READLINK" -e / >"$NULL" 2>&1) || READLINK_E="-f" TEST64BIT=$(( 1000 * 1000000000000 )) test "$TEST64BIT" -eq 1000000000000000 || error "Shell does not handle 64bit arithmetic" $(echo Y | "$GREP" Y >"$NULL") || error "Grep does not work properly" test $("$DATE" -u -d"Jan 01 00:00:01 1970" +%s) -eq 1 || error "Date translation does not work" if [ "$#" -eq 0 ] ; then tool_usage fi while [ "$#" -ne 0 ] do case "$1" in "") ;; "-h"|"--help") tool_usage ;; "-v"|"--verbose") VERB="-v" ;; "-n"|"--dry-run") DRY=1 ;; "-f"|"--force") FORCE="-f" ;; "-e"|"--ext-offline") EXTOFF=1 ;; "-y"|"--yes") YES="-y" ;; "-l"|"--lvresize") DO_LVRESIZE=1 ;; "check") CHECK="$2" ; shift ;; "resize") RESIZE="$2"; NEWSIZE="$3" ; shift 2 ;; *) error "Wrong argument \"$1\". (see: $TOOL --help)" esac shift done test "$YES" = "-y" || YES= test "$EXTOFF" -eq 1 || EXTOFF=0 if [ -n "$CHECK" ]; then check "$CHECK" elif [ -n "$RESIZE" ]; then export FSADM_RUNNING="fsadm" resize "$RESIZE" "$NEWSIZE" else error "Missing command. (see: $TOOL --help)" fi
Close