linux ssh 命令行top,如何通过SSH正确运行“top”命令?

使用此:top -n1b

随着命令行参数顶部b

开始。在“批量”模式,这可能是用于发送从顶部 输出到其他程序或文件是有用的。在这个 模式下,顶部将不会接受输入,并且一直运行,直到您使用'-n'命令行选项设置的迭代限制为 ,或者直到 死亡。

更多帮助信息看man top

BTW -

尼斯代码示例,这是我的版本裁判代码:)

使用MoreLINQ,还需要添加一些代码来返回结果。

static void ParseTop(string contentOfOutput)

{

var line = contentOfOutput.Split('\n');

//parse uptime/user/load.avg

var lineUud = line[0].Substring("top -".Length);

var wordsUud = lineUud.Split(new[] { "up", "load average:", ",", " " }, StringSplitOptions.RemoveEmptyEntries);

//00:00:00 up 0 days, 17:51, 0 users, load average: 0.00, 0.01, 0.05

//^0 ^1 ^2 ^3 ^4 ^5(unused) ^6 ^7 ^8

//00:00:00 up 0 min, 1 user, load average: 0.00, 0.01, 0.05

//^0 ^1 ^2 ^3 ^4(unused) ^5 ^6 ^7

var time = TimeSpan.Parse(wordsUud[0]);

if (wordsUud[2] == "days")

{

var uptime = TimeSpan.Parse(wordsUud[1] + "." + wordsUud[3] + ":00");

var users = int.Parse(wordsUud[4]);

var la1Min = float.Parse(wordsUud[5]);

var la5Min = float.Parse(wordsUud[6]);

var la15Min = float.Parse(wordsUud[7]);

}

else

{

var uptime = TimeSpan.Parse("00:" + wordsUud[1] + ":00");

var users = int.Parse(wordsUud[3]);

var la1Min = float.Parse(wordsUud[4]);

var la5Min = float.Parse(wordsUud[5]);

var la15Min = float.Parse(wordsUud[6]);

}

//parse tasks

var lineTasks = line[1].Substring("Tasks:".Length);

var wordTasks = lineTasks.Split(new[] { "total", "running", "sleeping", "stopped", "zombie", ",", " " }, StringSplitOptions.RemoveEmptyEntries);

//70 total, 1 running, 69 sleeping, 0 stopped, 0 zombie

//^0 ^1 ^2 ^3 ^4

var totalTasks = int.Parse(wordTasks[0]);

var runningTasks = int.Parse(wordTasks[1]);

var sleepingTasks = int.Parse(wordTasks[2]);

var stoppedTasks = int.Parse(wordTasks[3]);

var zombieTasks = int.Parse(wordTasks[4]);

//parse cpu

var cpus = new Dictionary>();

var cpuLineIndex = 2;

string cpuLine;

while ((cpuLine = line[cpuLineIndex]).StartsWith("%Cpu"))

{

var wordCpu = cpuLine.Split(new[] { "%Cpu", ":", ",", " " }, StringSplitOptions.RemoveEmptyEntries);

//%Cpu(s): 0.2 us, 0.6 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st

//%Cpu1 : 0.2 us, 0.6 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st

// ^0 ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 ^11 ^12 ^13 ^14 ^15 ^16

var cpu = new Dictionary();

foreach (var entry in wordCpu.Skip(1).Batch(2).Where(p => p.Count() == 2).Select(p => p.ToArray()))

{

cpu[entry[1]] = float.Parse(entry[0]);

}

cpus[wordCpu[0]] = cpu;

cpuLineIndex++;

}

//parse memory/swap

var memories = new Dictionary>();

var memLineIndex = cpuLineIndex;

string memLine;

while ((memLine = line[memLineIndex]).StartsWith("KiB"))

{

var wordMem = memLine.Split(new[] { "KiB", ":", ",", " " }, StringSplitOptions.RemoveEmptyEntries);

//KiB Mem: 993780 total, 968936 used, 24844 free, 418236 buffers

//KiB Swap: 524284 total, 0 used, 524284 free, 506312 cached

// ^0 ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8

var mem = new Dictionary();

foreach (var entry in wordMem.Skip(1).Batch(2).Where(p => p.Count() == 2).Select(p => p.ToArray()))

{

mem[entry[1]] = int.Parse(entry[0]);

}

memories[wordMem[0]] = mem;

memLineIndex++;

}

//parse process

var process = new List>();

var lineNumOfBlank = Array.IndexOf(line, "");

var headers = line[lineNumOfBlank + 1].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

for (var i = lineNumOfBlank + 2; i < line.Length - 1; i++)

{

var li = line[i];

var strings = li.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

var dic = new Dictionary();

for (var j = 0; j < headers.Length; j++)

{

dic[headers[j]] = strings[j];

}

if (strings.Length > headers.Length) //process name has space?

{

for (var j = headers.Length; j < strings.Length; j++)

{

dic[headers[headers.Length - 1]] += " " + strings[j];

}

}

process.Add(dic);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值