<div class="section" id="getting-started"> <span id="index-0"></span><span id="id1"></span> <ul> <li><p class="first">Create a directory called course in your home directory (mkdir course)</p> </li> <li><p class="first">Open a new window, change the current directory to course (cd course) and start an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-server"><em class="xref std std-term">ecf_server</em></a>: If you are using a shared machine then type:</p> <div class="highlight-python"><pre>> ecf_start.sh</pre> </div> <p>This will start an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-server"><em class="xref std std-term">ecf_server</em></a> running on your system with a port number unique to your user ID. ECF log files and check point files are created in the current directory by default.</p> <p>Please keep a note of the <strong>Host</strong> and <strong>Port</strong> given from your ecf_start output for later. Note that the default for ECF log files is the <tt class="file docutils literal"><span class="pre">~/ecf_server</span></tt> directory. The host and program number uniquely identify your ECF server. When you want to access this server with <a class="reference internal" href="/wiki/display/ECFLOW/ecFlow+Python+Api#python-api"><em>ecFlow Python Api</em></a> or <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecflowview"><em class="xref std std-term">ecFlowview</em></a> you need to know these numbers. By setting the value of the variable ECF_NODE and ECF_PORT you identify the server you wish to access. Multiple <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-server"><em class="xref std std-term">ecf_server</em></a>‘s can run on the same system.</p> <p>Alternatively if you are running on your own local machine type:</p> <div class="highlight-python"><pre>> ecf_server</pre> </div> <p>at the unix prompt.</p> <p>This will start an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-server"><em class="xref std std-term">ecf_server</em></a> running on your system with a default host name of “localhost” and port number of 3141. If another program on your machine is using this port number, then you will get an “Address in use” error. To start the server on a specific port number you can use:</p> <div class="highlight-python"><pre>> ecf_server --port=3500</pre> </div> <p>or</p> <div class="highlight-python"><pre>> export ECF_PORT=3500; ecf_server</pre> </div> <p>ECF log files and check point files are created in the current directory by default, and have a prefix <machine_name>.<port_number>. As this allows multiple servers to run on the same machine.</p> </li> <li><p class="first">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 class="reference internal" href="#tail-h"><em>tail.h</em></a> into it.</p> </li> </ul> <div class="section" id="head-h"> <span id="id2"></span><h2>head.h<a class="headerlink" 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> |