<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Linux on 分享技术带来的喜悦</title><link>https://bridgeli.cn/categories/linux/</link><description>Recent content in Linux on 分享技术带来的喜悦</description><generator>Hugo -- 0.156.0</generator><language>zh-cn</language><lastBuildDate>Sat, 24 Oct 2015 14:26:16 +0000</lastBuildDate><atom:link href="https://bridgeli.cn/categories/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>运维之maven版Git上线脚本</title><link>https://bridgeli.cn/posts/2015-10-24-%E8%BF%90%E7%BB%B4%E4%B9%8Bmaven%E7%89%88git%E4%B8%8A%E7%BA%BF%E8%84%9A%E6%9C%AC/</link><pubDate>Sat, 24 Oct 2015 14:26:16 +0000</pubDate><guid>https://bridgeli.cn/posts/2015-10-24-%E8%BF%90%E7%BB%B4%E4%B9%8Bmaven%E7%89%88git%E4%B8%8A%E7%BA%BF%E8%84%9A%E6%9C%AC/</guid><description>&lt;p&gt;之前的文章曾写了Git怎么用和Git服务器怎么搭建，一个公司仅仅只有这些还是远远不够的，这些仅仅是对源码的管理，程序猿开发好的源码怎么编译、打包、部署上线呢？下面就需要运维来解决这个问题了，不过这一段时间公司老大让老夫负责公司的源码由SVN迁Git，有幸接触到一点这块的知识，今天记录一下，万一老夫哪天失业了转行去做运维了呢！&lt;/p&gt;
&lt;p&gt;在开始正式文章之前，首先感谢一下我在小马金融的同事：张学军，此脚本原始版本是由学军提供的，然后加上老夫的优化，可以说没有学军的无私帮助，老夫不可能完成这个脚本的，所以，谢谢，学军！&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
#!/bin/bash
export JAVA_HOME=/usr/local/jdk1.7.0_67
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
dir_path=&amp;#34;/apps/project/project_name&amp;#34;
work=&amp;#34;project_name&amp;#34;
DATE=\`date +%Y%m%d%H%M\`
tomcat=&amp;#34;apache-tomcat-6.0.41_project_name&amp;#34;
cd $dir_path
if [ ! -d wars ];then
mkdir wars
fi
if [ -d ROOT ];then
tar cfz ROOT-$DATE.tar.gz ROOT
mv ROOT-$DATE.tar.gz wars/
fi
git_update(){
tag_version=$1
cd $dir_path/$work
git checkout master
git pull
echo $tag_version
git_tag=\`git tag|grep -x $tag_version\`
if [ &amp;#34;$git_tag&amp;#34; = &amp;#34;$tag_version&amp;#34; ];then
git checkout -b \`date +%Y%m%d%H%M\` $git_tag
else
printf &amp;#34;tag number input error n&amp;#34;
exit 1
fi
git_id1=\`git log -1 &amp;amp;#8211;format=%H\`
git_id2=\`git show $git_tag |grep commit |awk &amp;amp;#8216;{print $2}&amp;amp;#8217; |head -1\`
if [ &amp;#34;$git_id1&amp;#34; != &amp;#34;$git_id2&amp;#34; ];then
printf &amp;#34;The current git branch where inconsistent tag number is correct , please check the tag number n&amp;#34;
exit 1
fi
}
tag_version=$1
if [ &amp;#34;$tag_version&amp;#34; = &amp;#34;&amp;#34; ];then
printf &amp;#34;Please enter the version number n&amp;#34;
exit 1
else
git_update $1
echo $1 &amp;gt;&amp;gt; ${dir_path}/tag.txt
fi
build(){
dir_path=$1
work=$2
cd $dir_path/$work
mvn package -DskipTests
if [ -d $dir_path/$work/target ];then
cd $dir_path/$work/target
else
echo &amp;#34;build $dir_path/$work failed&amp;#34;
exit
fi
return 1
}
build $dir_path $work
type=$?
if [ $type -eq 1 ];then
cd $dir_path/$work/target
work_name=\`ls |grep $work |grep -v &amp;#34;war|jar|gz&amp;#34;\`
else
echo &amp;#34;build failure&amp;#34;
exit 1
fi
if [ -d $dir_path/ROOT ];then
rm -rf $dir_path/ROOT
fi
cd $dir_path/$work/target/
mv $work_name $dir_path/ROOT
if [ -d $dir_path/ROOT ];then
scp $dir_path/config.properties $dir_path/ROOT/WEB-INF/classes/
scp $dir_path/redis.properties $dir_path/ROOT/WEB-INF/classes/
scp $dir_path/jdbc.properties $dir_path/ROOT/WEB-INF/classes/
fi
tomcat_status=\`ps aux |grep $tomcat |grep -v &amp;#34;gerp&amp;#34;&amp;gt;/dev/null;echo $?\`
if [ $tomcat_status -eq 0 ];then
kill -9 \`ps aux |grep $tomcat |grep -v &amp;#34;grep&amp;#34;|awk &amp;amp;#8216;{print $2}&amp;amp;#8217;\`;rm -rf /usr/local/$tomcat/work/\*;rm -rf /usr/local/$tomcat/temp/\*;/usr/local/$tomcat/bin/startup.sh
else
rm -rf /usr/local/$tomcat/work/\*;rm -rf /usr/local/$tomcat/temp/\*;/usr/local/$tomcat/bin/startup.sh
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注：里面的project_name是项目名，老夫隐藏了公司的实际项目名，就以project_name代替了，实际用的时候请根据实际情况修改&lt;/p&gt;</description></item><item><title>Shell编程入门</title><link>https://bridgeli.cn/posts/2015-04-19-shell%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/</link><pubDate>Sun, 19 Apr 2015 14:58:55 +0000</pubDate><guid>https://bridgeli.cn/posts/2015-04-19-shell%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/</guid><description>&lt;p&gt;一、Shell入门&lt;/p&gt;
&lt;p&gt;我们先看一个小例子，永恒的经典：Hello World&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
#!/bin/sh
var=&amp;#34;Hello World!&amp;#34;
echo $var
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;保存，文件名为：hello&lt;br&gt;
我们发现文件的第一行虽是一个注释，但是说明了文件的执行是由/bin/sh来执行，所以我们这么来执行这个文件：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
/bin/sh hello
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;就可以看到结果了，但我们知道在Linux下，一个文件是否可以执行是由文件属性来决定的，那么我们是否可以给他加上可执行权限，来执行这个文件呢？&lt;br&gt;
先执行如下命令：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
chmod u+x hello
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后我们在直接敲命令：hello，看到什么现象？&lt;br&gt;
所以一个文件被执行有这两个途径&lt;/p&gt;
&lt;p&gt;二、Shell语法入门&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;输入/输出内部命令&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;①. echo 输出命令&lt;br&gt;
②. read 输入命令&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
#!/bin/sh
echo Name:
read NAME
echo Phone:
read PHONE
echo SNAME,SPHONE &amp;gt; contact.txt
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;if条件语句&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在看if条件语句之前，我们先看一下：测试命令执行结果，在Linux下正确的命令执行结果为0，否则为其他值，我们可以用：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
echo $?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;来看上一个命令的执行结果，懂了这些之后，我们在看那些常见语法&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
if 条件测试命令串
then
条件为真时执行的命令
else
条件为假时执行的命令
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注：if和then必须是两行，如果放一行，请在then前加“;”&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
#!/bin/sh
echo Input file name:
read NAME
if [ -d $NAME ]
then
echo Dir
else
echo Not Dir
fi
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;case条件语句&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
case 条件测试命令串 in
表达式1)
分支1执行的命令
;;
表达式2)
分支2执行的命令
;;
*)
其他命令
;;
esac
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;例如：&lt;/p&gt;</description></item></channel></rss>