pythonsungridengineqsubpbs

Syntax for submitting a qsub job without an actual job file?


I would like to submit qsub jobs on the fly without creating discrete job files. So, let's say I have a python script called "get_time.py" that simply reports the time. Instead of making a submission script like this:

cat>job.sub<<eof
    #PBS -l walltime=1:00:00
    cd $PBS_O_WORKDIR
    get_time.py
eof

...and then submitting the job: qsub job.sub

I would like to be able to bypass the file creation step, and I'd image the construct would be something like this: qsub -d . -e get_time.py

where -e is my imaginary parameter that tells qsub that the following is code to be sent to the scheduler, instead of using a discrete submission file.

Am I crazy? It seems like there should already be a simple solution for this, but I couldn't find it anywhere. Thanks for any suggestions!


Solution

  • You can pass the name of any executable script/file to qsub after you've provided all your options (-d ., etc.). Any arguments that come after the script name are treated as arguments for that script. For example, if I had the script test.py:

    #!/usr/bin/python
    from sys import argv
    script, param = argv
    print param
    

    Then I can run

    qsub test.py 2
    

    and the output to my log will be 2.

    Two important things to note:

    1. Your Python script must be executable (e.g. chmod +x test.py).
    2. Your Python script must have a shebang (e.g. #!/usr/bin/python).