#!/bin/bash
cd `dirname $0`
BIN_DIR=`pwd`
#echo $BIN_DIR
cd ..
DEPLOY_DIR=`pwd`
CONF_DIR=$DEPLOY_DIR/conf
SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf.properties | tr -d
if [ -z "$SERVER_NAME" ]; then
SERVER_NAME=`hostname`
fi
在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的"."。
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。
在/home/jd/jdd/下如下:
[img]http://dl2.iteye.com/upload/attachment/0103/3828/8133661a-e55b-3772-a568-aa8f8b2e19af.jpg[/img]
PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'`
if [ -n "$PIDS" ]; then
echo "ERROR: The $SERVER_NAME already started!"
echo "PID: $PIDS"
exit 1
fi
[img]http://dl2.iteye.com/upload/attachment/0103/5931/5bf9657d-9778-3079-9ead-cee8b847c427.jpg[/img]
if [ -n "$SERVER_PORT" ]; then
SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
if [ $SERVER_PORT_COUNT -gt 0 ]; then
echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
exit 1
fi
fi
wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
LIB_DIR=$DEPLOY_DIR/lib
LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"`
[img]http://dl2.iteye.com/upload/attachment/0103/5962/272f1ec7-9084-3019-963d-621b899ac5c2.jpg[/img]