Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1008221
  • 博文数量: 195
  • 博客积分: 4890
  • 博客等级: 上校
  • 技术积分: 2221
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-09 15:34
文章分类

全部博文(195)

文章存档

2014年(1)

2013年(8)

2012年(22)

2011年(9)

2010年(54)

2009年(101)

我的朋友

分类:

2010-07-07 15:44:45

判断脚本版本号
if [ "$1" = "-v" ]
then
  echo Last modify time is
  exit
fi
 

判断登陆用户是否为root
export LANG="zh_CN"
if [ `id -u` -ne 0 ]
then
   echo "ERROR:Do Not Upgrade ,must run as root."
   echo "权限不足,请以ROOT身份登陆,执行........"
   exit 1
fi
 
 
bash里执行mysql脚本
#!/bin/sh
mysql -uroot -pEnCanadaForEMC -f
 
 
脚本执行中颜色文字
echo -e "\e[40;32;1m 开始备份数据库和页面,花费时间估计较长,请耐心等待 \e[0m "
echo -e "\e[40;32;1m  ====升级完成,请参照检查表进行检查 !==== \e[0m"
 
 
help脚本
#!/bin/sh
####################################################
#  write by: ***
#  date:     2010-01-18
###################################################
#Help
if [ x$1 = 'x-h' ] || [ x$1 = 'x--help' ] || [ x$1 = 'x-?' ]
then
 echo '###########################################################################'
 echo '                 编写:*** 2010-01-18 '
 echo ' 此脚本需要在视频文件的目录中进行执行: '
 echo ' 升级结束后,请到脚本执行目录下查看日志文件.格式为 '
 echo ' "执行日期-文件名.log"'
 echo '##########################################################################'
 exit
else
 echo
 echo " 如有疑问,请使用 $0 "-h" 或 "--help" 或 "-?" 查看帮助"
fi
 
 
列出目录中所有文件 文件夹的大小
for i in `ls`;do du -sh $i;done
ls | xargs du -sh
 
mysql检测简单的脚本
mysqlchk.sh
#!/bin/bash
main()
{
  echo -e "\e[40;32;1m 数据库测试 网络测试脚本现在开始 \e[0m "
  mysql -uvcom -pvcom -h61.168.223.57 -e 'show databases;' 2>&1
  traceroute 61.168.223.57 2>&1
  echo -e "\e[40;32;1m 测试结束 \e[0m "
}
nihao.sh  (调用mysqlchk.sh)
#!/bin/bash
. mysqlchk              引用脚本格式: .+空格+脚本名
cd `dirname $0`         dirname $0 等于 dirname dirname 进入当前目录
main > my.log
 
 
pid.sh   创建以进程ID为文件名称的log日志
#!/bin/bash
current_PID=$$  两个美元符号的特殊含义:当前进程ID号
ps aux | grep httpd | grep -v "grep" | awk '{print$2}' > /tmp/$current_PID.log
echo "rm log"
#rm -rf /tmp/$current_PID.log
$#  是你调用这个脚本时的参数个数 
$*或者$@  依次显示你运行这个脚本时的所有参数 
$$  运行该脚本当前进程ID号

特殊的shell变量
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9 个
$$ 脚本运行的当前进程 ID 号
$! 后台运行的最后一个进程的进程 ID 号
$@ 与 $* 相同,但是使用时加引号,并在引号中返回每个参数
$- 显示 shell 使用的当前选项,与 set 命令功能相同
$? 显示最后命令退出的状态。0 表示没有错误,其他任何值表明有错误

 
从1循环到100的两种方法(只针对bash其它的shell没试过)
echo {1..10} 屏幕显示出1,2,3....10 
用此循环可以实现touch同时创建100个文件 :for i in `seq 100`;do touch $i;done
seq命令参考 man seq
[root@hndx-zmd-ems root.adminssh]# for i in `seq 10`;do echo $i;done
1
2
3
4
5
6
7
8
9
10
[root@hndx-zmd-ems root.adminssh]#

[root@hndx-zmd-ems root.adminssh]# for i in {1..10};do echo $i;done
1
2
3
4
5
6
7
8
9
10
[root@hndx-zmd-ems root.adminssh]#

 
pgrep -l sshd  查找所有进程名中有sshd的进程ID
fuser -va 22/tcp 列出使用22端口的进程
fuser -va /home/evod     列出访问/home分区的进程
strace df  跟踪系统调用和信号(strace命令有可能没有,其他服务器拷贝即可)
 
 
shift命令
向脚本传递参数时,有时需要将每一个参数偏移以处理选项,这就是shift命令的功能。
它每次将参数位置向左偏移一位,下面用一段简单脚本详述其功能。脚本使用while循环反馈
所有传递到脚本的参数。
[root@hntx-ay-lvs root.adminssh]# vi a
#!/bin/bash
loop=0
while [ $# -ne 0 ]
do
  echo $1
done
你可能想像,上述脚本一直执行,直到命令行中不再有更多的参数输入。错了,因为没
有办法偏移到脚本中下一个参数,将只会反馈出第一个参数。执行结果如下:
./a 1 2 3
1
1
1
......
进入死循环
使用shift命令来处理传递到脚本的每一个参数。改动后脚本如下:
[root@hntx-ay-lvs root.adminssh]# vi a
#!/bin/bash
loop=0
while [ $# -ne 0 ]
do
  echo $1
  shift
done
现在再执行,结果将会不同:
./a 1 2 3
1
2
3  执行完毕

 << 符号在shell中应用
1.在ftp命令中使用<<时,使用了ftp -n -i选项,这意味着不要自动登录(ftp -n),而且关闭交互模式(ftp -i)。
现网服务器中的备份脚本有用到这种方法:
ftp -n 218.28.47.201 <user *** ***
bin
cd bak_log/portal
hash
idle 7200
prompt off
put $newlogname
!
2.访问数据库
mysql -uroot -pEnCanadaForEMC <use Portal;
drop table if exists subscriber_mac_bind_temp;
!
3.快速创建一个文件
可以使用这种方法快速创建一个文件,并向其中存入一些文本:
$ cat >> myfile <现在可以输入一些文本,结束时只要在新的一行键入NEWFILE即可,这样就创建了一个
名为myfile的文件,该文件中包含了一些文本。
如果打开了一个已经存在的文件,输入的内容会附加到该文件的末尾。
 
过滤某些节目并拷贝到指定目录
ls | grep 264avi | xargs -i cp {} /home/apache/media/media1/
 
 
 
 

阅读(782) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-20 15:19:18

学习了,多谢楼主分享哦!也欢迎广大linux爱好者来我的论坛一起讨论arm哦!www.lt-net.cn