centos7使用crontab命令,设置开机自启动任务

前言

最近工作中,需要给一些在服务器运行的jar包服务设置开机自启,防止服务器意外宕机重启后,这些服务都不能正常使用。

方法

使用crontab命令,设置开机自启动任务。

注意:
1)通过cron.service定时服务来调用可执行文件时,cron是无法加载系统中的相关路径设置的,因此在脚本文件中,相关路径都要转换为绝对路径。尤其jdk的路径应当为其安装路径。
2)在执行start java application流程时,我们应当通过cd命令,对系统运行目录进行切换,以转到相应服务目录下。

1、为.sh脚本文件添加权限

  1. 对于windows环境下编辑的.sh可执行文件,我们拷贝到linux环境后,在cron.service服务中是没有权限执行该脚本的,但通过手动输入:sh *.sh命令,是可以成功执行该脚本的,因此我们需要为该脚本添加权限,以使其在Linux环境下为可执行文件。
  2. 通过命令:ls –l,我们可以查看文件的相关属性,下面的test.sh是非可执行文件,文件为灰色。图1
  3. 通过命令:chmod 744 test.sh,我们就可以将test.sh转为可执行文件,文件名为绿色,同时x也代表该文件为可执行文件。
    图2

2、编辑crontab定时任务

  1. 下面我们以root用户为例,来编辑crontab定时任务,对于root用户,我们可以直接通过命令:crontab –e,打开crontab文件编辑器,点击i键,就可以对crontab文件进行编辑。
    图3

  2. 输入命令:@reboot /root/LinuxAutoStartProject_jar/test.sh
    @reboot,指定服务器启动时,cron.service定时任务会在该时间点执行相应的事务。
    /root/LinuxAutoStartProject_jar/test.sh,指定了定时任务将要执行的任务,可以是相关Linux命令,也可以是相关可执行的脚本程序。

  3. 输入命令后,按esc退出键,然后输入:wq键,保存crontab文件并退出。定时任务编辑成功并保存后,出现: crontab:installing new crontab,则代表定时任务设定成功。
    图4

3、设置crond服务开机自启动

设置crond定时任务服务开机自启,在 /etc/rc.d/rc.local脚本中加入 /sbin/service crond start即可

4、后台运行jar包的脚本文件

#!/bin/bash
WORK_DIR="/root/app/app_jar"
JAR_NAME="app.jar"
MY_JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/bin/java"
HOST_IP="127.0.0.1"

pid=`ps -ef | grep $JAR_NAME | grep -v grep |awk '{print $2}'`
echo "===>pid:$pid"
if test -n "$pid"
then
ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}'|grep $pid > /dev/null
if test $? -eq 0
then
echo "The process is running !\n"
exit 3
fi
fi

#Check process is existence
if [ ! -f $WORK_DIR/$JAR_NAME ] ; then
   echo "Error: Can not find the file $WORK_DIR/$JAR_NAME,shik next shell"
   exit 3
else
   echo "$WORK_DIR/$JAR_NAME exist,go next"
fi

#start jar
echo "start java application"
cd $WORK_DIR
nohup $MY_JAVA_HOME -Djava.library.path=lib -Djava.rmi.server.hostname=$HOST_IP -Xms128m -Xms256m -XX:+UseParallelOldGC -XX:ParallelGCThreads=2 -jar $JAR_NAME > out.log 2>&1 &

5、nohup命令

nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

nohup 是 no hang up 的缩写,就是不挂断的意思。

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。


用法举例: nohup command > myout.file 2>&1 &

在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。

参考资料

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值