#148 fix: alpine process

This commit is contained in:
lollipopkit
2023-08-28 17:11:58 +08:00
parent e1284feae6
commit e20f2d32e8
5 changed files with 100 additions and 58 deletions

View File

@@ -1,18 +1,16 @@
// Models for `ps -aux`
// Each line
import 'dart:convert';
import '../../../data/res/misc.dart';
/// Some field can be null due to incompatible format on `BSD` and `Alpine`
class Proc {
final String user;
final int pid;
final double cpu;
final double mem;
final String vsz;
final String rss;
final String tty;
final String stat;
final String start;
final double? cpu;
final double? mem;
final String? vsz;
final String? rss;
final String? tty;
final String? stat;
final String? start;
final String time;
final String command;
@@ -65,7 +63,7 @@ class Proc {
@override
String toString() {
return const JsonEncoder.withIndent(' ').convert(toJson());
return jsonEncoder.convert(toJson());
}
String get binary {
@@ -99,10 +97,10 @@ class PsResult {
}
switch (sort) {
case ProcSortMode.cpu:
procs.sort((a, b) => b.cpu.compareTo(a.cpu));
procs.sort((a, b) => b.cpu?.compareTo(a.cpu ?? 0) ?? 0);
break;
case ProcSortMode.mem:
procs.sort((a, b) => b.mem.compareTo(a.mem));
procs.sort((a, b) => b.mem?.compareTo(a.mem ?? 0) ?? 0);
break;
case ProcSortMode.pid:
procs.sort((a, b) => a.pid.compareTo(b.pid));
@@ -110,6 +108,9 @@ class PsResult {
case ProcSortMode.user:
procs.sort((a, b) => a.user.compareTo(b.user));
break;
case ProcSortMode.name:
procs.sort((a, b) => a.binary.compareTo(b.binary));
break;
}
return PsResult(procs: procs, error: err.isEmpty ? null : err);
}
@@ -119,5 +120,7 @@ enum ProcSortMode {
cpu,
mem,
pid,
user;
user,
name,
;
}