脚本执行中颜色文字
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/