Linux开机自启动在项目中应用很常见,突然停电或者故障,程序总归要关掉的,如果手动去启动程序,比较麻烦,所以开机自启动是非常重要的一环。 在Debian或者Ubuntu中,开机之后会调用一个脚本文件:/e...
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
1
2
3
4
5
6
上面的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
1
2
3
4
5
6
7
8
9
细心的朋友可能还发现其实上面rc.local运行了两个脚本,但是实际运行过程中只启动了第一个,这是因为第一个程序运行还没有结束,就不会运行第二个程序,所以这样基本上就不会个程序同时启动。
如果要同时启动两个程序,则需要这样来写脚本文件,将两个脚本文件相与。
#!/bin/bash -e
location="/home/debian" #脚本路径
cd $location
$location/run.sh & $location/GetPID.sh
exit 0
1
2
3
4
5
此外如果还需要设计一个进程看门狗,监控该程序是否运行,则可以这样来写脚本:(先获取进程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检查一次。
————————————————
版权声明:本文为CSDN博主「张一西」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34430371/article/details/104471701
来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。
Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利
苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司
南京思必达教育科技有限公司版权所有 百度统计