What does this part cover?
If task c depends on either task a or task b:
[scheduling] [[dependencies]] graph = a | b => c
If both task b and task c depend on task a:
[scheduling] [[dependencies]] graph = a => b & c
If task b only runs when task a fails:
[scheduling] [[dependencies]] graph = a:fail => b
If task b runs after task a starts:
[scheduling] [[dependencies]] graph = a:start => b
In a cycling suite, with cycles every 6 hours, if task a depends on a previous cycle's task a succeeding:
[scheduling] [[dependencies]] [[[T00, T06, T12, T18]]] graph = a[-PT6H] => a
If task b depends on the previous cycle's task a failing:
[scheduling] [[dependencies]] [[[T00, T06, T12, T18]]] graph = a[-PT6H]:fail => b
If task d depends on task a and either task b or task c succeeding:
[scheduling] [[dependencies]] graph = a & ( b | c ) => d
If task b is not needed when task a succeeds, it can be suicide triggered:
[scheduling] [[dependencies]] graph = a => !b
Typically, b would be a failure recovery task that should never run if a succeeds, but should be run after a fails:
[scheduling] [[dependencies]] graph = """ a => !b a:fail => b """
See the suicide triggering tutorial for more details.
If all the tasks in FAMILY_B should run when a succeeds:
[scheduling] [[dependencies]] graph = a => FAMILY_B
If task b should run when any task in the FAMILY_A family succeeds:
[scheduling] [[dependencies]] graph = FAMILY_A:succeed-any => b
If task b should run when all tasks in the FAMILY_A family have finished (whether succeeded or failed):
[scheduling] [[dependencies]] graph = FAMILY_A:finish-all => b
Full details of dependency configuration are in the cylc User Guide, including:
cylc has some nice capabilities:
cylc
broadcast
)There are some useful environment variables that you can use in your suite.rc file and Rose applications:
For more, see rose task-env
and the
cylc User Guide. Note: to reference Rose
environment variables in your suite.rc
file, you'll need to use rose task-env
in the env-script runtime
setting (tutorial here).
cylc keeps a runtime directory for each suite in ~/cylc-run/, which is updated when you run the suite.
It is a mirror of your suite directory structure and content, but with some added cylc directories and symbolic links (e.g. share/). These hold things like installed files, current task statuses, and task output.
share/, share/cycle/ and work/ sub-directories:
workingdirectories, e.g. containing Rose application namelists and other temporary files
log/, log.*/ sub-directories:
rose
suite-run
or using the commands rose
suite-gcontrol
(rose sgc
) or
cylc gui SUITE-NAME
.cylc gui
for individual
suites.Browse suite logs via HTTP.
View suite status on your web browser. Can be
launched using rose suite-log
.
fcm make
Run rose suite-clean SUITE_NAME
[...]
to delete suite output in the
~/cylc-run/SUITE_NAME/ directories. The
command removes the actual locations of
share/, share/cycle/ and
work/ (which may be symbolic links), as
well as the ~/cylc-run/SUITE_NAME/
directory structure in each job host of the latest
run.
Run rosie delete SUITE_NAME
to
delete SUITE_NAME from the HEAD of its
Rosie Subversion repository as well as the
~/roses/SUITE_NAME/ directory.
If you only want to remove the
~/roses/SUITE_NAME/ directory, you can
run rm -rf ~/roses/SUITE_NAME
or
rosie delete --local-only
SUITE_NAME
.
Next Steps: