#!/bin/sh # 定义合法的任务状态 VALID_STATES="ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED" # 检查是否传入参数 if [ $# -lt 1 ]; then echo "Usage: $0 " echo "Example: $0 FINISHED" echo "Valid states: $VALID_STATES" exit 1 fi # 获取任务状态作为参数 APP_STATES=$1 # 检查输入状态是否合法 if ! echo "$VALID_STATES" | grep -qw "$APP_STATES"; then echo "Error: Invalid appStates '$APP_STATES'." echo "Valid states: $VALID_STATES" exit 1 fi # 获取指定状态的任务列表 yarn app -list -appStates "$APP_STATES" | awk '{print $1}' | while read -r app_id; do # 获取任务详情 details=$(yarn application -status "$app_id" | grep -E "Application-Id|Application-Name|Start-Time|Finish-Time") # 提取信息 app_id=$(echo "$details" | grep "Application-Id" | awk -F ": " '{print $2}') app_name=$(echo "$details" | grep "Application-Name" | awk -F ": " '{print $2}') start_time=$(echo "$details" | grep "Start-Time" | awk -F ": " '{print $2}' | xargs -I {} date -d @{} +'%Y-%m-%d %H:%M:%S') finish_time=$(echo "$details" | grep "Finish-Time" | awk -F ": " '{print $2}' | xargs -I {} date -d @{} +'%Y-%m-%d %H:%M:%S') # 显示任务信息 echo -e "Application-Id: $app_id\tApplication-Name: $