20_yarn_app_list.sh 1.3 KB

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