shell脚本 (文件名:my_exec.sh)
############# 配置项 ###############################
keyword='a.php' #查找进程是否存在的关键词
line=`ps aux | grep ${keyword} | wc -l` # 查看进程是否存在的命令
commend='php a.php' # nohup 执行的commend; 不要带 输出重定向 和 & !!!!!!
output_file='1.txt' #输出重定向文件
pid_file='exec_pid.pid' #pid文件 确保唯一且文件夹可写
############ 配置项 end ############################
###检查状态
function check_running(){
if [[ $line -lt 2 ]] ## 去除 gerp 时产生的进程
then
echo "未运行" ##### 未执行的操作
else
echo "正在运行" ##### 已执行的操作
fi
}
function start_running(){
if [[ $line -lt 2 ]]
then
echo "正在开始。。。。"
eval "nohup ${commend} >>${output_file} 2>&1 &"
echo $! > ${pid_file} #### 保存pid 文件
sleep 2
echo "成功"
else
echo "程序已经运行,请不要重复运行"
fi
}
function stop_running(){
if [[ $line -lt 2 ]]
then
echo "程序未运行"
elif [ ! -f "$pid_file" ]
then
echo "pid文件不存在,请使用 kill 删除进程"
else
echo "正在停止。。。。"
kill -9 `cat ${pid_file}` ##### 自己的停止方法 尽量不要用 kill -9
rm -f $pid_file
sleep 2
echo "成功"
fi
}
case $1 in
start):
start_running;
;;
check):
check_running;
;;
stop):
stop_running;
;;
restart):
stop_running;
start_running;
;;
*):
echo "请输入命令: sh start_exec.sh【start|stop|restart|check】"
;;
esac
php脚本 (自己的后台脚本,一定要是能够长久运行的)
<?php
while(true){
sleep(1);
file_put_contents('1.txt',date('Y-m-d H:i:s')."\r\n",FILE_APPEND);
}
?>
方法 sh shart_exec.sh (start | stop | restart | check)