source: flex_extract.git/Documentation/html/Documentation/Input/jobscript.html @ eca358d

ctbtodev
Last change on this file since eca358d was ba99230, checked in by Anne Philipp <anne.philipp@…>, 5 years ago

capitalize all directory names and adapt pathes in files

  • Property mode set to 100644
File size: 21.5 KB
Line 
1
2
3<!DOCTYPE html>
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
5<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
6<head>
7  <meta charset="utf-8">
8 
9  <meta name="viewport" content="width=device-width, initial-scale=1.0">
10 
11  <title>The Jobscript job.ksh &mdash; flex_extract 7.1 alpha documentation</title>
12 
13
14 
15 
16 
17 
18
19 
20  <script type="text/javascript" src="../../_static/js/modernizr.min.js"></script>
21 
22   
23      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
24        <script type="text/javascript" src="../../_static/jquery.js"></script>
25        <script type="text/javascript" src="../../_static/underscore.js"></script>
26        <script type="text/javascript" src="../../_static/doctools.js"></script>
27        <script type="text/javascript" src="../../_static/language_data.js"></script>
28        <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
29   
30    <script type="text/javascript" src="../../_static/js/theme.js"></script>
31
32   
33
34 
35  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
36  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
37  <link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
38  <link rel="stylesheet" href="../../_static/css/theme_overrides.css" type="text/css" />
39    <link rel="index" title="Index" href="../../genindex.html" />
40    <link rel="search" title="Search" href="../../search.html" />
41    <link rel="next" title="The CONTROL file" href="control.html" />
42    <link rel="prev" title="The executable Script - run.sh" href="run.html" /> 
43</head>
44
45<body class="wy-body-for-nav">
46
47   
48  <div class="wy-grid-for-nav">
49   
50    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
51      <div class="wy-side-scroll">
52        <div class="wy-side-nav-search" >
53         
54
55         
56            <a href="../../index.html" class="icon icon-home"> flex_extract
57         
58
59         
60          </a>
61
62         
63           
64           
65              <div class="version">
66                7.1
67              </div>
68           
69         
70
71         
72<div role="search">
73  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
74    <input type="text" name="q" placeholder="Search docs" />
75    <input type="hidden" name="check_keywords" value="yes" />
76    <input type="hidden" name="area" value="default" />
77  </form>
78</div>
79
80         
81        </div>
82
83        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
84         
85           
86           
87             
88           
89           
90              <p class="caption"><span class="caption-text">Table of Contents:</span></p>
91<ul class="current">
92<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
93<li class="toctree-l1"><a class="reference internal" href="../../quick_start.html">Quick Start</a></li>
94<li class="toctree-l1"><a class="reference internal" href="../../ecmwf_data.html">ECMWF Data</a></li>
95<li class="toctree-l1 current"><a class="reference internal" href="../../documentation.html">Documentation</a><ul class="current">
96<li class="toctree-l2"><a class="reference internal" href="../overview.html">Overview</a></li>
97<li class="toctree-l2 current"><a class="reference internal" href="../input.html">Control &amp; Input Data</a><ul class="current">
98<li class="toctree-l3"><a class="reference internal" href="setup.html">The Installation Script - <code class="docutils literal notranslate"><span class="pre">setup.sh</span></code></a></li>
99<li class="toctree-l3"><a class="reference internal" href="compilejob.html">The Compilation Jobscript <code class="docutils literal notranslate"><span class="pre">compilejob.ksh</span></code></a></li>
100<li class="toctree-l3"><a class="reference internal" href="fortran_makefile.html">The Fortran Makefile - <code class="docutils literal notranslate"><span class="pre">CONVERT2</span></code></a></li>
101<li class="toctree-l3"><a class="reference internal" href="run.html">The executable Script - <code class="docutils literal notranslate"><span class="pre">run.sh</span></code></a></li>
102<li class="toctree-l3 current"><a class="current reference internal" href="#">The Jobscript <code class="docutils literal notranslate"><span class="pre">job.ksh</span></code></a><ul>
103<li class="toctree-l4"><a class="reference internal" href="#what-does-the-jobscript-do">What does the jobscript do?</a></li>
104<li class="toctree-l4"><a class="reference internal" href="#example-jobscript-ksh">Example <code class="docutils literal notranslate"><span class="pre">jobscript.ksh</span></code></a></li>
105</ul>
106</li>
107<li class="toctree-l3"><a class="reference internal" href="control.html">The CONTROL file</a></li>
108<li class="toctree-l3"><a class="reference internal" href="control_params.html">The CONTROL parameters</a></li>
109<li class="toctree-l3"><a class="reference internal" href="examples.html">CONTROL file examples</a></li>
110<li class="toctree-l3"><a class="reference internal" href="changes.html">CONTROL file changes</a></li>
111<li class="toctree-l3"><a class="reference internal" href="ecmwf_env.html">ECMWF User Credential file <code class="docutils literal notranslate"><span class="pre">ECMWF_ENV</span></code></a></li>
112<li class="toctree-l3"><a class="reference internal" href="templates.html">Templates</a></li>
113</ul>
114</li>
115<li class="toctree-l2"><a class="reference internal" href="../output.html">Output Data</a></li>
116<li class="toctree-l2"><a class="reference internal" href="../disagg.html">Disaggregation of Flux Data</a></li>
117<li class="toctree-l2"><a class="reference internal" href="../vertco.html">Vertical Coordinate</a></li>
118<li class="toctree-l2"><a class="reference internal" href="../api.html">Auto Generated Documentation</a></li>
119</ul>
120</li>
121<li class="toctree-l1"><a class="reference internal" href="../../evaluation.html">Evaluation</a></li>
122<li class="toctree-l1"><a class="reference internal" href="../../dev_guide.html">Developer Guide</a></li>
123<li class="toctree-l1"><a class="reference internal" href="../../changelog.html">Changelog</a></li>
124<li class="toctree-l1"><a class="reference internal" href="../../support.html">Support</a></li>
125<li class="toctree-l1"><a class="reference internal" href="../../Support/faq.html">FAQ - Frequently asked questions</a></li>
126<li class="toctree-l1"><a class="reference internal" href="../../authors.html">Developer Team</a></li>
127</ul>
128
129           
130         
131        </div>
132      </div>
133    </nav>
134
135    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
136
137     
138      <nav class="wy-nav-top" aria-label="top navigation">
139       
140          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
141          <a href="../../index.html">flex_extract</a>
142       
143      </nav>
144
145
146      <div class="wy-nav-content">
147       
148        <div class="rst-content">
149       
150         
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166<div role="navigation" aria-label="breadcrumbs navigation">
167
168  <ul class="wy-breadcrumbs">
169   
170      <li><a href="../../index.html">Docs</a> &raquo;</li>
171       
172          <li><a href="../../documentation.html">Documentation</a> &raquo;</li>
173       
174          <li><a href="../input.html">Control &amp; Input Data</a> &raquo;</li>
175       
176      <li>The Jobscript <code class="docutils literal notranslate"><span class="pre">job.ksh</span></code></li>
177   
178   
179      <li class="wy-breadcrumbs-aside">
180       
181           
182            <a href="../../_sources/Documentation/Input/jobscript.rst.txt" rel="nofollow"> View page source</a>
183         
184       
185      </li>
186   
187  </ul>
188
189 
190  <hr/>
191</div>
192          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
193           <div itemprop="articleBody">
194           
195  <div class="section" id="the-jobscript-job-ksh">
196<h1>The Jobscript <code class="docutils literal notranslate"><span class="pre">job.ksh</span></code><a class="headerlink" href="#the-jobscript-job-ksh" title="Permalink to this headline"></a></h1>
197<p>The jobscript is a Korn-shell script which will be created at runtime for each <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> execution in the application modes <strong>remote</strong> and <strong>gateway</strong>.</p>
198<p>It is based on the <code class="docutils literal notranslate"><span class="pre">job.temp</span></code> template file which is stored in the <code class="docutils literal notranslate"><span class="pre">templates</span></code> directory.
199This template is by itself generated in the installation process from a <code class="docutils literal notranslate"><span class="pre">jobscript.template</span></code> template file.</p>
200<p><code class="docutils literal notranslate"><span class="pre">Flex_extract</span></code> uses the python package <a class="reference external" href="https://genshi.edgewall.org/">genshi</a> to generate
201the Korn-shell script from the template files by substituting the individual parameters.
202These individual parameters are marked by a doubled <code class="docutils literal notranslate"><span class="pre">$</span></code> sign in <code class="docutils literal notranslate"><span class="pre">job.temp</span></code>.</p>
203<p>The jobscript has a number of settings for the batch system which are fixed and differentiates between the <em>ecgate</em> and the <em>cca/ccb</em>
204server system to load the necessary modules for the environment when submitted to the batch queue.</p>
205<p>The submission is done by the <code class="docutils literal notranslate"><span class="pre">ECaccess</span></code> tool from within <code class="docutils literal notranslate"><span class="pre">flex_extract</span></code> with the command <code class="docutils literal notranslate"><span class="pre">ecaccess-job-submit</span></code>.</p>
206<div class="section" id="what-does-the-jobscript-do">
207<h2>What does the jobscript do?<a class="headerlink" href="#what-does-the-jobscript-do" title="Permalink to this headline"></a></h2>
208<blockquote>
209<div><ol class="arabic simple">
210<li>It sets necessary batch system parameters</li>
211<li>It prepares the job environment at the ECMWF servers by loading the necessary library modules</li>
212<li>It sets some environment variabels for the single session</li>
213<li>It creates the directory structure in the users <code class="docutils literal notranslate"><span class="pre">$SCRATCH</span></code> file system</li>
214<li>It creates a CONTROL file on the ECMWF servers whith the parameters set before creating the <code class="docutils literal notranslate"><span class="pre">jobscript.ksh</span></code>. <code class="docutils literal notranslate"><span class="pre">Flex_extract</span></code> has a set of parameters which are given to the jobscript with its default or the user defined values. It also sets the <code class="docutils literal notranslate"><span class="pre">CONTROL</span></code> as an environment variable.</li>
215<li><code class="docutils literal notranslate"><span class="pre">Flex_extract</span></code> is started from within the <code class="docutils literal notranslate"><span class="pre">work</span></code> directory of the new directory structure by calling the <code class="docutils literal notranslate"><span class="pre">submit.py</span></code> script. It sets new pathes for input and output directory and the recently generated <code class="docutils literal notranslate"><span class="pre">CONTROL</span></code> file.</li>
216<li>At the end it checks if the script returned an error or not and send the log file via email to the user.</li>
217</ol>
218</div></blockquote>
219</div>
220<div class="section" id="example-jobscript-ksh">
221<h2>Example <code class="docutils literal notranslate"><span class="pre">jobscript.ksh</span></code><a class="headerlink" href="#example-jobscript-ksh" title="Permalink to this headline"></a></h2>
222<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/ksh</span>
223
224<span class="c1"># ON ECGB:</span>
225<span class="c1"># start with ecaccess-job-submit -queueName ecgb NAME_OF_THIS_FILE  on gateway server</span>
226<span class="c1"># start with sbatch NAME_OF_THIS_FILE directly on machine</span>
227
228<span class="c1">#SBATCH --workdir=/scratch/ms/at/km4a</span>
229<span class="c1">#SBATCH --qos=normal</span>
230<span class="c1">#SBATCH --job-name=flex_ecmwf</span>
231<span class="c1">#SBATCH --output=flex_ecmwf.%j.out</span>
232<span class="c1">#SBATCH --error=flex_ecmwf.%j.out</span>
233<span class="c1">#SBATCH --mail-type=FAIL</span>
234<span class="c1">#SBATCH --time=12:00:00</span>
235
236<span class="c1">## CRAY specific batch requests</span>
237<span class="c1">##PBS -N flex_ecmwf</span>
238<span class="c1">##PBS -q np</span>
239<span class="c1">##PBS -S /usr/bin/ksh</span>
240<span class="c1">## -o /scratch/ms/at/km4a/flex_ecmwf.${PBS_JOBID}.out</span>
241<span class="c1">## job output is in .ecaccess_DO_NOT_REMOVE</span>
242<span class="c1">##PBS -j oe</span>
243<span class="c1">##PBS -V</span>
244<span class="c1">##PBS -l EC_threads_per_task=24</span>
245<span class="c1">##PBS -l EC_memory_per_task=32000MB</span>
246
247<span class="nb">set</span> -x
248<span class="nb">export</span> <span class="nv">VERSION</span><span class="o">=</span><span class="m">7</span>.1
249<span class="k">case</span> <span class="si">${</span><span class="nv">HOST</span><span class="si">}</span> in
250  *ecg*<span class="o">)</span>
251  module unload grib_api
252  module unload eccodes
253  module unload python
254  module unload emos
255  module load python3
256  module load eccodes/2.12.0
257  module load emos/455-r64
258  <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="si">${</span><span class="nv">PATH</span><span class="si">}</span>:<span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/flex_extract_v7.1/source/python
259  <span class="p">;;</span>
260  *cca*<span class="o">)</span>
261  module unload python
262  module switch PrgEnv-cray PrgEnv-intel
263  module load python3
264  module load eccodes/2.12.0
265  module load emos
266  <span class="nb">export</span> <span class="nv">SCRATCH</span><span class="o">=</span><span class="si">${</span><span class="nv">TMPDIR</span><span class="si">}</span>
267  <span class="nb">export</span> <span class="nv">PATH</span><span class="o">=</span><span class="si">${</span><span class="nv">PATH</span><span class="si">}</span>:<span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/flex_extract_v7.1/source/python
268  <span class="p">;;</span>
269<span class="k">esac</span>
270
271<span class="nb">cd</span> <span class="si">${</span><span class="nv">SCRATCH</span><span class="si">}</span>
272mkdir -p python<span class="nv">$$</span>
273<span class="nb">cd</span> python<span class="nv">$$</span>
274
275<span class="nb">export</span> <span class="nv">CONTROL</span><span class="o">=</span>CONTROL
276
277cat &gt;<span class="si">${</span><span class="nv">CONTROL</span><span class="si">}</span><span class="s">&lt;&lt;EOF</span>
278<span class="s">accmaxstep 24</span>
279<span class="s">acctime 18</span>
280<span class="s">acctype FC</span>
281<span class="s">accuracy 24</span>
282<span class="s">addpar None</span>
283<span class="s">area 74.0/-24.0/10.0/60.0</span>
284<span class="s">basetime None</span>
285<span class="s">cds_api None</span>
286<span class="s">controlfile CONTROL_CERA</span>
287<span class="s">cwc 1</span>
288<span class="s">dataset None</span>
289<span class="s">date_chunk 3</span>
290<span class="s">debug 1</span>
291<span class="s">destination annep@genericSftp</span>
292<span class="s">doubleelda 0</span>
293<span class="s">dpdeta 1</span>
294<span class="s">dtime 3</span>
295<span class="s">ec_api None</span>
296<span class="s">ecfsdir ectmp:/${USER}/econdemand/</span>
297<span class="s">ecgid at</span>
298<span class="s">ecstorage 0</span>
299<span class="s">ectrans 1</span>
300<span class="s">ecuid km4a</span>
301<span class="s">end_date 20000809</span>
302<span class="s">eta 1</span>
303<span class="s">etadiff 0</span>
304<span class="s">etapar 77</span>
305<span class="s">expver 1</span>
306<span class="s">format GRIB1</span>
307<span class="s">gateway srvx8.img.univie.ac.at</span>
308<span class="s">gauss 0</span>
309<span class="s">gaussian</span>
310<span class="s">grib2flexpart 0</span>
311<span class="s">grid 1.0/1.0</span>
312<span class="s">inputdir /raid60/nas/tmc/Anne/Interpolation/flexextract/flex_extract_v7.1/run/workspace</span>
313<span class="s">install_target None</span>
314<span class="s">job_chunk 1</span>
315<span class="s">job_template job.temp</span>
316<span class="s">left -24.</span>
317<span class="s">level 91</span>
318<span class="s">levelist 1/to/91</span>
319<span class="s">logicals gauss omega omegadiff eta etadiff dpdeta cwc wrf grib2flexpart ecstorage ectrans debug oper request public purefc rrint doubleelda</span>
320<span class="s">lower 10.</span>
321<span class="s">mailfail ${USER}</span>
322<span class="s">mailops ${USER}</span>
323<span class="s">makefile Makefile.gfortran</span>
324<span class="s">marsclass EP</span>
325<span class="s">maxstep 0</span>
326<span class="s">number 000</span>
327<span class="s">omega 0</span>
328<span class="s">omegadiff 0</span>
329<span class="s">oper 0</span>
330<span class="s">outputdir /raid60/nas/tmc/Anne/Interpolation/flexextract/flex_extract_v7.1/run/workspace</span>
331<span class="s">prefix CE</span>
332<span class="s">public 0</span>
333<span class="s">purefc 0</span>
334<span class="s">queue ecgate</span>
335<span class="s">request 2</span>
336<span class="s">resol 159</span>
337<span class="s">right 60.</span>
338<span class="s">rrint 0</span>
339<span class="s">smooth 0</span>
340<span class="s">start_date 20000809</span>
341<span class="s">step 00 00 00 00 00 00 00 00</span>
342<span class="s">stream ENDA</span>
343<span class="s">time 00 03 06 09 12 15 18 21</span>
344<span class="s">type AN AN AN AN AN AN AN AN</span>
345<span class="s">upper 74.</span>
346<span class="s">wrf 0</span>
347
348<span class="s">EOF</span>
349
350
351submit.py --controlfile<span class="o">=</span><span class="si">${</span><span class="nv">CONTROL</span><span class="si">}</span> --inputdir<span class="o">=</span>./work --outputdir<span class="o">=</span>./work <span class="m">1</span>&gt; prot <span class="m">2</span>&gt;<span class="p">&amp;</span><span class="m">1</span>
352
353<span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -eq <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span>
354  <span class="nv">l</span><span class="o">=</span><span class="m">0</span>
355  <span class="k">for</span> muser in <span class="sb">`</span>grep -i MAILOPS <span class="si">${</span><span class="nv">CONTROL</span><span class="si">}</span><span class="sb">`</span><span class="p">;</span> <span class="k">do</span>
356      <span class="k">if</span> <span class="o">[</span> <span class="si">${</span><span class="nv">l</span><span class="si">}</span> -gt <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span>
357         mail -s flex.<span class="si">${</span><span class="nv">HOST</span><span class="si">}</span>.<span class="nv">$$</span> <span class="si">${</span><span class="nv">muser</span><span class="si">}</span> &lt;prot
358      <span class="k">fi</span>
359      <span class="nv">l</span><span class="o">=</span><span class="k">$((</span><span class="si">${</span><span class="nv">l</span><span class="si">}</span><span class="o">+</span><span class="m">1</span><span class="k">))</span>
360  <span class="k">done</span>
361<span class="k">else</span>
362  <span class="nv">l</span><span class="o">=</span><span class="m">0</span>
363  <span class="k">for</span> muser in <span class="sb">`</span>grep -i MAILFAIL <span class="si">${</span><span class="nv">CONTROL</span><span class="si">}</span><span class="sb">`</span><span class="p">;</span> <span class="k">do</span>
364      <span class="k">if</span> <span class="o">[</span> <span class="si">${</span><span class="nv">l</span><span class="si">}</span> -gt <span class="m">0</span> <span class="o">]</span> <span class="p">;</span> <span class="k">then</span>
365         mail -s <span class="s2">&quot;ERROR! flex.</span><span class="si">${</span><span class="nv">HOST</span><span class="si">}</span><span class="s2">.</span><span class="nv">$$</span><span class="s2">&quot;</span> <span class="si">${</span><span class="nv">muser</span><span class="si">}</span> &lt;prot
366      <span class="k">fi</span>
367      <span class="nv">l</span><span class="o">=</span><span class="k">$((</span><span class="si">${</span><span class="nv">l</span><span class="si">}</span><span class="o">+</span><span class="m">1</span><span class="k">))</span>
368  <span class="k">done</span>
369<span class="k">fi</span>
370</pre></div>
371</div>
372<div class="toctree-wrapper compound">
373</div>
374</div>
375</div>
376
377
378           </div>
379           
380          </div>
381          <footer>
382 
383    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
384     
385        <a href="control.html" class="btn btn-neutral float-right" title="The CONTROL file" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
386     
387     
388        <a href="run.html" class="btn btn-neutral float-left" title="The executable Script - run.sh" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
389     
390    </div>
391 
392
393  <hr/>
394
395  <div role="contentinfo">
396    <p>
397        &copy; Copyright 2019, Anne Philipp and Leopold Haimberger
398
399    </p>
400  </div>
401  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
402
403</footer>
404
405        </div>
406      </div>
407
408    </section>
409
410  </div>
411 
412
413
414  <script type="text/javascript">
415      jQuery(function () {
416          SphinxRtdTheme.Navigation.enable(true);
417      });
418  </script>
419
420 
421 
422   
423   
424
425</body>
426</html>
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG