Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Canread
Gopsutil
提交
abb40865
G
Gopsutil
项目概览
Canread
/
Gopsutil
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gopsutil
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
abb40865
编写于
8月 15, 2015
作者:
W
WAKAYAMA shirou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
host[freebsd]: change to use utmpx for 9.0 or later.
上级
1223e289
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
71 addition
and
14 deletion
+71
-14
docker/docker_notlinux.go
docker/docker_notlinux.go
+0
-1
host/host_freebsd.go
host/host_freebsd.go
+51
-9
host/host_freebsd_amd64.go
host/host_freebsd_amd64.go
+16
-3
host/types_freebsd.go
host/types_freebsd.go
+4
-1
未找到文件。
docker/docker_notlinux.go
浏览文件 @
abb40865
...
...
@@ -5,7 +5,6 @@ package docker
import
(
"encoding/json"
"github.com/shirou/gopsutil/common"
"github.com/shirou/gopsutil/cpu"
)
...
...
host/host_freebsd.go
浏览文件 @
abb40865
...
...
@@ -77,9 +77,13 @@ func BootTime() (int64, error) {
}
func
Users
()
([]
UserStat
,
error
)
{
utmpfile
:=
"/var/run/utmp"
var
ret
[]
UserStat
utmpfile
:=
"/var/run/utx.active"
if
!
common
.
PathExists
(
utmpfile
)
{
utmpfile
=
"/var/run/utmp"
// before 9.0
return
getUsersFromUtmp
(
utmpfile
)
}
var
ret
[]
UserStat
file
,
err
:=
os
.
Open
(
utmpfile
)
if
err
!=
nil
{
return
ret
,
err
...
...
@@ -90,24 +94,25 @@ func Users() ([]UserStat, error) {
return
ret
,
err
}
u
:=
Utmp
{}
entrySize
:=
int
(
unsafe
.
Sizeof
(
u
))
u
:=
Utmpx
{}
entrySize
:=
int
(
unsafe
.
Sizeof
(
u
))
-
3
entrySize
=
197
// TODO: why should 197
count
:=
len
(
buf
)
/
entrySize
for
i
:=
0
;
i
<
count
;
i
++
{
b
:=
buf
[
i
*
entrySize
:
i
*
entrySize
+
entrySize
]
var
u
Utmp
var
u
Utmpx
br
:=
bytes
.
NewReader
(
b
)
err
:=
binary
.
Read
(
br
,
binary
.
LittleEndian
,
&
u
)
if
err
!=
nil
||
u
.
T
ime
==
0
{
if
err
!=
nil
||
u
.
T
ype
!=
4
{
continue
}
sec
:=
(
binary
.
LittleEndian
.
Uint32
(
u
.
Tv
.
Sec
[
:
]))
/
2
// TODO:
user
:=
UserStat
{
User
:
common
.
IntToString
(
u
.
Name
[
:
]),
User
:
common
.
IntToString
(
u
.
User
[
:
]),
Terminal
:
common
.
IntToString
(
u
.
Line
[
:
]),
Host
:
common
.
IntToString
(
u
.
Host
[
:
]),
Started
:
int
(
u
.
Time
),
Started
:
int
(
sec
),
}
ret
=
append
(
ret
,
user
)
...
...
@@ -141,3 +146,40 @@ func GetVirtualization() (string, string, error) {
return
system
,
role
,
nil
}
// before 9.0
func
getUsersFromUtmp
(
utmpfile
string
)
([]
UserStat
,
error
)
{
var
ret
[]
UserStat
file
,
err
:=
os
.
Open
(
utmpfile
)
if
err
!=
nil
{
return
ret
,
err
}
buf
,
err
:=
ioutil
.
ReadAll
(
file
)
if
err
!=
nil
{
return
ret
,
err
}
u
:=
Utmp
{}
entrySize
:=
int
(
unsafe
.
Sizeof
(
u
))
count
:=
len
(
buf
)
/
entrySize
for
i
:=
0
;
i
<
count
;
i
++
{
b
:=
buf
[
i
*
entrySize
:
i
*
entrySize
+
entrySize
]
var
u
Utmp
br
:=
bytes
.
NewReader
(
b
)
err
:=
binary
.
Read
(
br
,
binary
.
LittleEndian
,
&
u
)
if
err
!=
nil
||
u
.
Time
==
0
{
continue
}
user
:=
UserStat
{
User
:
common
.
IntToString
(
u
.
Name
[
:
]),
Terminal
:
common
.
IntToString
(
u
.
Line
[
:
]),
Host
:
common
.
IntToString
(
u
.
Host
[
:
]),
Started
:
int
(
u
.
Time
),
}
ret
=
append
(
ret
,
user
)
}
return
ret
,
nil
}
host/host_freebsd_amd64.go
浏览文件 @
abb40865
// +build freebsd
// +build amd64
// Created by cgo -godefs - DO NOT EDIT
// cgo -godefs
host/
types_freebsd.go
// cgo -godefs types_freebsd.go
package
host
...
...
@@ -26,3 +24,18 @@ type Utmp struct {
Host
[
16
]
int8
Time
int32
}
type
Utmpx
struct
{
Type
int16
Tv
Timeval
Id
[
8
]
int8
Pid
int32
User
[
32
]
int8
Line
[
16
]
int8
Host
[
125
]
int8
// Host [128]int8
// X__ut_spare [64]int8
}
type
Timeval
struct
{
Sec
[
4
]
byte
Usec
[
3
]
byte
}
host/types_freebsd.go
浏览文件 @
abb40865
...
...
@@ -9,7 +9,8 @@ package host
/*
#define KERNEL
#include <sys/types.h>
#include <utmp.h>
#include <sys/time.h>
#include <utmpx.h>
enum {
sizeofPtr = sizeof(void*),
...
...
@@ -38,3 +39,5 @@ type (
)
type
Utmp
C
.
struct_utmp
type
Utmpx
C
.
struct_utmpx
type
Timeval
C
.
struct_timeval
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录