第一页 上页 1 2 3 4 5 6 7 8 9 下页 最后页 [ 显示模式: 摘要 | 列表 ]
C++代码
  1. hostname  
  2. ############### 最后一次修改的用户 ####################  
  3. cd /www/ftp/ysx/xfile/www  
  4. ls -lh  
  5. ############### 最后一次修改的用户 ####################  
  6. cat /etc/redhat-release  
  7. df -h  
  8. rsync -avzut --progress --delete /www/ftp/ycw/xfile/www/assets liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  9. rsync -avzut --progress /www/ftp/ycw/xfile/www/json/assets.json liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  10.   
  11. echo http://ysx.com/xfile/www/json/assets.json  
  12. UNAME=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .name)  
  13. VERSION=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .version)  
  14. VERSION=${VERSION//\"/}  
  15. UpdateTime=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .UpdateTime)  
  16. UpdateTime=${UpdateTime//[[:space:]]/_}  
  17. echo $UNAME  
  18. echo $UpdateTime  
  19. cp /www/ftp/ycw/xfile/www/json/assets.json /www/ftp/back/xfile/www/json/assets-$VERSION-$BUILD_USER_ID-v$BUILD_NUMBER.json  
  20. 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  
  21. echo "" > /www/ftp/back/xfile/www/sh/sh-$VERSION.txt  
  22. 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  
  23. 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  

其他版本,不增加平台版本号:

C#代码
  1. hostname  
  2. ############### 最后一次修改的用户 ####################  
  3. cd /www/ftp/ysx/xfile/www  
  4. ls -lh  
  5. ############### 最后一次修改的用户 ####################  
  6. cat /etc/redhat-release  
  7. df -h  
  8. rsync -avzut --progress --delete /www/ftp/ycw/xfile/www/assets liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  9. rsync -avzut --progress /www/ftp/ycw/xfile/www/json/assets.json liuxinxiu@127.0.0.1::ysx_xfile_www --password-file=/pas/rsync.pas  
  10.   
  11. echo http://ysx.cnmo.me/xfile/www/json/assets.json  
  12. UNAME=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .name)  
  13. UNAME=${UNAME//\"/}  
  14. VERSION=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .version)  
  15. VERSION=${VERSION//\"/}  
  16. UpdateTime=$(cat /www/ftp/ycw/xfile/www/json/assets.json | jq -c .UpdateTime)  
  17. UpdateTime=${UpdateTime//[[:space:]]/_}  
  18. UpdateTime=${UpdateTime//\"/}  
  19. cp /www/ftp/ycw/xfile/www/json/assets.json /www/ftp/back/xfile/www/json/assets-$VERSION-$UNAME-$UpdateTime.json  
  20. cd /www/ftp/ycw/xfile/www/ && zip -r -q /www/ftp/back/xfile/www/assets-json-$VERSION-$UNAME-$UpdateTime.zip assets json/assets.json  
  21. echo "" > /www/ftp/back/xfile/www/sh/sh-$VERSION-$UNAME-$UpdateTime.txt  
  22. 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  
  23. 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  

 代码同步超级管理员

C#代码
  1. myPath="/www/ftp/${userName//\"/}"  
  2. ############### 这里的-d 参数判断$myPath是否存在 ###############  
  3. if [ ! -d "$myPath" ] ; then  
  4. echo "这个目录不存在呀!有问题请及时与管理员联系:liu.xinxiu@cnmo.com"  
  5. cat $myPath  
  6. exit  
  7. #else    
  8. #echo "目录存在!"  
  9. fi  
  10. ############### 这里的-d 参数判断$myPath是否存在 ###############  
  11. proName=${projectName//\"/}  
  12. proPath="$myPath/xfile/$proName" 
  13. ysxPath="/www/ftp/ysx/xfile/$proName" 
  14. backPath="/www/ftp/back/xfile/$proName" 
  15.  
  16. hostname 
  17. ############### 最后一次修改的用户 #################### 
  18. cd $proPath 
  19. ls -lh 
  20. ############### 最后一次修改的用户 #################### 
  21. cat /etc/redhat-release 
  22. df -h 
  23.  
  24. ############### 数据同步 #################### 
  25. rsync -avzut --progress --delete $proPath/assets liuxinxiu@127.0.0.1::ysx_xfile_$proName --password-file=/pas/rsync.pas 
  26. cp $proPath/json/assets.json $ysxPath/json/assets.json 
  27. ############### 数据同步 #################### 
  28.  
  29. echo http://ysx.cnmo.me/xfile/$proName/json/assets.json 
  30. UNAME=$(cat $proPath/json/assets.json | jq -c .name) 
  31. UNAME=${UNAME//\"/} 
  32. VERSION=$(cat $proPath/json/assets.json | jq -c .version) 
  33. VERSION=${VERSION//\"/} 
  34. UpdateTime=$(cat $proPath/json/assets.json | jq -c .UpdateTime) 
  35. UpdateTime=${UpdateTime//[[:space:]]/__} 
  36. UpdateTime=${UpdateTime//\:/_} 
  37. UpdateTime=${UpdateTime//\"/} 
  38.  
  39. ############### 数据备份操作 #################### 
  40. cp $proPath/json/assets.json $backPath/json/assets-${VERSION}__${UpdateTime}.json 
  41. cd $proPath/ && zip -r -q $backPath/assets-${VERSION}__${UpdateTime}.zip assets json/assets.json 
  42. echo "" > $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  43. echo cp $backPath/json/assets-${VERSION}__${UpdateTime}.json $ysxPath/json/assets.json >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  44. echo unzip -o $backPath/assets-${VERSION}__${UpdateTime}.zip -d $ysxPath >> $backPath/sh/assets-${VERSION}__${UpdateTime}.txt 
  45. 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 
  46. ############### 数据备份操作 #################### 
  47.  
  48.  
  49. ############### 维护回退版本列表 #################### 
  50. versionList="$backPath/versionList.txt" 
  51. if [ ! -f "$versionList" ]; then 
  52.     #touch "$versionList" 
  53.     echo "vlist=assets-${VERSION}__${UpdateTime}" > $backPath/versionList.txt 
  54. else  
  55.     #grep -q "裸照" urfile  && echo "有的"  || echo "没的" 
  56.     grep -q "assets-${VERSION}__${UpdateTime}" $backPath/versionList.txt  && echo "相同代码在备份文件中已经存在,已再次执行了代码同步!您还可以选择代码回滚功能,一键回退指定版本~"  || sed -i "/^vlist.*$/s//& ,assets-${VERSION}__${UpdateTime}/g" $backPath/versionList.txt  
  57. fi  
  58. ############### 维护回退版本列表 ####################  

 

#!/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 表示)

C#代码
  1. #!/bin/bash  
  2. #获取当前SH脚本的绝对路径  
  3. Cur_Dir=$(pwd)  
  4. #echo $Cur_Dir  
  5. function ergodic(){  
  6. for file in ` ls $1`  
  7. do  
  8.     # echo $file  
  9.     if [ -d $1"/"$file ]  
  10.     then  
  11.     ergodic $1"/"$file  
  12.         else  
  13.         local path=$1"/"$file   #得到文件的完整的目录  
  14.         local name=$file        #得到文件的名字  
  15.         #echo ${file##*.} /**** 打印返回的文件名 ****/  
  16.         #echo ${file##*.} /**** 打印返回的文件名 ****/  
  17.         #判断所匹配的文件扩展名  
  18.         if [ "${file##*.}" = "gz" ]||[ "${file##*.}" = "bz2" ]||[ "${file##*.}" = "zip" ]; then #警告:中括号内不前后必须流空格、等号前后必须留空格!  
  19.             #echo ${1#*/software} /**** 截取字符串处理当前路径 ****/  
  20.             echo "http://down.liuxinxiu.com"${1#*/software}"/"$file >>a.txt  
  21.             echo "http://down.liuxinxiu.com"${1#*/software}"/"$file  
  22.         fi  
  23.     fi  
  24.   
  25. done  
  26. }  
  27. INIT_PATH=$Cur_Dir  
  28. ergodic $INIT_PATH  

通用脚本,当前目录名为二级域名,一级域名自行定义

C#代码
  1. #!/bin/bash  
  2. #获取当前SH脚本的绝对路径  
  3. Cur_Dir=$(pwd)  
  4. Sub_Path=${Cur_Dir##*/}  
  5. #echo $Cur_Dir  
  6. #先清空一下文件,注明:如果不清空则一直在原文件尾部追加  
  7. : > b.txt  
  8. #当前目录下遍历循环文件的方法  
  9. function ergodic(){  
  10. for file in ` ls $1`  
  11. do  
  12.     # echo $file  
  13.     if [ -d $1"/"$file ]  
  14.     then  
  15.     ergodic $1"/"$file  
  16.         else  
  17.         local path=$1"/"$file   #得到文件的完整的目录  
  18.         local name=$file        #得到文件的名字  
  19.         #echo ${file##*.} /**** 打印返回的文件名 ****/  
  20.         #echo ${file##*.} /**** 打印返回的文件名 ****/  
  21.         #判断所匹配的文件扩展名  
  22.         if [ "${file##*.}" = "gz" ]||[ "${file##*.}" = "bz2" ]||[ "${file##*.}" = "zip" ]; then #警告:中括号内不前后必须流空格、等号前后必须留空格!  
  23.             #echo ${1#*/software} /**** 截取字符串处理当前路径 ****/  
  24.             echo "http://"$Sub_Path".liuxinxiu.com"${1#*/software}"/"$file >>b.txt  
  25.             echo "http://"$Sub_Path".liuxinxiu.com"${1#*/software}"/"$file  
  26.         fi  
  27.     fi  
  28.   
  29. done  
  30. }  
  31. INIT_PATH=$Cur_Dir  
  32. ergodic $INIT_PATH  
Linux内核使用三种不同的版本编号方式。
 
. 第一种方式用于1.0版本之前(包括1.0)。
  第一个版本是0.01,紧接着是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。
. 第二种方式用于1.0之后到2.6,数字由三部分“A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。
  只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0,1996年的2.0),A才变化。
  可以通过数字B来判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版。C代表一些bug修复,安全更新,新特性和驱动的次数。
  以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。
  在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5;
  而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。
  这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。
. 第三种方式从2004年2.6.0版本开始,使用一种“time-based”的方式。
  3.0版本之前,是一种“A.B.C.D”的格式。
  七年里,前两个数字A.B即“2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复,安全更新,添加新特性和驱动的次数。
  3.0版本之后是“A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。
  第三种方式中不使用偶数代表稳定版,奇数代表开发版这样的命名方式。
  举个例子:3.7.0代表的不是开发版,而是稳定版!
 
linux内核升级时间图谱如下:
 

http://at.liuxinxiu.com/2015/10/image/linux_kernel_v.jpg

编译安装更新SSH到6.7

[不指定 2015/10/04 14:25 | by 刘新修 ]
C++代码
  1. 下载openssh-6.7p1.tar.gz  
  2. wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz  
  3. cd openssh-6.7p1/  
  4.   
  5. 备份ssh配置文件 :  
  6. mv /etc/ssh /etc/ssh.bak  
  7.   
  8. 查看是否缺包  
  9. rpm -qa | egrep "gcc|make|perl|pam|pam-devel|zlib|zlib-devel"  
  10.   
  11. 如果有配置yum了的话可以直接yum安装这些包,这样既可以检验是否装了,没装的直接装上。  
  12. yum -y install gcc* make perl pam pam-devel zlib zlib-devel openssl openssl-devel  
  13.   
  14. 先卸载完旧版本的openssh  
  15. rpm -e `rpm -qa | grep openssh  
  16.   
  17. 如果configure时出现-- configure: error: *** OpenSSL headers missing - please install first or check config.log ***  
  18. [root@localhost openssh-6.7p1]#   
  19. 解决办法:安装openssl以及openssl-devel  
  20. yum install openssl openssl-devel  
  21.   
  22. ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords  
  23. make  
  24. make install  
  25.   
  26. 查看最新的版本:  
  27. sshd -v  
  28.   
  29. 复制启动脚本到/etc/init.d  
  30. cp /home/openssh-6.7p1/contrib/redhat/sshd.init /etc/init.d/sshd  
  31.   
  32. 加入开机自启  
  33. chkconfig --add sshd  
  34. chkconfig sshd on  
  35. chkconfig --list  
  36.   
  37. 启动sshd,用start或reload。不要restart,restart 会直接断开连接,而并不会接着启动sshd服务,这时候要通过其他途径进入机器,然后启动sshd服务才行。  
  38.   
  39. 如果xshell4连接不上,修改配置,使xshell4默认支持:  
  40. vi /etc/ssh/sshd_config  
  41. #x11Forwarding yes  
  42. #UseLogin yes  

LINUX 机器配置整理文章

[不指定 2015/10/01 19:54 | by 刘新修 ]

系统版本:CentOS-6.4

 
1. 设置网络及DNS域名解析
vi /etc/sysconfig/network-scripts/ifcfg-eth0
原来的DHCP 更改为: static
尾部添加:
IPADDR=192.168.9.201
NETMASK=255.255.255.0
GATEWAY=192.168.9.9
DNS1=192.168.9.9
DNS2=8.8.8.8
同时也在: vi /etc/resolv.conf
nameserver 192.168.9.9
nameserver 8.8.8.8
 
之后重启网络(即可):
service network restart
 
2. 设置服务器向SSH客户端连接会话发送频率和时间
vi /etc/ssh/sshd_config,添加如下两行
ClientAliveInterval 60
ClientAliveCountMax 3
 
之后重启sshd(即可):
service sshd restart
 
3. chkconfig  查看自动启动服务列表
***************************************
chkconfig auditd off  关闭所有
***************************************
chkconfig --level 12345 lvm2-monitor off
chkconfig --level 345 netfs off
chkconfig --level 2345 postfix off 对应的是25端口
 
4. hostname 查看主机名
通过配置文件/etc/sysconfig/network修改。
HOSTNAME=localhost.localdomain
 
C#代码
  1. rm -rf /www/youyuan.com.1/htdocs/xfile  
  2. 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/

C#代码
  1. 查看CentOS自带JDK是否已安装  
  2.   
  3. yum list installed |grep java  
  4. root@pts/0 # yum list installed |grep java  
  5. java-1.6.0-openjdk.x86_64  
  6. java-1.6.0-openjdk-devel.x86_64  
  7.   
  8. 查看yum库中的Java安装包  
  9.   
  10. yum -y list java*  
  11.   
  12. 使用yum安装Java环境。  
  13.   
  14. yum -y install java-1.7.0-openjdk*  
  15.   
  16. 官方网站:http://yui.github.io/yuicompressor/  
  17.   
  18. wget http://soft.liuxinxiu.com/yuicompressor/yuicompressor-2.4.8.zip  
  19.   
  20. unzip yuicompressor-2.4.8.zip  
  21.   
  22.   
  23. 2. 将yuicompressor.jar放在任意目录,比如 /opt/software/yuicompressor/yuicompressor.jar  
  24.   
  25.   
  26. 3. 编写bash脚本,保存为yui.sh  
  27. #!/usr/bin/env bash  
  28. java -jar /root/bin/yuicompressor-2.4.8.jar $1 > $2  
  29. java -jar /root/bin/yuicompressor-2.4.8.jar header.js -o header.yy.js --charset utf-8 --type js  
  30.   
  31. 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  
  32.   
  33.   
  34. 4. 运行命令使yui.sh可执行  
  35.   
  36. chmod +x /root/bin/yui.sh  
  37.   
  38. 5. 建立链接  
  39.   
  40. sudo ln -s /root/bin/yui.sh /usr/bin/yui  
  41.   
  42. 6. 使用方法  
  43.   
  44. 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!"

第一页 上页 1 2 3 4 5 6 7 8 9 下页 最后页 [ 显示模式: 摘要 | 列表 ]