From: Greg Ercolano <erco@(email surpressed)>
Subject: [Q+A] Setting up job dump commands
   Date: Tue, 08 Nov 2005 12:40:40 -0800
Msg# 1102
View Complete Thread (1 article) | All Threads
Last Next
> We are running a JobDumpCommand on each job that when dumped runs a few commands.
> It seems like the first command is the only one that works right now. We are removing,
> at dump, the log files, and on a mental ray job, we are removing all the .mi files
> that were used in the render. At some time in the past it did work how we wanted it to,
> [running both commands], but for some reason it will only do one now.

    The 'jobdumpcommand' is only supposed to accept executing a single command.
    You can probably jam all the commands in if you specify a shell to run them
    with, ie:

	sh -c 'rm -rf /some/path; rm -rf /some/other/path'

    ..though that's somewhat specific to platforms that support the CSH.
    You could use perl just as easily I suppose.

    Though normally I'd recommend if you want to run several commands,
    put those commands into a script, and set the jobdumpcommand to that script.

    A common thing to do is to put the commands into the submit script,
    and make a command line option for the submit script (ie. "-cleanup")
    that takes arguments for the dirs to remove, or whatever.

    Cautions should of course be taken when running 'rm -rf' commands,
    so for instance, we test to make sure when removing the logdir that
    there's a 'framelist' file within, to ensure we don't accidentally
    blow away a production dir..!

----------------------------------------------------------
#!/bin/csh -f

# SUBMIT SCRIPT

# HANDLE CLEANUP ARGUMENT
#    This is invoked by the jobdumpcommand when the job finishes.
#
if ( "$1" == "-cleanup" ) then
    # CLEAN UP THE LOG DIR
    if ( "$1" != "" && -d $1 && -e $1/framelist ) rm -rf $1
    # CLEAN UP THE MI DIR
    if ( "$2" != "" && -d $2 ) rm $2/*.mi
    exit 0
endif

# HANDLE SUBMITTING THE JOB
set $logdir = ..
set $midir = ..
touch $midir/mi_files
rush -submit << EOF
...
jobdumpcommand -nolog //path/to/your/script.csh -cleanup $logdir $midir
...
EOF
----------------------------------------------------------

    Be careful when writing recursive scripts like this -- if you forget
    the 'exit 0' at the end of the cleanup section, the script will fallthrough
    to submitting another job.. creating a worm! %^O

    BTW, if you're modifying one of the rush submit scripts, the variable $G::self
    always has the path to the script, so you can use it this way:

...
jobdumpcommand -nolog $G::self -cleanup $logdir $mipath
...

Last Next