diff --git a/docs/hub/jobs-manage.md b/docs/hub/jobs-manage.md index 3f158c6436..ef0018927d 100644 --- a/docs/hub/jobs-manage.md +++ b/docs/hub/jobs-manage.md @@ -158,6 +158,33 @@ hf jobs inspect --namespace hf jobs logs --namespace ``` +## Wait for Jobs to finish + +Use `hf jobs wait` to block until one or more Jobs reach a terminal state (`COMPLETED`, `CANCELED`, `ERROR` or `DELETED`). It exits with code `0` only if every Job completed successfully, and a non-zero code otherwise — handy for chaining steps in shell scripts or CI: + +```bash +# Wait for a single Job +>>> hf jobs wait 693994e21a39f67af5a41ad0 + +# Wait for several Jobs at once (all must be in the same namespace) +>>> hf jobs wait + +# Wait for every currently running Job +>>> hf jobs ps -q | xargs hf jobs wait +``` + +Set a maximum wait with `--timeout` (accepts `s`, `m`, `h` or `d`): + +```bash +>>> hf jobs wait --timeout 30m 693994e21a39f67af5a41ad0 +``` + +Because `hf jobs wait` returns a non-zero exit code when a Job fails, you can chain it with `&&`. A non-detached `hf jobs run` (or `hf jobs uv run`) already blocks and exits non-zero on failure, so an explicit wait is only needed for detached Jobs (`-d`) or when waiting on a batch: + +```bash +>>> hf jobs wait 693994e21a39f67af5a41ad0 && echo "job completed successfully" +``` + ## Debug a Job If a Job has an error, you can see it in on the Job page