| .TH "HTOP" "1" "2023" "@PACKAGE_STRING@" "Utils" |
| .SH "NAME" |
| htop \- interactive process viewer |
| .SH "SYNOPSIS" |
| .LP |
| .B htop [\fIOPTIONS\fR] |
| .SH "DESCRIPTION" |
| .LP |
| Htop is a free (GPL) ncurses-based process viewer and system monitor for |
| Unix-like systems. |
| .LP |
| It is similar to top, but allows you to scroll vertically and horizontally, |
| so you can see all the processes running on the system, along with their full |
| command lines, as well as viewing them as a process tree, selecting multiple |
| processes and acting on them all at once. |
| .LP |
| Tasks related to processes (killing, renicing) can be done without |
| entering their PIDs. |
| .br |
| .SH "COMMAND-LINE OPTIONS" |
| .LP |
| Mandatory arguments to long options are mandatory for short options too. |
| .LP |
| .TP |
| \fB\-d, \-\-delay \fIDELAY\fR |
| Delay between updates, in tenths of seconds. If the delay value is |
| less than 1 it is increased to 1, i.e. 1/10 second. If the delay value |
| is greater than 100, it is decreased to 100, i.e. 10 seconds. |
| .TP |
| \fB\-C, \-\-no-color, \-\-no-colour\fR |
| Start htop in monochrome mode |
| .TP |
| \fB\-h, \-\-help |
| Display a help message and exit |
| .TP |
| \fB\-p, \-\-pid \fIPID\fR[\fB,\fIPID...\fR] |
| Show only the given PIDs |
| .TP |
| \fB\-s, \-\-sort\-key \fICOLUMN\fR |
| Sort by this column (use \-\-sort\-key help for a column list) |
| .TP |
| \fB\-u, \-\-user \fIUSERNAME\fR |
| Show only the processes of a given user |
| .TP |
| \fB\-v, \-\-version |
| Output version information and exit |
| .TP |
| \fB\-t, \-\-tree |
| Show processes in tree view |
| @disk_stats_man_page_paragraph@ |
| .TP |
| \fB\-\-explicit-delay |
| Explicitly delay between updates; this could be useful to workaround ncurses |
| timer issues when the system time is changed |
| .PP |
| .br |
| .SH "INTERACTIVE COMMANDS" |
| .LP |
| The following commands are supported while in htop: |
| .LP |
| .TP 5 |
| .B Up, Alt-k |
| Select (highlight) the previous process in the process list. Scroll the list |
| if necessary. |
| .TP |
| .B Down, Alt-j |
| Select (highlight) the next process in the process list. Scroll the list if |
| necessary. |
| .TP |
| .B Left, Alt-h |
| Scroll the process list left. |
| .TP |
| .B Right, Alt-l |
| Scroll the process list right. |
| .TP |
| .B PgUp, PgDn |
| Scroll the process list up or down one window. |
| .TP |
| .B Home |
| Scroll to the top of the process list and select the first process. |
| .TP |
| .B End |
| Scroll to the bottom of the process list and select the last process. |
| .TP |
| .B Ctrl-A, ^ |
| Scroll left to the beginning of the process entry (i.e. beginning of line). |
| .TP |
| .B Ctrl-E, $ |
| Scroll right to the end of the process entry (i.e. end of line). |
| .TP |
| .B Space |
| Tag or untag a process. Commands that can operate on multiple processes, |
| like "kill", will then apply over the list of tagged processes, instead |
| of the currently highlighted one. |
| .TP |
| .B c |
| Tag the current process and its children. Commands that can operate on multiple |
| processes, like "kill", will then apply over the list of tagged processes, |
| instead of the currently highlighted one. |
| .TP |
| .B U |
| Untag all processes (remove all tags added with the Space or c keys). |
| .TP |
| .B s |
| Trace process system calls: if truss(1) or strace(1) is installed, pressing |
| this key will attach it to the currently selected process, presenting a live |
| update of system calls issued by the process. |
| .TP |
| .B l, o |
| Display open files for a process: if lsof(1) is installed, pressing this key |
| will display the list of file descriptors opened by the process. |
| .TP |
| .B A |
| Display full command line arguments of the selected process in a separated |
| screen. |
| .TP |
| .B e |
| Display environment variables of the selected process in a separated screen. |
| .TP |
| .B S |
| Display kernel stack trace of the selected process in a separated screen. |
| .TP |
| .B F1, h, ? |
| Go to the help screen |
| .TP |
| .B F2, C |
| Go to the setup screen, where you can configure the meters displayed at the top |
| of the screen, set various display options, choose among color schemes, and |
| select which columns are displayed, in which order. |
| .TP |
| .B F3, / |
| Incrementally search the command lines of all the displayed processes. The |
| currently selected (highlighted) command will update as you type. While in |
| search mode, pressing F3 will cycle through matching occurrences. |
| .TP |
| .B n |
| Cycle through matching occurrences of last search. |
| .TP |
| .B N |
| Cycle through matching occurrences of last search in reverse order. |
| .TP |
| .B F4, \\\\ |
| Incremental process filtering: type in part of a process command line and |
| only processes whose names match will be shown. To cancel filtering, |
| enter the Filter option again and press Esc. |
| .TP |
| .B F5, t |
| Tree view: organize processes by parenthood, and layout the relations |
| between them as a tree. Toggling the key will switch between tree and |
| your previously selected sort view. Selecting a sort view will exit |
| tree view. |
| .TP |
| .B F6 |
| On sorted view, select a field for sorting, also accessible through < and >. |
| The current sort field is indicated by a highlight in the header. |
| On tree view, expand or collapse the current subtree. A "+" indicator in the |
| tree node indicates that it is collapsed. |
| .TP |
| .B F7, ] |
| Increase the selected process's priority (subtract from 'nice' value). |
| This can only be done by the superuser. |
| .TP |
| .B F8, [ |
| Decrease the selected process's priority (add to 'nice' value) |
| .TP |
| .B F9, k |
| "Kill" process: sends a signal which is selected in a menu, to one or a group |
| of processes. If processes were tagged, sends the signal to all tagged processes. |
| If none is tagged, sends to the currently selected process. |
| .TP |
| .B F10, q |
| Quit |
| .TP |
| .B I |
| Invert the sort order: if sort order is increasing, switch to decreasing, and |
| vice-versa. |
| .TP |
| .B +, \- |
| When in tree view mode, expand or collapse subtree. When a subtree is collapsed |
| a "+" sign shows to the left of the process name. |
| .TP |
| .B a (on multiprocessor machines) |
| Set CPU affinity: mark which CPUs a process is allowed to use. |
| .TP |
| .B u |
| Show only processes owned by a specified user. |
| .TP |
| .B M |
| Sort by memory usage (top compatibility key). |
| .TP |
| .B P |
| Sort by processor usage (top compatibility key). |
| .TP |
| .B T |
| Sort by time (top compatibility key). |
| .TP |
| .B F |
| "Follow" process: if the sort order causes the currently selected process |
| to move in the list, make the selection bar follow it. This is useful for |
| monitoring a process: this way, you can keep a process always visible on |
| screen. When a movement key is used, "follow" loses effect. |
| .TP |
| .B K |
| Hide kernel threads: prevent the threads belonging the kernel to be |
| displayed in the process list. (This is a toggle key.) |
| .TP |
| .B H |
| Hide user threads: on systems that represent them differently than ordinary |
| processes (such as recent NPTL-based systems), this can hide threads from |
| userspace processes in the process list. (This is a toggle key.) |
| .TP |
| .B p |
| Show full paths to running programs, where applicable. (This is a toggle key.) |
| .TP |
| .B Ctrl-L |
| Refresh: redraw screen and recalculate values. |
| .TP |
| .B Numbers |
| PID search: type in process ID and the selection highlight will be moved to it. |
| .PD |
| |
| .LP |
| When the \fIvi(1)-style key-bindings\fR setting is enabled, some key bindings |
| are redefined as followings: |
| .LP |
| .TP 5 |
| .B Numbers |
| If issuing the next command repeatly is meaningful, set the issuing count |
| for the key immediately after the numbers. The minimal count is \fI1\fR. |
| .TP |
| .B k, j, h, l |
| Same as \fBUp\fR, \fBDown\fR, \fBLeft\fR and \fBRight\fR respectively. |
| .TP |
| .B Alt-k, Alt-j, Alt-h, Alt-l |
| Not available under this mode. |
| .PD |
| |
| .SH "COLUMNS" |
| .LP |
| The following columns can display data about each process. A value of '\-' in |
| all the rows indicates that a column is unsupported on your system, or |
| currently unimplemented in htop. The names below are the ones used in the |
| "Available Columns" section of the setup screen. If a different name is |
| shown in htop's main screen, it is shown below in parenthesis. |
| .LP |
| .TP 5 |
| .B Command |
| The full command line of the process (i.e. program name and arguments). |
| .TP |
| .B PID |
| The process ID. |
| .TP |
| .B NAME |
| Process name, usually the executable file name. |
| .TP |
| .B STATE (S) |
| The state of the process: |
| \fBS\fR for sleeping |
| \fBI\fR for sleeping longer than an implementation-defined time |
| \fBR\fR for running or runnable |
| \fBO\fR for running on a processor |
| \fBD\fR for uninterruptible waiting, usually for disk I/O |
| \fBZ\fR for zombie (waiting for parent to read its exit status) |
| \fBT\fR for stopped due to signal or being traced |
| \fBL\fR for waiting on a lock |
| \fBW\fR for an implementation-defined state (e.g. paging for Linux) |
| |
| Not all states are supported on every platform. |
| .TP |
| .B PPID |
| The parent process ID. |
| .TP |
| .B PGRP |
| The process's group ID. |
| .TP |
| .B SESSION (SID) |
| The process's session ID. |
| .TP |
| .B TTY |
| The controlling terminal of the process. |
| .TP |
| .B TPGID |
| The process ID of the foreground process group of the controlling terminal. |
| .TP |
| .B MINFLT |
| The number of page faults happening in the main memory. |
| .TP |
| .B CMINFLT |
| The number of minor faults for the process's waited-for children (see MINFLT above). |
| .TP |
| .B MAJFLT |
| The number of page faults happening out of the main memory. |
| .TP |
| .B CMAJFLT |
| The number of major faults for the process's waited-for children (see MAJFLT above). |
| .TP |
| .B UTIME (UTIME+) |
| The user CPU time, which is the amount of time the process has spent executing |
| on the CPU in user mode (i.e. everything but system calls), measured in clock |
| ticks. |
| .TP |
| .B STIME (STIME+) |
| The system CPU time, which is the amount of time the kernel has spent |
| executing system calls on behalf of the process, measured in clock ticks. |
| .TP |
| .B CUTIME (CUTIME+) |
| The children's user CPU time, which is the amount of time the process's |
| waited-for children have spent executing in user mode (see UTIME above). |
| .TP |
| .B CSTIME (CSTIME+) |
| The children's system CPU time, which is the amount of time the kernel has spent |
| executing system calls on behalf of all the process's waited-for children (see |
| STIME above). |
| .TP |
| .B PRIORITY (PRI) |
| The kernel's internal priority for the process, usually just its nice value |
| plus twenty. Different for real-time processes. |
| .TP |
| .B NICE (NI) |
| The nice value of a process, from 19 (low priority) to -20 (high priority). A |
| high value means the process is being nice, letting others have a higher |
| relative priority. The usual OS permission restrictions for adjusting priority apply. |
| .TP |
| .B STARTTIME (START) |
| The time the process was started. |
| .TP |
| .B PROCESSOR (CPU) |
| The ID of the CPU the process last executed on. |
| .TP |
| .B M_SIZE (VIRT) |
| The size of the virtual memory of the process. |
| .TP |
| .B M_RESIDENT (RES) |
| The resident set size (text + data + stack) of the process (i.e. the size of the |
| process's used physical memory). |
| .TP |
| .B M_SHARE (SHR) |
| The size of the process's shared pages. |
| .TP |
| .B M_TRS (CODE) |
| The text resident set size of the process (i.e. the size of the process's |
| executable instructions). |
| .TP |
| .B M_DRS (DATA) |
| The data resident set size (data + stack) of the process (i.e. the size of anything |
| except the process's executable instructions). |
| .TP |
| .B M_LRS (LIB) |
| The library size of the process. |
| .TP |
| .B M_DT (DIRTY) |
| The size of the dirty pages of the process. |
| .TP |
| .B EFFECTIVE_UID (EUID) |
| The effective user ID of the process. |
| .TP |
| .B REAL_UID (RUID) |
| The real user ID of the process. |
| .TP |
| .B EFFECTIVE_USER (EFFE_USER) |
| Effective user (or numeric user ID if name cannot be determined) of the process. |
| .TP |
| .B REAL_USER |
| Real user (or numeric user ID if name cannot be determined) of the process. |
| .TP |
| .B PERCENT_CPU (CPU%) |
| The percentage of the CPU time that the process is currently using. |
| .TP |
| .B PERCENT_MEM (MEM%) |
| The percentage of memory the process is currently using (based on the process's |
| resident memory size, see M_RESIDENT above). |
| .TP |
| .B TIME (TIME+) |
| The time, measured in clock ticks that the process has spent in user and system |
| time (see UTIME, STIME above). |
| .TP |
| .B NLWP |
| The number of threads in the process. |
| .TP |
| .B TGID |
| The thread group ID. |
| .TP |
| .B CTID |
| OpenVZ container ID, a.k.a virtual environment ID. |
| .TP |
| .B VPID |
| OpenVZ process ID. |
| .TP |
| .B VXID |
| VServer process ID. |
| .TP |
| .B RCHAR (RD_CHAR) |
| The number of bytes the process has read. |
| .TP |
| .B WCHAR (WR_CHAR) |
| The number of bytes the process has written. |
| .TP |
| .B SYSCR (RD_SYSC) |
| The number of read(2) syscalls for the process. |
| .TP |
| .B SYSCW (WR_SYSC) |
| The number of write(2) syscalls for the process. |
| .TP |
| .B RBYTES (IO_RBYTES) |
| Bytes of read(2) I/O for the process. |
| .TP |
| .B WBYTES (IO_WBYTES) |
| Bytes of write(2) I/O for the process. |
| .TP |
| .B CNCLWB (IO_CANCEL) |
| Bytes of cancelled write(2) I/O. |
| .TP |
| .B IO_READ_RATE (DISK READ) |
| The I/O rate of read(2) in bytes per second, for the process. |
| .TP |
| .B IO_WRITE_RATE (DISK WRITE) |
| The I/O rate of write(2) in bytes per second, for the process. |
| .TP |
| .B IO_RATE (DISK R/W) |
| The I/O rate, IO_READ_RATE + IO_WRITE_RATE (see above). |
| .TP |
| .B CGROUP |
| Which cgroup the process is in. |
| .TP |
| .B OOM |
| OOM killer score. |
| .TP |
| .B IO_PRIORITY (IO) |
| The I/O scheduling class followed by the priority if the class supports it: |
| \fBR\fR for Realtime |
| \fBB\fR for Best-effort |
| \fBid\fR for Idle |
| .TP |
| .B PERCENT_CPU_DELAY (CPUD%) |
| The percentage of time spent waiting for a CPU (while runnable). Requires CAP_NET_ADMIN. |
| .TP |
| .B PERCENT_IO_DELAY (IOD%) |
| The percentage of time spent waiting for the completion of synchronous block I/O. Requires CAP_NET_ADMIN. |
| .TP |
| .B PERCENT_SWAP_DELAY (SWAPD%) |
| The percentage of time spent swapping in pages. Requires CAP_NET_ADMIN. |
| .TP |
| .B All other flags |
| Currently unsupported (always displays '-'). |
| |
| .SH "CONFIG FILE" |
| .LP |
| By default htop reads its configuration from the XDG-compliant path |
| \fI~/.config/htop/htoprc.$TERM\fR -- where \fI$TERM\fR is the terminal type |
| htop currently runs with; the configuration file is overwritten by htop's |
| in-program Setup screen, so it should not be hand-edited. If no |
| terminal-type-specific configuration file exists, htop then tries to read |
| \fI~/.config/htop/htoprc\fR; if that is also missing it tries the system-wide |
| configuration from \fI@sysconfdir@/htoprc\fR and as a last resort, before |
| falls back to its hard coded defaults. |
| .LP |
| You may override the location of the configuration file using the \fBHTOPRC\fR |
| environment variable (so you can have multiple configurations for different |
| machines that share the same home directory, for example). |
| |
| .SH "MEMORY SIZES" |
| .LP |
| Memory sizes in htop are displayed as they are in tools from the GNU Coreutils |
| (when ran with the --human-readable option). This means that sizes are printed |
| in powers of 1024. (e.g., 1023M = 1072693248 Bytes) |
| .LP |
| The decision to use this convention was made in order to conserve screen space |
| and make memory size representations consistent throughout htop. |
| |
| .SH "SEE ALSO" |
| proc(5), top(1), free(1), ps(1), uptime(1), kill(1), vmstat(8) |
| |
| .SH "AUTHORS" |
| .LP |
| htop is developed by Hisham Muhammad <hisham@gobolinux.org>. |
| .LP |
| This man page was written by Bartosz Fenski <fenio@o2.pl> for the Debian |
| GNU/Linux distribution (but it may be used by others). It was updated by Hisham |
| Muhammad, and later by Vincent Launchbury, who wrote the 'Columns' section. |