一些shell代码片段

日期与时间

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} [email protected]:/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

你可能感兴趣的:(shell)