nav-img
Evolution

Пример использования ML Space CLI в shell

Создайте файл с расширением .sh и поместите туда следующий код:

#!/bin/bash
job_output=$(mls job run --config job.yaml --output json 2>&1)
exit_code=$?
if [ $exit_code -ne 0 ]; then
echo "Ошибка запуска задачи: $job_output"
exit 1
fi
job_status=$(echo "$job_output" | jq -r ".status")
if [ -z "$job_status" ]; then
echo "Ошибка: не удалось получить статус задачи."
exit 1
fi
# Обрабатываем полученный статус задачи
if [ "$job_status" == "success" ]; then
echo "Задача успешно выполнена."
elif [ "$job_status" == "failed" ]; then
echo "Задача завершилась с неудачей."
exit 1
else
echo "Задача в процессе выполнения."
fi
job_name=$(echo "$job_output" | jq -r ".job_name")
while true; do
status=$(mls job status "$job_name" --output json | jq -r ".status")
if [ "$status" == "running" ] || [ "$status" == "failed" ] || [ "$status" == "completed" ]; then
echo "Статус задачи: $status"
break
fi
echo "Ожидание статуса задачи... Текущий статус: $status"
sleep 10
done
if [ "$status" == "Failed" ]; then
echo "Задача завершилась с ошибкой"
exit 1
fi
mls job logs "$job_name" >> "${job_name}.logs" &
# Идентификатор последнего запущенного фонового процесса
log_pid=$!
# Использование цикла while для регулярной проверки лог файла
# Поиск интересующей строки в логах и ожидание, если строка найдена, цикл завершается
while true; do
if grep -q "Epoch" "${job_name}.logs"; then
echo "Найдена интересующая строка в логах."
# Останавливаем фоновый процесс получения логов, если он все еще запущен
kill $log_pid 2>/dev/null
break
else
echo "Интересующая строка в логах пока не найдена. Ждем..."
sleep 5
fi
done