网络知识 娱乐 Linux系统sh脚本编写

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