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文件中。

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章