C语言程序的内容:tenp_01.c
#include<stdio.h>
void main(){
while(1){
//printf("hello world");这里一定要拒绝 ”回显示操作“
}
return ;
}
下列为我需要启动的sh脚本内容:temp_00.sh
主要功能为:获取所有运行的进程内容,并通过grep进行筛选,判断temp_01的程序是否启动,如果不存在则启动,存在则不做任何操作。
#!/bin/bash
#Gets the parent ID of the child process
pro_id=`ps -ef | grep temp_01 | grep -v grep | awk '{print $2}'`
#An empty ID starts the program
if [[ &pro_id == "" ]]; then
#echo "start process temp 01&pro id 123"
/home/zdh/temp_01 & #加个&让程序后天运行,关闭终端依然可以运行
fi
exit 0
crontab服务定时脚本内容
终端通过:crontab -e,来编辑定时服务
注:有时会遇到crontab -e无法打开或编辑的情况。可以找到crontab文件直接sudo vim crontab进行编辑。我的文件位置在/etc/crontab这个绝对路径。
crontab -e
此内容的意思为:每分钟以bash脚本解析的形式去执行temp_00.sh脚本文件
* * * * * /bin/bash /home/zdh/temp_00.sh
注意事项:
1.在使用crontab配置定时任务时,对应指令,最好使用绝对路径不然找不到命令,导致无法执行(且报错信息会通过邮件方式发出,如果没发出就会以文件形式保存,这要特别注意,如果每分钟都报错,可能会存在硬盘爆满情况)
2.设置定时任务时,还需要注意,如果执行的是死循环程序,则需要 指令后面加上 (空格&) 使用指令后台运行,且在脚本后续加上使用exit 0,来正常退出脚本
3.拒绝”回显“操作,如:printf、out<<等打印操作,其中我出现了一个问题 while(1)printf(”hello world“);这样会不断的打印信息;出现问题的原因,回显:定时启动的脚本会不断打印信息,所以导致内存爆满
Linux系统开机初始化脚本rc.d
编辑以下文件即可:
/etc/rc.d/rc.local
rc.local文件内容如下:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
#此命令,创建一个空文件
touch /var/lock/subsys/local