1、获取文件路径
文件的路径:/home/hadoop/apps/clientCanal/bin/start.sh
执行start.sh文件
./start.sh
以下是start.sh的文件内容
#!/bin/bash
project_path=$(cd `dirname $0`; pwd)
echo $project_path
project_name="${project_path##*/}"
echo $project_name
project=$(dirname $(pwd))
echo $project
name="${project##*/}"
echo $name
输出结果是:
/home/hadoop/apps/clientCanal/bin
bin
/home/hadoop/apps/clientCanal
clientCanal
2、后台运行
只要在命令行的最后加上 &
例如:java -jar Test &
3、日志输出
日志输出重定向命令,如 cmd > out.log &
Linux默认定义两个变量:1和2;
1表示标准输出
2表示错误输出
如 cmd 1>info.log 2>error.log & (标准输出到info.log 错误输出到error.log) 如果想输出到一个文件:cmd 1>info.log 2>&1 &
4、基本脚本
#!/bin/bash
case "`uname`" in
Linux)
bin_abs_path=$(readlink -f $(dirname $0))
;;
*)
bin_abs_path=`cd $(dirname $0); pwd`
;;
esac
project_abs_path=`cd ${bin_abs_path}/.. ;pwd`
config_abs_path=$project_abs_path"/conf"
libs_abs_path=$project_abs_path"/libs"
logs_abs_path=$project_abs_path"/logs"
echo 'conf ---->'$config_abs_path
echo 'libs ---->'$libs_abs_path
echo 'logs ---->'$logs_abs_path
JARS="" #存放所有jar的路径
jar=".jar" #匹配jar
for file in `ls $libs_abs_path`
do
if [[ $file == *$jar ]]
then
JARS=$JARS$libs_abs_path$file" "
CLASSPATH=$i:"$CLASSPATH";
else
echo "libs文件夹里面有非jar文件"
fi
done
CLASSPATH="$config_abs_path:$CLASSPATH";
echo $CLASSPATH
JAVA="" #存放java的路径
if [ -z "$JAVA" ] ; then
JAVA=$(which java)
fi
echo $JAVA
#创建日志文件
if [ ! -f $logs_abs_path/app.log ] ; then
touch $logs_abs_path/app.log
fi
str=`file -L $JAVA | grep 64-bit`
if [ -n "$str" ]; then
JAVA_OPTS="-server -Xms2048m -Xmx3072m"
else
JAVA_OPTS="-server -Xms1024m -Xmx1024m"
fi
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution"
JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
APP_OPTS="-DappName=AppName"
#执行jar包
$JAVA $JAVA_OPTS $APP_OPTS -classpath .:$CLASSPATH App 1>$logs_abs_path/app.log 2>&1
echo $! > $project_abs_path/bin/app.pid
创建脚本: touch yourFileName.sh
更改文件可执行:chmod +x yourFileName.sh
编辑脚本:vi yourFileName.sh
解释:
- project_abs_path项目的目录,
- CLASSPATH指定加载的类
- CLASSPATH后面加了一个config目录,是类似于指定resources的作用
执行这个脚本:sh yourFileName.sh &
5、maven项目到Linux
参考GitHub:maven打tar.gz包
6、Linux的一些小命令
- 取A和B之间的字符串,例如:applist = adf fda dsaf A dfasd B asdf asdf asdf fda df 执行之后是:dfasd
applist = 'adf fda dsaf A dfasd B asdf asdf asdf fda df'
echo $applist | awk -v head="A" -v tail="B" '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}'