重构任务日志,修复手动停止任务

This commit is contained in:
hanhh
2021-07-04 19:00:02 +08:00
parent c1a3ac6e4d
commit a8a2a54bea
6 changed files with 92 additions and 33 deletions
+42 -11
View File
@@ -76,7 +76,6 @@ run_normal() {
local p1=$1
cd $dir_scripts
define_program "$p1"
. $file_task_before
if [[ $p1 == *.js ]]; then
if [[ $# -eq 1 ]]; then
random_delay
@@ -88,13 +87,16 @@ run_normal() {
log_path="$log_dir/$log_time.log"
make_dir "$log_dir"
local id=$(cat $list_crontab_user | grep -E "$cmd_task $p1$" | perl -pe "s|.*ID=(.*) $cmd_task $p1$|\1|" | xargs | sed 's/ /","/g')
local id=$(cat $list_crontab_user | grep -E "$cmd_task $p1$" | perl -pe "s|.*ID=(.*) $cmd_task $p1$|\1|" | head -1 | awk -F " " '{print $1}')
local begin_time=$(date '+%Y-%m-%d %H:%M:%S')
echo -e "## 开始执行... $begin_time\n" | tee -a $log_path
[[ $id ]] && update_cron_status "\"$id\"" "0"
[[ $id ]] && update_cron "\"$id\"" "0" "$$" "$log_path"
. $file_task_before
timeout $command_timeout_time $which_program $p1 2>&1 | tee -a $log_path
. $file_task_after
[[ $id ]] && update_cron_status "\"$id\"" "1"
[[ $id ]] && update_cron "\"$id\"" "1" "" "$log_path"
local end_time=$(date '+%Y-%m-%d %H:%M:%S')
local diff_time=$(($(date +%s -d "$end_time") - $(date +%s -d "$begin_time")))
echo -e "\n## 执行结束... $end_time 耗时 $diff_time" | tee -a $log_path
@@ -113,25 +115,54 @@ run_concurrent() {
local array=($(echo $envs | sed 's/&/ /g'))
cd $dir_scripts
define_program "$p1"
log_time=$(date "+%Y-%m-%d-%H-%M-%S")
log_dir_tmp="${p1##*/}"
log_dir="$dir_log/${log_dir_tmp%%.*}"
log_path="$log_dir/$log_time.log"
make_dir $log_dir
log_time=$(date "+%Y-%m-%d-%H-%M-%S.%N")
echo -e "\n各账号间已经在后台开始并发执行,前台不输入日志,日志直接写入文件中。\n"
local id=$(cat $list_crontab_user | grep -E "$cmd_task $p1$" | perl -pe "s|.*ID=(.*) $cmd_task $p1$|\1|" | head -1 | awk -F " " '{print $1}')
local begin_time=$(date '+%Y-%m-%d %H:%M:%S')
echo -e "## 开始执行... $begin_time\n" | tee -a $log_path
[[ $id ]] && update_cron "\"$id\"" "0" "$$" "$log_path"
. $file_task_before
echo -e "\n各账号间已经在后台开始并发执行,前台不输入日志,日志直接写入文件中。\n" | tee -a $log_path
single_log_time=$(date "+%Y-%m-%d-%H-%M-%S.%N")
for i in "${!array[@]}"; do
export ${p3}=${array[i]}
log_path="$log_dir/${log_time}_$((i+1)).log"
timeout $command_timeout_time $which_program $p1 &>$log_path &
single_log_path="$log_dir/${single_log_time}_$((i+1)).log"
timeout $command_timeout_time $which_program $p1 &>$single_log_path &
done
. $file_task_after
[[ $id ]] && update_cron "\"$id\"" "1" "" "$log_path"
local end_time=$(date '+%Y-%m-%d %H:%M:%S')
local diff_time=$(($(date +%s -d "$end_time") - $(date +%s -d "$begin_time")))
echo -e "\n## 执行结束... $end_time 耗时 $diff_time" | tee -a $log_path
}
## 运行其他命令
run_else() {
local log_time=$(date "+%Y-%m-%d-%H-%M-%S")
local log_dir="$dir_log/$1"
local log_path="$log_dir/$log_time.log"
local log_dir_tmp="${1##*/}"
local log_dir="$dir_log/${log_dir_tmp%%.*}"
log_path="$log_dir/$log_time.log"
make_dir "$log_dir"
timeout $command_timeout_time "$@" 2>&1 | tee $log_path
local id=$(cat $list_crontab_user | grep -E "$cmd_task $p1$" | perl -pe "s|.*ID=(.*) $cmd_task $p1$|\1|" | head -1 | awk -F " " '{print $1}')
local begin_time=$(date '+%Y-%m-%d %H:%M:%S')
echo -e "## 开始执行... $begin_time\n" | tee -a $log_path
[[ $id ]] && update_cron "\"$id\"" "0" "$$" "$log_path"
. $file_task_before
timeout $command_timeout_time "$@" 2>&1 | tee -a $log_path
. $file_task_after
[[ $id ]] && update_cron "\"$id\"" "1" "" "$log_path"
local end_time=$(date '+%Y-%m-%d %H:%M:%S')
local diff_time=$(($(date +%s -d "$end_time") - $(date +%s -d "$begin_time")))
echo -e "\n## 执行结束... $end_time 耗时 $diff_time" | tee -a $log_path
}
## 命令检测