about summary refs log tree commit diff
path: root/Completion/Unix/Command/_top
blob: 10c0e348193a58312b22656da19928365f3fb781 (plain) (blame)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#compdef top

local specs fields

case $OSTYPE in
  *linux*)
    fields=(
      '%CPU:CPU usage' '%MEM:memory usage (res)' 'CGROUPS:control groups'
      'CODE:code size' 'COMMAND:Commane name/line' 'DATA:data + stack size'
      'ENVIRON:environment variables' 'Flags:task flags' 'GID:group id'
      'GROUP:group name' 'NI:nice value' 'P:last used CPU (SMP)'
      'PGRP:process group id' 'PID:process id' 'PPID:parent pid' 'PR:priority'
      'RES:resident memory size' 'RUID:real user id' 'RUSER:real uid'
      'S:process status' 'SHR:shared memory size' 'SID:session id'
      'SUID:saved uid' 'SUPGIDS:supplementary gids'
      'SUPGRPS:supplementary group names' 'SUSER:saved username'
      'SWAP:swapped sized' 'TGID:thread gid' 'TIME:CPU time'
      'TIME+:CPU time (hundredths)' 'TPGID:TTY gid' 'TTY:controlling TTY'
      'UID:user id' 'USED:memory in use' 'USER:user name'
      'VIRT:virtual memory size' 'WCHAN:sleeping in function'
      'nDRT:dirty pages count' 'nMaj:major page count' 'nMin:minor page count'
      'nTH:number of threads' 'nsIPC:IPC namespace' 'nsMNT:MNT namespace'
      'nsNET:NET namespace' 'nsPID:PID namespace' 'nsUSER:USER namespace'
      'nsUTS:UTS namespace' 'vMj:major page fault count delta'
      'vMn:minor page fault count delta'
    )
    specs=(
      '(-v -h)-'{h,v}'[show version and usage]'
      '-b[batch mode]'
      '-c[command line/program name toggle]'
      '-d[delay time interval]:interval'
      '-H[threads mode operation]'
      '-i[idle process toggle]'
      '-n[number of iterations]:number of iterations'
      '-o[override sort field]:fieldname:(( $fields ))'
      '-O[output field names]'
      '*-p[monitor pids]: :_pids'
      '-s[secure mode operation]'
      '-S[cumulative time toggle]'
      '(-U)-u[effective user filter mode]: :_users'
      '(-u)-U[user filter mode]: :_users'
      '-w[output width override]:number'
    );;
  freebsd*)
    specs=(
      '-C[CPU display mode]'
      '-S[show system processes]'
      '-a[display command names via argv]'
      '-b[batch mode]'
      '-H[display individual threads]'
      '-i[interactive mode]'
      '-I[do not display idle processes]'
      '-j[display the jail ID]'
      '-t[do not display the top process]'
      '-m+[statistic type]:type:(( cpu\:default io ))'
      '-n[non-interactive mode]'
      '-P[per-cpu CPU usage statistics]'
      '-q[renice top to -20]'
      '-u[do not translate uid to name]'
      '-v[write version number]'
      '-z[no not display system idle process]'
      '-d+[number of iterations]:count:'
      '-s+[set delay interval]:interval:'
      '-o+[sort process display by field]:field:(
        cpu size res time pri threads total read 
        write fault vcsw ivcsw jid pid
      )'
      '-J+[show processes owned by jail]:jail:_jails -0'
      '-U+[show processes owned by username]: :_users'
      '1: : _message "top number of processes"'
    );;
  openbsd*)
    specs=(
      '-1[combine CPU statistic into one line]'
      '-b[batch mode]'
      '-C[show command arguments as well and process name]'
      '-d[number of iterations]:number of iterations'
      '-g[filter processes by string]:string'
      '-H[display process threads]'
      '-I[do not display idle processes]'
      '-i[interactive mode]'
      '-n[non-interactive mode]'
      '-o[sort display by field]:field:(
        cpu size res time pri pid command
      )'
      '-p[filter by pid]: :_pids'
      '-q[renice top to -20]'
      '-S[show system processes]'
      '-s[delay time interval]:interval'
      '-U[filter processes by user]: :_users -M "L\:|-="'
      '-u[do not map uid to usernames]'
      '1: : _message "top number of processes"'
    );;
esac

if (( $#specs )); then
  _arguments -s -w : "$specs[@]"
  return
fi

_normal