-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathulimit.go
48 lines (40 loc) · 1.08 KB
/
ulimit.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package main
import (
"log"
)
func sanityCheck() {
if v, e := ulimit("-a"); e == nil {
log.Printf(v)
} else {
panic(e)
}
}
func ulimits() map[string]interface{} {
res := map[string]interface{}{}
// -t: cpu time (seconds) unlimited
// -d: data seg size (kb) unlimited
// -s: stack size (kb) 8192
// -c: core file size (blocks) 0
// -m: resident set size (kb) unlimited
// -l: locked memory (kb) 64
// -p: processes 1048576
// -n: file descriptors 1048576
// -v: address space (kb) unlimited
// -w: locks unlimited
// -e: scheduling priority 0
// -r: real-time priority 0
flags := map[string]string{
"-w": "max_locks",
"-n": "max_file_descriptors",
"-p": "max_processes",
}
for flag, field := range flags {
if val, err := ulimit(flag); err == nil {
res[field] = normalizeToInt(val)
}
}
return res
}
func ulimit(flag string) (string, error) {
return executeToString("/bin/sh", "-c", "ulimit "+flag)
}