+ my $fc = Mojo::IOLoop::ForkCall->new;
+ $fc->run(
+ sub {my @res = `$line`; return @res},
+ [],
+ sub {
+ my ($fc, $err, @res) = @_;
+ if (defined $err) {
+ my $s = "DXCron::spawn: error $err";
+ dbg($s);
+ return;
+ }
+ for (@res) {
+ chomp;
+ dbg("DXCron::spawn: $_") if isdbg("cron");
+ }
+ }
+ );
+}
+
+# do an rcmd to another cluster from the crontab
+sub rcmd
+{
+ my $call = uc shift;
+ my $line = shift;
+
+ # can we see it? Is it a node?
+ my $noderef = Route::Node::get($call);
+ return unless $noderef && $noderef->version;
+
+ # send it
+ DXProt::addrcmd($main::me, $call, $line);
+}
+
+sub run_cmd
+{
+ my $line = shift;
+ my @in = DXCommandmode::run_cmd($main::me, $line);
+ dbg("cmd run: $line") if isdbg('cron');
+ for (@in) {
+ s/\s*$//og;
+ dbg("cmd out: $_") if isdbg('cron');
+ }