Server IP : 127.0.0.2 / Your IP : 3.23.59.191 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/lsof/examples/ |
Upload File : |
#!/usr/bin/awk -f ################################################################ # # Program Name : xusers # Date Created : 02-27-97 # Author : Dan A. Mercer # Email : damercer@mmm.com # : # Description : Print list of users and applications signed on # : X workstations ################################################################ # standard help message function help(hlpmsg) { basename = ARGV[0] sub(/.*\//,"",basename) printf "Format: %s [o=[hi]] [s=cdlp] [pattern]\n", basename print "Print list of users and applications signed on X workstations" print "NOTE: applicationname is truncated to 9 chars" print "Arguments:" print " o=[h|i] - Options" print " h - help - print this message" print " i - case insensitive pattern search" print " s=[c|d|l|p] - Sort Options" print " c - sort by command" print " d - sort by display name" print " l - sort by login name" print " p - sort by pid" print " pattern - regex pattern to search commands against" if (length(hlpmsg)) print hlpmsg exit } BEGIN { # process command line for (i=1;i<ARGC;i++) { if (ARGV[i] ~ /^o=/) { if (options) help("duplicate option string") options = ARGV[i] sub(/^o=/,"",options) if (options !~ /^[hi]$/) help("Invalid options " options) if ("h" == options) help("") else igncase = 1 } else if (ARGV[i] ~ /^s=/) { if (sortorder) help("duplicate sort order string") sortorder = ARGV[i] sub(/^s=/,"",sortorder) if (sortorder !~ /^[cdlp]$/) help("Invalid sort order: '" sortorder "'") if ("p" == sortorder) { sort = "sort -kn2" } else if ("c" == sortorder) { # the 'b' option means ignore leading blanks sort = "sort -kb3" } else if ("l" == sortorder) { sort = "sort -kb1" } else { sort = "sort -kb4" } } else { if (pattern) help("duplicate pattern string") pattern = ARGV[i] } } # default is to sort by pid sort = (sort) ? sort : "sort -kn2" # check for igncase if (pattern && igncase) pattern = tolower(pattern) # set default pattern pattern = (pattern) ? pattern : ".*" cmd = "lsof -FpLcn -awP -iTCP:6000" # ||||| |||| | # ||||| |||| X servers use port 6000 # ||||| |||don't list port names # ||||| ||suppress warning messages # ||||| |and all conditions # ||||| |options # ||||| # ||||Internet addresses # |||command name # ||login name # |process id # Format string # Output consists of one record per pid, followed by newline # delimited fields for command, Login name, and network address # The pid is preceded by a 'p', command by a 'c', # Login name by an L, and network connection by an 'n'. There may # be multiple 'n' entries (for instance for vuewm) while ((cmd | getline field) > 0) { type = substr(field,1,1) sub("^.","",field) if ("p" == type) { # always output first pid = field PID[pid] = ++ct } else if ("c" == type) { # always output second XAPPL[pid] = field } else if ("L" == type) { # always output fourth USER[pid] = field } else if ("n" == type) { # may be multiple instances - we just use the last gsub(".*->|:6000","",field) DPY[pid] = field } } close(cmd) printf "%8s %5s %-9s %s\n","USER","PID","COMMAND","DISPLAY" for (pid in PID) { if (((igncase) ? tolower(XAPPL[pid]) : XAPPL[pid]) ~ pattern) printf "%8s %5d %-9s %s\n", USER[pid],pid,XAPPL[pid],DPY[pid] | sort } close(sort) exit }