Linux 开机自启动程序

本篇文章讲解Linux 开机自启动程序

  Linux开机自启动在项目中应用很常见,突然停电或者故障,程序总归要关掉的,如果手动去启动程序,比较麻烦,所以开机自启动是非常重要的一环。

  在Debian或者Ubuntu中,开机之后会调用一个脚本文件:/etc/rc.local,所以在这个文件中写好要启动的程序即可。Debian linux发行版系统现在可能没有rc.local文件了,不过没有关系,直接在/etc文件下新建一个rc.local文件即可,开机就会运行该程序。

  所以只要在该文件中直接启动你的程序即可,或者也可以启动一个脚本文件(.sh),在这个脚本文件中启动要启动的程序,下面就是rc.local文件内容的实例。

	#!/bin/bash -e
	location="/home/debian"     #脚本路径
	cd $location
	$location/rc.sh
	$location/run.sh
    exit 0

  上面的rc.local文件中就另行启动了脚本文件(rc.sh)来运行自己的程序,以下就是rc.sh的内容,启动gateway程序。

#!/bin/sh
location=/home/debian/gateway20191211
echo $location
cd $location

find $location/log -mtime +7 -type f |xargs rm -f
out=$(date "+%Y-%m-%d")".txt"
pwd
$location/gateway >> $location/log/$out

  细心的朋友可能还发现其实上面rc.local运行了两个脚本,但是实际运行过程中只启动了第一个,这是因为第一个程序运行还没有结束,就不会运行第二个程序,所以这样基本上就不会个程序同时启动。

  如果要同时启动两个程序,则需要这样来写脚本文件,将两个脚本文件相与

#!/bin/bash -e
location="/home/debian"         #脚本路径
cd $location
$location/run.sh & $location/GetPID.sh
exit 0

  此外如果还需要设计一个进程看门狗,监控该程序是否运行,则可以这样来写脚本:(先获取进程PID,然后再监控该PID是否存在)

#!/bin/bash

while true
do

process=gateway               #监控的程序运行名

pid=$(ps -ef|grep $process |grep '/home/debian' | grep -v grep |awk '{print $2}')
echo $pid

if [ $pid -ne 0 ]
then                 #如果程序PID在,则程序在运行
        echo `date`
        echo “pid is exitable!else                #否则程序没有运行,需要启动程序    启动的程序在run.sh文中。
        echo `date`
        echo "pid isnot exitable!"
        sudo sh run.sh >> $(date "+%Y-%m-%d")".txt"
fi

sleep 15s

done

exit 0

该脚本一开机就运行,监控程序PID,如果发现没有,立即启动,15s检查一次。

发布了19 篇原创文章 · 获赞 29 · 访问量 6771

猜你喜欢

转载自blog.csdn.net/qq_34430371/article/details/104471701
今日推荐