Или, если вы все еще хотите локальную регистрацию процесса, вы можете написать что-то вроде:
where_is_service(Service) ->
lists:filter(fun(X) -> X =/= undefined end, [rpc:call(Node, erlang, whereis, [Service]) || Node <- [node() | nodes()]]).
Эта функция будет возвращать в результате pid процессов, называемых локально (на узлах) как Service
После этого, если вы хотите запустить только первый процесс, используйте список, возвращаемый функцией:
send_msg_to_service(Service,Message) ->
case where_is_service(Service) of
[APid | _] -> APid ! Message, ok;
[] -> {error, service_not_running}
end.
Надеюсь, это поможет!