Linux系统sh脚本编写

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/esqabc/article/details/91045089

声明:
如果您有更好的技术与作者分享,或者商业合作;
请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。
如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由
作者一经查实,马上删除。

一、开头

程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh或者#!/bin/bash
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
当编写脚本完成时,如果要执行该脚本,还必须使其可执行。
要使编写脚本可执行:
编译 chmod +x filename 这样才能用./filename 来运行(如:chmod +x 123.sh,./123.sh)

二、注释

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。

三、变量

在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量
可以这样写:keypin=”hello world”

四、环境变量

由export关键字处理过的变量叫做环境变量。

五、Shell命令和流程控制

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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/esqabc/article/details/91045089
今日推荐