日期与时间
1 获取昨天日期
last_date=$(date -d "yesterday" "+%Y%m%d")
2 获取7天前日期
last_seven_date=$(date -d "-7" "+%Y%m%d")
3 获取一个小时前时间
last_hour=$(date -d "-1 hours" "+%Y-%m-%d_%H")
4 获取当前日期
current_date=$(date "+%Y%m%d")
数字
1 判断是否相等
if [ ${last_hour} == 12 ]; then
echo "last hour is 12"
elif [ ${last_hour} -lt 22 ]; then
echo "it time to happy"
elif [ ${last_hour} == 23 ]; then
echo "it's a new day"
fi
2 判断是否有值
if [ -z ${value} ]; then
value="0"
fi
3 循环
for (( i=1; i<8; i++ )); do
echo ${i}
done
文件
1 写入文件的时候不写入换行符(在追加内容的话,还是在同一行)
echo -n "hahaha" > log.txt
2 逐行读取文件内容
for line in `cat login.log`
do
echo ${line}
done
3 获取文件更改时间
modify_time=`stat -c %Y ${file_path}`
传输文件
1 ftp自动传输文件(获取远程ftp服务器上的文件)
ftp -n <<!
open 127.0.0.1
user username password
get ${remote_file} ${local_file}
bye
!
2 scp自动传输文件(用户名密码需要写在脚本里,而不是让机器相互信任)
expect -c "
spawn scp ${local_file} username@127.0.0.1:/home/username/${new_Name}
expect {
\"*assword\" {set timeout 300; send \"password\r\";}
\"yes/no\" {send \"yes\r\"; exp_continue;}
}
expect eof"
tomcat自动化部署脚本
部署的时候做的事情:
1. 检查新的war文件是否存在
2. shutdown当前tomcat,并且kill掉进程(避免shutdown无法完全关闭进程)
3. 备份上一次部署的war,删除原来的项目文件夹(webapps下面解压开的那个)
4. 拷贝新的war到webapps下面
5. 启动tomcat
6. 打开logs/catalina.out
有一点需要注意的,该脚本最后打开了logs/catalina.out,请在你的连接工具(putty,xshell等)超时之前让这个脚本结束运行,不然的话,窗口超时的时候tomcat会被关闭(发送shutdown命令关闭,log里面可以清楚地看到,血淋淋的教训啊)。
原因看这里
#!/bin/sh
cd /home/admin/tomcat8
warName='xxx'
warLocation="/home/admin/tomcat8-xxx/${warName}.war"
#check whether new war file is exists.
if [ ! -f $warLocation]; then
echo $warLocation is not exist!
exit 0
fi
#shutdown tomcat
cd bin
./shutdown.sh
cd ../
#kill the pid
ps aux | grep tomcat8-xxx | grep java | awk '{print $2}' | xargs kill -9
#backup and clean
var=$(date "+%Y-%m-%d_%H:%M:%S")
cp webapps/${warName}.war webapps/${warName}.war.${var}
rm -r -f webapps/${warName}
rm -r webapps/${warName}.war
cp ${warName}.war webapps/${warName}.war
cd bin
./startup.sh
cd ../
tail -f logs/catalina.out