执行SHELL同步代码到预上线和代码回退
		
		
 2017/04/26 15:00 | by 刘新修 ]
		- 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判断文件和文件夹是否存在
		
		
 2017/03/24 17:22 | by 刘新修 ]
		#!/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截取字符串的方法
		
		
 2016/03/11 10:17 | by 刘新修 ]
		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脚本获取当前路径遍历所有指定文件
		
		
 2016/03/11 10:13 | by 刘新修 ]
		- #!/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内核升级时间图谱及版本号说明
		
		
 2015/10/04 17:38 | by 刘新修 ]
		
		
 编译安装更新SSH到6.7
		
		
 2015/10/04 14:25 | by 刘新修 ]
		- 下载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 机器配置整理文章
		
		
 2015/10/01 19:54 | by 刘新修 ]
		系统版本:CentOS-6.4
		
 创建Xfile软连接指向目标目录
		
		
 2015/08/19 10:19 | by 刘新修 ]
		- rm -rf /www/youyuan.com.1/htdocs/xfile
 - sudo ln -s /opt/xfile /www/youyuan.com.1/htdocs/xfile
 
		
 Linux复制本地文件到远程
		
		
 2015/06/17 10:06 | by 刘新修 ]
		scp -r /www/next.youyuan.com2 root@192.168.3.162:/www/
		
 CentOS下安装yuicompressor-2.4.8合并JS-CSS.txt
		
		
 2014/11/13 20:52 | by 刘新修 ]
		- 查看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!"




  
 
 
 
 
 


