From 01d3887e03734551624e042a0a63957a9589863f Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 9 Mar 2012 08:00:40 +0100 Subject: new readme stuff --- README | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README b/README index dbfe164..00a6de6 100644 --- a/README +++ b/README @@ -11,7 +11,7 @@ For a changelog see CHANGELOG For a list of all known bugs see BUGS -Supported platforms are: Linux and FreeBSD (the latter with linprocfs mounted). +Supported platforms are: Linux and FreeBSD (the latter with linprocfs mounted, the latter may not have full functionality). For Linux at least a 2.6 Kernel is required. @@ -21,7 +21,10 @@ Versioning schema: a.b.c[.d], where b = Major release (new features or major code refactoring) a = Don't know yet. Maybe will stay forever 0. + It's not a release if there is a -master suffix. It's a stable + version (master branch) then. + It's not a release if there is a -devel suffix. It's a development - version (in the trunk) then. + version (devel branch) then. For some help/usage please consult the HELP file. -- cgit v1.2.3 From 2e27cd92ceb496d2d5b7fcba32c9a0300c76dcf9 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 9 Mar 2012 08:09:59 +0100 Subject: add return --- README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README b/README index 00a6de6..3d8e545 100644 --- a/README +++ b/README @@ -11,7 +11,8 @@ For a changelog see CHANGELOG For a list of all known bugs see BUGS -Supported platforms are: Linux and FreeBSD (the latter with linprocfs mounted, the latter may not have full functionality). +Supported platforms are: Linux and FreeBSD (the latter with linprocfs mounted, +the latter may not have full functionality). For Linux at least a 2.6 Kernel is required. -- cgit v1.2.3 From 0440e5d2a7123270462d148e4a9cfb6ba658421a Mon Sep 17 00:00:00 2001 From: pbuetow Date: Wed, 14 Mar 2012 22:37:05 +0100 Subject: init 0.5.2-devel --- loadbars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loadbars b/loadbars index 5015664..bb460bd 100755 --- a/loadbars +++ b/loadbars @@ -26,7 +26,7 @@ use threads; use threads::shared; use constant { - VERSION => 'loadbars v0.5.1', + VERSION => 'loadbars v0.5.2-devel', COPYRIGHT => '2010-2012 (c) Paul Buetow ', CONFFILE => $ENV{HOME} . '/.loadbarsrc', CSSH_CONFFILE => '/etc/clusters', -- cgit v1.2.3 From abdb55511c99ba087b7d55185c163c8dde366706 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 14 Mar 2012 23:04:31 +0100 Subject: drop freebsd support --- loadbars | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/loadbars b/loadbars index bb460bd..393cdfe 100755 --- a/loadbars +++ b/loadbars @@ -195,27 +195,17 @@ sub stats_thread ($;$) { for (;;) { my $bash = <<"BASH"; - if [ -e /proc/stat ]; then - loadavg=/proc/loadavg - stat=/proc/stat - meminfo=/proc/meminfo - - for i in \$(seq $C{samples}); do - echo CPUSTATS - cat \$loadavg \$stat - echo MEMSTATS - cat \$meminfo - sleep $inter - done - else - loadavg=/compat/linux/proc/loadavg - stat=/compat/linux/proc/stat - - for i in \$(jot $C{samples}); do - cat \$loadavg \$stat - sleep $inter - done - fi + loadavg=/proc/loadavg + stat=/proc/stat + meminfo=/proc/meminfo + + for i in \$(seq $C{samples}); do + echo CPUSTATS + cat \$loadavg \$stat + echo MEMSTATS + cat \$meminfo + sleep $inter + done BASH my $cmd = -- cgit v1.2.3 From 2dc22d1efeb18c910c000c45b0366b6b5ec6cecc Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 14 Mar 2012 23:23:17 +0100 Subject: instant process shutdown --- CHANGELOG | 3 +++ loadbars | 30 ++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3733304..1d19cbb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +* Dropped FreeBSD support / focus is Linux +* Instant terminating of sub-processes on shutdown + Sat Feb 25 20:09:02 CET 2012 * Release v0.5.1 * Add config file support (~/.loadbarsrc) and it's possible to configure diff --git a/loadbars b/loadbars index 393cdfe..30a182b 100755 --- a/loadbars +++ b/loadbars @@ -22,6 +22,8 @@ use SDL::Font; use Time::HiRes qw(usleep gettimeofday); +use Proc::ProcessTable; + use threads; use threads::shared; @@ -77,7 +79,7 @@ my %I : shared; factor => 1, height => 230, maxwidth => 1280, - samples => 500, + samples => 1000, showcores => 0, showmem => 0, showtext => 1, @@ -189,11 +191,12 @@ sub stats_thread ($;$) { my ( $host, $user ) = @_; $user = defined $user ? "-l $user" : ''; - my ($sigusr1, $quit) = (0,0); + my ($sigusr1, $sigterm) = (0,0); my $loadavgexp = qr/(\d+\.\d{2}) (\d+\.\d{2}) (\d+\.\d{2})/; my $inter = INTERVAL; + my $pid; - for (;;) { + until ($sigterm) { my $bash = <<"BASH"; loadavg=/proc/loadavg stat=/proc/stat @@ -213,7 +216,7 @@ BASH ? $bash : "ssh $user -o StrictHostKeyChecking=no $C{sshopts} $host '$bash'"; - my $pid = open my $pipe, "$cmd |" or do { + $pid = open my $pipe, "$cmd |" or do { say "Warning: $!"; sleep 3; next; @@ -221,6 +224,8 @@ BASH # Toggle CPUs $SIG{USR1} = sub { $sigusr1 = 1 }; + $SIG{TERM} = sub { $sigterm = 1 }; + my $cpuregexp = qr/$I{cpuregexp}/; # 1=cpu, 2=mem, 3=net my $mode = 0; @@ -260,10 +265,23 @@ BASH # TODO: Use index instead of regexp for cpuregexp $cpuregexp = qr/$I{cpuregexp}/; $sigusr1 = 0; + } elsif ($sigterm) { + last; } } } + my $proc_table = Proc::ProcessTable->new(); + for my $proc (@{$proc_table->table()}) { + if ($proc->ppid == $pid) { + display_info "Terminating PID $proc->ppid"; + kill 'TERM', $proc->pid if $proc->ppid == $pid; + } + } + + display_info "Terminating PID $pid"; + kill 'TERM', $pid; + return undef; } @@ -434,6 +452,10 @@ sub main_loop ($@) { display_info 'Toggled number/hostname display'; } elsif ( $key_name eq 'q' ) { + display_info 'Shutting down sub-processes'; + $_->kill('TERM') for @threads; + sleep 1; + display_info 'Shutting down done'; $quit = 1; return; -- cgit v1.2.3 From e5ac5b44c303cb4bc3e73770871387dc090a10b4 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 14 Mar 2012 23:25:59 +0100 Subject: : --- CHANGELOG | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 1d19cbb..dbf9b0a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ * Dropped FreeBSD support / focus is Linux -* Instant terminating of sub-processes on shutdown +* Instant terminating of sub-processes on shutdown. Requires + Proc::ProcessTable Perl module. Sat Feb 25 20:09:02 CET 2012 * Release v0.5.1 -- cgit v1.2.3 From 772e0dce07faf123f7657d3161bff0ee6e9951e6 Mon Sep 17 00:00:00 2001 From: pbuetow Date: Wed, 14 Mar 2012 23:57:37 +0100 Subject: instant shutdown works on debian squeeze --- BUGS | 3 +-- CHANGELOG | 3 +-- loadbars | 47 +++++++++++++++++++++++++++++------------------ 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/BUGS b/BUGS index 1305227..40b75cd 100644 --- a/BUGS +++ b/BUGS @@ -1,2 +1 @@ -* After quit ssh processes don't shut down instantly. But this is not an issue - since whey will quit automatically after 'samples' times. +* No known bugs ATM diff --git a/CHANGELOG b/CHANGELOG index dbf9b0a..d44fe5b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,5 @@ * Dropped FreeBSD support / focus is Linux -* Instant terminating of sub-processes on shutdown. Requires - Proc::ProcessTable Perl module. +* On shutdown all sub-processes are gonna be terminated instantly (was old bug) Sat Feb 25 20:09:02 CET 2012 * Release v0.5.1 diff --git a/loadbars b/loadbars index 30a182b..de394e6 100755 --- a/loadbars +++ b/loadbars @@ -59,6 +59,7 @@ use constant { $| = 1; +my @PIDS : shared; my %AVGSTATS : shared; my %CPUSTATS : shared; my %MEMSTATS : shared; @@ -187,6 +188,27 @@ sub write_config () { close $conffile; } +sub terminate_pids (@) { + my @threads = @_; + + display_info 'Terminating sub-processes'; + $_->kill('TERM') for @threads; + for my $pid (@PIDS) { + my $proc_table = Proc::ProcessTable->new(); + for my $proc (@{$proc_table->table()}) { + if ($proc->ppid == $pid) { + display_info "Terminating PID ".$proc->pid; + kill 'TERM', $proc->pid if $proc->ppid == $pid; + } + } + + display_info "Terminating PID $pid"; + kill 'TERM', $pid; + } + + display_info 'Terminating down. I\'ll be back!'; +} + sub stats_thread ($;$) { my ( $host, $user ) = @_; $user = defined $user ? "-l $user" : ''; @@ -194,7 +216,6 @@ sub stats_thread ($;$) { my ($sigusr1, $sigterm) = (0,0); my $loadavgexp = qr/(\d+\.\d{2}) (\d+\.\d{2}) (\d+\.\d{2})/; my $inter = INTERVAL; - my $pid; until ($sigterm) { my $bash = <<"BASH"; @@ -216,12 +237,14 @@ BASH ? $bash : "ssh $user -o StrictHostKeyChecking=no $C{sshopts} $host '$bash'"; - $pid = open my $pipe, "$cmd |" or do { + my $pid = open my $pipe, "$cmd |" or do { say "Warning: $!"; sleep 3; next; }; + push @PIDS, $pid; + # Toggle CPUs $SIG{USR1} = sub { $sigusr1 = 1 }; $SIG{TERM} = sub { $sigterm = 1 }; @@ -230,7 +253,7 @@ BASH # 1=cpu, 2=mem, 3=net my $mode = 0; - while (<$pipe>) { + while (<$pipe>) { chomp; if ($mode == 0) { @@ -265,23 +288,14 @@ BASH # TODO: Use index instead of regexp for cpuregexp $cpuregexp = qr/$I{cpuregexp}/; $sigusr1 = 0; + } elsif ($sigterm) { + close $pipe; last; } } } - my $proc_table = Proc::ProcessTable->new(); - for my $proc (@{$proc_table->table()}) { - if ($proc->ppid == $pid) { - display_info "Terminating PID $proc->ppid"; - kill 'TERM', $proc->pid if $proc->ppid == $pid; - } - } - - display_info "Terminating PID $pid"; - kill 'TERM', $pid; - return undef; } @@ -452,10 +466,7 @@ sub main_loop ($@) { display_info 'Toggled number/hostname display'; } elsif ( $key_name eq 'q' ) { - display_info 'Shutting down sub-processes'; - $_->kill('TERM') for @threads; - sleep 1; - display_info 'Shutting down done'; + terminate_pids @threads; $quit = 1; return; -- cgit v1.2.3 From 66ee5dc4507b88d67086e3f5ef9d21b0e73f2331 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 14 Mar 2012 23:55:39 +0100 Subject: some typos removed --- CHANGELOG | 3 ++- loadbars | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d44fe5b..94bad5c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ * Dropped FreeBSD support / focus is Linux -* On shutdown all sub-processes are gonna be terminated instantly (was old bug) +* On shutdown all sub-processes are gonna be terminated instantly + (was old bug). Needs Proc::ProcessTable module. Sat Feb 25 20:09:02 CET 2012 * Release v0.5.1 diff --git a/loadbars b/loadbars index de394e6..d4e56b7 100755 --- a/loadbars +++ b/loadbars @@ -191,7 +191,7 @@ sub write_config () { sub terminate_pids (@) { my @threads = @_; - display_info 'Terminating sub-processes'; + display_info 'Terminating sub-processes, hasta la vista!'; $_->kill('TERM') for @threads; for my $pid (@PIDS) { my $proc_table = Proc::ProcessTable->new(); @@ -206,7 +206,7 @@ sub terminate_pids (@) { kill 'TERM', $pid; } - display_info 'Terminating down. I\'ll be back!'; + display_info 'Terminating done. I\'ll be back!'; } sub stats_thread ($;$) { -- cgit v1.2.3 From c5bb4a908942ad2c9a035b46b448d94d33420981 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 15 Mar 2012 09:12:46 +0100 Subject: dont quit loadbars if loadbarsrc can not be overwritten --- CHANGELOG | 1 + loadbars | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 94bad5c..13be57f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ * Dropped FreeBSD support / focus is Linux * On shutdown all sub-processes are gonna be terminated instantly (was old bug). Needs Proc::ProcessTable module. +* Dont quit loadbars if ~/.loadbarsrc can not be overwritten Sat Feb 25 20:09:02 CET 2012 * Release v0.5.1 diff --git a/loadbars b/loadbars index d4e56b7..a647abf 100755 --- a/loadbars +++ b/loadbars @@ -179,7 +179,12 @@ sub read_config () { sub write_config () { display_warn "Overwriting config file " . CONFFILE if -f CONFFILE; - open my $conffile, '>', CONFFILE or die "$!: " . CONFFILE . "\n"; + + open my $conffile, '>', CONFFILE or do { + display_warn "$!: " . CONFFILE; + + return undef; + }; for (keys %C) { print $conffile "$_=$C{$_}\n"; -- cgit v1.2.3 From 825461f10026f4ba39cf3f0a363914c0552a817b Mon Sep 17 00:00:00 2001 From: pbuetow Date: Thu, 15 Mar 2012 14:19:04 +0100 Subject: nicer output on terminating pids --- loadbars | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/loadbars b/loadbars index a647abf..a6c49d9 100755 --- a/loadbars +++ b/loadbars @@ -102,6 +102,7 @@ sub null ($) { defined $_[0] ? $_[0] : 0 } sub notnull ($) { $_[0] != 0 ? $_[0] : 1 } sub set_showcores_regexp () { $I{cpuregexp} = $C{showcores} ? 'cpu' : 'cpu ' } sub error ($) { die shift, "\n" } +sub display_info_no_nl ($) { print "==> " . shift . ' ' } sub display_info ($) { say "==> " . shift } sub display_warn ($) { say "!!! " . shift } @@ -198,19 +199,22 @@ sub terminate_pids (@) { display_info 'Terminating sub-processes, hasta la vista!'; $_->kill('TERM') for @threads; + display_info_no_nl 'Terminating PIDs'; for my $pid (@PIDS) { my $proc_table = Proc::ProcessTable->new(); for my $proc (@{$proc_table->table()}) { if ($proc->ppid == $pid) { - display_info "Terminating PID ".$proc->pid; + print $proc->pid . ' '; kill 'TERM', $proc->pid if $proc->ppid == $pid; } } - display_info "Terminating PID $pid"; + print $pid . ' '; kill 'TERM', $pid; } + say ''; + display_info 'Terminating done. I\'ll be back!'; } -- cgit v1.2.3 From 72e19fdb33d05401b9bbb0b52d72a1dc0e9e6b20 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 16 Mar 2012 07:21:13 +0100 Subject: release 0.5.1.1 --- CHANGELOG | 2 ++ loadbars | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 13be57f..2f49a68 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +Fri Mar 16 07:20:50 CET 2012 +* Release v0.5.1.1 * Dropped FreeBSD support / focus is Linux * On shutdown all sub-processes are gonna be terminated instantly (was old bug). Needs Proc::ProcessTable module. diff --git a/loadbars b/loadbars index a6c49d9..76cb185 100755 --- a/loadbars +++ b/loadbars @@ -28,7 +28,7 @@ use threads; use threads::shared; use constant { - VERSION => 'loadbars v0.5.2-devel', + VERSION => 'loadbars v0.5.1.1', COPYRIGHT => '2010-2012 (c) Paul Buetow ', CONFFILE => $ENV{HOME} . '/.loadbarsrc', CSSH_CONFFILE => '/etc/clusters', -- cgit v1.2.3