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.
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.
SMS commands | ecflow equivalent | comment |
sms | ecflow_server | sms -b: dettach the server from the session to run it when user is logged out. nohup ecflow_server > out 2>&1 &: |
smsabort | ecflow_client --abort <reason> | user can benefit from knowing if the job stopped with "normal" abort or following the reception of a user signal (attempt to kill the task) or because of "early exit", when ecflow_client --complete is missing |
smsalive | <none> | task heart-bit, not used at the centre |
smscomplete | ecflow_client --complete | |
smsdate | <none> | not a child command - date manipulation utility, not part of ecFlow |
smsdie | <none> | clean RPC port - not needed with ecFlow |
smsevent <name> | ecflow_client --event=<name> | |
smsinit $PID | ecflow_client --init=<remote_job_id> | restricted to integer for SMS (use smsrid for string) |
smslabel <name> <string> | ecflow_client --label=<name> <string> | |
smsmeter <name> <step> | ecflow_client --meter=<name> <step> | |
smsmsg <string tokens> | ecflow_client --msg=<string> | |
smsping | ecflow_client --ping | |
smsrand | <none> | not a child command, used to introduce random task runtime, in test mode, for sms |
smsrid <string> | <none> | ecflow_client --init is used with string job id |
smsstatus <node path> | <none> | ecflow_client --get=<path> can be used to get node state |
smsvariable <string> <value> | <none> | 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 |
smswait <trigger expression> | ecflow_client --wait=<string> | sms expects string tokens, builds up the related tree, checks its value on the server, ecFlow expect one string containing the trigger expression to check |
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,
to call the right child according to the variable ECF_PORT set to 0 (sms case) or not (originated from ecFlow server).