前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统sh脚本编写

Linux系统sh脚本编写

作者头像
Mr.Vv
修改2019-10-16 08:40:05
7.3K0
修改2019-10-16 08:40:05
举报

一、开头

程序必须以下面的行开始(必须方在文件的第一行): #!/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

代码语言:javascript
复制
#!/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

代码语言:javascript
复制
#!/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

在这里插入图片描述
在这里插入图片描述
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、开头
  • 二、注释
  • 三、变量
  • 四、环境变量
  • 五、Shell命令和流程控制
  • 六、简单的脚本
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com