oldps is obsolete
This commit is contained in:
parent
17bd2ac219
commit
b444f83d49
2
AUTHORS
2
AUTHORS
@ -2,7 +2,7 @@
|
||||
free:
|
||||
Brian Edmonds
|
||||
|
||||
oldps/ps:
|
||||
ps:
|
||||
Branko Lankester <lankeste@fwi.uva.nl>
|
||||
Michael K. Johnson <johnsonm@redhat.com>
|
||||
Michael Shields <mjshield@nyx.cs.du.edu>
|
||||
|
@ -4,7 +4,7 @@ SUBDIRS = proc ps
|
||||
myexecbin_PROGRAMS = kill
|
||||
myexecbindir = $(prefix)/bin
|
||||
|
||||
bin_PROGRAMS = oldps uptime tload free w top vmstat watch pgrep
|
||||
bin_PROGRAMS = uptime tload free w top vmstat watch pgrep
|
||||
|
||||
# Derived (symlinked binaries)
|
||||
bin_SCRIPTS = skill snice pkill
|
||||
@ -26,7 +26,6 @@ kill_SOURCES = skill.c
|
||||
kill_INCLUDES = -DSYSV
|
||||
#kill_LDADD =
|
||||
|
||||
oldps_SOURCES = oldps.c
|
||||
uptime_SOURCES = uptime.c
|
||||
tload_SOURCES = tload.c
|
||||
free_SOURCES = free.c
|
||||
@ -40,7 +39,7 @@ top_LDADD = proc/libproc.la @NCURSES_LIB@
|
||||
watch_SOURCES = watch.c
|
||||
watch_LDADD = @NCURSES_LIB@
|
||||
|
||||
man_MANS = free.1 kill.1 oldps.1 pgrep.1 pkill.1 skill.1 snice.1 sysctl.8 \
|
||||
man_MANS = free.1 kill.1 pgrep.1 pkill.1 skill.1 snice.1 sysctl.8 \
|
||||
sysctl.conf.5 tload.1 top.1 uptime.1 vmstat.8 w.1 watch.1
|
||||
|
||||
EXTRA_DIST = man_MANS
|
||||
|
18
Makefile.in
18
Makefile.in
@ -78,7 +78,7 @@ SUBDIRS = proc ps
|
||||
myexecbin_PROGRAMS = kill
|
||||
myexecbindir = $(prefix)/bin
|
||||
|
||||
bin_PROGRAMS = oldps uptime tload free w top vmstat watch pgrep
|
||||
bin_PROGRAMS = uptime tload free w top vmstat watch pgrep
|
||||
|
||||
# Derived (symlinked binaries)
|
||||
bin_SCRIPTS = skill snice pkill
|
||||
@ -91,7 +91,6 @@ kill_SOURCES = skill.c
|
||||
kill_INCLUDES = -DSYSV
|
||||
#kill_LDADD =
|
||||
|
||||
oldps_SOURCES = oldps.c
|
||||
uptime_SOURCES = uptime.c
|
||||
tload_SOURCES = tload.c
|
||||
free_SOURCES = free.c
|
||||
@ -105,7 +104,7 @@ top_LDADD = proc/libproc.la @NCURSES_LIB@
|
||||
watch_SOURCES = watch.c
|
||||
watch_LDADD = @NCURSES_LIB@
|
||||
|
||||
man_MANS = free.1 kill.1 oldps.1 pgrep.1 pkill.1 skill.1 snice.1 sysctl.8 sysctl.conf.5 tload.1 top.1 uptime.1 vmstat.8 w.1 watch.1
|
||||
man_MANS = free.1 kill.1 pgrep.1 pkill.1 skill.1 snice.1 sysctl.8 sysctl.conf.5 tload.1 top.1 uptime.1 vmstat.8 w.1 watch.1
|
||||
|
||||
|
||||
EXTRA_DIST = man_MANS
|
||||
@ -119,10 +118,6 @@ DEFS = @DEFS@ -I. -I$(srcdir)
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
oldps_OBJECTS = oldps.o
|
||||
oldps_LDADD = $(LDADD)
|
||||
oldps_DEPENDENCIES = proc/libproc.la
|
||||
oldps_LDFLAGS =
|
||||
uptime_OBJECTS = uptime.o
|
||||
uptime_LDADD = $(LDADD)
|
||||
uptime_DEPENDENCIES = proc/libproc.la
|
||||
@ -185,11 +180,11 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP_ENV = --best
|
||||
DEP_FILES = .deps/free.P .deps/oldps.P .deps/pgrep.P .deps/skill.P \
|
||||
DEP_FILES = .deps/free.P .deps/pgrep.P .deps/skill.P \
|
||||
.deps/sysctl.P .deps/tload.P .deps/top.P .deps/uptime.P .deps/vmstat.P \
|
||||
.deps/w.P .deps/watch.P
|
||||
SOURCES = $(oldps_SOURCES) $(uptime_SOURCES) $(tload_SOURCES) $(free_SOURCES) $(w_SOURCES) $(top_SOURCES) $(vmstat_SOURCES) $(watch_SOURCES) $(pgrep_SOURCES) $(kill_SOURCES) sysctl.c
|
||||
OBJECTS = $(oldps_OBJECTS) $(uptime_OBJECTS) $(tload_OBJECTS) $(free_OBJECTS) $(w_OBJECTS) $(top_OBJECTS) $(vmstat_OBJECTS) $(watch_OBJECTS) $(pgrep_OBJECTS) $(kill_OBJECTS) sysctl.o
|
||||
SOURCES = $(uptime_SOURCES) $(tload_SOURCES) $(free_SOURCES) $(w_SOURCES) $(top_SOURCES) $(vmstat_SOURCES) $(watch_SOURCES) $(pgrep_SOURCES) $(kill_SOURCES) sysctl.c
|
||||
OBJECTS = $(uptime_OBJECTS) $(tload_OBJECTS) $(free_OBJECTS) $(w_OBJECTS) $(top_OBJECTS) $(vmstat_OBJECTS) $(watch_OBJECTS) $(pgrep_OBJECTS) $(kill_OBJECTS) sysctl.o
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
@ -316,9 +311,6 @@ distclean-libtool:
|
||||
|
||||
maintainer-clean-libtool:
|
||||
|
||||
oldps: $(oldps_OBJECTS) $(oldps_DEPENDENCIES)
|
||||
@rm -f oldps
|
||||
$(LINK) $(oldps_LDFLAGS) $(oldps_OBJECTS) $(oldps_LDADD) $(LIBS)
|
||||
|
||||
uptime: $(uptime_OBJECTS) $(uptime_DEPENDENCIES)
|
||||
@rm -f uptime
|
||||
|
@ -20,10 +20,10 @@ export INSTALLSCT = install --mode a=rx
|
||||
export INSTALLMAN = install --mode a=r
|
||||
|
||||
BPROG = kill # -> BINDIR
|
||||
UPROG = oldps uptime tload free w top vmstat watch skill snice # -> USRBINDIR
|
||||
UPROG = uptime tload free w top vmstat watch skill snice # -> USRBINDIR
|
||||
PPROG = pgrep pkill# -> PROCDIR
|
||||
SPROG = sysctl
|
||||
MAN1 = oldps.1 uptime.1 tload.1 free.1 w.1 top.1 watch.1 skill.1 kill.1 snice.1 pgrep.1 pkill.1
|
||||
MAN1 = uptime.1 tload.1 free.1 w.1 top.1 watch.1 skill.1 kill.1 snice.1 pgrep.1 pkill.1
|
||||
MAN5 = sysctl.conf.5
|
||||
MAN8 = vmstat.8 sysctl.8
|
||||
DESKTOP = top.desktop
|
||||
@ -133,14 +133,14 @@ build_ps: ; $(MAKE) -C ps
|
||||
install_ps: ps ; $(MAKE) -C ps install
|
||||
|
||||
# executable dependencies
|
||||
oldps kill skill snice top w uptime tload free vmstat utmp : $(LIB_TGT)
|
||||
kill skill snice top w uptime tload free vmstat utmp : $(LIB_TGT)
|
||||
|
||||
# static pattern build/link rules:
|
||||
|
||||
%.o : %.c
|
||||
$(strip $(CC) $(CFLAGS) -c $^)
|
||||
|
||||
oldps w uptime tload free vmstat utmp pgrep: % : %.o
|
||||
w uptime tload free vmstat utmp pgrep: % : %.o
|
||||
$(strip $(CC) $(LDFLAGS) -o $@ $< $(LIB_TGT) $(EXTRALIBS))
|
||||
|
||||
|
||||
|
356
oldps.1
356
oldps.1
@ -1,356 +0,0 @@
|
||||
.\" This file Copyright 1992, 1997 Michael K. Johnson <johnsonm@redhat.com>
|
||||
.\" and 1996 Charles L. Blake <cblake@bbn.com>
|
||||
.\" It may be distributed under the GNU Public License, version 2, or
|
||||
.\" any higher version. See section COPYING of the GNU Public license
|
||||
.\" for conditions under which this file may be redistributed.
|
||||
.TH PS 1 "3 Sep 1997" "Cohesive Systems" "Linux User's Manual"
|
||||
.SH NAME
|
||||
ps \- report process status
|
||||
.SH SYNOPSIS
|
||||
ps [\fBlujsvmaxScewhrnu\fR] [\fBt\fIxx\fR] \
|
||||
[\fBO\fR[\fB+\fR|\fB-\fR]\fIk1\fR[[\fB+\fR|\fB-\fR]\fIk2\fR...]] \
|
||||
[\fIpids\fR]
|
||||
|
||||
there are also three long options:
|
||||
|
||||
.BR \-\-sort\fIX [ + | - ] \fIkey [,[ + | - ] \fIkey [, ... ]]
|
||||
|
||||
.B "\-\-help"
|
||||
|
||||
.B "\-\-version"
|
||||
|
||||
More long options are on the way...
|
||||
.SH DESCRIPTION
|
||||
.B "ps "
|
||||
gives a snapshot of the current processes. If you want a repetitive
|
||||
update of this status, use
|
||||
.BR top .
|
||||
This man page documents the
|
||||
.IR /proc -based
|
||||
version of
|
||||
.BR ps ,
|
||||
or tries to.
|
||||
.PP
|
||||
.SH "COMMAND-LINE OPTIONS"
|
||||
The command-line options for this version of
|
||||
.B ps
|
||||
are derived from the BSD version of
|
||||
.BR ps ,
|
||||
not the System V version.
|
||||
|
||||
The command-line arguments should \fBnot\fP be preceeded by a `\-' character,
|
||||
because in the future, a `\-' will be used to indicate Unix98-standard
|
||||
command-line arguments, while no `\-' will indicate the current
|
||||
``extended BSD'' style of command line arguments.
|
||||
|
||||
For now, ps will give you a warning if you use a `\-' for a short option,
|
||||
but it will still work. If you have shell scripts which use BSD-style
|
||||
arguments to ps, take heed of the warning and fix them, or else your
|
||||
scripts will fail to function correctly at some point in the future.
|
||||
If you want to turn off the warnings, set the
|
||||
.B I_WANT_A_BROKEN_PS
|
||||
environment variable.
|
||||
|
||||
There are also some ``long options'' in GNU style; see below for those.
|
||||
.PP
|
||||
.PD 0
|
||||
.TP 0.5i
|
||||
.B "l "
|
||||
long format
|
||||
.TP 0.5i
|
||||
.B "u "
|
||||
user format: gives user name and start time
|
||||
.TP 0.5i
|
||||
.B "j "
|
||||
jobs format: pgid sid
|
||||
.TP 0.5i
|
||||
.B "s"
|
||||
signal format
|
||||
.TP 0.5i
|
||||
.B "v "
|
||||
vm format
|
||||
.TP 0.5i
|
||||
.B "m "
|
||||
displays memory info (combine with
|
||||
.B p
|
||||
flag to get number of pages).
|
||||
.TP 0.5i
|
||||
.B "f "
|
||||
"forest" family tree format for command line
|
||||
.TP 0.5i
|
||||
.B "a "
|
||||
show processes of other users too
|
||||
.TP 0.5i
|
||||
.B "x "
|
||||
show processes without controlling terminal
|
||||
.TP 0.5i
|
||||
.B "S "
|
||||
add child cpu time and page faults
|
||||
.TP 0.5i
|
||||
.B "c "
|
||||
command name from task_struct
|
||||
.TP 0.5i
|
||||
.B "e "
|
||||
show environment after command line and ` + '
|
||||
.TP 0.5i
|
||||
.B "w "
|
||||
wide output: don't truncate command lines to fit on one line.
|
||||
To be exact, every w that is specified will add another possible
|
||||
line to the output. If the space isn't needed it isn't used. You
|
||||
may up to 100
|
||||
.BR w 's.
|
||||
.TP 0.5i
|
||||
.B "h "
|
||||
no header
|
||||
.TP 0.5i
|
||||
.B "r "
|
||||
running procs only
|
||||
.TP 0.5i
|
||||
.B "n "
|
||||
numeric output for
|
||||
.BR USER " and " WCHAN .
|
||||
.PD 1
|
||||
.TP 0.5i
|
||||
.BI t xx
|
||||
only procs with controlling tty \fIxx\fR; for \fIxx\fR you may use either the
|
||||
name of a device file under "/dev" or that name with either
|
||||
.IR tty " or " cu
|
||||
sliced off. This is the reverse heuristic that ps uses to print out the
|
||||
abbreviated tty name in the \fBTT\fR field, e.g.
|
||||
.BR "ps t1" .
|
||||
.TP 0.5i
|
||||
.BR O [ + | - ] \fIk1 [,[ + | - ] \fIk2 [, ... ]]
|
||||
Order the process listing according to the multi-level sort specified by
|
||||
the sequence of \fIshort\fR keys from \fBSORT KEYS\fR, \fIk1\fR, \fIk2\fR, ...
|
||||
Default order specifications exist for each of the various formats of \fBps\fR.
|
||||
These are over-ridden by a user specified ordering. The `+' is quite optional,
|
||||
merely re-iterating the default direction on a key. `-' reverses direction only
|
||||
on the key it precedes. As with \fBt\fR and \fIpids\fR, the O option must be
|
||||
the last option in a single command argument, but specifications in successive
|
||||
arguments are catenated.
|
||||
.TP 0.5i
|
||||
.I pids
|
||||
List only the specified processes; they are comma-delimited. The
|
||||
list must be given immediately after the last option in a single command-line
|
||||
argument, with no intervening space, e.g.
|
||||
.BR "ps j1,4,5" .
|
||||
Lists specified in subsequent arguments are catenated, e.g.
|
||||
.B ps l 1,2 3,4 5 6
|
||||
will list all of the processes 1-6 in long format. If pids are given, they
|
||||
are listed no matter what. If a tty is given matching processes are listed
|
||||
no matter what. These two features override the 'a' and 'x' flags.
|
||||
.SH "LONG COMMAND\-LINE OPTIONS"
|
||||
These options are preceeded by a double\-hyphen.
|
||||
.TP 0.5i
|
||||
.BR \-\-sort\fIX [ + | - ] \fIkey [,[ + | - ] \fIkey [, ... ]]
|
||||
Choose a \fImulti-letter key\fR from the \fBSORT KEYS\fR section. \fIX\fR may be
|
||||
any convenient separator character. To be GNU-ish use `='. The `+' is really
|
||||
optional since default direction is increasing numerical or lexicographic order.
|
||||
E.g.:
|
||||
.B ps jax --sort=uid,-ppid,+pid
|
||||
.TP 0.5i
|
||||
.B "\-\-help"
|
||||
Get a help message that summarizes the usage and gives a list of
|
||||
supported sort keys. This list may be more up to date than this man
|
||||
page.
|
||||
.TP 0.5i
|
||||
.B "\-\-version"
|
||||
Display version and source of this program.
|
||||
.SH "SORT KEYS"
|
||||
Note that the values used in sorting are the internal values \fBps\fR uses and
|
||||
\fInot\fR the `cooked' values used in some of the output format fields. If
|
||||
someone wants to volunteer to write special comparison functions for the cooked
|
||||
values, ... ;-)
|
||||
|
||||
SHORT LONG DESCRIPTION
|
||||
.PD 0
|
||||
.TP 0.5i
|
||||
c cmd simple name of executable
|
||||
.TP 0.5i
|
||||
C cmdline full command line
|
||||
.TP 0.5i
|
||||
f flags flags as in long format F field
|
||||
.TP 0.5i
|
||||
g pgrp process group ID
|
||||
.TP 0.5i
|
||||
G tpgid controlling tty process group ID
|
||||
.TP 0.5i
|
||||
j cutime cumulative user time
|
||||
.TP 0.5i
|
||||
J cstime cumulative system time
|
||||
.TP 0.5i
|
||||
k utime user time
|
||||
.TP 0.5i
|
||||
K stime system time
|
||||
.TP 0.5i
|
||||
m min_flt number of minor page faults
|
||||
.TP 0.5i
|
||||
M maj_flt number of major page faults
|
||||
.TP 0.5i
|
||||
n cmin_flt cumulative minor page faults
|
||||
.TP 0.5i
|
||||
N cmaj_flt cumulative major page faults
|
||||
.TP 0.5i
|
||||
o session session ID
|
||||
.TP 0.5i
|
||||
p pid process ID
|
||||
.TP 0.5i
|
||||
P ppid parent process ID
|
||||
.TP 0.5i
|
||||
r rss resident set size
|
||||
.TP 0.5i
|
||||
R resident resident pages
|
||||
.TP 0.5i
|
||||
s size memory size in kilobytes
|
||||
.TP 0.5i
|
||||
S share amount of shared pages
|
||||
.TP 0.5i
|
||||
t tty the minor device number of tty
|
||||
.TP 0.5i
|
||||
T start_time time process was started
|
||||
.TP 0.5i
|
||||
U uid user ID number
|
||||
.TP 0.5i
|
||||
u user user name
|
||||
.TP 0.5i
|
||||
v vsize total VM size in bytes
|
||||
.TP 0.5i
|
||||
y priority kernel scheduling priority
|
||||
.PD 1
|
||||
.SH "FIELD DESCRIPTIONS"
|
||||
.TP 0.5i
|
||||
.B "PRI "
|
||||
This is the counter field in the task struct. It is the time in
|
||||
.B HZ
|
||||
of the process's possible timeslice.
|
||||
.TP 0.5i
|
||||
.B "NI "
|
||||
Standard unix nice value; a positive value means less cpu time.
|
||||
.TP 0.5i
|
||||
.B "SIZE "
|
||||
Virtual image size; size of text+data+stack.
|
||||
.TP 0.5i
|
||||
.B "RSS "
|
||||
Resident set size; kilobytes of program in memory.
|
||||
.TP 0.5i
|
||||
.B "WCHAN "
|
||||
Name of the kernel function where the process is sleeping, with the
|
||||
.RB ` sys_ '
|
||||
stripped from the function name. If
|
||||
.I /etc/psdatabase
|
||||
does not exist, it is just a hex number instead.
|
||||
.TP 0.5i
|
||||
.B "STAT "
|
||||
Information about the status of the process. The first field is
|
||||
.B R
|
||||
for runnable,
|
||||
.B S
|
||||
for sleeping,
|
||||
.B D
|
||||
for uninterruptible sleep,
|
||||
.B T
|
||||
for stopped or traced, or
|
||||
.B Z
|
||||
for a zombie process. The second field contains
|
||||
.B W
|
||||
if the process has no resident pages. The third field is
|
||||
.B N
|
||||
if the process has a positive nice value
|
||||
.RB ( NI
|
||||
field).
|
||||
.TP 0.5i
|
||||
.B "TT "
|
||||
Controlling tty.
|
||||
.TP 0.5i
|
||||
.B "PAGEIN "
|
||||
Number of major page faults (page faults that cause pages to be read
|
||||
from disk, including pages read from the buffer cache).
|
||||
.TP 0.5i
|
||||
.B "TRS "
|
||||
Text resident size.
|
||||
.TP 0.5i
|
||||
.B "SWAP "
|
||||
Kilobytes (or pages if
|
||||
.B p
|
||||
is used) on swap device.
|
||||
.TP 0.5i
|
||||
.B "SHARE "
|
||||
Shared memory.
|
||||
.SH UPDATING
|
||||
This
|
||||
.BR proc -based
|
||||
.B ps
|
||||
works by reading the files in the
|
||||
.B proc
|
||||
filesystem, mounted on
|
||||
.BR /proc .
|
||||
This
|
||||
.B ps
|
||||
does not need to be suid
|
||||
.B kmem
|
||||
or have any privileges to run.
|
||||
.I "Do not give this ps any special permissions."
|
||||
.PP
|
||||
You will need to put in place the appropriate System.map file
|
||||
when you install a new kernel in order
|
||||
to get meaningful information from the
|
||||
.B WCHAN
|
||||
field. This should be done every time you compile a new kernel. You should
|
||||
also run 'ps' as root once and then any time the tty devices in the "/dev"
|
||||
directory change.
|
||||
|
||||
As of procps-1.00, ps/top read System.map directly if it is available. The
|
||||
search path for kernel address-to-symbol resolution is:
|
||||
.nf
|
||||
$PS_SYSTEM_MAP
|
||||
/boot/System.map-`uname -r`
|
||||
/boot/System.map
|
||||
/lib/modules/`uname -r`/System.map
|
||||
/etc/psdatabase
|
||||
/boot/psdatabase-`uname -r`
|
||||
/boot/psdatabase,
|
||||
/lib/modules/`uname -r`/psdatabase
|
||||
.fi
|
||||
.PP
|
||||
.SH NOTES
|
||||
The member
|
||||
.B used_math
|
||||
of
|
||||
.B task_struct
|
||||
is not shown, since
|
||||
.B crt0.s
|
||||
checks to see if math is present. This causes the math flag to be set
|
||||
for all processes, and so it is worthless.
|
||||
.PP
|
||||
Programs swapped out to disk will be shown without command line
|
||||
arguments, and unless the
|
||||
.B c
|
||||
option is given, in parentheses.
|
||||
.PP
|
||||
.B %CPU
|
||||
shows the cputime/realtime percentage. It will not add up to 100%
|
||||
unless you are lucky. It is time used divided by the time the process
|
||||
has been running.
|
||||
.PP
|
||||
The
|
||||
.B SIZE
|
||||
and
|
||||
.B RSS
|
||||
fields don't count the page tables and the
|
||||
.B task_struct
|
||||
of a proc; this is at least 12k of memory that is always resident.
|
||||
.B SIZE
|
||||
is the virtual size of the proc (code+data+stack).
|
||||
.SH AUTHOR
|
||||
.B ps
|
||||
was originally written by Branko Lankester <lankeste@fwi.uva.nl>. Michael K.
|
||||
Johnson <johnsonm@redhat.com> re-wrote it significantly to use the proc
|
||||
filesystem, changing a few things in the process. Michael Shields
|
||||
<mjshield@nyx.cs.du.edu> added the pid-list feature. Charles
|
||||
Blake <cblake@bbn.com> added multi-level sorting, the dirent-style library, the
|
||||
device name-to-number mmaped database, the approximate binary search directly
|
||||
on System.map, and many code and documentation cleanups. David Mossberger-Tang
|
||||
wrote the generic BFD support for psupdate. Michael K. Johnson
|
||||
<johnsonm@redhat.com> is the current maintainer.
|
||||
|
||||
Please send bug reports to <acahalan@cs.uml.edu>
|
@ -72,7 +72,6 @@ rm -f /etc/psdevtab /etc/psdatabase
|
||||
%attr(755,root,root) /lib/libproc.so.2.0.7
|
||||
%attr(555,root,root) /bin/ps
|
||||
%attr(555,root,root) /sbin/sysctl
|
||||
%attr(555,root,root) /usr/bin/oldps
|
||||
%attr(555,root,root) /usr/bin/uptime
|
||||
%attr(555,root,root) /usr/bin/tload
|
||||
%attr(555,root,root) /usr/bin/free
|
||||
@ -87,7 +86,6 @@ rm -f /etc/psdevtab /etc/psdatabase
|
||||
|
||||
%attr(0644,root,root) /usr/man/man1/free.1
|
||||
%attr(0644,root,root) /usr/man/man1/ps.1
|
||||
%attr(0644,root,root) /usr/man/man1/oldps.1
|
||||
%attr(0644,root,root) /usr/man/man1/sessreg.1
|
||||
%attr(0644,root,root) /usr/man/man1/skill.1
|
||||
%attr(0644,root,root) /usr/man/man1/snice.1
|
||||
|
Loading…
Reference in New Issue
Block a user