Linux crontab定时执行Shell脚本需要执行特定的命令时解决思路

由于一些不可抗拒的原因,项目部署后需要定时检测项目是否正常运行,否则将执行重启命令。

在具体实施过程中发现,定时器执行无误,但是重启命令无法正常启动。多方查找发现Shell脚本中的Java命令需要引入环境变量方可正常执行。因此做了一下修改,脚本如下(仅供参考):

1、crontab执行配置

* * * * * cd /项目目录 && ./auto_start.sh >> /log/auto.out

2、Shell脚本

#!/bin/bash
#导入环境变量
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
APP_NAME=app
JAR_NAME=app.jar
Log="log.out"
JVM="-server -Xms1024m -Xmx1024m -Xmn256m -Xss512k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
pid=$(ps -ef | grep -v 'grep' | egrep $JAR_NAME| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
  echo "boot ( pid $pid) is running"
else
 echo -n "auto_start process pid: "
  nohup java $JVM -jar $JAR_NAME --spring.profiles.active=dev > $Log 2>&1 &
  echo $(ps -ef | grep -v 'grep' | egrep $JAR_NAME| awk '{printf $2 " "}')
fi

简单记录如此,目的是为了提供一种解决问题的思路,当在使用crontab的过程中出现类似不可执行的命令时,当查看是否需要引入相应的环境变量。

恐有疏漏,欢迎指正。讨论中精进技术,同技术死磕到底!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

时间: 2019-01-02

linux shell之pushd、popd和dirs的使用讲解

1 问题 我们有时候需要保存多个路径,上下键切换不方便,用cd-只能到上个目录,我们可以用dirs和pushd和popd 2 dirs.pushd.popd dirs: 这个命令显示栈里面所有的路径,一定会包含当前路径,常用参数如下 dirs -v 显示栈里面的所有路径和下标,通过下标,我们可以用pushd +下标到这个目录,然后popd+下标把这个路径在栈里面弹出来, dirs -c 清除栈里所有路径,但是当前路径不会删除 pushd:我们可以添加目录到栈(dirs)里面,比如添加当前目录pu

Android之在linux终端执行shell脚本直接打印当前运行app的日志的实现方法

1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 adb shell dumpsys activity top 2).我们的终端安装了pidcat.py脚本,然后执行如下的命令就可以打印当前运行app的全日志, pidcat.py packageName 3).思考,为什么每次都需要这样重复的操作呢?一说到重复,我们应该立马想到是否可以用脚本解决重复

Linux shell脚本的建立与执行

在进行linux测试时编写脚本是必不可少的.最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本.可以把太多的命令写成一个脚本,这样每次执行一遍  shell文件,就可以省去了敲击键盘的时间.于是在网上搜了一些有关Linux下脚本编程的内容. Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性.可维护性和便携性比效率更重要的任务. 用户可以使用任何文本编辑器编辑shel

Linux shell环境下Zabbix Api的使用

在linux shell环境下直接调用就可以,根据官网所述:在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌.这可以使用该 user.login 方法完成. [root@localhost ~]# curl -i -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method":"user.login","params

linux shell之控制台打印各种颜色字体和背景的实现方法

1 问题 控制台打印各种颜色字体和背景 字体颜色 #30:黑 #31:红 #32:绿 #33:黄 #34:蓝色 #35:紫色 #36:深绿 #37:白色 背景颜色 #40:黑 #41:深红 #42:绿 #43:黄色 #44:蓝色 #45:紫色 #46:深绿 #47:白色 echo -e "\e[43;35m chenyu\e[0m hello word" 比如上面的命令,43是背景颜色,35是字体颜色, \e[0m 是还原本色 2 代码实现 这里写的是color.sh文件如下 #!/b

linux中shell的变量的数值计算

1.expr命令 a=123 expr $a + 10 ##加法 expr $a - 10 ##减法 expr $a \* 10 ##乘法 expr $a / 10 ##除法 expr $a % 10 ##取余 2.$[]和$(())表达式 echo $[a+10] echo $[a-10] echo $[a*10] echo $[a/10] echo $[a%10] echo $((a+10)) echo $((a-10)) 3.let命令(let命令在执行后会保存新的值) let a+=10

Linux shell命令统计某列去重后的值

需求:根据MAC获取,MAC对应的硬件版本和软件版本.在根据硬件版本统计MAC的数量 $ head test_1.txt 00:07:67,EC2108,HWV010537P0000 00:07:63,Z83,ZNV861010P1225 00:07:67,EC6108V9U_ca_sccdx,HWV218012P0000 00:07:63,SBox8900hisi3716V3,ZGV865012P0001 00:07:67,EC6108V9U_ca_sccdx,HWV218012P0000 0

Linux shell数组与关联数组的用法实例

1. 关联数组 使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_price=([apple]='$100' [orange]='$150') 列出关联数组的索引(也就是 key): $ echo ${!fruits_price[*]} $ echo ${!fruits_price[@]} 2. 序列数组 seq 方法创建 基本用法: $ a_nu

Linux Shell在目录下使用for循环结合if查找文件的巧用

1.for循环对目录做遍历,if判断文件是否为要查找的文件. 示例1: #!/bin/bash if [ $# -lt 1 ];then echo "Usage:$0 + filepath" exit fi #判断用户是否输入了参数 match=$1 #将要查的文件赋值给变量match found=0 #定义一个初始变量作为发生条件,当文件找到时对此变量重新赋值 for file in /etc/* #对目录进行遍历 do if [ $file == $match ];then #判断

Linux Shell 生成随机数和随机字符串的方法示例

日常生活中,会经常用到随机数,使用场景非常广泛,例如买彩票.丢骰子.抽签.年会抽奖等. Shell 下如何生成随机数呢,米扑博客特意写了本文,总结 Linux Shell 产生随机数的多种方法. 计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).实际上,伪随机数和理想随机数也是相对的概念,例如伪随机数在1万万亿亿亿年内也无法重复,算是理想随机数么? 伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产生算法将可以产生一个非常长的不重复的序列,例如 UUID

python生成随机密码或随机字符串的方法

本文实例讲述了python生成随机密码或随机字符串的方法.分享给大家供大家参考.具体实现方法如下: import string,random def makePassword(minlength=5,maxlength=25): length=random.randint(minlength,maxlength) letters=string.ascii_letters+string.digits # alphanumeric, upper and lowercase return ''.joi

Python生成8位随机字符串的方法分析

本文实例讲述了Python生成8位随机字符串的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import random import string #第一种方法 seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-" sa = [] for i in range(8): sa.a

MySQL产生随机数并连接字符串的方法示例

本文实例讲述了MySQL产生随机数并连接字符串的方法.分享给大家供大家参考,具体如下: 用到的方法: concat('a','b','c'); 连接字符串 rand(); 产生随机数 floor(); 取整数 SQL语句示例: 复制代码 代码如下: UPDATE user set reg_ip= concat(floor(RAND() * 250),'.',floor(RAND() * 250),'.',floor(RAND() * 250),'.',floor(RAND() * 250)) w

php生成随机数/生成随机字符串的方法小结【5种方法】

本文实例讲述了php生成随机数/生成随机字符串的方法.分享给大家供大家参考,具体如下: 有时候我们的项目需要生成随机数,但是又不想那么麻烦,那么我们可以使用下面这5种方法生成. 第一种:mt_rand() <?php function GetRandStr($length){ //字符组合 $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $len = strlen($str)-1; $randstr

Js生成随机数/随机字符串的方法小结【5种方法】

本文实例讲述了Js生成随机数/随机字符串的方法.分享给大家供大家参考,具体如下: 第一种:使用randomString,e表示长度,默认32位 function randomString(e) { e = e || 32; var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678", a = t.length, n = ""; for (i = 0; i < e; i++) n += t.charAt(

shell 生成随机数的实现方法总结

 shell 生成随机数的实现方法总结 1. 使用系统的 $RANDOM 变量 mimvp@ubuntu:~$ echo $RANDOM 17617 $RANDOM 的范围是 [0, 32767] 如需要生成超过32767的随机数,可以用以下方法实现. 例:生成400000~500000的随机数 #!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(($RANDOM+1000000000)) #增加一个10位的数再求余 echo

JavaScript生成随机字符串的方法

本文实例讲述了JavaScript生成随机字符串的方法.分享给大家供大家参考.具体分析如下: 这里使用JavaScript生成一个随机字符串,可以指定字符串的长度. 复制代码 代码如下: function RandomString(length) {     var str = '';     for ( ; str.length < length; str += Math.random().toString(36).substr(2) );     return str.substr(0, l

php使用指定字符列表生成随机字符串的方法

本文实例讲述了php使用指定字符列表生成随机字符串的方法.分享给大家供大家参考.具体如下: <?php function randomString($len) { srand(date("s")); $possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()"; $str=""; while(strlen($str)<$

php简单生成一组与多组随机字符串的方法

本文实例讲述了php简单生成随机字符串的方法.分享给大家供大家参考,具体如下: 生成一组: <?php $str = "0123456789abcdefghijklmnopqrstuvwxyz~@#()_";//输出字符集 $n = 10;//输出串长度 $len = strlen($str)-1; for($i=0 ; $i<$n; $i++){ $s .= $str[rand(0,$len)]; } echo $s . "<br/>";