查询操作系统类型
cat /etc/issue
cat /etc/redhat-release
查询操作系统内核版本
cat /proc/version
查询服务器信息
uname -a
查询服务器name
hostname
查看文本行数、字数、字节数
wc(ls -l|wc)
输出信息中只显示某一行
awk
ls -l|awd '{print $2}'
替换文本中的字符串
sed -e 's/newstring/oldstring/g' <  oldfile > newfile
ssh racpub1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
显示某目录占用磁盘大小
du -sh /oracle
过虑掉重复word
sort -u
查询历史命令
history
查询用户操作历史记录
#! /bin/ksh
for user in 'cat /etc/passwd|cut -d ':' -f1'
do
 echo *************
 cat -$user/.sh_history
 echo *************
done
修改shell,直接写shell名称
ksh
bash
umask的实际权限应该等于777减去显示的权限,例如umask 002 ,实际是777-002=775
列出当前cpu消耗时间最多的10个进程
ps -ef|sort 6|tail
ps auxgw|sort 2|tail
杀掉难处理的进程
kill -9 pid
cat /dev/null > /dev/ttyname kill -9 pid
建立ssh关系的操作系统间文件copy
scp -P 7522 zzx1.dmp oracle9i@192.168.8.159:/home1/oracle9i/
查看oracle监听的端口
lsnrctl
stat
find常用命令
find /home1/oracle9i -name cman*
find / -name access_log 2>/dev/null
这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了

find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
find结果的处理方法:
find /data/backup -mtime 5 | xargs rm -rf
rm -rf `find /data/backup/ -mtime 5`
find /data/backupp -mtime 5 -exec rm -rf "{}" ";"
find /data/backupp -mtime 5 -exec rm -rf {} \;
find /data/backupp -mtime 5 -maxdepth 1 -exec cp {} /home/zzx \; //-maxdepth表示目录的最大深度,1表示当前目录
find /etc -name aaa -exec CMD1 {}\; -exec CMD2 {}\; //一次查找后针对返回结果执行多条命令
以上命令基本等效。其中
"{}" < = result
";" < = end of command
find -exec 是每次匹配成功就执行rm 一次。假如有500个匹配项,shell就要fork 500次去执行rm。
xargs在命令行长度允许的情况下会累积到一定程度去rm几十个文件,这样就能减少rm执行的次数。在匹配项较多的情况下,性能相对较好好。


ftp启动、停止命令
/sbin/service vsftpd start|stop|restart
ftp参数设置:
/etc/vsftpd/vsftpd.conf
ftp修改端口:
/etc/vsftpd/vsftpd.conf中增加listen_port=2121
查看ftp服务是否启动:
ps auxgw|grep ftp

设定系统时间
若以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[CC]YY][.ss],其 MM 为月份,DD 为日,hh 为时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数

[root@wdb_test oracle]# date 113012002004
Tue Nov 30 12:00:00 CST 2004

和时钟服务器校正时间
rdate -s ip --直接校正
rdate -p ip  --打印服务器时间

linux下启动telnet服务过程
root登陆
vi /etc/xinetd.d/telnet
将disable=yes加#注释掉
/etc/rc.d/init.d/xinetd restart
默认是不能以root登陆的,如果要一定以root登陆,修改
/etc/pam.d/login文件
将auth      required    pam_securetty.so加#注释掉

查看本机监听的端口
可以使用命令:netstat -lnp来察看系统当前监听的端口。其中l选项表示显示正在被监听(listen)的端口;n选项表示直接显示端口数字而不是通过察看/etc/service来转换为端口名;p选项表示列出监听的程序。
查看操作系统安全日志
dmseg查看系统故障
more /var/log/secure*查看所有安全日志
强制用户登陆时修改口令
chage -d 0 username(linux)
passwd -f username(solaris)

强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
chage -d 0 -m 0 -M 90 -W 15 htang(linux)
passwd -f -n 0 -x 90 -w 15 htang(solaris)
查看某个用户的密码设置情况
chage -l username
修改密码配置文件
vi /etc/login.defs
ntsysv 查看启动的服务
启动某个服务
/etc/init.d/network restart
service network restart

在/etc/resolv.conf中加入域名服务器进行域名解析
例如:nameserver 202.106.196.115
vi特殊指令
:$跳到文档最后一行
ctrl  f 向后翻页
ctrl  b 向前翻页
H 跳到当前文档第一行
M 跳到当前文档中间行
L 跳到当前文档最后行
vncserver启动桌面选项(gnome和kde)

P32>cat xstartup
#!/bin/sh
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24 10 10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
#startkde &(如果使用kde就去掉注释)
gnome-session

在整个文件或某几行中在行首或行尾加一些字符串
vi file
:3,$s/^/some string /
在文件的第一行至最后一行的行首前插入some string
:%s/$/ some string/g 在整个文件每一行的行尾添加 some string
:%s/string1/string2/g 在整个文件中替换string1成string2
:3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2
Note: s为substitute,%表示所有行,g表示global
扫描192.168.5中启动服务器的ip
nmap -sP 192.168.5.0/24
增加ip
ifconfig eth0 192.168.0.12 netmask 255.255.255.0
同时修改/etc/sysconfig/network-scripts下的etho文档,修改例子:
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.160.12
NETMASK=255.255.255.0
GATEWAY=192.168.160.1
solaris下修改ip:
1.ifconfig iprb1 plumb
2.ifconfig iprb1 192.168.165.15 netmask 255.255.255.0 up
3./etc/hostname.iprb1 -->192.168.165.15
增加路由:
161的机器想要访问160的机器,需要增加路由:
linux:route add -net 192.168.160.0 netmask 255.255.255.0 gw 192.168.161.1
solaris:route add net 192.168.160.0 192.168.161.1
kill某个用户的全部进程
pkill -9 -u username
kill掉所有的oralce应用session
ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|kill -9

删除数量比较多的文件
ls | xargs -n 20 rm -fr
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数

也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了

Soure RPM的簡易安裝步驟:
1.先取得Source RPM, 通常Source RPM的檔案會有個src.rpm來辨別, ex:freetds-0.62.1-1.src.rpm
2.rpm -i xxx-xxx.src.rpm ex: rpm -i freetds-0.62.1-1.src.rpm
3.cd /usr/src/redhat/SPECS
4.可以看到xxx.spec ex: freetds.spec
5.進階User可以去編輯它, 初輯User就可以不用理, 直接rpmbuild -bb xxx.spec ex: rpmbuild -bb freetds.spec
6.cd /usr/src/redhat/RPMS 此為產生好的rpm最後放置的地方
7.cd i386 通常一般package都會放在i386
8.將所產生的rpm安裝 rpm -i xxx-xxx.rpm, ex: rpm -i freetds-0.62.1-1.i386.rpm
其實大多時候我們都不需要自己Build Source RPM, 因為大都有現成for各個平台的RPM, 但有時現成RPM的東西可能不合你用, 像我會去Build freetds是因為現成的freetds的RPM只有freetds, freetds-devel, 沒有freetds-unixodbc, 所以就直接抓Source RPM, 而且freetds的Source RPM還貼心的幫我設好, 我也不用改就可以直接build了.

取本月最后一天
cal|xargs|awk '{print $NF}'
取上月最后一天
get_lastday_of_lastmonth()
{
yy=`date %Y`
mm=`date %m-1|bc`
if [ $mm -lt 1 ]
then
 mm=12
 yy=`expr $yy - 1`
fi
aaa=`cal $mm $yy`

dd=`echo $aaa|awk '{print $NF}'`
echo $yy$mm$dd
}
看某月日历(2006年3月)
cal 3 2006

得到上级目录名和当前目录名
cmd:dirname /home/oravip/thm
res:/home/oravip
cmd:basename /home/oravip/thm
res:thm
将字符串逆转(字符串必须在文件中)
rev filename
字符串截断方法:
##截断最后一个匹配的字符串之前的所有字符
#截断第一个匹配的字符串之前的所有字符

$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg
##倒数,截断最后一个匹配的字符串之前的所有字符
#倒数,截断第一个匹配的字符串之前的所有字符
$ MYFOO="chickensoup.tar.gz"
$ echo ${MYFOO%%.*}
chickensoup
$ echo ${MYFOO%.*}
chickensoup.tar
##截断任意长字符串
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

nfs服务配置过程
Server端:
1./etc/exports格式:
例:共享/share目录给192.168.0.x的用户
/share               192.168.0.0/24 (rw)  
2.启动portmap服务:                                   
  service portmap start[restart]                     
3.启动NFS服务:
  service nfs start[restart]                        
Client端
1.启动portmap服务:                                   
  service portmap start[restart]                     
2.挂载服务器端的共享目录(假设服务器端192.168.0.1):  
  mount -t nfs 192.168.0.1:/share  /mnt/localshare  
  mount -t nfs -o nolock 192.168.1.80:/share_xd_d /nas_xd_d

linux下发送mail的命令:
mail -s "`date %D` poundage" zxzhai@corp.netease.com -c zhaizhenxing@vip.163.com">zhaizhenxing8170@163.com,zhaizhenxing@vip.163.com  < /home/oracle/backup/sh/abc_icbc_chinapay.txt
监控端口字符流命令,可以用来查看数据是否加密
/usr/sbin/tcpdump -l -i eth0 -w - src or dst port 23 | strings
显示文件中包含指定字符串本身和它的后n行
cat file|grep “指定字符串” -A n
显示文件中包含指定字符串本身和它的前n行
cat file|grep “指定字符串” -B n


显示文件中包含指定字符串本身和它的前后n行
cat file|grep “指定字符串” -C n
----显示匹配行下向下第几行的数据
grep -2 '^foxmile$' test.txt | tail -1

----mysql连接数高的应急办法
前提是mysql还能登录进去,如果一直是所有连接占满了,就不能用本方法了。
检查空闲时间相对长的连接
mysql -e 'show processlist'|awk '{print $6" "$1" "$2" "$3" "$4" "$5}' | sort -n
生成杀掉空闲时间相对较长连接脚本,本例杀掉最长的100个
mysql -e 'show processlist'|awk '{print $6" "$1" "$2" "$3" "$4" "$5}'|grep Sleep | sort -n | tail -100 | awk '{print "kill "$2";"}' > kill_long_sleep.sql
mysql < kill_long_sleep.sql
当然,别忘了与负责应用的同学协商。

删除乱码文件方法:
ll -i 得到i节点
find ./ -inum 12345 -print -exec rm {} -rf \;

日期转换为邮戳
date -d '1970-01-01 CST '1222142410' seconds' "%Y-%m-%d %T"