With a scheduler#

About#

This example demonstrates how to run workflows on HPC systems using a job scheduler, specifically PBS Pro.

Unlike local execution where tasks run as background processes, this example shows how to:

  • Configure a scheduler: Set scheduler=pbspro in hosts.cfg to use PBS Pro

  • Submit jobs: Tasks are submitted as batch jobs to the scheduler queue system

  • Specify resources: Configure job requirements like memory (mem=1GB) and walltime (time=01:00:00)

  • Use different queues: Route tasks to specific queues (e.g., queue=omp for OpenMP jobs)

  • Monitor with sentinel: A special sentinel job continuously monitors the workflow status

  • Handle job failures: Demonstrates workflow behavior when a job fails (mytask1 exits with error code 1)

The workflow consists of:

  • mytask1: A job that fails after 10 seconds, demonstrating error handling

  • mytask2: A longer-running job (120 seconds) on a specific queue

  • sentinel: A monitoring job that tracks the workflow progress

This example is essential for users deploying workflows on HPC clusters with SLURM, PBS Pro, or other schedulers. The principles shown here apply to any scheduler configuration in woom.

Path: examples/academic/scheduler.

Configuring#

workflow.cfg#
[app]
name=academic_scheduler

[stages]

    [[prolog]]
    prolog0=mytask1,mytask2
tasks.cfg#
[mytask1]
    [[content]]
    commandline="echo task1; sleep 10; exit 1"
    [[submit]]
    mem=1GB

[mytask2]
    [[content]]
    commandline="echo task2; sleep 120"
    [[submit]]
    queue=omp

[sentinel]
    [[submit]]
    time=01:00:00
hosts.cfg#
[local]
scheduler=pbspro

Running#

Overview#

Let’s have an overview of stages before running the workflow.

$ woom show overview
##################################### APP ######################################
name: academic_scheduler
################################## TASK TREE ###################################
prolog:
    - prolog0: mytask1 // mytask2
#################################### CYCLES ####################################
No cycle
################################### ENSEMBLE ###################################
no member

Dry run#

Now let’s run the workflow in test (dry) and debug modes.

$ woom run --log-no-color --log-level debug --dry-run
woom.log    : DEBUG    *** STARTED LOG SESSION ***
woom.cli    : DEBUG    Run the workflow
woom.cli    : DEBUG    Loading extensions
woom.cli    : INFO     No extension to load
woom.cli    : DEBUG    Load workflow config: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/workflow.cfg
woom.cli    : INFO     Loaded workflow config
woom.cli    : INFO     App name: academic_scheduler
woom.cli    : DEBUG    Initialize the host manager
woom.cli    : INFO     Initialized the host manager
woom.cli    : DEBUG    Load hosts config file: hosts.cfg
woom.cli    : INFO     Loaded hosts config file: hosts.cfg
woom.cli    : DEBUG    Infer host
woom.cli    : INFO     Infered host: local
woom.cli    : DEBUG    Initialize the task manager
woom.cli    : INFO     Initialized the task manager
woom.cli    : DEBUG    Load the task config file: tasks.cfg
woom.cli    : INFO     Loaded the task config file: tasks.cfg
woom.cli    : DEBUG    Initialize the workflow
woom.workflow: DEBUG    Task tree:
prolog:
    - prolog0: mytask1 // mytask2
woom.cli    : INFO     Initialized the workflow
woom.cli    : INFO     Successfully setup the workflow!
woom.cli    : DEBUG    Run the workflow
woom.workflow: DEBUG    Running the workflow in fake mode
woom.workflow: DEBUG    Entering stage: prolog
woom.workflow: DEBUG    Entering sequence: prolog0
woom.workflow: DEBUG    Running task: prolog/prolog0/mytask1
woom.workflow: DEBUG    Task path: academic_scheduler/prolog/mytask1
woom.workflow: DEBUG    Cleaning task: prolog/prolog0/mytask1
woom.workflow: DEBUG    Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog
woom.workflow: INFO     Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog
woom.job    : INFO     Started job manager: PbsproJobManager()
woom.workflow: DEBUG    Submitting task: prolog/prolog0/mytask1
woom.workflow: DEBUG      Dependencies: 
woom.workflow: DEBUG    Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1
woom.workflow: INFO     Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1
woom.workflow: INFO     Fake submission: academic_scheduler/prolog/mytask1 → qsub -koed -N mytask1 1GB /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/job.sh
woom.workflow: DEBUG    Fake submission:
--------------- submission command ---------------
qsub -koed -N mytask1 1GB /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/job.sh
-------------- batch script content --------------
#!/bin/bash

# Prolog
set -eo pipefail
# - handler for graceful termination
on_sigterm() {
    echo "Received termination signal, cleaning up..."
    # Just exit cleanly, let on_exit handle status
    exit 0
}
# - handler for killing termination
on_sigkill() {
    echo "Received kill signal, cleaning up..." >&2
    # Just exit cleanly, let on_exit handle status
    exit 1
}
# - handler for exit (always called)
on_exit() {
    status=$?
    if [ ! -f "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/job.terminating" ]; then
        echo $status > "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/job.status"
    fi
    exit $status
}
trap on_sigterm SIGKILL
trap on_sigkill SIGTERM SIGINT
trap on_exit EXIT


# Environment variables
export WOOM_TASK_NAME="mytask1"
export WOOM_RUN_DIR="/home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask1"
export WOOM_WORKFLOW="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/workflow.cfg"
export WOOM_HOST="local"
export WOOM_TASKMANAGER="/home/docs/checkouts/readthedocs.org/user_builds/woom/envs/latest/lib/python3.11/site-packages/woom/tasks.cfg:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/tasks.cfg"
export WOOM_JOBMANAGER="PbsproJobManager"
export WOOM_TASK_TREE_PROLOG_PROLOG0="['mytask1']:['mytask2']"
export WOOM_CYCLES=""
export WOOM_NMEMBERS="0"
export WOOM_MEMBERS=""
export WOOM_PATHS_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/bin"
export WOOM_PATHS_PYTHONPATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib/python"
export WOOM_PATHS_LIBRARY_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib"
export WOOM_PATHS_INCLUDE_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/include"
export WOOM_APP_PATH="academic_scheduler"
export WOOM_APP_NAME="academic_scheduler"
export WOOM_APP_CONF=""
export WOOM_APP_EXP=""
export WOOM_CYCLES_BEGIN_DATE=""
export WOOM_CYCLES_END_DATE=""
export WOOM_CYCLES_ROUND=""
export WOOM_CYCLES_FREQ=""
export WOOM_CYCLES_NCYCLES="0"
export WOOM_CYCLES_INDEP="0"
export WOOM_CYCLES_AS_INTERVALS="1"
export WOOM_CYCLES_HORIZON=""
export WOOM_SCRATCH_DIR="/home/docs/woom/scratch"
export WOOM_WORK_DIR="/home/docs/woom/work"
export WOOM_WORKFLOW_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler"
export WOOM_LOG_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/log"
export WOOM_CYCLE="prolog"
export WOOM_MEMBER=""
export WOOM_TASK="mytask1"
export WOOM_TASK_PATH="academic_scheduler/prolog/mytask1"
export WOOM_TASK_RUN_DIR="/home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask1"
export WOOM_TASK_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1"
export WOOM_TASK_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/job.sh"
export WOOM_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1"
export WOOM_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/job.sh"
export WOOM_TASK_ENV=""
export WOOM_ENV=""
export WOOM_TASK_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/context.json"
export WOOM_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask1/context.json"
export PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/bin:$PATH
export PYTHONPATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib/python:$PYTHONPATH
export LIBRARY_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib:$LIBRARY_PATH
export INCLUDE_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/include:$INCLUDE_PATH


# Go to run dir
{ mkdir -p /home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask1; cd /home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask1; } || exit 1

# Run the commandline(s)
echo task1; sleep 10; exit 1
--------------------------------------------------
woom.workflow: INFO     Submitted task: prolog/prolog0/mytask1 with job id 317050
woom.workflow: DEBUG    Running task: prolog/prolog0/mytask2
woom.workflow: DEBUG    Task path: academic_scheduler/prolog/mytask2
woom.workflow: DEBUG    Cleaning task: prolog/prolog0/mytask2
woom.workflow: DEBUG    Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog
woom.workflow: INFO     Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog
woom.workflow: DEBUG    Submitting task: prolog/prolog0/mytask2
woom.workflow: DEBUG      Dependencies: 
woom.workflow: DEBUG    Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2
woom.workflow: INFO     Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2
woom.workflow: INFO     Fake submission: academic_scheduler/prolog/mytask2 → qsub -koed -N mytask2 /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/job.sh
woom.workflow: DEBUG    Fake submission:
--------------- submission command ---------------
qsub -koed -N mytask2 /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/job.sh
-------------- batch script content --------------
#!/bin/bash

# Prolog
set -eo pipefail
# - handler for graceful termination
on_sigterm() {
    echo "Received termination signal, cleaning up..."
    # Just exit cleanly, let on_exit handle status
    exit 0
}
# - handler for killing termination
on_sigkill() {
    echo "Received kill signal, cleaning up..." >&2
    # Just exit cleanly, let on_exit handle status
    exit 1
}
# - handler for exit (always called)
on_exit() {
    status=$?
    if [ ! -f "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/job.terminating" ]; then
        echo $status > "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/job.status"
    fi
    exit $status
}
trap on_sigterm SIGKILL
trap on_sigkill SIGTERM SIGINT
trap on_exit EXIT


# Environment variables
export WOOM_TASK_NAME="mytask2"
export WOOM_RUN_DIR="/home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask2"
export WOOM_WORKFLOW="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/workflow.cfg"
export WOOM_HOST="local"
export WOOM_TASKMANAGER="/home/docs/checkouts/readthedocs.org/user_builds/woom/envs/latest/lib/python3.11/site-packages/woom/tasks.cfg:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/tasks.cfg"
export WOOM_JOBMANAGER="PbsproJobManager"
export WOOM_TASK_TREE_PROLOG_PROLOG0="['mytask1']:['mytask2']"
export WOOM_CYCLES=""
export WOOM_NMEMBERS="0"
export WOOM_MEMBERS=""
export WOOM_PATHS_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/bin"
export WOOM_PATHS_PYTHONPATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib/python"
export WOOM_PATHS_LIBRARY_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib"
export WOOM_PATHS_INCLUDE_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/include"
export WOOM_APP_PATH="academic_scheduler"
export WOOM_APP_NAME="academic_scheduler"
export WOOM_APP_CONF=""
export WOOM_APP_EXP=""
export WOOM_CYCLES_BEGIN_DATE=""
export WOOM_CYCLES_END_DATE=""
export WOOM_CYCLES_ROUND=""
export WOOM_CYCLES_FREQ=""
export WOOM_CYCLES_NCYCLES="0"
export WOOM_CYCLES_INDEP="0"
export WOOM_CYCLES_AS_INTERVALS="1"
export WOOM_CYCLES_HORIZON=""
export WOOM_SCRATCH_DIR="/home/docs/woom/scratch"
export WOOM_WORK_DIR="/home/docs/woom/work"
export WOOM_WORKFLOW_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler"
export WOOM_LOG_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/log"
export WOOM_CYCLE="prolog"
export WOOM_MEMBER=""
export WOOM_TASK="mytask2"
export WOOM_TASK_PATH="academic_scheduler/prolog/mytask2"
export WOOM_TASK_RUN_DIR="/home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask2"
export WOOM_TASK_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2"
export WOOM_TASK_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/job.sh"
export WOOM_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2"
export WOOM_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/job.sh"
export WOOM_TASK_ENV=""
export WOOM_ENV=""
export WOOM_TASK_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/context.json"
export WOOM_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/prolog/mytask2/context.json"
export PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/bin:$PATH
export PYTHONPATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib/python:$PYTHONPATH
export LIBRARY_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib:$LIBRARY_PATH
export INCLUDE_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/include:$INCLUDE_PATH


# Go to run dir
{ mkdir -p /home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask2; cd /home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask2; } || exit 1

# Run the commandline(s)
echo task2; sleep 120
--------------------------------------------------
woom.workflow: INFO     Submitted task: prolog/prolog0/mytask2 with job id 806414
woom.workflow: INFO     Successfully submitted stage: prolog
woom.workflow: DEBUG    Entering stage: cycles
woom.workflow: DEBUG    No sequence of task. Skipping...
woom.workflow: DEBUG    Entering stage: epilog
woom.workflow: DEBUG    No sequence of task. Skipping...
woom.workflow: DEBUG    Starting the sentinel
woom.workflow: DEBUG    Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler
woom.workflow: INFO     Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler
woom.workflow: DEBUG    Creating directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel
woom.workflow: INFO     Created directory: /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel
woom.workflow: INFO     Fake submission: academic_scheduler/sentinel → qsub -l walltime=01:00:00 -koed -N sentinel /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/job.sh
woom.workflow: DEBUG    Fake submission:
--------------- submission command ---------------
qsub -l walltime=01:00:00 -koed -N sentinel /home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/job.sh
-------------- batch script content --------------
#!/bin/bash

# Prolog
set -eo pipefail
# - handler for graceful termination
on_sigterm() {
    echo "Received termination signal, cleaning up..."
    # Just exit cleanly, let on_exit handle status
    exit 0
}
# - handler for killing termination
on_sigkill() {
    echo "Received kill signal, cleaning up..." >&2
    # Just exit cleanly, let on_exit handle status
    exit 1
}
# - handler for exit (always called)
on_exit() {
    status=$?
    if [ ! -f "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/job.terminating" ]; then
        echo $status > "/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/job.status"
    fi
    exit $status
}
trap on_sigterm SIGKILL
trap on_sigkill SIGTERM SIGINT
trap on_exit EXIT


# Environment variables
export WOOM_TASK_NAME="sentinel"
export WOOM_RUN_DIR="/home/docs/woom/scratch/woom/academic_scheduler/sentinel"
export WOOM_WORKFLOW="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/workflow.cfg"
export WOOM_HOST="local"
export WOOM_TASKMANAGER="/home/docs/checkouts/readthedocs.org/user_builds/woom/envs/latest/lib/python3.11/site-packages/woom/tasks.cfg:/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/tasks.cfg"
export WOOM_JOBMANAGER="PbsproJobManager"
export WOOM_TASK_TREE_PROLOG_PROLOG0="['mytask1']:['mytask2']"
export WOOM_CYCLES=""
export WOOM_NMEMBERS="0"
export WOOM_MEMBERS=""
export WOOM_PATHS_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/bin"
export WOOM_PATHS_PYTHONPATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib/python"
export WOOM_PATHS_LIBRARY_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib"
export WOOM_PATHS_INCLUDE_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/include"
export WOOM_APP_PATH="academic_scheduler"
export WOOM_APP_NAME="academic_scheduler"
export WOOM_APP_CONF=""
export WOOM_APP_EXP=""
export WOOM_CYCLES_BEGIN_DATE=""
export WOOM_CYCLES_END_DATE=""
export WOOM_CYCLES_ROUND=""
export WOOM_CYCLES_FREQ=""
export WOOM_CYCLES_NCYCLES="0"
export WOOM_CYCLES_INDEP="0"
export WOOM_CYCLES_AS_INTERVALS="1"
export WOOM_CYCLES_HORIZON=""
export WOOM_SCRATCH_DIR="/home/docs/woom/scratch"
export WOOM_WORK_DIR="/home/docs/woom/work"
export WOOM_WORKFLOW_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler"
export WOOM_LOG_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/log"
export WOOM_CYCLE=""
export WOOM_MEMBER=""
export WOOM_TASK="sentinel"
export WOOM_TASK_PATH="academic_scheduler/sentinel"
export WOOM_TASK_RUN_DIR="/home/docs/woom/scratch/woom/academic_scheduler/sentinel"
export WOOM_TASK_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel"
export WOOM_TASK_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/job.sh"
export WOOM_SUBMISSION_DIR="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel"
export WOOM_SCRIPT_PATH="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/job.sh"
export WOOM_TASK_ENV=""
export WOOM_ENV=""
export WOOM_TASK_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/context.json"
export WOOM_CONTEXT_JSON="/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/jobs/academic_scheduler/sentinel/context.json"
export PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/bin:$PATH
export PYTHONPATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib/python:$PYTHONPATH
export LIBRARY_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/lib:$LIBRARY_PATH
export INCLUDE_PATH=/home/docs/checkouts/readthedocs.org/user_builds/woom/checkouts/latest/examples/academic/scheduler/include:$INCLUDE_PATH


# Go to run dir
{ mkdir -p /home/docs/woom/scratch/woom/academic_scheduler/sentinel; cd /home/docs/woom/scratch/woom/academic_scheduler/sentinel; } || exit 1

# Run the commandline(s)
None
--------------------------------------------------
woom.workflow: INFO     Submitted sentinel job
woom.cli    : INFO     Successfully ran the workflow!

Show run directories#

Show where tasks were executed.

$ woom show run_dirs
╭──────────┬─────────┬────────────────────────────────────────────────────────────────╮
│ TASK     │ CYCLE   │ RUN DIR                                                        │
├──────────┼─────────┼────────────────────────────────────────────────────────────────┤
│ mytask1  │ prolog  │ /home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask1 │
│ mytask2  │ prolog  │ /home/docs/woom/scratch/woom/academic_scheduler/prolog/mytask2 │
│ sentinel │ nan     │ /home/docs/woom/scratch/woom/academic_scheduler/sentinel       │
╰──────────┴─────────┴────────────────────────────────────────────────────────────────╯