<div class="section" id="child-commands-comparison"> <span id="child-commands"></span><span id="index-0"></span> <p>SMS child commands are not binary compatible with ecFlow. The following table relates a sms command, provided with SMS package, and the matching ecflow client call.</p> <p>Some sms child commands (meter, event) have a query option. ecFlow relies on the job using ‘ecflow_client –get <path>’ to obtain the same information:</p> <table border="1" class="docutils"> <colgroup> <col width="29%" /> <col width="31%" /> <col width="40%" /> </colgroup> <thead valign="bottom"> <tr class="row-odd"><th class="head">SMS commands</th> <th class="head">ecflow equivalent</th> <th class="head">comment</th> </tr> </thead> <tbody valign="top"> <tr class="row-even"><td>sms</td> <td>ecflow_server</td> <td>sms -b: detach the server from session nohup ecflow_server > out 2>&1 &:</td> </tr> <tr class="row-odd"><td>smsabort</td> <td>ecflow_client –abort <reason></td> <td> </td> </tr> <tr class="row-even"><td>smsalive</td> <td><none></td> <td>task heart-bit, not used at the centre</td> </tr> <tr class="row-odd"><td>smscompletre</td> <td>ecflow_client –complete</td> <td> </td> </tr> <tr class="row-even"><td>smsdate</td> <td><none></td> <td>not a child command - date manipulation utility, not part of ecflow</td> </tr> <tr class="row-odd"><td>smsdie</td> <td><none></td> <td>clean RPC port not needed with ecflow</td> </tr> <tr class="row-even"><td>smsevent <name></td> <td>ecflow_client –event <name></td> <td> </td> </tr> <tr class="row-odd"><td>smsinit $PID</td> <td>ecflow_client –init <rid></td> <td>restricted to integer for SMS (use smsrid for string)</td> </tr> <tr class="row-even"><td>smslabel <name> <string></td> <td>ecflow_client –label <n> <s></td> <td> </td> </tr> <tr class="row-odd"><td>smsmeter <name> <step></td> <td>ecflow_client –meter <n> <s></td> <td> </td> </tr> <tr class="row-even"><td>smsmsg <string tokens></td> <td>ecflow_client –msg <string></td> <td> </td> </tr> <tr class="row-odd"><td>smsping</td> <td>ecflow_client –ping</td> <td> </td> </tr> <tr class="row-even"><td>smsrand</td> <td><none></td> <td>not a child command, used to introduce random task runtime, in test mode, for sms</td> </tr> <tr class="row-odd"><td>smsrid <string></td> <td><none></td> <td>ecflow_client –init is used with string job id</td> </tr> <tr class="row-even"><td>smsstatus <node path></td> <td><none></td> <td>ecflow_client –get <path> can be used to get node state</td> </tr> <tr class="row-odd"><td>smsvariable <string> <value></td> <td><none></td> <td>variable is only updated by SMS, not created, and it must belong to the node ecflow_client –get <path> can be used to get variable value, create or update any variable</td> </tr> <tr class="row-even"><td>smswait <trigger expression></td> <td>ecflow_client –wait <string></td> <td> </td> </tr> </tbody> </table> <p>sms expects string tokens, builds up the related tree, checks its value on the server,</p> <p>ecflow expect one string containing the trigger expression to check</p> <p>In order to migrate tasks, and keep the ability for them to communicate with the server in charge, SMS or ecflow, child commands were replaced with ksh functions,</p> <p>to call the right child according to the variable ECF_PORT set to 0 (sms case) or not (originated from ecflow server).</p> </div> |