📄 output.c
字号:
* and BSD use TTY. The Unix98 headers are: * args,comm,etime,group,nice,pcpu,pgid * pid,ppid,rgroup,ruser,time,tty,user,vsz * * BSD c: "command" becomes accounting name ("comm" or "ucomm") * BSD n: "user" becomes "uid" and "wchan" becomes "nwchan" (number) *//* Justification control for flags field. */#define USER CF_USER // left if text, right if numeric#define LEFT CF_LEFT#define RIGHT CF_RIGHT#define UNLIMITED CF_UNLIMITED#define WCHAN CF_WCHAN // left if text, right if numeric#define SIGNAL CF_SIGNAL // right in 9, or 16 if room#define PIDMAX CF_PIDMAX#define TO CF_PRINT_THREAD_ONLY#define PO CF_PRINT_PROCESS_ONLY#define ET CF_PRINT_EVERY_TIME#define AN CF_PRINT_AS_NEEDED // no idea/* short names to save space */#define MEM PROC_FILLMEM /* read statm */#define ARG PROC_FILLARG /* read cmdline (cleared if c option) */#define COM PROC_FILLCOM /* read cmdline (cleared if not -f option) */#define ENV PROC_FILLENV /* read environ */#define USR PROC_FILLUSR /* uid_t -> user names */#define GRP PROC_FILLGRP /* gid_t -> group names */#define WCH PROC_FILLWCHAN /* do WCHAN lookup *//* TODO * pull out annoying BSD aliases into another table (to macro table?) * add sorting functions here (to unify names) *//* temporary hack -- mark new stuff grabbed from Debian ps */#define LNx LNX/* there are about 211 listed *//* Many of these are placeholders for unsupported options. */static const format_struct format_array[] = {/* code header print() sort() width need vendor flags */{"%cpu", "%CPU", pr_pcpu, sr_pcpu, 4, 0, BSD, ET|RIGHT}, /*pcpu*/{"%mem", "%MEM", pr_pmem, sr_nop, 4, 0, BSD, PO|RIGHT}, /*pmem*/{"_left", "LLLLLLLL", pr_t_left, sr_nop, 8, 0, TST, ET|LEFT},{"_left2", "L2L2L2L2", pr_t_left2, sr_nop, 8, 0, TST, ET|LEFT},{"_right", "RRRRRRRRRRR", pr_t_right, sr_nop, 11, 0, TST, ET|RIGHT},{"_right2", "R2R2R2R2R2R", pr_t_right2, sr_nop, 11, 0, TST, ET|RIGHT},{"_unlimited","U", pr_t_unlimited, sr_nop, 16, 0, TST, ET|UNLIMITED},{"_unlimited2","U2", pr_t_unlimited2, sr_nop, 16, 0, TST, ET|UNLIMITED},{"acflag", "ACFLG", pr_nop, sr_nop, 5, 0, XXX, AN|RIGHT}, /*acflg*/{"acflg", "ACFLG", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*acflag*/{"addr", "ADDR", pr_nop, sr_nop, 4, 0, XXX, AN|RIGHT},{"addr_1", "ADDR", pr_nop, sr_nop, 1, 0, LNX, AN|LEFT},{"alarm", "ALARM", pr_alarm, sr_alarm, 5, 0, LNX, AN|RIGHT},{"argc", "ARGC", pr_nop, sr_nop, 4, 0, LNX, PO|RIGHT},{"args", "COMMAND", pr_args, sr_cmd, 27, ARG, U98, PO|UNLIMITED}, /*command*/{"atime", "TIME", pr_time, sr_nop, 8, 0, SOE, ET|RIGHT}, /*cputime*/ /* was 6 wide */{"blocked", "BLOCKED", pr_sigmask, sr_nop, 9, 0, BSD, TO|SIGNAL}, /*sigmask*/{"bnd", "BND", pr_nop, sr_nop, 1, 0, AIX, TO|RIGHT},{"bsdstart", "START", pr_bsdstart, sr_nop, 6, 0, LNX, ET|RIGHT},{"bsdtime", "TIME", pr_bsdtime, sr_nop, 6, 0, LNX, ET|RIGHT},{"c", "C", pr_c, sr_pcpu, 2, 0, SUN, ET|RIGHT},{"caught", "CAUGHT", pr_sigcatch, sr_nop, 9, 0, BSD, TO|SIGNAL}, /*sigcatch*/{"class", "CLS", pr_class, sr_sched, 3, 0, XXX, TO|LEFT},{"cls", "CLS", pr_class, sr_sched, 3, 0, HPU, TO|RIGHT}, /*says HPUX or RT*/{"cmaj_flt", "-", pr_nop, sr_cmaj_flt, 1, 0, LNX, AN|RIGHT},{"cmd", "CMD", pr_args, sr_cmd, 27, ARG, DEC, PO|UNLIMITED}, /*ucomm*/{"cmin_flt", "-", pr_nop, sr_cmin_flt, 1, 0, LNX, AN|RIGHT},{"cnswap", "-", pr_nop, sr_nop, 1, 0, LNX, AN|RIGHT},{"comm", "COMMAND", pr_comm, sr_cmd, 15, COM, U98, PO|UNLIMITED}, /*ucomm*/{"command", "COMMAND", pr_args, sr_cmd, 27, ARG, XXX, PO|UNLIMITED}, /*args*/{"context", "CONTEXT", pr_context, sr_nop, 31, 0, LNX, ET|LEFT},{"cp", "CP", pr_cp, sr_pcpu, 3, 0, DEC, ET|RIGHT}, /*cpu*/{"cpu", "CPU", pr_nop, sr_nop, 3, 0, BSD, AN|RIGHT}, /* FIXME ... HP-UX wants this as the CPU number for SMP? */{"cpuid", "CPUID", pr_psr, sr_nop, 5, 0, BSD, TO|RIGHT}, // OpenBSD: 8 wide!{"cputime", "TIME", pr_time, sr_nop, 8, 0, DEC, ET|RIGHT}, /*time*/{"cstime", "-", pr_nop, sr_cstime, 1, 0, LNX, AN|RIGHT},{"ctid", "CTID", pr_nop, sr_nop, 5, 0, SUN, ET|RIGHT}, // resource contracts?{"cursig", "CURSIG", pr_nop, sr_nop, 6, 0, DEC, AN|RIGHT},{"cutime", "-", pr_nop, sr_cutime, 1, 0, LNX, AN|RIGHT},{"cwd", "CWD", pr_nop, sr_nop, 3, 0, LNX, AN|LEFT},{"drs", "DRS", pr_drs, sr_drs, 5, MEM, LNX, PO|RIGHT},{"dsiz", "DSIZ", pr_dsiz, sr_nop, 4, 0, LNX, PO|RIGHT},{"egid", "EGID", pr_egid, sr_egid, 5, 0, LNX, ET|RIGHT},{"egroup", "EGROUP", pr_egroup, sr_egroup, 8, GRP, LNX, ET|USER},{"eip", "EIP", pr_eip, sr_kstk_eip, 8, 0, LNX, TO|RIGHT},{"emul", "EMUL", pr_nop, sr_nop, 13, 0, BSD, PO|LEFT}, /* "FreeBSD ELF32" and such */{"end_code", "E_CODE", pr_nop, sr_end_code, 8, 0, LNx, PO|RIGHT},{"environ","ENVIRONMENT",pr_nop, sr_nop, 11, ENV, LNx, PO|UNLIMITED},{"esp", "ESP", pr_esp, sr_kstk_esp, 8, 0, LNX, TO|RIGHT},{"etime", "ELAPSED", pr_etime, sr_nop, 11, 0, U98, ET|RIGHT}, /* was 7 wide */{"euid", "EUID", pr_euid, sr_euid, 5, 0, LNX, ET|RIGHT},{"euser", "EUSER", pr_euser, sr_euser, 8, USR, LNX, ET|USER},{"f", "F", pr_flag, sr_flags, 1, 0, XXX, ET|RIGHT}, /*flags*/{"fgid", "FGID", pr_fgid, sr_fgid, 5, 0, LNX, ET|RIGHT},{"fgroup", "FGROUP", pr_fgroup, sr_fgroup, 8, GRP, LNX, ET|USER},{"flag", "F", pr_flag, sr_flags, 1, 0, DEC, ET|RIGHT},{"flags", "F", pr_flag, sr_flags, 1, 0, BSD, ET|RIGHT}, /*f*/ /* was FLAGS, 8 wide */{"fname", "COMMAND", pr_fname, sr_nop, 8, 0, SUN, PO|LEFT},{"fsgid", "FSGID", pr_fgid, sr_fgid, 5, 0, LNX, ET|RIGHT},{"fsgroup", "FSGROUP", pr_fgroup, sr_fgroup, 8, GRP, LNX, ET|USER},{"fsuid", "FSUID", pr_fuid, sr_fuid, 5, 0, LNX, ET|RIGHT},{"fsuser", "FSUSER", pr_fuser, sr_fuser, 8, USR, LNX, ET|USER},{"fuid", "FUID", pr_fuid, sr_fuid, 5, 0, LNX, ET|RIGHT},{"fuser", "FUSER", pr_fuser, sr_fuser, 8, USR, LNX, ET|USER},{"gid", "GID", pr_egid, sr_egid, 5, 0, SUN, ET|RIGHT},{"group", "GROUP", pr_egroup, sr_egroup, 8, GRP, U98, ET|USER},{"iac", "IAC", pr_nop, sr_nop, 4, 0, BSD, AN|RIGHT}, // DragonFly{"ignored", "IGNORED", pr_sigignore,sr_nop, 9, 0, BSD, TO|SIGNAL}, /*sigignore*/{"inblk", "INBLK", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*inblock*/{"inblock", "INBLK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT}, /*inblk*/{"intpri", "PRI", pr_opri, sr_priority, 3, 0, HPU, TO|RIGHT},{"jid", "JID", pr_nop, sr_nop, 1, 0, SGI, PO|RIGHT},{"jobc", "JOBC", pr_nop, sr_nop, 4, 0, XXX, AN|RIGHT},{"ktrace", "KTRACE", pr_nop, sr_nop, 8, 0, BSD, AN|RIGHT},{"ktracep", "KTRACEP", pr_nop, sr_nop, 8, 0, BSD, AN|RIGHT},{"label", "LABEL", pr_context, sr_nop, 31, 0, SGI, ET|LEFT},{"lastcpu", "C", pr_psr, sr_nop, 3, 0, BSD, TO|RIGHT}, // DragonFly{"lim", "LIM", pr_lim, sr_rss_rlim, 5, 0, BSD, AN|RIGHT},{"login", "LOGNAME", pr_nop, sr_nop, 8, 0, BSD, AN|LEFT}, /*logname*/ /* double check */{"logname", "LOGNAME", pr_nop, sr_nop, 8, 0, XXX, AN|LEFT}, /*login*/{"longtname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, PO|LEFT},{"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, ET|RIGHT},{"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, ET|RIGHT}, /* login ID */{"luser", "LUSER", pr_nop, sr_nop, 8, USR, LNX, ET|USER}, /* login USER */{"lwp", "LWP", pr_thread, sr_tid, 5, 0, SUN, TO|PIDMAX|RIGHT},{"m_drs", "DRS", pr_drs, sr_drs, 5, MEM, LNx, PO|RIGHT},{"m_dt", "DT", pr_nop, sr_dt, 4, MEM, LNx, PO|RIGHT},{"m_lrs", "LRS", pr_nop, sr_lrs, 5, MEM, LNx, PO|RIGHT},{"m_resident", "RES", pr_nop, sr_resident, 5,MEM, LNx, PO|RIGHT},{"m_share", "SHRD", pr_nop, sr_share, 5, MEM, LNx, PO|RIGHT},{"m_size", "SIZE", pr_size, sr_size, 5, MEM, LNX, PO|RIGHT},{"m_swap", "SWAP", pr_nop, sr_nop, 5, 0, LNx, PO|RIGHT},{"m_trs", "TRS", pr_trs, sr_trs, 5, MEM, LNx, PO|RIGHT},{"maj_flt", "MAJFL", pr_majflt, sr_maj_flt, 6, 0, LNX, AN|RIGHT},{"majflt", "MAJFLT", pr_majflt, sr_maj_flt, 6, 0, XXX, AN|RIGHT},{"min_flt", "MINFL", pr_minflt, sr_min_flt, 6, 0, LNX, AN|RIGHT},{"minflt", "MINFLT", pr_minflt, sr_min_flt, 6, 0, XXX, AN|RIGHT},{"msgrcv", "MSGRCV", pr_nop, sr_nop, 6, 0, XXX, AN|RIGHT},{"msgsnd", "MSGSND", pr_nop, sr_nop, 6, 0, XXX, AN|RIGHT},{"mwchan", "MWCHAN", pr_nop, sr_nop, 6, WCH, BSD, TO|WCHAN}, /* mutex (FreeBSD) */{"ni", "NI", pr_nice, sr_nice, 3, 0, BSD, TO|RIGHT}, /*nice*/{"nice", "NI", pr_nice, sr_nice, 3, 0, U98, TO|RIGHT}, /*ni*/{"nivcsw", "IVCSW", pr_nop, sr_nop, 5, 0, XXX, AN|RIGHT},{"nlwp", "NLWP", pr_nlwp, sr_nlwp, 4, 0, SUN, PO|RIGHT},{"nsignals", "NSIGS", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT}, /*nsigs*/{"nsigs", "NSIGS", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*nsignals*/{"nswap", "NSWAP", pr_nop, sr_nop, 5, 0, XXX, AN|RIGHT},{"nvcsw", "VCSW", pr_nop, sr_nop, 5, 0, XXX, AN|RIGHT},{"nwchan", "WCHAN", pr_nwchan, sr_nop, 6, 0, XXX, TO|RIGHT},{"opri", "PRI", pr_opri, sr_priority, 3, 0, SUN, TO|RIGHT},{"osz", "SZ", pr_nop, sr_nop, 2, 0, SUN, PO|RIGHT},{"oublk", "OUBLK", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*oublock*/{"oublock", "OUBLK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT}, /*oublk*/{"p_ru", "P_RU", pr_nop, sr_nop, 6, 0, BSD, AN|RIGHT},{"paddr", "PADDR", pr_nop, sr_nop, 6, 0, BSD, AN|RIGHT},{"pagein", "PAGEIN", pr_majflt, sr_maj_flt, 6, 0, XXX, AN|RIGHT},{"pcpu", "%CPU", pr_pcpu, sr_pcpu, 4, 0, U98, ET|RIGHT}, /*%cpu*/{"pending", "PENDING", pr_sig, sr_nop, 9, 0, BSD, ET|SIGNAL}, /*sig*/{"pgid", "PGID", pr_pgid, sr_pgrp, 5, 0, U98, PO|PIDMAX|RIGHT},{"pgrp", "PGRP", pr_pgid, sr_pgrp, 5, 0, LNX, PO|PIDMAX|RIGHT},{"pid", "PID", pr_pid, sr_tgid, 5, 0, U98, PO|PIDMAX|RIGHT},{"pmem", "%MEM", pr_pmem, sr_nop, 4, 0, XXX, PO|RIGHT}, /*%mem*/{"poip", "-", pr_nop, sr_nop, 1, 0, BSD, AN|RIGHT},{"policy", "POL", pr_class, sr_sched, 3, 0, DEC, TO|LEFT},{"ppid", "PPID", pr_ppid, sr_ppid, 5, 0, U98, PO|PIDMAX|RIGHT},{"pri", "PRI", pr_pri, sr_nop, 3, 0, XXX, TO|RIGHT},{"pri_api", "API", pr_pri_api, sr_nop, 3, 0, LNX, TO|RIGHT},{"pri_bar", "BAR", pr_pri_bar, sr_nop, 3, 0, LNX, TO|RIGHT},{"pri_baz", "BAZ", pr_pri_baz, sr_nop, 3, 0, LNX, TO|RIGHT},{"pri_foo", "FOO", pr_pri_foo, sr_nop, 3, 0, LNX, TO|RIGHT},{"priority", "PRI", pr_priority, sr_priority, 3, 0, LNX, TO|RIGHT},{"prmgrp", "PRMGRP", pr_nop, sr_nop, 12, 0, HPU, PO|RIGHT},{"prmid", "PRMID", pr_nop, sr_nop, 12, 0, HPU, PO|RIGHT},{"project", "PROJECT", pr_nop, sr_nop, 12, 0, SUN, PO|LEFT}, // see prm* andctid{"projid", "PROJID", pr_nop, sr_nop, 5, 0, SUN, PO|RIGHT},{"pset", "PSET", pr_nop, sr_nop, 4, 0, DEC, TO|RIGHT},{"psr", "PSR", pr_psr, sr_nop, 3, 0, DEC, TO|RIGHT},{"psxpri", "PPR", pr_nop, sr_nop, 3, 0, DEC, TO|RIGHT},{"re", "RE", pr_nop, sr_nop, 3, 0, BSD, AN|RIGHT},{"resident", "RES", pr_nop, sr_resident, 5,MEM, LNX, PO|RIGHT},{"rgid", "RGID", pr_rgid, sr_rgid, 5, 0, XXX, ET|RIGHT},{"rgroup", "RGROUP", pr_rgroup, sr_rgroup, 8, GRP, U98, ET|USER}, /* was 8 wide */{"rlink", "RLINK", pr_nop, sr_nop, 8, 0, BSD, AN|RIGHT},{"rss", "RSS", pr_rss, sr_rss, 5, 0, XXX, PO|RIGHT}, /* was 5 wide */{"rssize", "RSS", pr_rss, sr_vm_rss, 5, 0, DEC, PO|RIGHT}, /*rsz*/{"rsz", "RSZ", pr_rss, sr_vm_rss, 5, 0, BSD, PO|RIGHT}, /*rssize*/{"rtprio", "RTPRIO", pr_rtprio, sr_rtprio, 6, 0, BSD, TO|RIGHT},{"ruid", "RUID", pr_ruid, sr_ruid, 5, 0, XXX, ET|RIGHT},{"ruser", "RUSER", pr_ruser, sr_ruser, 8, USR, U98, ET|USER},{"s", "S", pr_s, sr_state, 1, 0, SUN, TO|LEFT}, /*stat,state*/{"sched", "SCH", pr_sched, sr_sched, 3, 0, AIX, TO|RIGHT},{"scnt", "SCNT", pr_nop, sr_nop, 4, 0, DEC, AN|RIGHT}, /* man page misspelling of scount? */{"scount", "SC", pr_nop, sr_nop, 4, 0, AIX, AN|RIGHT}, /* scnt==scount, DEC claims both */{"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT},{"session", "SESS", pr_sess, sr_session, 5, 0, LNX, PO|PIDMAX|RIGHT},{"sgi_p", "P", pr_sgi_p, sr_nop, 1, 0, LNX, TO|RIGHT}, /* "cpu" number */{"sgi_rss", "RSS", pr_rss, sr_nop, 4, 0, LNX, PO|LEFT}, /* SZ:RSS */{"sgid", "SGID", pr_sgid, sr_sgid, 5, 0, LNX, ET|RIGHT},{"sgroup", "SGROUP", pr_sgroup, sr_sgroup, 8, GRP, LNX, ET|USER},{"share", "-", pr_nop, sr_share, 1, MEM, LNX, PO|RIGHT},{"sid", "SID", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT}, /* Sun & HP */{"sig", "PENDING", pr_sig, sr_nop, 9, 0, XXX, ET|SIGNAL}, /*pending*/{"sig_block", "BLOCKED", pr_sigmask, sr_nop, 9, 0, LNX, TO|SIGNAL},{"sig_catch", "CATCHED", pr_sigcatch, sr_nop, 9, 0, LNX, TO|SIGNAL},{"sig_ignore", "IGNORED",pr_sigignore, sr_nop, 9, 0, LNX, TO|SIGNAL},{"sig_pend", "SIGNAL", pr_sig, sr_nop, 9, 0, LNX, ET|SIGNAL},{"sigcatch", "CAUGHT", pr_sigcatch, sr_nop, 9, 0, XXX, TO|SIGNAL}, /*caught*/{"sigignore", "IGNORED", pr_sigignore,sr_nop, 9, 0, XXX, TO|SIGNAL}, /*ignored*/{"sigmask", "BLOCKED", pr_sigmask, sr_nop, 9, 0, XXX, TO|SIGNAL}, /*blocked*/{"size", "SZ", pr_swapable, sr_swapable, 5, 0, SCO, PO|RIGHT},{"sl", "SL", pr_nop, sr_nop, 3, 0, XXX, AN|RIGHT},{"spid", "SPID", pr_thread, sr_tid, 5, 0, SGI, TO|PIDMAX|RIGHT},{"stackp", "STACKP", pr_stackp, sr_start_stack, 8, 0, LNX, PO|RIGHT}, /*start_stack*/{"start", "STARTED", pr_start, sr_nop, 8, 0, XXX, ET|RIGHT},{"start_code", "S_CODE", pr_nop, sr_start_code, 8, 0, LNx, PO|RIGHT},{"start_stack", "STACKP", pr_stackp, sr_start_stack, 8, 0, LNX, PO|RIGHT}, /*stackp*/{"start_time", "START", pr_stime, sr_start_time, 5, 0, LNx, ET|RIGHT},{"stat", "STAT", pr_stat, sr_state, 4, 0, BSD, TO|LEFT}, /*state,s*/{"state", "S", pr_s, sr_state, 1, 0, XXX, TO|LEFT}, /*stat,s*/ /* was STAT */{"status", "STATUS", pr_nop, sr_nop, 6, 0, DEC, AN|RIGHT},{"stime", "STIME", pr_stime, sr_stime, 5, 0, XXX, ET|RIGHT}, /* was 6 wide */{"suid", "SUID", pr_suid, sr_suid, 5, 0, LNx, ET|RIGHT},{"suser", "SUSER", pr_suser, sr_suser, 8, USR, LNx, ET|USER},{"svgid", "SVGID", pr_sgid, sr_sgid, 5, 0, XXX, ET|RIGHT},{"svgroup", "SVGROUP", pr_sgroup, sr_sgroup, 8, GRP, LNX, ET|USER},{"svuid", "SVUID", pr_suid, sr_suid, 5, 0, XXX, ET|RIGHT},{"svuser", "SVUSER", pr_suser, sr_suser, 8, USR, LNX, ET|USER},{"systime", "SYSTEM", pr_nop, sr_nop, 6, 0, DEC, ET|RIGHT},{"sz", "SZ", pr_sz, sr_nop, 5, 0, HPU, PO|RIGHT},{"taskid", "TASKID", pr_nop, sr_nop, 5, 0, SUN, TO|PIDMAX|RIGHT}, // is this a thread ID?{"tdev", "TDEV", pr_nop, sr_nop, 4, 0, XXX, AN|RIGHT},{"thcount", "THCNT", pr_nlwp, sr_nlwp, 5, 0, AIX, PO|RIGHT},{"tid", "TID", pr_thread, sr_tid, 5, 0, AIX, TO|PIDMAX|RIGHT},{"time", "TIME", pr_time, sr_nop, 8, 0, U98, ET|RIGHT}, /*cputime*/ /* was 6 wide */{"timeout", "TMOUT", pr_nop, sr_nop, 5, 0, LNX, AN|RIGHT}, // 2.0.xx era{"tmout", "TMOUT", pr_nop, sr_nop, 5, 0, LNX, AN|RIGHT}, // 2.0.xx era{"tname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, PO|LEFT},{"tpgid", "TPGID", pr_tpgid, sr_tpgid, 5, 0, XXX, PO|PIDMAX|RIGHT},{"trs", "TRS", pr_trs, sr_trs, 4, MEM, AIX, PO|RIGHT},{"trss", "TRSS", pr_trs, sr_trs, 4, MEM, BSD, PO|RIGHT}, /* 4.3BSD NET/2 */{"tsess", "TSESS", pr_nop, sr_nop, 5, 0, BSD, PO|PIDMAX|RIGHT},{"tsession", "TSESS", pr_nop, sr_nop, 5, 0, DEC, PO|PIDMAX|RIGHT},{"tsid", "TSID", pr_nop, sr_nop, 5, 0, BSD, PO|PIDMAX|RIGHT},{"tsiz", "TSIZ", pr_tsiz, sr_nop, 4, 0, BSD, PO|RIGHT},{"tt", "TT", pr_tty8, sr_tty, 8, 0, BSD, PO|LEFT},{"tty", "TT", pr_tty8, sr_tty, 8, 0, U98, PO|LEFT}, /* Unix98 requires "TT" but has "TTY" too. :-( */ /* was 3 wide */{"tty4", "TTY", pr_tty4, sr_tty, 4, 0, LNX, PO|LEFT},{"tty8", "TTY", pr_tty8, sr_tty, 8, 0, LNX, PO|LEFT},{"u_procp", "UPROCP", pr_nop, sr_nop, 6, 0, DEC, AN|RIGHT},{"ucmd", "CMD", pr_comm, sr_cmd, 15, COM, DEC, PO|UNLIMITED}, /*ucomm*/{"ucomm", "COMMAND", pr_comm, sr_cmd, 15, COM, XXX, PO|UNLIMITED}, /*comm*/{"uid", "UID", pr_euid, sr_euid, 5, 0, XXX, ET|RIGHT},{"uid_hack", "UID", pr_euser, sr_euser, 8, USR, XXX, ET|USER},{"umask", "UMASK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT},{"uname", "USER", pr_euser, sr_euser, 8, USR, DEC, ET|USER}, /* man page misspelling of user? */{"upr", "UPR", pr_nop, sr_nop, 3, 0, BSD, TO|RIGHT}, /*usrpri*/{"uprocp", "UPROCP", pr_nop, sr_nop, 8, 0, BSD, AN|RIGHT},{"user", "USER", pr_euser, sr_euser, 8, USR, U98, ET|USER}, /* BSD n forces this to UID */{"usertime", "USER", pr_nop, sr_nop, 4, 0, DEC, ET|RIGHT},{"usrpri", "UPR", pr_nop, sr_nop, 3, 0, DEC, TO|RIGHT}, /*upr*/{"util", "C", pr_c, sr_pcpu, 2, 0, SGI, ET|RIGHT}, // not sure about "C"{"utime", "UTIME", pr_nop, sr_utime, 6, 0, LNx, ET|RIGHT},{"vm_data", "DATA", pr_nop, sr_vm_data, 5, 0, LNx, PO|RIGHT},{"vm_exe", "EXE", pr_nop, sr_vm_exe, 5, 0, LNx, PO|RIGHT},{"vm_lib", "LIB", pr_nop, sr_vm_lib, 5, 0, LNx, PO|RIGHT},{"vm_lock", "LCK", pr_nop, sr_vm_lock, 3, 0, LNx, PO|RIGHT},{"vm_stack", "STACK", pr_nop, sr_vm_stack, 5, 0, LNx, PO|RIGHT},{"vsize", "VSZ", pr_vsz, sr_vsize, 6, 0, DEC, PO|RIGHT}, /*vsz*/{"vsz", "VSZ", pr_vsz, sr_vm_size, 6, 0, U98, PO|RIGHT}, /*vsize*/{"wchan", "WCHAN", pr_wchan, sr_wchan, 6, WCH, XXX, TO|WCHAN}, /* BSD n forces this to nwchan */ /* was 10 wide */{"wname", "WCHAN", pr_wname, sr_nop, 6, WCH, SGI, TO|WCHAN}, /* opposite of nwchan */{"xstat", "XSTAT", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT},{"zone", "ZONE", pr_context, sr_nop, 31, 0, SUN, ET|LEFT}, // Solaris zone == Linux context?{"zoneid", "ZONEID", pr_nop, sr_nop, 31, 0, SUN, ET|RIGHT},// Linux only offers context names{"~", "-", pr_nop, sr_nop, 1, 0, LNX, AN|RIGHT} /* NULL would ruin alphabetical order */};#undef USER#undef LEFT#undef RIGHT#undef UNLIMITED#undef WCHAN#undef SIGNAL#undef PIDMAX#undef PO#undef TO#undef AN#undef ETstatic const int format_array_count = sizeof(format_array)/sizeof(format_struct);/****************************** Macro formats *******************************//* First X field may be NR, which is p->start_code>>26 printed with %2ld *//* That seems useless though, and Debian already killed it. *//* The ones marked "Digital" have the name defined, not just the data. */static const macro_struct macro_array[] = {{"DFMT", "pid,tname,state,cputime,cmd"}, /* Digital's default */{"Def
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -