Linux系统sh脚本编写

一、开头

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux安装Redis

    声明: 如果您有更好的技术与作者分享,或者商业合作;请访问作者个人网站 http://www.esqabc.com/view/message.html 留言...

    Mr.Vv
  • Spring boot2.0.x+SpringCloud(Finchley版本)分布式架构

    三,分布式架构--Feign与RestTemplate+Ribbon分别使用断路器(Hystrix)

    Mr.Vv
  • Ansible的使用

    服务器三台或者以上 a,主服务器:docker_t (安装Ansible) b,被控制的服务器A:esqabc_a c,被控制的服务器B:esqab...

    Mr.Vv
  • 高盛600名交易员只剩2人?这个“金饭碗”职业正走向死亡...

    来源:FX168 作者:印第安的老斑鸠 最近,高盛乃至整个美股市场接连创下新高,主要受益于美国总统特朗普做出的削减金融监管和减税改革的承诺。 还有一个不可忽...

    小莹莹
  • OLEDB数据源

    OLEDB虽然是基于COM的一组接口,但是它与标准的COM接口有点不同,它的一大特色在于它自身的属性设置,有的接口虽然对象中存在但是调用QueryInterfa...

    Masimaro
  • 从0到1打造直播 App

    概要 分享内容: 互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——…….。从直播1.0秀场时代(YY),2.0游戏直播(斗鱼、虎牙、熊猫)到...

    腾讯Bugly
  • 哈佛商学院教授大卫·约菲访问达观数据 共同探讨企业大数据未来

    2017年3月28日,哈佛商学院教授大卫·约菲(David B.Yoffie)访问了达观数据。 教授的达观之行意在了解中国大数据发展趋势和达观的大数据产品,以期...

    达观数据
  • 德国图宾根大学发布可扩展对抗黑盒攻击,仅通过观察决策即可愚弄深度神经网络

    原文来源:arXiv 作者:Wieland Brendel、Jonas Rauber、Matthias Bethge 编译:嗯~阿童木呀、哆啦A亮 不知道大家有...

    企鹅号小编
  • DeepMind重大突破:AI进化出大脑级导航能力,像动物一样会“抄小路”

    DeepMind团队称,其最新研发出的一个人工智能程序具有类似哺乳动物一样的寻路能力。

    顶级程序员
  • 手把手教你在Windows环境下升级R

    在Windows环境下,我们可以使用installr包自动将R升级到最新版本。并且可以安装软件。下面主要演示如何在Windows环境下升级R,并将旧版本安装的...

    素质

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动