赞
踩
{
"cron_task": 0,
"cron_time": "2024-04-19 10:50:01"
}
www 755
要安装jq
并检验是否已安装,根据所使用的Linux发行版使用相应的包管理器。安装方法如下:
首先,需要启用EPEL(Extra Packages for Enterprise Linux)仓库,然后使用yum
安装jq
:
sudo yum install epel-release
sudo yum install jq
同样,安装完成后,可以通过运行jq --version
来检验是否安装成功。
如果确定是否已经安装了jq
,可以直接在终端中输入jq --version
。如果系统返回了jq
的版本信息,那就说明已经安装过了。如果系统提示找不到jq
命令,那就说明还没有安装,或者jq
没有安装在系统的PATH环境变量所包含的目录中。在这种情况下,需要按照上述步骤进行安装。
#!/bin/bash # 定义工作目录和JSON配置文件路径 #!/bin/bash # 获取脚本所在的绝对路径 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # 定义工作目录为脚本所在的目录 WORKDIR="$SCRIPT_DIR" # JSON配置文件的路径为工作目录下的一个子目录或文件 JSON_CONFIG="$WORKDIR/webapp.json" # 获取当前时间并格式化为"YYYY-MM-DD HH:MM:SS" CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S") # 日志属性设置 LOG_DIR="$(pwd)/logs" # 日志文件存放的目录 TODAY=$(date +"%Y-%m-%d") # 获取当前日期 LOG_FILE="${LOG_DIR}/${TODAY}_cron.log" # 定义日志文件名,包含日期 # 确保日志目录存在 mkdir -p "$LOG_DIR" # 检查JSON配置文件是否存在 if [ ! -f "$JSON_CONFIG" ]; then echo "Msg:$JSON_CONFIG JSON configuration file missing." echo "[$CURRENT_TIME]Msg:taskPHP JSON configuration file missing." >> "$LOG_FILE" exit 1 fi # 读取JSON配置文件中的cron_task值 cron_task=$(jq -r '.cron_task' "$JSON_CONFIG") # 检查是否应该执行cron任务 if [ "$cron_task" -eq 1 ]; then echo "Msg:taskPHP scheduled in progress." #taskPHP定时任务CRON执行中 echo "[$CURRENT_TIME]Msg:taskPHP scheduled in progress." >> "$LOG_FILE" # 切换到工作目录 cd "$WORKDIR" || exit 1 # 获取JSON配置文件的原始权限和所有者 ORIGINAL_OWNER=$(stat -c %U "$JSON_CONFIG") ORIGINAL_GROUP=$(stat -c %G "$JSON_CONFIG") ORIGINAL_PERMISSIONS=$(stat -c %a "$JSON_CONFIG") # 更新JSON文件 jq --argjson cron_task 0 --arg cron_time "$CURRENT_TIME" '.cron_task=$cron_task | .cron_time=$cron_time' "$JSON_CONFIG" > "$JSON_CONFIG.tmp" && { # 如果jq命令成功,则移动临时文件到原始位置并设置原始权限 mv "$JSON_CONFIG.tmp" "$JSON_CONFIG" && chown "$ORIGINAL_OWNER:$ORIGINAL_GROUP" "$JSON_CONFIG" && chmod "$ORIGINAL_PERMISSIONS" "$JSON_CONFIG" echo "[$CURRENT_TIME]Msg:taskPHP has been reset to 0 and original rights have been maintained." >> "$LOG_FILE" } # 检查上一步是否成功,并据此向日志文件中添加相应的信息 if [ $? -eq 0 ]; then echo "[$CURRENT_TIME]Msg:taskPHP has completed execution." >> "$LOG_FILE" #完成更新 else echo "[$CURRENT_TIME]Msg:taskPHP incomplete execution." >> "$LOG_FILE" #未完成更新 fi # 输出更新后的JSON内容(可选,用于验证) # cat "$JSON_CONFIG" # 执行PHP脚本 php start.php start # 如果需要等待一段时间再执行exit,可以添加sleep命令 # sleep 600 # 等待10分钟 else echo "Msg:taskPHP has no task execution status." #taskPHP无执行任务状态 echo "[$CURRENT_TIME]Msg:taskPHP has no task execution status." >> "$LOG_FILE" fi
执行脚本
/www/wwwroot/lockdata/cron/task.sh
即完成定时任务的设置
[10:40:18][taskPHP]:socket_bind err:Address already in use
# 结束任务
php start.php close all
@漏刻有时
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。