程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh或者#!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行(如:chmod +x 123.sh,./123.sh)
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。
在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量 可以这样写:keypin=”hello world”
由export关键字处理过的变量叫做环境变量。
a,打印信息 echo “哈哈哈”: 将文字内容打印在屏幕上
更多解释详情,请访问:http://tsov.net/sh-script-syntax/
1,自动执行jar项目运行的脚本 a,创建脚本文件(test-a.sh)
[root@docker_t tools]# touch test-a.sh
b,编辑文件
[root@docker_t tools]# vi /home/tools/test-a.sh
#!/bin/sh
#设置输出语言
export LANG=en_US.UTF-8
#定义需要执行的项目
project=jarweb.jar
#输出信息
echo "begin>>>>>>>>>>>>>>>>>>>>"
#获取当前服务器时间,并格式化
dqtime=$(date "+%Y-%m-%d %H:%M:%S")
#输出当前服务器时间
echo "datetime: ${dqtime}"
#获取项目正在运行的进程PID(方法有很多,这是其它一种)
javapid=$(ps -ef|grep $project |grep -v grep|awk '{print $2}')
#输出PID
echo "javapid: $javapid"
#通过项目的PID,判断有没有在运行
process=$(ps -ef |grep $javapid |grep java)
echo "process: $process"
if [ "$process" = "" ]
then
echo "Not found>$project<, running Java program"
else
#如果已经在运行,就直接杀死进程
echo "Start killing the process ID of jarweb.jar"
echo "kill -9 $javapid"
kill -9 $javapid
fi
echo "<<<<<<<<<<<<<<<<<<<end"
#输出友好的倒计时提示,项目在5秒钟后启动
seconds_left=5
echo "Start the project after 5 seconds"
while [ $seconds_left -gt 0 ];
do
echo -n "Please wait for> ${seconds_left} <seconds.."
sleep 1
seconds_left=$(($seconds_left - 1))
#清除上一行内容,即上一个倒计时输出的信息
echo -ne "\r \r"
done
echo "Startup project $project"
#项目启动需要执行的命令
nohup java -jar /home/jar/jarweb.jar > nohup.out 2>&1 &
#显示项目启动的日志输出
tail -999f /home/jar/nohup.out
c,执行脚本文件;
直接执行 [root@docker_t ~]# bash /home/tools/test-a.sh 编译后执行 [root@docker_t ~]# chmod +x /home/tools/test-a.sh [root@docker_t ~]# cd /home/tools/ [root@docker_t tools]# ./test-a.sh
2,自动执行war项目运行的脚本 a,创建脚本文件(test-b.sh)
[root@docker_t tools]# touch test-b.sh
b,编辑文件
[root@docker_t tools]# vi /home/tools/test-b.sh
#!/bin/sh
#设置输出语言
export LANG=en_US.UTF-8
#定义需要执行的tomcat名称
project=apache-tomcat-8.5.41
#输出信息
echo "begin>>>>>>>>>>>>>>>>>>>>"
#获取当前服务器时间,并格式化
dqtime=$(date "+%Y-%m-%d %H:%M:%S")
#输出当前服务器时间
echo "datetime: ${dqtime}"
#获取项目正在运行的进程PID
javapid=$(ps -aux | grep $project | grep -v grep |awk '{print $2}')
#输出PID
echo "javapid: $javapid"
#通过项目的PID,判断有没有在运行
process=$(ps -ef |grep $project |grep tomcat)
echo "process: $process"
if [ "$process" = "" ]
then
echo "Not found>$project<, running Java program"
else
#如果已经在运行,就停止运行
echo "Stop running tomcat $project"
/home/tools/apache-tomcat-8.5.41/bin/shutdown.sh
fi
echo "<<<<<<<<<<<<<<<<<<<end"
#输出友好的倒计时提示,项目在5秒钟后启动
seconds_left=5
echo "Start the project after 5 seconds"
while [ $seconds_left -gt 0 ];
do
echo -n "Please wait for> ${seconds_left} <seconds.."
sleep 1
seconds_left=$(($seconds_left - 1))
#清除上一行内容,即上一个倒计时输出的信息
echo -ne "\r \r"
done
echo "Startup project $project"
#项目Tomcat需要执行的命令
/home/tools/apache-tomcat-8.5.41/bin/startup.sh
#显示启动的日志输出
tail -999f /home/tools/apache-tomcat-8.5.41/logs/catalina.out
c,执行脚本文件;
直接执行 [root@docker_t ~]# bash /home/tools/test-b.sh 编译后执行 [root@docker_t ~]# chmod +x /home/tools/test-b.sh [root@docker_t ~]# cd /home/tools/ [root@docker_t tools]# ./test-b.sh