Page History
HTML |
---|
<style <div typeclass="text/css"> .highlight .hll { background-color: #ffffcc } .highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ .highlight .o { color: #666666 } /* Operator */ .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #007020 } /* Comment.Preproc */ .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ .highlight .go { color: #303030 } /* Generic.Output */ .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .highlight .gt { color: #0040D0 } /* Generic.Traceback */ .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #007020 } /* Keyword.Pseudo */ .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #902000 } /* Keyword.Type */ .highlight .m { color: #208050 } /* Literal.Number */ .highlight .s { color: #4070a0 } /* Literal.String */ .highlight .na { color: #4070a0 } /* Name.Attribute */ .highlight .nb { color: #007020 } /* Name.Builtin */ .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ .highlight .no { color: #60add5 } /* Name.Constant */ .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ .highlight .ne { color: #007020 } /* Name.Exception */ .highlight .nf { color: #06287e } /* Name.Function */ .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #bb60d5 } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mf { color: #208050 } /* Literal.Number.Float */ .highlight .mh { color: #208050 } /* Literal.Number.Hex */ .highlight .mi { color: #208050 } /* Literal.Number.Integer */ .highlight .mo { color: #208050 } /* Literal.Number.Oct */ .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ .highlight .sc { color: #4070a0 } /* Literal.String.Char */ .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ .highlight .sx { color: #c65d09 } /* Literal.String.Other */ .highlight .sr { color: #235388 } /* Literal.String.Regex */ .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ .highlight .ss { color: #517918 } /* Literal.String.Symbol */ .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ </style> section" id="getting-started"> <span id="index-0"></span><span id="id1"></span> <div class="line-block"> <div class="line">First ensure that the paths to ecFlow executable’s are accessible.</div> <div class="line">At ECMWF this is done using <strong>use</strong> scripts. Hence type the following at the command line.</div> </div> <div class="highlight-python"><pre>> use ecflow</pre> </div> <p>Create a directory called course in your home directory and change to that directory.</p> <div class="highlight-python"><pre>> mkdir course; cd course</pre> </div> <div class="line-block"> <div class="line">In order to use ecFlow we first need to start the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-server"><em class="xref std std-term">ecflow_server</em></a></div> </div> <div class="section" id="gettingshared-startedmachine"> <span id<h2>Shared Machine<a class="headerlink" href="index#shared-0machine"></span><span idtitle="id1"></span> <ul> <li><pPermalink to this headline">¶</a></h2> <div class="first">Create a directory called course in your home directory (mkdir course)</p> </li> <li><pline-block"> <div class="firstline">Open>On a newshared window,machine changemultiple theusers currentand directoryecFlow toservers coursecan (cd course) and start coexist. Start an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecfecflow-server"><em class="xref std std-term">ecf>ecflow_server</em></a>:</div> If you are using a shared machine then type:</p><div class="line">by typing the following</div> </div> <div class="highlight-python"><pre>> ecfecflow_start.sh</pre> </div> <p>This <div class="line-block"> <div class="line">This will start an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecfecflow-server"><em class="xref std std-term">ecf>ecflow_server</em></a> running on your system with a port number unique to your user ID.</div> <div class="line">With this script ECF log files and <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-check point-point"><em class="xref std std-term">check point</em></a> files are created in the current directory by default.</p> <p>Please directory $HOME/ecflow_server.</div> <div class="line">This can be changed by using:</div> </div> <div class="highlight-python"><pre>> ecflow_start.sh -d $HOME/course</pre> </div> <div class="line-block"> <div class="line">Please keep a note of the <strong>Host</strong> and <strong>Port</strong> given from your ecf_start.sh output for later.</div> Note that the default for ECF log files is the <tt<div class="line">The host and port number uniquely identify your <a class="filereference docutils literal"><spaninternal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-server"><em class="pre">~/ecfxref std std-term">ecflow_server</span><em></tt> directory. The host and program number uniquely identify your ECF server. When you want to access this server with a>.</div> <div class="line">When you want to access this server using <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflow-client"><em class="xref std std-term">ecflow_client</em></a>, <a class="reference internal" href="/wiki/display/ECFLOW/ecFlow+Python+Api#pythonApi#client-server-python-api"><em>ecFlow><em>client server Pythonpython Api<API</em></a></a> ordiv> <div class="line">or <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflowview"><em class="xref std std-term">ecFlowview<>ecflowview</em></a> you need to know these numbersinformation. By</div> </div> <div class="line-block"> <div class="line">By setting the value of the environment variablevariables ECF_NODE and ECF_PORT you identifyyou</div> <div class="line">identify the server you wish to access. Multiple <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecfecflow-server"><em class="xref std std-term">ecf>ecflow_server</em></a>‘s can run on the same system.</p> <p>Alternatively if you are running on/div> </div> </div> <div class="section" id="local-machine"> <h2>Local Machine<a class="headerlink" href="#local-machine" title="Permalink to this headline">¶</a></h2> <div class="line-block"> <div class="line">We prefer to start the ecFlow server with the ecflow_start.sh script to help prevent unintentional</div> <div class="line">shared usage of the server. You could have used the default ECF_PORT and started a server running</div> <div class="line">on your own local machine type: using the following command:</div> </p>div> <div class="highlight-python"><pre>> ecfecflow_server</pre> </div> <p>at the unix prompt.</p> <p>This<div class="line-block"> <div class="line">This will start an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecfecflow-server"><em class="xref std std-term">ecf>ecflow_server</em></a> running on your system with a default host name of “localhost” and portand</div> <div class="line">port number of 3141. If another program on your machine is using this same port number, then you will get anget</div> <div class="line">an “Address in use” error. To start the server on a specific port number you can use:</p>div> </div> <div class="highlight-python"><pre>> ecfecflow_server --port=3500</pre> </div> <p>or<<p>or:</p> <div class="highlight-python"><pre>> export ECF_PORT=3500; ecfecflow_server</pre> </div> <p>ECF<div class="line-block"> <div class="line">ECF log files and <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-check point-point"><em class="xref std std-term">check point</em></a> files are created in the current directory by default, and have ahave</div> <div class="line">a prefix <machine_name>.<port_number>. As this allows multiple servers to run on the same machine.</p>div> </li> <li><pdiv> <div class="line-block"> <div class="firstline">If you had previously run the same ECF server in the past it will also attempt to recover from a previous ecf checkpoint file if available</p> </li> <li><p class="first">In another window, change the current directory to course and copy the file <a class="reference internal" href="#head-h"><em>head.h</em></a> and <a /wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="referencexref internal" href="#tail-h"><em>tail.h</em></a> into it.</p> </li> </ul> std std-term">suite definition</em></a></div> <div class="sectionline" id="head-h"> <span id="id2"></span><h2>head.h<a>from the <a class="headerlinkreference internal" href="#head-h" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><pre>#!/bin/ksh set -e # stop the shell on first error set -u # fail when using an undefined variable set -x # echo script lines as they are executed # Defines the variables that are needed for any communication with ECF export ECF_PORT=%ECF_PORT% # The server port number export ECF_NODE=%ECF_NODE% # The name of ecf host that issued this task export ECF_NAME=%ECF_NAME% # The name of this current task export ECF_PASS=%ECF_PASS% # A unique password export ECF_TRYNO=%ECF_TRYNO% # Current try number of the task export ECF_RID=$$ # Tell ecFlow we have stated ecf_client --init=$$ # Defined a error hanlder ERROR() { set +e # Clear -e flag, so we don't fail ecf_client --abort=trap # Notify ecFlow that something went wrong, using 'trap' as the reason trap 0 # Remove the trap exit 0 # End the script } # Trap any calls to exit and errors caught by the -e flag trap ERROR 0 # Trap any signal that may cause the script to fail trap '{ echo "Killed by a signal"; ERROR ; }' 1 2 3 4 5 6 7 8 10 12 13 15</pre> </div> </div> <div class="section" id="tail-h"> <span id="id3"></span><h2>tail.h<a class="headerlink" href="#tail-h" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><pre>ecf_client --complete # Notify ecFlow of a normal end trap 0 # Remove all traps exit 0 # End the shell</pre> </div> </div> </div>/wiki/display/ECFLOW/Glossary#term-check-point"><em class="xref std std-term">check point</em></a> file.</div> </div> <p><strong>What to do:</strong></p> <ul> <li><p class="first">Type ‘use ecflow’ to setup up the paths.</p> </li> <li><p class="first">Create $HOME/course directory</p> </li> <li><p class="first">Start the server using the ecflow_start.sh -d $HOME/course</p> </li> <li><div class="first line-block"> <div class="line">If you start a new shell, and are not using the default port(3141),</div> <div class="line">ensure that ECF_PORT is set.</div> </div> </li> </ul> </div> </div> |