发现如果人品不好做试验都是问题很多,晚上又把fstab给写错了,导致系统不能起来,因为当时处理该故障未截图,后续在网上找了几张图片,大体说明处理思路
系统启动报 filesystems 失败,输入root密码进入repair filesystem模式

尝试修改 /etc/fstab 发现系统是read-only模式

重新mount -n -o remount,rw /重新mount文件系统

重新修改/etc/fstab,除掉错误记录,然后使用init 6/reboot命令重启系统
Category Archives: Linux
extundelete恢复Linux被删除文件
今天群中有个朋友的客户闲着没事rm掉了数据文件,然后讨论到使用extundelete进行了恢复,抢救了部分未被覆盖的数据文件。该软件官方地址:http://extundelete.sourceforge.net/
安装extundelete
[root@xifenfei tmp]# bunzip2 extundelete-0.2.0.tar.bz2 [root@xifenfei tmp]# tar xvf extundelete-0.2.0.tar extundelete-0.2.0/ extundelete-0.2.0/README extundelete-0.2.0/acinclude.m4 extundelete-0.2.0/configure.ac extundelete-0.2.0/aclocal.m4 extundelete-0.2.0/Makefile.am extundelete-0.2.0/Makefile.in extundelete-0.2.0/config.h.in extundelete-0.2.0/configure extundelete-0.2.0/compile extundelete-0.2.0/depcomp extundelete-0.2.0/install-sh extundelete-0.2.0/missing extundelete-0.2.0/LICENSE extundelete-0.2.0/autogen.sh extundelete-0.2.0/src/ extundelete-0.2.0/src/Makefile.am extundelete-0.2.0/src/Makefile.in extundelete-0.2.0/src/extundelete.cc extundelete-0.2.0/src/block.c extundelete-0.2.0/src/insertionops.cc extundelete-0.2.0/src/block.h extundelete-0.2.0/src/extundelete.h extundelete-0.2.0/src/extundelete-priv.h extundelete-0.2.0/src/jfs_compat.h extundelete-0.2.0/src/kernel-jbd.h [root@xifenfei tmp]# cd extundelete-0.2.0 [root@xifenfei extundelete-0.2.0]# ./configure Configuring extundelete 0.2.0 Writing generated files to disk [root@xifenfei extundelete-0.2.0]# make && make install make -s all-recursive Making all in src Making install in src /usr/bin/install -c 'extundelete' '/usr/local/bin/extundelete'
恢复操作命令
--umount或者read only 分区 umount /dev/partition mount -o remount,ro /dev/partition --恢复文件 xtundelete /dev/partition --restore-all extundelete /dev/partition --restore-directory /backup/gnutool-delete extundelete /dev/partition --restore-files /etc/passwd
测试恢复
--基于目录恢复 [root@xifenfei tmp]#extundelete /dev/sdb1 --restore-directory /u01/xifenfei Loading filesystem metadata ... 160 groups loaded. Loading journal descriptors ... 23 descriptors loaded. Writing output to directory RECOVERED_FILES/ Failed to restore file /u01/xifenfei Could not find correct inode number past inode 2. [root@xifenfei tmp]# cd RECOVERED_FILES/ [root@xifenfei RECOVERED_FILES]# ll total 0 --未成功 --基于磁盘恢复 [root@xifenfei RECOVERED_FILES]#extundelete /dev/sdb1 --restore-all Loading filesystem metadata ... 160 groups loaded. Loading journal descriptors ... 23 descriptors loaded. Writing output to directory RECOVERED_FILES/ Searching for recoverable inodes in directory / ... 4 recoverable inodes found. Looking through the directory structure for deleted files ... Failed to restore inode 1966081 to file RECOVERED_FILES/xifenfei:Inode does not correspond to a regular file. Restored inode 1966082 to file RECOVERED_FILES/xifenfei/xff.txt Failed to restore inode 1966083 to file RECOVERED_FILES/xifenfei/xff:Inode does not correspond to a regular file. Restored inode 1966084 to file RECOVERED_FILES/xifenfei/xff/xff.txt132 0 recoverable inodes still lost. [root@xifenfei RECOVERED_FILES]# ll total 4 drwxr-xr-x 3 root root 4096 Aug 31 21:36 RECOVERED_FILES [root@xifenfei RECOVERED_FILES]# cd RECOVERED_FILES/ [root@xifenfei RECOVERED_FILES]# ll total 4 drwxr-xr-x 3 root root 4096 Aug 31 21:36 xifenfei [root@xifenfei RECOVERED_FILES]# cd xifenfei/ [root@xifenfei xifenfei]# ll total 20 drwxr-xr-x 2 root root 4096 Aug 31 21:36 xff -rw-r--r-- 1 root root 13231 Aug 31 21:36 xff.txt [root@xifenfei xifenfei]# cd xff [root@xifenfei xff]# ll total 16 -rw-r--r-- 1 root root 13231 Aug 31 21:36 xff.txt132 --恢复成功 --基于文件恢复 [root@xifenfei xff]# extundelete /dev/sdb1 --restore-files /u01/xifenfei/xff.txt Loading filesystem metadata ... 160 groups loaded. Loading journal descriptors ... 23 descriptors loaded. Writing output to directory RECOVERED_FILES/ [root@xifenfei xff]# cd RECOVERED_FILES/ [root@xifenfei RECOVERED_FILES]# ll total 0 --未成功
通过上述实验证明extundelete还是有很大的不完整性,基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够强大.不过该软件在很多时候还是有救火的功能,特别是当蛋筒的人员删除了数据库的部分文件之时.
iscsiadm主要操作命令
当前包含磁盘
[root@xifenfei ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 2355 18916506 83 Linux /dev/sda2 2356 2610 2048287+ 82 Linux swap / Solaris Disk /dev/sdb: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 83 Linux Disk /dev/sdc: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table Disk /dev/sdd: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250 83 Linux
查看iscsi运行情况
[root@xifenfei ~]# rpm -aq|grep iscsi iscsi-initiator-utils-6.2.0.872-10.0.1.el5 [root@xifenfei ~]# chkconfig --list |grep iscsi iscsi 0:off 1:off 2:on 3:on 4:on 5:on 6:off iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@xifenfei ~]# ps -ef|grep iscs root 2753 2 0 Jun21 ? 00:00:00 [iscsi_eh] root 15793 1 0 09:08 ? 00:00:00 brcm_iscsiuio root 15800 1 0 09:08 ? 00:00:00 iscsid root 15802 1 0 09:08 ? 00:00:00 iscsid root 19533 15269 0 10:11 pts/1 00:00:00 grep iscs
配置iscsi存储
[root@xifenfei ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.254:3260 192.168.1.254:3260,1 iqn.2006-01.com.openfiler:tsn.32b32087937b [root@xifenfei ~]# iscsiadm -m node –T iqn.2006-01.com.openfiler:tsn.32b32087937b -p 192.168.1.254:3260 -l Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.32b32087937b, portal: 192.168.1.254,3260] Login to [iface: default, target: iqn.2006-01.com.openfiler:tsn.32b32087937b, portal: 192.168.1.254,3260] successful. [root@xifenfei ~]# iscsiadm -m node –T iqn.2006-01.com.openfiler:tsn.32b32087937b -p 192.168.1.254:3260 >--op update -n node.startup -v automatic
当前包含磁盘
[root@xifenfei ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 2355 18916506 83 Linux /dev/sda2 2356 2610 2048287+ 82 Linux swap / Solaris Disk /dev/sdb: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 83 Linux Disk /dev/sdc: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table Disk /dev/sdd: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250 83 Linux Disk /dev/sde: 1073 MB, 1073741824 bytes 34 heads, 61 sectors/track, 1011 cylinders Units = cylinders of 2074 * 512 = 1061888 bytes Disk /dev/sde doesn't contain a valid partition table Disk /dev/sdf: 1073 MB, 1073741824 bytes 34 heads, 61 sectors/track, 1011 cylinders Units = cylinders of 2074 * 512 = 1061888 bytes Disk /dev/sdf doesn't contain a valid partition table Disk /dev/sdg: 1073 MB, 1073741824 bytes 34 heads, 61 sectors/track, 1011 cylinders Units = cylinders of 2074 * 512 = 1061888 bytes Disk /dev/sdg doesn't contain a valid partition table
卸载iscsi存储
[root@xifenfei ~]# iscsiadm -m node --logoutall=all Logging out of session [sid: 3, target: iqn.2006-01.com.openfiler:tsn.32b32087937b, portal: 192.168.1.254,3260] Logout of [sid: 3, target: iqn.2006-01.com.openfiler:tsn.32b32087937b, portal: 192.168.1.254,3260] successful. [root@xifenfei ~]# iscsiadm -m node --op delete --targetname iqn.2006-01.com.openfiler:tsn.32b32087937b
当前包含磁盘
[root@xifenfei ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 2355 18916506 83 Linux /dev/sda2 2356 2610 2048287+ 82 Linux swap / Solaris Disk /dev/sdb: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 83 Linux Disk /dev/sdc: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdc doesn't contain a valid partition table Disk /dev/sdd: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdd1 1 100 803218+ 83 Linux /dev/sdd2 101 1000 7229250 83 Linux
iscsi操作总结
增加iscsi存储 (1)发现iscsi存储:iscsiadm -m discovery -t st -p ISCSI_IP (2)查看iscsi发现记录:iscsiadm -m node (3)登录iscsi存储:iscsiadm -m node -T LUN_NAME -p ISCSI_IP -l (4)开机自动: iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op update -n node.startup -v automatic 删除iscsi存储 (1)登出iscsi存储 iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u (2)对出iscsi所有登录 iscsiadm -m node --logoutall=all (3)删除iscsi发现记录:iscsiadm -m node -o delete -T LUN_NAME -p ISCSI_IP 登入需验证码的节点 (1)开启认证 iscsiadm -m node -T LUN_NAME -o update --name node.session.auth.authmethod --value=CHAP *.使用-o同--op (2)添加用户 iscsiadm -m node -T LUN_NAME --op update --name node.session.auth.username --value=[用户名] (3)添加密码 iscsiadm –m node –T LUN_NAME –op update –name node.session.auth.password –value=[密码]
关于linux中oracle用户进程占用内存猜测
本文是针对linux下面显示oracle用户进程占用大量内存的一个猜想性说明,希望各位专家和我一起继续探讨该问题
ORACLE用户进程占用私有内存分析
top命令结果
[oracle@ora02 31500]$ top -c top - 12:13:16 up 254 days, 12:14, 2 users, load average: 1.53, 1.62, 1.33 Tasks: 293 total, 3 running, 290 sleeping, 0 stopped, 0 zombie Cpu(s): 3.4% us, 0.8% sy, 0.0% ni, 94.7% id, 1.1% wa, 0.0% hi, 0.0% si Mem: 4147172k total, 4129724k used, 17448k free, 20348k buffers Swap: 4192956k total, 217772k used, 3975184k free, 2575320k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12505 oracle 17 0 1561m 972m 970m R 100 24.0 3:45.89 oracletxzldb (LOCAL=NO) 12475 oracle 16 0 1561m 931m 929m S 4 23.0 4:08.65 oracletxzldb (LOCAL=NO) 12477 oracle 16 0 1561m 945m 942m S 2 23.3 3:36.92 oracletxzldb (LOCAL=NO) 12479 oracle 16 0 1561m 944m 941m S 2 23.3 4:27.29 oracletxzldb (LOCAL=NO) 12483 oracle 16 0 1561m 939m 937m R 2 23.2 3:49.00 oracletxzldb (LOCAL=NO) 12493 oracle 16 0 1561m 958m 955m S 2 23.7 3:35.35 oracletxzldb (LOCAL=NO)
补充说明:
VIRT 进程使用的虚拟内存总量 RES 进程使用的、未被换出的物理内存大小 SHR 共享内存大小
通过这里可以得出几个信息
12505进程实际使用内存情况:972-970=2M
12505进程%MEM:972*1024/4147172=0.24000162
12505进程在数据库中占用内存
SQL> select PGA_ALLOC_MEM/1024/1024 MEM from v$process where spid=12505;
MEM
----------
1.90997028
通过这里可以看出12505进程实际上是占用了970M的共享内存,占用2M的PGA内存
ORACLE用户进程占用共享内存分析
分析12505进程的当前进程状态
[oracle@ora02 31500]$ cd /proc/12505 [oracle@ora02 12505]$ cat status Name: oracle State: S (sleeping) SleepAVG: 92% Tgid: 12505 Pid: 12505 PPid: 1 TracerPid: 0 Uid: 501 501 501 501 Gid: 502 502 502 502 FDSize: 32 Groups: 501 502 VmSize: 1599004 kB <--使用内存(包括虚拟内存)总量1599004/1024=1561.52734和top中VIRT基本吻合 VmLck: 0 kB VmRSS: 996132 kB <--实际使用内存996132/1024 =972.785156和top看到RES基本吻合 VmData: 832 kB VmStk: 120 kB VmExe: 37307 kB VmLib: 4641 kB StaBrk: 0ad6e000 kB Brk: 0adf2000 kB StaStk: bffff850 kB ExecLim: ffffffff Threads: 1 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000006005203 SigCgt: 00000001c9802cfc CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000
pmap命令分析
[oracle@ora02 12505]$ pmap -d 12505 12505: oracletxzldb (LOCAL=NO) Address Kbytes Mode Offset Device Mapping 0013f000 88 r-x-- 0000000000000000 008:00002 ld-2.3.4.so 00155000 4 r-x-- 0000000000015000 008:00002 ld-2.3.4.so 00156000 4 rwx-- 0000000000016000 008:00002 ld-2.3.4.so 00159000 1176 r-x-- 0000000000000000 008:00002 libc-2.3.4.so 0027f000 8 r-x-- 0000000000125000 008:00002 libc-2.3.4.so 00281000 8 rwx-- 0000000000127000 008:00002 libc-2.3.4.so 00283000 8 rwx-- 0000000000283000 000:00000 [ anon ] 00287000 132 r-x-- 0000000000000000 008:00002 libm-2.3.4.so 002a8000 4 r-x-- 0000000000020000 008:00002 libm-2.3.4.so 002a9000 4 rwx-- 0000000000021000 008:00002 libm-2.3.4.so 002ac000 8 r-x-- 0000000000000000 008:00002 libdl-2.3.4.so 002ae000 4 r-x-- 0000000000001000 008:00002 libdl-2.3.4.so 002af000 4 rwx-- 0000000000002000 008:00002 libdl-2.3.4.so 003b5000 56 r-x-- 0000000000000000 008:00002 libpthread-2.3.4.so 003c3000 4 r-x-- 000000000000d000 008:00002 libpthread-2.3.4.so 003c4000 4 rwx-- 000000000000e000 008:00002 libpthread-2.3.4.so 003c5000 8 rwx-- 00000000003c5000 000:00000 [ anon ] 00ba4000 72 r-x-- 0000000000000000 008:00002 libnsl-2.3.4.so 00bb6000 4 r-x-- 0000000000011000 008:00002 libnsl-2.3.4.so 00bb7000 4 rwx-- 0000000000012000 008:00002 libnsl-2.3.4.so 00bb8000 8 rwx-- 0000000000bb8000 000:00000 [ anon ] 08048000 37308 r-x-- 0000000000000000 0fd:00001 oracle 0a4b7000 8804 rwx-- 000000000246f000 0fd:00001 oracle 0ad50000 648 rwx-- 000000000ad50000 000:00000 [ anon ] 50000000 1540096 rwxs- 0000000000000000 000:00006 [ shmid=0x9000e ] ae000000 4 r-xs- 000000005e000000 000:00006 [ shmid=0x9000e ] ae001000 1156 rwxs- 000000005e001000 000:00006 [ shmid=0x9000e ] ae122000 4 r-xs- 000000005e122000 000:00006 [ shmid=0x9000e ] ae123000 2932 rwxs- 000000005e123000 000:00006 [ shmid=0x9000e ] b79d4000 1024 rwx-- 00000000000f4000 000:0000d zero b7ad4000 512 rwx-- 0000000000074000 000:0000d zero b7b54000 512 rwx-- 0000000000000000 000:0000d zero b7bd4000 36 r-x-- 0000000000000000 008:00002 libnss_files-2.3.4.so b7bdd000 4 r-x-- 0000000000008000 008:00002 libnss_files-2.3.4.so b7bde000 4 rwx-- 0000000000009000 008:00002 libnss_files-2.3.4.so b7bdf000 148 rwx-- 00000000b7bdf000 000:00000 [ anon ] b7c04000 2940 r-x-- 0000000000000000 0fd:00001 libjox9.so b7ee3000 1088 rwx-- 00000000002de000 0fd:00001 libjox9.so b7ff3000 8 rwx-- 00000000b7ff3000 000:00000 [ anon ] b7ff5000 4 r-x-- 0000000000000000 0fd:00001 libskgxn9.so b7ff6000 8 rwx-- 0000000000000000 0fd:00001 libskgxn9.so b7ff8000 4 r-x-- 0000000000000000 0fd:00001 libskgxp9.so b7ff9000 4 --x-- 0000000000001000 0fd:00001 libskgxp9.so b7ffa000 4 rwx-- 0000000000001000 0fd:00001 libskgxp9.so b7ffb000 4 r-x-- 0000000000000000 0fd:00001 libodmd9.so b7ffc000 4 rwx-- 0000000000000000 0fd:00001 libodmd9.so b7ffd000 4 r-x-- 0000000000000000 008:00002 libcwait.so b7ffe000 4 rwx-- 0000000000000000 008:00002 libcwait.so b7fff000 4 rwx-- 00000000b7fff000 000:00000 [ anon ] bffe2000 120 rwx-- 00000000bffe2000 000:00000 [ stack ] ffffe000 4 ----- 0000000000000000 000:00000 [ anon ] mapped: 1599008K writeable/private: 12944K shared: 1544192K
补充说明:
mapped :映射到文件的内存数量 writable/private :进程所占用的私有地址空间数量 shared :与其它进程共享的地址空间数量
ipcs 命令
[oracle@ora02 12505]$ ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x0000cace 65536 root 666 2 0 0x4d4e5251 98305 root 644 330752 0 0x55315352 131074 root 666 4096 0 0x44525354 163843 root 644 632832 0 0x53494152 196612 root 644 1024 0 0x00005643 229381 root 666 1024 1 0x00005654 262150 root 666 1024 1 0x992ad3dc 589838 oracle 640 1581252608 595
结合pmap和ipcs分析(shmid=0x9000e)
SQL> select to_number('9000e','xxxxxxxx') from dual;
TO_NUMBER('9000E','XXXXXXXX')
-----------------------------
589838
SQL> select 1540096+4+1156+4+2932 from dual;
1540096+4+1156+4+2932
---------------------
1544192
SQL> select 1581252608/1024 from dual;
1581252608/1024
---------------
1544192
通过这里可以得出12505进程中的共享内存,主要是数据库SGA中的共享内存
补充猜测
SQL> show sga;
Total System Global Area 1561926292 bytes
Fixed Size 453268 bytes
Variable Size 603979776 bytes
Database Buffers 956301312 bytes
Redo Buffers 1191936 bytes
SQL> select 1561926292/1024 from dual;
1561926292/1024
---------------
1525318.64
这里显示数据库配置的sga比ipcs中配置共享内存段小,但是进程在分配总的共享内存时候,使用的是ipcs设定的内存段大小,实际使用的内存可能是sga设置大小(未得到权威资料)
gzexe加密shell脚本
很多时候,我们的脚本中涉及的用户名/密码/ip等敏感信息,我们需要使用一些加密方面来屏蔽这些信息,确保我们的系统安全(主要防菜鸟),虽然shc可以实现强大的加密功能,但是他需要另外安装shc软件,比较麻烦,应对一般的加密,个人推荐直接喜用系统自带的gzexe(大部分Linux,unix都有)
[root@xifenfei tmp]# more xifenfei.sh
#!/usr/bin/ksh
echo 'xifenfei--'`date`
[root@xifenfei tmp]# ./xifenfei.sh
xifenfei--Tue Mar 6 13:31:35 CST 2012
[root@xifenfei tmp]# ls -l xifenfei.sh
-rwxr-xr-x 1 root root 40 Mar 6 13:30 xifenfei.sh
--加密操作
[root@xifenfei tmp]# gzexe xifenfei.sh
xifenfei.sh: -5.0%
[root@xifenfei tmp]# ls -l xifenfei.sh*
-rwxr-xr-x 1 root root 449 Mar 6 13:31 xifenfei.sh
-rwxr-xr-x 1 root root 40 Mar 6 13:30 xifenfei.sh~
--加密后文件内容
[root@xifenfei tmp]# strings xifenfei.sh
#!/bin/sh
skip=14
tmpdir=`/bin/mktemp -d ${TMPDIR:-/tmp}/gzexe.XXXXXXXXXX` || exit 1
prog="${tmpdir}/`echo \"$0\" | sed 's|^.*/||'`"
if /usr/bin/tail -n +$skip "$0" | "/bin"/gzip -cd > "$prog"; then
/bin/chmod 700 "$prog"
trap '/bin/rm -rf $tmpdir; exit $res' EXIT
"$prog" ${1+"$@"}; res=$?
else
echo "Cannot decompress $0"
/bin/rm -rf $tmpdir
exit 1
fi; exit $res
xifenfei.sh
UOHI,IM
这里的xifenfei.sh是加密后文件,xifenfei.sh~是源码文件(加密前文件),只需要运行xifenfie.sh即可实现原脚本功能
优点:在大部分系统上均可运行,不用安装额外软件
缺点:破解容易,放君子不防小人
