From cafd7f8d90d67bf2cf9d15540f8523c15eb4bd90 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Thu, 16 Feb 2012 16:21:10 +0100 Subject: [PATCH] prun: use tmux instead of GNU screen, added --debug-children --- lib/bin/bex-prun | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/bin/bex-prun b/lib/bin/bex-prun index 4900ef2..3fc36dd 100755 --- a/lib/bin/bex-prun +++ b/lib/bin/bex-prun @@ -10,34 +10,33 @@ use POSIX; use BEX; my $queue_name; -my $screen_session = 'BEX'; my $text_mode; +my $debug_children; sub usage() { print <] [[!] ...] Options: + --debug-children Log stdout and stderr to ./debug.log -q, --queue= Run jobs in the given queue - --session= Job windows should be opened within the given screen - session (default: BEX) - --text Use textual user interface instead of curses + --text Use plain-text user interface instead of curses AMEN exit 0; } GetOptions( "q|queue=s" => \$queue_name, - "session=s" => \$screen_session, "text!" => \$text_mode, + "debug-children!" => \$debug_children, "help" => \&usage, ) or die "Try `bex prun --help' for more information.\n"; -system 'screen', '-S', $screen_session, '-X', 'select', '.'; -!$? or die "Screen session $screen_session not found\n"; +system 'tmux', 'has-session'; +!$? or die "You need to start tmux first.\n"; my $queue = BEX::Queue->new($queue_name); -my $fifo_name = $queue->{'Name'} . '/status-fifo'; +my $fifo_name = $queue->{'Path'} . '/status-fifo'; unlink $fifo_name; mkfifo $fifo_name, 0700 or die "Cannot create $fifo_name: $!"; open FIFO, '+<', $fifo_name or die "Cannot open $fifo_name: $!"; @@ -59,10 +58,20 @@ while (keys %running || @machines) { if (@machines && keys %running < $max) { my $mach = shift @machines; $ui->update($mach, undef, 'START'); - my @scr = ('screen', '-t', $mach); - push @scr, '-S', $screen_session if defined $screen_session; - push @scr, '-X', 'screen', './brun', "--status-fifo=$fifo_name", $mach; - system @scr; + my @tm = ('tmux', 'new-window', '-n', $mach, '-d'); + my $P5LIB = $ENV{"PERL5LIB"} // ""; + my @cmd = ( + "BEX_HOME='$BEX::Config::home'", + "BEX_LIB='$BEX::Config::lib'", + "PERL5LIB='$P5LIB'", + "$BEX::Config::lib/bin/bex-run", + "--status-fifo=$fifo_name", + "--queue=" . $queue->{'Name'}, + $mach, + ); + push @cmd, ">debug.log", "2>&1" if $debug_children; + push @tm, join(" ", @cmd); + system @tm; !$? or $ui->update($mach, undef, 'INTERR'); $running{$mach} = 'START'; next; -- 2.39.2