执行SHELL同步代码到预上线和代码回退

- hostname
- ############### 最后一次修改的用户 ####################
- cd /www/ftp/ysx/xfile/www
- ls -lh
- ############### 最后一次修改的用户 ####################
- cat /etc/redhat-release
- df -h
- rsync -avzut --progress --delete /www/ftp/ycw/xfile/www/assets liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas
- rsync -avzut --progress /www/ftp/ycw/xfile/www/json/assets.json liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas
- echo http://ysx.com/xfile/www/json/assets.json
- UNAME=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .name)
- VERSION=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .version)
- VERSION=${VERSION//\"/}
- UpdateTime=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .UpdateTime)
- UpdateTime=${UpdateTime//[[:space:]]/_}
- echo $UNAME
- echo $UpdateTime
- cp /www/ftp/ycw/xfile/www/json/assets.json /www/ftp/back/xfile/www/json/assets-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.json
- cd /www/ftp/ycw/xfile/www/ && zip -r -q /www/ftp/back/xfile/www/assets-json-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.zip assets json/assets.json
- echo "" > /www/ftp/back/xfile/www/sh/sh-$VERSION.txt
- echo cp /www/ftp/back/xfile/www/json/assets-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.json /www/ftp/ysx/xfile/www/json/assets.json >> /www/ftp/back/xfile/www/sh/sh-$VERSION.txt
- echo unzip /www/ftp/back/xfile/www/assets-json-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.zip -d /www/ftp/ysx/xfile/www >> /www/ftp/back/xfile/www/sh/sh-$VERSION.txt
其他版本,不增加平台版本号:
- hostname
- ############### 最后一次修改的用户 ####################
- cd /www/ftp/ysx/xfile/www
- ls -lh
- ############### 最后一次修改的用户 ####################
- cat /etc/redhat-release
- df -h
- rsync -avzut --progress --delete /www/ftp/ycw/xfile/www/assets liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas
- rsync -avzut --progress /www/ftp/ycw/xfile/www/json/assets.json liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas
- echo http://ysx.cnmo.me/xfile/www/json/assets.json
- UNAME=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .name)
- UNAME=${UNAME//\"/}
- VERSION=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .version)
- VERSION=${VERSION//\"/}
- UpdateTime=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .UpdateTime)
- UpdateTime=${UpdateTime//[[:space:]]/_}
- UpdateTime=${UpdateTime//\"/}
- cp /www/ftp/ycw/xfile/www/json/assets.json /www/ftp/back/xfile/www/json/assets-$VERSION-$UNAME-$UpdateTime.json
- cd /www/ftp/ycw/xfile/www/ && zip -r -q /www/ftp/back/xfile/www/assets-json-$VERSION-$UNAME-$UpdateTime.zip assets json/assets.json
- echo "" > /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt
- echo cp /www/ftp/back/xfile/www/json/assets-$VERSION-$UNAME-$UpdateTime.json /www/ftp/ysx/xfile/www/json/assets.json >> /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt
- echo unzip /www/ftp/back/xfile/www/assets-json-$VERSION-$UNAME-$UpdateTime.zip -d /www/ftp/ysx/xfile/www >> /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt
代码同步超级管理员
- myPath="/www/ftp/${userName//\"/}"
- ############### 这里的-d 参数判断$myPath是否存在 ###############
- if [ ! -d "$myPath" ] ; then
- echo "这个目录不存在呀!有问题请及时与管理员联系:liu.xinxiu@cnmo.com"
- cat $myPath
- exit
- #else
- #echo "目录存在!"
- fi
- ############### 这里的-d 参数判断$myPath是否存在 ###############
- proName=${projectName//\"/}
- proPath="$myPath/xfile/$proName"
- ysxPath="/www/ftp/ysx/xfile/$proName"
- backPath="/www/ftp/back/xfile/$proName"
- hostname
- ############### 最后一次修改的用户 ####################
- cd $proPath
- ls -lh
- ############### 最后一次修改的用户 ####################
- cat /etc/redhat-release
- df -h
- ############### 数据同步 ####################
- rsync -avzut --progress --delete $proPath/assets liuxinxiu@127.0.0.1::ysx_xfile_$proName --password-file=/pas/rsync.pas
- cp $proPath/json/assets.json $ysxPath/json/assets.json
- ############### 数据同步 ####################
- echo http://ysx.cnmo.me/xfile/$proName/json/assets.json
- UNAME=$(cat $proPath/json/assets.json | jq -c .name)
- UNAME=${UNAME//\"/}
- VERSION=$(cat $proPath/json/assets.json | jq -c .version)
- VERSION=${VERSION//\"/}
- UpdateTime=$(cat $proPath/json/assets.json | jq -c .UpdateTime)
- UpdateTime=${UpdateTime//[[:space:]]/__}
- UpdateTime=${UpdateTime//\:/_}
- UpdateTime=${UpdateTime//\"/}
- ############### 数据备份操作 ####################
- cp $proPath/json/assets.json $backPath/json/assets-${VERSION}__${UpdateTime}.json
- cd $proPath/ && zip -r -q $backPath/assets-${VERSION}__${UpdateTime}.zip assets json/assets.json
- echo "" > $backPath/sh/assets-${VERSION}__${UpdateTime}.txt
- echo cp $backPath/json/assets-${VERSION}__${UpdateTime}.json $ysxPath/json/assets.json >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt
- echo unzip -o $backPath/assets-${VERSION}__${UpdateTime}.zip -d $ysxPath >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt
- echo sed -i "'"s/,'"addOth"':{/,'"Fallback"':'"'$BUILD_USER_ID-v${ENV, var="BUILD_ID"}'"','"addOth"':{/g"'" $ysxPath/json/assets.json >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt
- ############### 数据备份操作 ####################
- ############### 维护回退版本列表 ####################
- versionList="$backPath/versionList.txt"
- if [ ! -f "$versionList" ]; then
- #touch "$versionList"
- echo "vlist=assets-${VERSION}__${UpdateTime}" > $backPath/versionList.txt
- else
- #grep -q "裸照" urfile && echo "有的" || echo "没的"
- grep -q "assets-${VERSION}__${UpdateTime}" $backPath/versionList.txt && echo "相同代码在备份文件中已经存在,已再次执行了代码同步!您还可以选择代码回滚功能,一键回退指定版本~" || sed -i "/^vlist.*$/s//& ,assets-${VERSION}__${UpdateTime}/g" $backPath/versionList.txt
- fi
- ############### 维护回退版本列表 ####################
Linux shell判断文件和文件夹是否存在

#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"
#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
if [ ! -x "$myPath"]; then
mkdir "$myPath"
fi
#这里的-d 参数判断$myPath是否存在
if [ ! -d "$myPath"]; then
mkdir "$myPath"
fi
#这里的-f参数判断$myFile是否存在
if [ ! -f "$myFile" ]; then
touch "$myFile"
fi
#其他参数还有-n,-n是判断一个变量是否是否有值
if [ ! -n "$myVar" ]; then
echo "$myVar is empty"
exit 0
fi
#两个变量判断是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
shell截取字符串的方法

shell中截取字符串的方法有很多中,
${expression}一共有9种使用方法。
${parameter:-word}
${parameter:=word}
${parameter:?word}
${parameter:+word}
上面4种可以用来进行缺省值的替换。
${#parameter}
上面这种可以获得字符串的长度。
${parameter%word} 最小限度从后面截取word
${parameter%%word} 最大限度从后面截取word
${parameter#word} 最小限度从前面截取word
${parameter##word} 最大限度从前面截取word
上面4个就是用来截取字符串的方法了。
有了着四种用法就不必使用cut命令来截取字符串了
第一种又可以分为四种情况,下面一一介绍。
1、使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。用法为#*substr,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${str#*//}
得到的结果为www.你的域名.com/cut-string.html,即删除从左边开始到第一个"//"及其左边所有字符2、使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。用法为##*substr,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${str##*/}
得到的结果为cut-string.html,即删除最后出现的"/"及其左边所有字符
3、使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。用法为%substr*,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${str%/*}
得到的结果为http://www.你的域名.com,即删除从右边开始到第一个"/"及其右边所有字符
4、使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。用法为%%substr*,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${str%%/*}
得到的结果为http://www.你的域名.com,即删除从右边开始到最后一个"/"及其右边所有字符
第二种也分为四种,分别介绍如下:
1、从左边第几个字符开始以及字符的个数,用法为:start:len,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:
2、从左边第几个字符开始一直到结束,用法为:start,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${var:7}
其中的 7 表示左边第8个字符开始
结果是:www.你的域名.com/cut-string.html
3、从右边第几个字符开始以及字符的个数,用法:0-start:len,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${str:0-15:10}
其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:cut-string
3、从右边第几个字符开始一直到结束,用法:0-start,例如:
str='http://www.你的域名.com/cut-string.html'
echo ${str:0-4}
其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:html
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
Linux Shell脚本获取当前路径遍历所有指定文件

- #!/bin/bash
- #获取当前SH脚本的绝对路径
- Cur_Dir=$(pwd)
- #echo $Cur_Dir
- function ergodic(){
- for file in ` ls $1`
- do
- # echo $file
- if [ -d $1"/"$file ]
- then
- ergodic $1"/"$file
- else
- local path=$1"/"$file #得到文件的完整的目录
- local name=$file #得到文件的名字
- #echo ${file##*.} /**** 打印返回的文件名 ****/
- #echo ${file##*.} /**** 打印返回的文件名 ****/
- #判断所匹配的文件扩展名
- if [ "${file##*.}" = "gz" ]||[ "${file##*.}" = "bz2" ]||[ "${file##*.}" = "zip" ]; then #警告:中括号内不前后必须流空格、等号前后必须留空格!
- #echo ${1#*/software} /**** 截取字符串处理当前路径 ****/
- echo "http://down.liuxinxiu.com"${1#*/software}"/"$file >>a.txt
- echo "http://down.liuxinxiu.com"${1#*/software}"/"$file
- fi
- fi
- done
- }
- INIT_PATH=$Cur_Dir
- ergodic $INIT_PATH
通用脚本,当前目录名为二级域名,一级域名自行定义
- #!/bin/bash
- #获取当前SH脚本的绝对路径
- Cur_Dir=$(pwd)
- Sub_Path=${Cur_Dir##*/}
- #echo $Cur_Dir
- #先清空一下文件,注明:如果不清空则一直在原文件尾部追加
- : > b.txt
- #当前目录下遍历循环文件的方法
- function ergodic(){
- for file in ` ls $1`
- do
- # echo $file
- if [ -d $1"/"$file ]
- then
- ergodic $1"/"$file
- else
- local path=$1"/"$file #得到文件的完整的目录
- local name=$file #得到文件的名字
- #echo ${file##*.} /**** 打印返回的文件名 ****/
- #echo ${file##*.} /**** 打印返回的文件名 ****/
- #判断所匹配的文件扩展名
- if [ "${file##*.}" = "gz" ]||[ "${file##*.}" = "bz2" ]||[ "${file##*.}" = "zip" ]; then #警告:中括号内不前后必须流空格、等号前后必须留空格!
- #echo ${1#*/software} /**** 截取字符串处理当前路径 ****/
- echo "http://"$Sub_Path".liuxinxiu.com"${1#*/software}"/"$file >>b.txt
- echo "http://"$Sub_Path".liuxinxiu.com"${1#*/software}"/"$file
- fi
- fi
- done
- }
- INIT_PATH=$Cur_Dir
- ergodic $INIT_PATH
linux内核升级时间图谱及版本号说明

编译安装更新SSH到6.7

- 下载openssh-6.7p1.tar.gz
- wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz
- cd openssh-6.7p1/
- 备份ssh配置文件 :
- mv /etc/ssh /etc/ssh.bak
- 查看是否缺包
- rpm -qa | egrep "gcc|make|perl|pam|pam-devel|zlib|zlib-devel"
- 如果有配置yum了的话可以直接yum安装这些包,这样既可以检验是否装了,没装的直接装上。
- yum -y install gcc* make perl pam pam-devel zlib zlib-devel openssl openssl-devel
- 先卸载完旧版本的openssh
- rpm -e `rpm -qa | grep openssh
- 如果configure时出现-- configure: error: *** OpenSSL headers missing - please install first or check config.log ***
- [root@localhost openssh-6.7p1]#
- 解决办法:安装openssl以及openssl-devel
- yum install openssl openssl-devel
- ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
- make
- make install
- 查看最新的版本:
- sshd -v
- 复制启动脚本到/etc/init.d
- cp /home/openssh-6.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
- 加入开机自启
- chkconfig --add sshd
- chkconfig sshd on
- chkconfig --list
- 启动sshd,用start或reload。不要restart,restart 会直接断开连接,而并不会接着启动sshd服务,这时候要通过其他途径进入机器,然后启动sshd服务才行。
- 如果xshell4连接不上,修改配置,使xshell4默认支持:
- vi /etc/ssh/sshd_config
- #x11Forwarding yes
- #UseLogin yes
LINUX 机器配置整理文章

系统版本:CentOS-6.4
创建Xfile软连接指向目标目录

- rm -rf /www/youyuan.com.1/htdocs/xfile
- sudo ln -s /opt/xfile /www/youyuan.com.1/htdocs/xfile
Linux复制本地文件到远程

scp -r /www/next.youyuan.com2 root@192.168.3.162:/www/
CentOS下安装yuicompressor-2.4.8合并JS-CSS.txt

- 查看CentOS自带JDK是否已安装
- yum list installed |grep java
- root@pts/0 # yum list installed |grep java
- java-1.6.0-openjdk.x86_64
- java-1.6.0-openjdk-devel.x86_64
- 查看yum库中的Java安装包
- yum -y list java*
- 使用yum安装Java环境。
- yum -y install java-1.7.0-openjdk*
- 官方网站:http://yui.github.io/yuicompressor/
- wget http://soft.liuxinxiu.com/yuicompressor/yuicompressor-2.4.8.zip
- unzip yuicompressor-2.4.8.zip
- 2. 将yuicompressor.jar放在任意目录,比如 /opt/software/yuicompressor/yuicompressor.jar
- 3. 编写bash脚本,保存为yui.sh
- #!/usr/bin/env bash
- java -jar /root/bin/yuicompressor-2.4.8.jar $1 > $2
- java -jar /root/bin/yuicompressor-2.4.8.jar header.js -o header.yy.js --charset utf-8 --type js
- java -jar /root/bin/yuicompressor-2.4.8.jar /opt/xfile/www/js/pages/123/*.js -o /opt/xfile/www/js/pages/123/*.yy.js --charset utf-8 --type js
- 4. 运行命令使yui.sh可执行
- chmod +x /root/bin/yui.sh
- 5. 建立链接
- sudo ln -s /root/bin/yui.sh /usr/bin/yui
- 6. 使用方法
- yui old.js new.js
#!/bin/bash
#发布时临时存放svn里下载的style文件
XfileJS="/opt/xfile/www/js/pages/ceshi/"
XfileCSS="/opt/xfile/www/js/pages/ceshi/"
#rm -rf $svn_style
#查找到$xfileJS目录下的所有.js文件,然后逐个压缩之
echo "compress js ..."
for js in `find $XfileJS -name "*.js"`;
do
#转成绝对路径,find出来的是相对路径
apath=`readlink -f $js`
echo "compress $apath"
new=`echo $js | sed 's/\.js//g'`
cp -rf $js $new".temp.js"
temp=`echo $js | sed 's/\.temp.js//g'`
#压缩后还是输出在原来的位置,相当于覆盖原有文件
java -jar /root/bin/yuicompressor-2.4.8.jar $temp -o $temp --type js --charset utf-8
done
#压缩所有的.css文件,过程与上面类似
echo "compress css ..."
for css in `find $XfileCSS -name "*.css"`;
do
apath=`readlink -f $css`
echo "compress $apath"
java -jar /root/bin/yuicompressor-2.4.8.jar $apath -o $apath --type css --charset utf-8
done
#echo "force cp $svn_style to $style"
#强制(-f)复制到目标目录,即nginx下的style目录
#cp -fr $svn_style/* $style
#rm -rf $svn_style
echo "deploy style success!"