jah 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +62 -13
- data/Rakefile +4 -3
- data/VERSION +1 -1
- data/bin/jah +4 -2
- data/jah.gemspec +73 -21
- data/lib/jah/act_pkg/apt.rb +13 -0
- data/lib/jah/act_pkg/base.rb +17 -0
- data/lib/jah/act_pkg/emerge.rb +4 -0
- data/lib/jah/act_pkg/pacman.rb +59 -0
- data/lib/jah/act_pkg/pkg.rb +52 -0
- data/lib/jah/act_pkg/ports.rb +9 -0
- data/lib/jah/act_pkg/slack.rb +8 -0
- data/lib/jah/act_pkg/urpm.rb +7 -0
- data/lib/jah/act_pkg/yum.rb +31 -0
- data/lib/jah/act_pkg/zypp.rb +12 -0
- data/lib/jah/act_pkg.rb +41 -0
- data/lib/jah/agent.rb +14 -6
- data/lib/jah/agents/xmpp.rb +164 -23
- data/lib/jah/cli.rb +15 -46
- data/lib/jah/command.rb +10 -5
- data/lib/jah/commands/cpu.rb +38 -0
- data/lib/jah/commands/disk.rb +35 -0
- data/lib/jah/commands/mem.rb +49 -0
- data/lib/jah/{collectors/net.rb → commands/netstat.rb} +11 -9
- data/lib/jah/commands/packages.rb +25 -0
- data/lib/jah/commands/prok.rb +97 -0
- data/lib/jah/commands/services.rb +14 -0
- data/lib/jah/commands/status.rb +1 -41
- data/lib/jah/commands/who.rb +27 -0
- data/lib/jah/history.rb +25 -0
- data/lib/jah/install.rb +12 -18
- data/lib/jah/opt.rb +87 -0
- data/lib/jah/prayer.rb +75 -0
- data/lib/jah.rb +21 -13
- data/lib/locales/en_us.yml +9 -1
- data/lib/locales/pt_br.yml +9 -1
- data/spec/jah/act_pkg/apt_spec.rb +40 -0
- data/spec/jah/act_pkg/pacman_spec.rb +141 -0
- data/spec/jah/act_pkg/pkg_spec.rb +51 -0
- data/spec/jah/act_pkg/ports_spec.rb +36 -0
- data/spec/jah/act_pkg/yum_spec.rb +55 -0
- data/spec/jah/act_pkg_spec.rb +41 -0
- data/spec/jah/agent_spec.rb +8 -0
- data/spec/jah/agents/xmpp_spec.rb +8 -0
- data/spec/jah/cli_spec.rb +47 -0
- data/spec/jah/command_spec.rb +5 -0
- data/spec/jah/commands/cpu_spec.rb +51 -0
- data/spec/jah/commands/disk_spec.rb +49 -0
- data/spec/jah/commands/mem_spec.rb +60 -0
- data/spec/jah/commands/netstat_spec.rb +13 -0
- data/spec/jah/commands/prok_spec.rb +248 -0
- data/spec/jah/commands/who_spec.rb +25 -0
- data/spec/jah/history_spec.rb +35 -0
- data/spec/jah/install_spec.rb +15 -0
- data/spec/jah/opt_spec.rb +37 -0
- data/spec/jah/prayer_spec.rb +8 -0
- data/spec/jah_spec.rb +4 -2
- data/spec/spec_helper.rb +3 -1
- metadata +67 -16
- data/lib/jah/collector.rb +0 -12
- data/lib/jah/collectors/cpu.rb +0 -35
- data/lib/jah/collectors/disk.rb +0 -14
- data/lib/jah/collectors/mem.rb +0 -51
- data/lib/jah/collectors/prok.rb +0 -88
- data/lib/jah/collectors/services.rb +0 -13
- data/lib/jah/collectors/who.rb +0 -20
- data/lib/jah/commands/pub.rb +0 -34
- data/lib/jah/god.rb +0 -24
- data/lib/jah.yaml.template +0 -26
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require "jah/act_pkg/ports"
|
3
|
+
|
4
|
+
describe Ports do
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
LI = <<LI
|
11
|
+
autoconf @2.64 devel/autoconf
|
12
|
+
automake @1.11 devel/automake
|
13
|
+
bzip2 @1.0.5 archivers/bzip2
|
14
|
+
cairo @1.8.8 graphics/cairo
|
15
|
+
cmake @2.6.4 devel/cmake
|
16
|
+
curl @7.19.6 net/curl
|
17
|
+
db46 @4.6.21 databases/db46
|
18
|
+
expat @2.0.1 textproc/expat
|
19
|
+
libid3tag @0.15.1b audio/libid3tag
|
20
|
+
openssl @0.9.8k devel/openssl
|
21
|
+
p5-error @0.17015 perl/p5-error
|
22
|
+
LI
|
23
|
+
|
24
|
+
SEARCH = <<SEARCH
|
25
|
+
awesome @3.3.4 (x11, x11-wm)
|
26
|
+
awesome is a tiling window manager
|
27
|
+
|
28
|
+
rancid @2.3.2a9 (net)
|
29
|
+
Really Awesome New Cisco confIg Differ
|
30
|
+
|
31
|
+
Found 2 ports.
|
32
|
+
|
33
|
+
SEARCH
|
34
|
+
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require "jah/act_pkg/yum"
|
3
|
+
|
4
|
+
describe Yum do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@yum ||= Yum.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "All" do
|
11
|
+
before do
|
12
|
+
@yum.stub!(:"`").and_return(YUMLIST)
|
13
|
+
@pkgs ||= @yum.all
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should fetch name" do
|
17
|
+
@pkgs[0].name.should eql("db4")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should fetch version" do
|
21
|
+
@pkgs[0].version.should eql("4.3.29-9.fc6")
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
YUMLIST = <<YUMLIST
|
31
|
+
Installed Packages
|
32
|
+
db4.i386 4.3.29-9.fc6 installed
|
33
|
+
dbus.i386 1.0.0-7.el5 installed
|
34
|
+
dbus-devel.i386 1.0.0-7.el5 installed
|
35
|
+
desktop-file-utils.i386 0.10-7 installed
|
36
|
+
YUMLIST
|
37
|
+
|
38
|
+
YUMINFO = <<YUMINFO
|
39
|
+
Available Packages
|
40
|
+
Name : ruby
|
41
|
+
Arch : i386
|
42
|
+
Version: 1.8.5
|
43
|
+
Release: 5.el5_3.7
|
44
|
+
Size : 274 k
|
45
|
+
Repo : updates
|
46
|
+
Summary: An interpreter of object-oriented scripting language
|
47
|
+
Description:
|
48
|
+
Ruby is the interpreted scripting language for quick and easy
|
49
|
+
object-oriented programming. It has many features to process text
|
50
|
+
files and to do system management tasks (as in Perl). It is simple,
|
51
|
+
straight-forward, and extensible.
|
52
|
+
|
53
|
+
YUMINFO
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe ActPkg do
|
5
|
+
|
6
|
+
it "should detect archlinux" do
|
7
|
+
File.stub!(:read).and_return(" Arch Linux \r (\n) (\l)")
|
8
|
+
ActPkg.detect.should eql(:pacman)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should detect debian like" do
|
12
|
+
File.stub!(:read).and_return(" Ubuntu karmic (development branch) \n \l")
|
13
|
+
ActPkg.detect.should eql(:apt)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should detect slack" do
|
17
|
+
File.stub!(:read).and_return(" Welcome to \s \r (\l)")
|
18
|
+
ActPkg.detect.should eql(:slack)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should detect gentoo" do
|
22
|
+
File.stub!(:read).and_return(" This is \n.\O (\s \m \r) \t")
|
23
|
+
ActPkg.detect.should eql(:emerge) # sparta
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should detect centos" do
|
27
|
+
File.stub!(:read).and_return(" CentOS release 5.2 (Final)\n Kernel \r on an \m")
|
28
|
+
ActPkg.detect.should eql(:yum)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return an instance of the correct adapter (arch)" do
|
32
|
+
ActPkg.stub!(:detect).and_return(:pacman)
|
33
|
+
ActPkg.manager.should be_instance_of Pacman
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should delegate to the manager" do
|
37
|
+
ActPkg.manager.should_receive(:install).with("foo")
|
38
|
+
ActPkg.install("foo")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Jah::Cli do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Cli.stub!(:puts)
|
7
|
+
Opt.stub!(:puts)
|
8
|
+
File.stub!(:exists?).and_return(false)
|
9
|
+
Jah::Cli.stub!(:parse_options).and_return({})
|
10
|
+
Opt.stub!(:autoload_config)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should start with install/config" do
|
14
|
+
Opt.should_receive(:mode).and_return(nil)
|
15
|
+
Jah::Install.should_receive(:new)
|
16
|
+
Jah::Cli.work([])
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should work install" do
|
20
|
+
Jah::Install.should_receive(:new)
|
21
|
+
Jah::Cli.work(["install"])
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should start if mode" do
|
25
|
+
Opt.should_receive(:mode).and_return(:xmpp)
|
26
|
+
Jah::Agent.should_receive(:start).and_return(true)
|
27
|
+
Jah::Cli.work([])
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
it "should not write if it wasnt" do
|
32
|
+
EM.should_receive(:stop)
|
33
|
+
File.should_not_receive(:open)
|
34
|
+
Jah::Cli.stop!
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should write config down if changed" do
|
38
|
+
Opt.mode = "xre"
|
39
|
+
EM.should_receive(:stop)
|
40
|
+
File.should_receive(:open).with(Opt[:config], "w+").and_yield(@mf = mock(File))
|
41
|
+
@mf.should_receive(:write).exactly(2).times
|
42
|
+
Jah::Cli.stop!
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe Cpu do
|
5
|
+
|
6
|
+
describe "Read All" do
|
7
|
+
before do
|
8
|
+
Cpu.should_receive(:"`").with("uptime").and_return(" 20:10:57 up 12 days, 15:33, 8 users, load average: 0.02, 0.08, 0.08\n")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should read one" do
|
12
|
+
if RUBY_PLATFORM =~ /darwin/
|
13
|
+
Cpu.should_receive(:"`").with("hwprefs cpu_count").and_return("2\n")
|
14
|
+
else
|
15
|
+
Cpu.should_receive(:"`").with("cat /proc/cpuinfo | grep 'model name' | wc -l").and_return("2\n")
|
16
|
+
end
|
17
|
+
Cpu.read[:one].should be_close(0.02, 0.01)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should read five minutes" do
|
21
|
+
Cpu.read[:five].should be_close(0.08, 0.01)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
it "should read five minutes" do
|
26
|
+
Cpu.read[:ten].should be_close(0.08, 0.01)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should find the number of cores" do
|
30
|
+
Cpu.read[:cores].should eql(2)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should calc the med" do
|
34
|
+
Cpu.read[:med].should be_close(0.04, 0.01)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have a method missing" do
|
38
|
+
Cpu.one.should be_close(0.02, 0.01)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "Direct" do
|
44
|
+
|
45
|
+
it "should print load average" do
|
46
|
+
Cpu.cores.should eql(2)
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe Disk do
|
5
|
+
|
6
|
+
before do
|
7
|
+
Disk.should_receive(:"`").with("df").and_return(DISK)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should read" do
|
11
|
+
Disk.all[0].should be_instance_of(Disk) #eql({:free=>"25191840", :used=>"7033476", :total=>"32225316", :percent=>"22%", :path=>"/dev/sda5"})
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "A Partition" do
|
15
|
+
before do
|
16
|
+
@disk = Disk.all.first
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should find free" do
|
20
|
+
@disk.free.should eql(25191840)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should find percent used" do
|
24
|
+
@disk.percent.should eql(22)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should find dev" do
|
28
|
+
@disk.path.should eql("/dev/sda5")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should find mountpoint" do
|
32
|
+
@disk.mount.should eql("/")
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
DISK = <<DFLH
|
40
|
+
Filesystem 1K-blocks Used Available Use% Mounted on
|
41
|
+
/dev/sda5 32225316 7033476 25191840 22% /
|
42
|
+
none 1037004 192 1036812 1% /dev
|
43
|
+
none 1037004 0 1037004 0% /dev/shm
|
44
|
+
/dev/sda1 242216196 210412036 19597172 92% /mnt/disk
|
45
|
+
/dev/sda3 78121640 17208224 60913416 23% /home
|
46
|
+
DFLH
|
47
|
+
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe Mem do
|
5
|
+
|
6
|
+
describe "Read All" do
|
7
|
+
before do
|
8
|
+
Mem.should_receive(:`).with("cat /proc/meminfo").and_return(MEMINFO) #`
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should get free mem" do
|
12
|
+
Mem.free.should eql(4194)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should get free mem" do
|
16
|
+
Mem.used.should eql(3790)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should get free percentage" do
|
20
|
+
Mem.percent.should eql(52)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
MEMINFO = <<MEMINFO
|
25
|
+
MemTotal: 8175844 kB
|
26
|
+
MemFree: 201264 kB
|
27
|
+
Buffers: 126684 kB
|
28
|
+
Cached: 3967476 kB
|
29
|
+
SwapCached: 7704 kB
|
30
|
+
Active: 5993204 kB
|
31
|
+
Inactive: 1731788 kB
|
32
|
+
Active(anon): 3077496 kB
|
33
|
+
Inactive(anon): 579456 kB
|
34
|
+
Active(file): 2915708 kB
|
35
|
+
Inactive(file): 1152332 kB
|
36
|
+
Unevictable: 0 kB
|
37
|
+
Mlocked: 0 kB
|
38
|
+
SwapTotal: 7815580 kB
|
39
|
+
SwapFree: 7766252 kB
|
40
|
+
Dirty: 640 kB
|
41
|
+
Writeback: 0 kB
|
42
|
+
AnonPages: 3623964 kB
|
43
|
+
Mapped: 39020 kB
|
44
|
+
Slab: 208776 kB
|
45
|
+
SReclaimable: 195744 kB
|
46
|
+
SUnreclaim: 13032 kB
|
47
|
+
PageTables: 17348 kB
|
48
|
+
NFS_Unstable: 0 kB
|
49
|
+
Bounce: 0 kB
|
50
|
+
WritebackTmp: 0 kB
|
51
|
+
CommitLimit: 11903500 kB
|
52
|
+
Committed_AS: 4057620 kB
|
53
|
+
VmallocTotal: 34348367 kB
|
54
|
+
VmallocUsed: 269584 kB
|
55
|
+
VmallocChunk: 34357495 kB
|
56
|
+
DirectMap4k: 3584 kB
|
57
|
+
DirectMap2M: 8384512 kB
|
58
|
+
MEMINFO
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe Netstat do
|
5
|
+
|
6
|
+
it "should count connections" do
|
7
|
+
Netstat.should_receive(:"`").with("netstat -n | grep -i established | wc -l").and_return("9")
|
8
|
+
Netstat.count.should eql(9)
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,248 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe Prok do
|
5
|
+
|
6
|
+
before do
|
7
|
+
Prok.stub!("`".to_sym).and_return(PSAUX) #```
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should find all" do
|
11
|
+
Prok.all.should be_instance_of Array
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should be a intance of Prok" do
|
15
|
+
Prok.all[0].should be_instance_of Prok
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should a proc by pid" do
|
19
|
+
Prok.find("3537").first.comm.should eql("ruby bin/jah")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return [] if no proc found" do
|
23
|
+
Prok.find("8888").should be_empty
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should find by name" do
|
27
|
+
Prok.find("jah")[0].pid.should eql 3537
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return [] if no comm found" do
|
31
|
+
Prok.find("nothere").should be_empty
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "A Prok" do
|
35
|
+
before do
|
36
|
+
@prok ||= Prok.all[0]
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should get the command name" do
|
40
|
+
@prok.comm.should eql("ini")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should set the user" do
|
44
|
+
@prok.user.should eql("root")
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should set the PID as integer" do
|
48
|
+
@prok.pid.should eql(1)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should get cpu percentage" do
|
52
|
+
@prok.cpu.should be_close(0.0, 0.01)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should get mem percentage" do
|
56
|
+
@prok.mem.should be_close(0.0, 0.01)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should get the v size" do
|
60
|
+
@prok.vsz.should eql(1684)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should get the rss size" do
|
64
|
+
@prok.rss.should eql(480)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should get the TTY" do
|
68
|
+
@prok.tty.should eql("?")
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should get STAT" do
|
72
|
+
@prok.stat.should eql("Ss")
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should get TIME" do
|
76
|
+
@prok.time.should eql("0:05")
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should send a HUP" do
|
80
|
+
@prok.should_receive(:exec).with("kill -1 1")
|
81
|
+
@prok.hup!
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should send a SIGTERM" do
|
85
|
+
@prok.should_receive(:exec).with("kill 1")
|
86
|
+
@prok.kill!
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should send a KILL -9" do
|
90
|
+
@prok.should_receive(:exec).with("kill -9 1")
|
91
|
+
@prok.move_to_acre!
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should have a to_s method" do
|
95
|
+
@prok.to_s.should eql("1 - root - ini (0.0, 0.0)")
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should genocide!" do
|
101
|
+
Prok.stub!(:new).and_return(@prok = mock(Prok))
|
102
|
+
@prok.should_receive(:comm).and_return("bin/jah")
|
103
|
+
@prok.stub!(:comm)
|
104
|
+
@prok.should_receive(:kill!)
|
105
|
+
Prok.genocide!("jah")
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
PSAUX = <<PSAUX
|
110
|
+
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
|
111
|
+
root 1 0.0 0.0 1684 480 ? Ss Sep20 0:05 ini
|
112
|
+
root 2 0.0 0.0 0 0 ? S< Sep20 0:00 [kthreadd]
|
113
|
+
root 3 0.0 0.0 0 0 ? S< Sep20 0:00 [migration/0]
|
114
|
+
root 4 0.0 0.0 0 0 ? S< Sep20 0:08 [ksoftirqd/0]
|
115
|
+
root 5 0.0 0.0 0 0 ? S< Sep20 0:00 [watchdog/0]
|
116
|
+
root 6 0.0 0.0 0 0 ? S< Sep20 0:00 [migration/1]
|
117
|
+
root 7 0.0 0.0 0 0 ? S< Sep20 5:39 [ksoftirqd/1]
|
118
|
+
root 8 0.0 0.0 0 0 ? S< Sep20 0:00 [watchdog/1]
|
119
|
+
root 9 0.0 0.0 0 0 ? S< Sep20 0:16 [events/0]
|
120
|
+
root 10 0.0 0.0 0 0 ? S< Sep20 0:16 [events/1]
|
121
|
+
root 11 0.0 0.0 0 0 ? S< Sep20 0:00 [khelper]
|
122
|
+
root 12 0.0 0.0 0 0 ? S< Sep20 0:00 [async/mgr]
|
123
|
+
root 13 0.0 0.0 0 0 ? S< Sep20 0:00 [kblockd/0]
|
124
|
+
root 14 0.0 0.0 0 0 ? S< Sep20 0:05 [kblockd/1]
|
125
|
+
root 15 0.0 0.0 0 0 ? S< Sep20 0:00 [kacpid]
|
126
|
+
root 16 0.0 0.0 0 0 ? S< Sep20 0:00 [kacpi_notify]
|
127
|
+
root 17 0.0 0.0 0 0 ? S< Sep20 0:00 [kseriod]
|
128
|
+
root 18 0.0 0.0 0 0 ? S Sep20 0:03 [khungtaskd]
|
129
|
+
root 19 0.0 0.0 0 0 ? S Sep20 0:12 [pdflush]
|
130
|
+
root 21 0.0 0.0 0 0 ? S< Sep20 0:09 [kswapd0]
|
131
|
+
root 22 0.0 0.0 0 0 ? S< Sep20 0:00 [aio/0]
|
132
|
+
root 23 0.0 0.0 0 0 ? S< Sep20 0:00 [aio/1]
|
133
|
+
root 24 0.0 0.0 0 0 ? S< Sep20 0:00 [crypto/0]
|
134
|
+
root 25 0.0 0.0 0 0 ? S< Sep20 0:00 [crypto/1]
|
135
|
+
root 446 0.0 0.0 0 0 ? S< Sep20 0:00 [ata/0]
|
136
|
+
root 448 0.0 0.0 0 0 ? S< Sep20 0:00 [ata/1]
|
137
|
+
root 449 0.0 0.0 0 0 ? S< Sep20 0:00 [ata_aux]
|
138
|
+
root 450 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_0]
|
139
|
+
root 451 0.0 0.0 0 0 ? S< Sep20 0:04 [scsi_eh_1]
|
140
|
+
root 452 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_2]
|
141
|
+
root 455 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_3]
|
142
|
+
root 456 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_4]
|
143
|
+
root 457 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_5]
|
144
|
+
root 458 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_6]
|
145
|
+
root 461 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_7]
|
146
|
+
root 469 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_8]
|
147
|
+
root 470 0.0 0.0 0 0 ? S< Sep20 0:00 [scsi_eh_9]
|
148
|
+
root 562 0.0 0.0 0 0 ? S< Sep20 0:00 [reiserfs/0]
|
149
|
+
root 563 0.0 0.0 0 0 ? S< Sep20 0:00 [reiserfs/1]
|
150
|
+
root 588 0.0 0.0 1956 376 ? S<s Sep20 0:00 /sbin/udevd --daemon
|
151
|
+
root 836 0.0 0.0 0 0 ? S< Sep20 0:00 [kpsmoused]
|
152
|
+
root 842 0.0 0.0 0 0 ? S< Sep20 0:00 [ksuspend_usbd]
|
153
|
+
root 843 0.0 0.0 0 0 ? S< Sep20 0:00 [khubd]
|
154
|
+
root 913 0.0 0.0 0 0 ? S< Sep20 0:00 [hd-audio0]
|
155
|
+
root 951 0.0 0.0 0 0 ? S< Sep20 0:00 [usbhid_resumer]
|
156
|
+
root 1129 0.0 0.0 0 0 ? S< Sep20 0:00 [kjournald]
|
157
|
+
root 1265 0.0 0.0 4700 192 ? S Sep20 0:00 supervising syslog-ng
|
158
|
+
root 1266 0.0 0.0 4880 868 ? Ss Sep20 0:00 /usr/sbin/syslog-ng
|
159
|
+
root 1276 0.0 0.0 2380 544 tty1 Ss Sep20 0:00 /bin/login --
|
160
|
+
root 1277 0.0 0.0 1684 440 tty2 Ss+ Sep20 0:00 /sbin/agetty -8 38400 tty2 linux
|
161
|
+
root 1278 0.0 0.0 1684 440 tty3 Ss+ Sep20 0:00 /sbin/agetty -8 38400 tty3 linux
|
162
|
+
root 1279 0.0 0.0 1684 440 tty4 Ss+ Sep20 0:00 /sbin/agetty -8 38400 tty4 linux
|
163
|
+
root 1280 0.0 0.0 1684 440 tty5 Ss+ Sep20 0:00 /sbin/agetty -8 38400 tty5 linux
|
164
|
+
root 1281 0.0 0.0 1684 440 tty6 Ss+ Sep20 0:00 /sbin/agetty -8 38400 tty6 linux
|
165
|
+
nofxx 1292 0.0 1.9 95628 40664 ? S Sep28 3:32 terminal
|
166
|
+
nofxx 1293 0.0 0.0 1728 560 ? S Sep28 0:00 gnome-pty-helper
|
167
|
+
root 1313 0.0 0.0 1720 548 ? S Sep20 0:00 /usr/sbin/crond
|
168
|
+
root 1342 0.0 0.0 1864 244 ? S Sep20 0:03 /usr/lib/erlang/erts-5.7.1/bin/epmd -daemon
|
169
|
+
root 1344 0.0 0.0 2052 420 ? Ss Sep20 0:00 /usr/bin/rpcbind
|
170
|
+
nofxx 1348 0.0 0.0 4176 1456 ? Ss Sep20 4:52 /usr/sbin/famd -T 0 -c /etc/fam/fam.conf
|
171
|
+
dbus 1351 0.0 0.0 2384 868 ? Ss Sep20 0:00 /usr/bin/dbus-daemon --system
|
172
|
+
hal 1364 0.0 0.0 6028 1472 ? Ss Sep20 0:04 /usr/sbin/hald
|
173
|
+
root 1404 0.0 0.0 7856 852 ? Sl Sep20 0:00 PassengerNginxHelperServer /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4 /usr/bin/ruby 3 4 0 6 0 300 1 nobody 1000 100 /tmp/passenger.1385
|
174
|
+
root 1413 0.0 0.1 23616 3032 ? Sl Sep20 3:11 Passenger spawn server
|
175
|
+
root 1416 0.0 0.0 4160 172 ? Ss Sep20 0:00 nginx: master process /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
|
176
|
+
nofxx 1417 0.0 0.0 4648 744 ? S Sep20 0:00 nginx: worker process
|
177
|
+
root 1443 0.0 0.0 9028 980 ? Ssl Sep20 0:00 /usr/sbin/console-kit-daemon
|
178
|
+
root 1444 0.0 0.0 3296 556 ? S Sep20 0:00 hald-runner
|
179
|
+
root 1540 0.0 0.0 3228 588 ? S Sep20 1:19 hald-addon-input: Listening on /dev/input/event7 /dev/input/event2 /dev/input/event1 /dev/input/event8
|
180
|
+
nofxx 1583 0.0 0.0 9452 1072 pts/2 Ss Sep28 0:00 bash
|
181
|
+
hal 1584 0.0 0.0 2924 460 ? S Sep20 0:00 hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event
|
182
|
+
root 1585 0.0 0.0 3232 556 ? S Sep20 0:06 hald-addon-storage: polling /dev/sr0 (every 16 sec)
|
183
|
+
root 1657 0.0 0.0 1872 248 ? Ss Sep20 0:00 /sbin/dhcpcd -q eth0
|
184
|
+
nofxx 1660 0.0 0.0 9420 732 tty1 S Sep20 0:00 -bash
|
185
|
+
nofxx 2468 0.0 0.0 6228 708 tty1 S+ Sep20 0:00 /bin/sh /usr/bin/startx
|
186
|
+
nofxx 2484 0.0 0.0 2956 492 tty1 S+ Sep20 0:00 xinit /home/nofxx/.xinitrc -- /etc/X11/xinit/xserverrc :0 -auth /home/nofxx/.serverauth.2468
|
187
|
+
root 2485 0.6 15.2 872568 316392 tty7 S<s+ Sep20 120:31 /usr/bin/X -nolisten tcp
|
188
|
+
nofxx 2492 0.0 0.0 5980 708 tty1 S Sep20 0:00 /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc
|
189
|
+
nofxx 2501 0.0 0.0 5752 336 ? Ss Sep20 0:00 /usr/bin/ssh-agent -s
|
190
|
+
nofxx 2506 0.0 0.0 3156 348 tty1 S Sep20 0:02 /usr/bin/dbus-launch --sh-syntax --exit-with-session
|
191
|
+
nofxx 2507 0.0 0.0 2272 900 ? Ss Sep20 0:30 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
|
192
|
+
nofxx 2509 0.0 0.1 18864 3060 tty1 S Sep20 0:39 /usr/bin/xfce4-session
|
193
|
+
nofxx 2511 0.0 0.0 3312 820 ? S Sep20 0:00 /usr/lib/xfconfd
|
194
|
+
nofxx 2515 0.0 0.0 15444 1364 tty1 S Sep20 0:00 xfsettingsd
|
195
|
+
nofxx 2516 0.0 0.7 69088 15192 tty1 Sl Sep20 0:26 xfdesktop --sm-client-id 2fe03b273-585f-4a64-8b6e-a2d8b82b094f --display :0.0
|
196
|
+
nofxx 2518 0.0 0.1 20064 2752 tty1 S Sep20 0:36 xfce4-settings-helper --display :0.0 --sm-client-id 2720f3d6c-875a-4bf8-b46b-c4afdc31650a
|
197
|
+
nofxx 2519 0.0 0.0 15888 1976 tty1 S Sep20 0:00 xfce4-panel
|
198
|
+
nofxx 2532 0.0 0.8 85832 16816 ? Sl Sep20 1:13 /usr/bin/Thunar --daemon
|
199
|
+
nofxx 2556 1.0 4.7 178944 97604 tty1 Sl Sep20 199:51 skype -session 2d64394f0-cf8b-4e9f-8ab5-f1755485c_4299_196609
|
200
|
+
nofxx 2559 0.0 0.5 47116 11928 tty1 Sl Sep20 0:02 /usr/lib/xfce4/panel-plugins/xfce4-mixer-plugin socket_id 16777248 name xfce4-mixer-plugin id 12476125132 display_name Mixer size 16 screen_position 7
|
201
|
+
nofxx 2575 0.2 0.3 21104 7900 ? Ss Sep20 44:53 awesome
|
202
|
+
nofxx 2787 0.0 0.6 14404 13076 pts/7 S 13:18 0:00 ruby /usr/bin/autospec
|
203
|
+
nofxx 2794 0.2 0.6 15480 14096 pts/7 S 13:18 0:00 /usr/bin/ruby -ws /usr/bin/autotest
|
204
|
+
nofxx 2912 0.0 0.0 7304 1264 pts/2 S+ Sep29 0:05 ssh naomi
|
205
|
+
nofxx 3226 0.0 0.0 5296 1040 pts/12 R+ 13:25 0:00 ps auxww
|
206
|
+
nofxx 3285 0.0 0.0 9620 1072 pts/3 Ss Sep28 0:00 bash
|
207
|
+
nofxx 3389 0.0 0.0 6728 904 pts/3 S+ Sep30 0:03 ssh naomi
|
208
|
+
nofxx 3537 0.9 1.0 25828 21532 pts/7 S+ 13:30 0:00 ruby bin/jah
|
209
|
+
nofxx 3932 0.0 0.2 9836 4304 pts/9 Ss+ Sep30 0:00 bash
|
210
|
+
nofxx 4108 0.0 0.0 46732 1908 ? Sl Sep20 0:09 /usr/lib/erlang/erts-5.7.1/bin/beam.smp -- -root /usr/lib/erlang -progname erl -- -home /home/nofxx -W -pa spec -sname spec -s spec_server
|
211
|
+
nofxx 4403 4.0 13.4 392108 278704 ? SLl Sep29 241:50 python /usr/lib/exaile/exaile.py --datadir=/usr/share/exaile/data --startgui
|
212
|
+
nofxx 5426 0.0 0.2 9640 4616 pts/7 Ss+ Sep28 0:01 bash
|
213
|
+
couchdb 10908 0.0 0.0 6232 708 ? S Sep26 0:00 /bin/sh -e /usr/bin/couchdb -a \"/etc/couchdb/default.ini\" -a \"/etc/couchdb/local.ini\" -b -r 5 -p /var/run/couchdb/couchdb.pid -o /dev/null -e /dev/null -R
|
214
|
+
couchdb 10931 0.0 0.0 6232 148 ? S Sep26 0:00 /bin/sh -e /usr/bin/couchdb -a \"/etc/couchdb/default.ini\" -a \"/etc/couchdb/local.ini\" -b -r 5 -p /var/run/couchdb/couchdb.pid -o /dev/null -e /dev/null -R
|
215
|
+
couchdb 10932 0.0 0.1 67548 2484 ? Sl Sep26 6:14 /usr/lib/erlang/erts-5.7.1/bin/beam.smp -Bd -K true -- -root /usr/lib/erlang -progname erl -- -home /var/lib/couchdb -noshell -noinput -smp auto -sasl errlog_type error -pa /usr/lib/couchdb/erlang/lib/couch-0.10.0a784601/ebin /usr/lib/couchdb/erlang/lib/mochiweb-r97/ebin /usr/lib/couchdb/erlang/lib/ibrowse-1.4.1/ebin -eval application:load(ibrowse) -eval application:load(crypto) -eval application:load(couch) -eval crypto:start() -eval ibrowse:start() -eval couch_server:start([ "/etc/couchdb/default.ini", "/etc/couchdb/local.ini", "/etc/couchdb/default.ini", "/etc/couchdb/local.ini"]), receive done -> done end. -pidfile /var/run/couchdb/couchdb.pid -heart
|
216
|
+
couchdb 10941 0.0 0.0 1532 380 ? Ss Sep26 0:00 heart -pid 10932 -ht 11
|
217
|
+
nofxx 12033 0.0 0.0 9452 1072 pts/8 Ss Sep28 0:00 bash
|
218
|
+
nofxx 12091 0.0 0.0 6180 840 pts/8 S+ Sep28 0:05 ssh naomi
|
219
|
+
root 12913 0.1 0.1 47768 3972 ? Ssl Sep22 19:38 /usr/lib/erlang/erts-5.7.1/bin/beam.smp -W w -K true -A30 -- -root /usr/lib/erlang -progname erl -- -home /home/nofxx -pa /usr/bin/../ebin -noshell -noinput -s rabbit -sname rabbit -boot start_sasl -kernel inet_default_listen_options [{nodelay,true},{sndbuf,16384},{recbuf,4096}] -kernel inet_default_connect_options [{nodelay,true}] -rabbit tcp_listeners [{"0.0.0.0", 5672}] -sasl errlog_type error -kernel error_logger {file,"/var/log/rabbitmq/rabbit.log"} -sasl sasl_error_logger {file,"/var/log/rabbitmq/rabbit-sasl.log"} -os_mon start_cpu_sup true -os_mon start_disksup false -os_mon start_memsup false -os_mon start_os_sup false -os_mon memsup_system_only true -os_mon system_memory_high_watermark 0.95 -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit" -noshell -noinput
|
220
|
+
root 12962 0.0 0.0 1660 284 ? Ss Sep22 0:00 /usr/lib/erlang/lib/os_mon-2.2.1/priv/bin/cpu_sup
|
221
|
+
root 12963 0.0 0.0 1860 320 ? Ss Sep22 0:00 inet_gethost 4
|
222
|
+
root 12964 0.0 0.0 1908 352 ? S Sep22 0:00 inet_gethost 4
|
223
|
+
nofxx 14054 0.1 1.7 73168 35972 ? S Sep30 6:19 pidgin
|
224
|
+
root 15009 0.0 0.0 6192 404 ? Ss Sep30 0:00 /usr/sbin/sshd
|
225
|
+
nofxx 16716 0.0 0.0 9452 1072 pts/1 Ss Sep28 0:00 bash
|
226
|
+
nofxx 16730 0.0 0.0 6536 828 pts/1 S+ Sep28 0:00 ssh naomi
|
227
|
+
nofxx 20500 0.0 0.2 57484 4712 ? S Sep26 1:09 /usr/bin/ruby /usr/bin/gembox
|
228
|
+
nofxx 23756 3.8 15.8 841728 329360 ? Sl Oct02 35:45 firefox
|
229
|
+
nofxx 23758 0.0 0.1 7556 2716 ? S Oct02 0:01 /usr/lib/GConf/gconfd-2
|
230
|
+
root 25145 0.0 0.0 0 0 ? S Oct02 0:00 [pdflush]
|
231
|
+
nofxx 25594 0.0 0.2 9456 4860 pts/6 Ss Oct02 0:00 bash
|
232
|
+
nofxx 25597 0.0 0.2 9456 5036 pts/10 Ss+ Oct02 0:00 bash
|
233
|
+
nofxx 25631 0.0 0.0 6152 1480 pts/6 S+ Oct02 0:00 ssh tor
|
234
|
+
nofxx 26342 0.0 0.2 9456 4600 pts/11 Ss Oct01 0:00 bash
|
235
|
+
postgres 31170 0.0 0.0 44096 1308 ? S Oct01 0:01 /usr/bin/postgres -D /var/lib/postgres/data
|
236
|
+
postgres 31179 0.0 0.2 44504 5336 ? Ss Oct01 0:06 postgres: writer process
|
237
|
+
postgres 31180 0.0 0.0 44096 592 ? Ss Oct01 0:03 postgres: wal writer process
|
238
|
+
postgres 31181 0.0 0.0 44452 852 ? Ss Oct01 0:03 postgres: autovacuum launcher process
|
239
|
+
postgres 31182 0.0 0.0 12532 684 ? Ss Oct01 0:06 postgres: stats collector process
|
240
|
+
nofxx 31873 0.0 0.2 9456 5096 pts/12 Ss 12:00 0:00 bash
|
241
|
+
nofxx 32343 0.1 2.7 88540 58032 ? S Oct02 2:14 emacs
|
242
|
+
nofxx 32402 0.0 0.0 5972 1452 ? S 12:11 0:00 /bin/sh /usr/bin/thunderbird
|
243
|
+
nofxx 32406 0.0 0.0 5972 1456 ? S 12:11 0:00 /bin/sh /usr/lib/thunderbird-2.0/run-mozilla.sh /usr/lib/thunderbird-2.0/thunderbird-bin
|
244
|
+
nofxx 32411 0.0 2.3 129828 49672 ? Sl 12:11 0:02 /usr/lib/thunderbird-2.0/thunderbird-bin
|
245
|
+
nofxx 32725 0.0 0.7 19432 14924 pts/11 S+ 12:19 0:00 irb
|
246
|
+
PSAUX
|
247
|
+
|
248
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
describe Who do
|
5
|
+
|
6
|
+
|
7
|
+
before do
|
8
|
+
Who.should_receive(:"`").with("who").and_return(WHO)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return users" do
|
12
|
+
Who.all[0][:who].should eql("nofxx")
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
WHO = <<WHO
|
19
|
+
nofxx tty1 2009-10-03 17:17
|
20
|
+
nofxx pts/0 2009-10-03 17:17 (:0.0)
|
21
|
+
nofxx pts/1 2009-10-03 18:58 (:0.0)
|
22
|
+
nofxx pts/2 2009-10-03 18:21 (:0.0)
|
23
|
+
WHO
|
24
|
+
|
25
|
+
end
|