<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Pgsession.sh</id>
	<title>Pgsession.sh - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Pgsession.sh"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Pgsession.sh&amp;action=history"/>
	<updated>2026-09-23T05:51:06Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Pgsession.sh&amp;diff=987&amp;oldid=prev</id>
		<title>Joan a 22:41, 1 des 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Pgsession.sh&amp;diff=987&amp;oldid=prev"/>
		<updated>2008-12-01T22:41:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Script pgsession.sh. És una utilitat de shell per llistar i finalitzar sessions de Postgres. &lt;br /&gt;
El script el copio a el copio a /usr/lib/postgresql/8.1/bin, li dono permisos d'escriptura, i l'executo amb l'usuari ''postgres'' (l'usuari que executa postmaster)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	Script: pgsession&lt;br /&gt;
		pgsession : List/Kill database user sessions&lt;br /&gt;
&lt;br /&gt;
	Usage:&lt;br /&gt;
		pgsession [OPTION]... [USER]&lt;br /&gt;
&lt;br /&gt;
	Options:&lt;br /&gt;
		--h (help)	show this help, then exit&lt;br /&gt;
		-l  (list)	list database sessions&lt;br /&gt;
		-k  (kill)	kill/terminate database sessions&lt;br /&gt;
		-f  (force)	force kill (do not ask for confirmation,&lt;br /&gt;
				use in conjunction with -k option)&lt;br /&gt;
		-u  USER	specify database user name&lt;br /&gt;
		-p  PID	specify database user process id (pid)&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
	  pgsession -l		list all sessions&lt;br /&gt;
	  pgsession -l -u 	list user sessions&lt;br /&gt;
	  pgsession -k		kill all sessions&lt;br /&gt;
	  pgsession -k -f	force kill all sessions&lt;br /&gt;
	  pgsession -k -u 	kill user sessions&lt;br /&gt;
	  pgsession -k -p 	kill user session with a specific pid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: that a listing of sessions and their queries is also available in psql using:&lt;br /&gt;
 select * from pg_stat_activity; &lt;br /&gt;
&lt;br /&gt;
I el script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# Script: pgsession&lt;br /&gt;
# Author: Rao Kumar raokumar@netwolves.com&lt;br /&gt;
# Purpose: Utility to list/kill postgres database user sessions.&lt;br /&gt;
# Comments: Execute this script as &amp;quot;postgres&amp;quot; user (user who runs postmaster)&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# INITIALIZE ENVIRONMENT&lt;br /&gt;
# Set up the environmental variables&lt;br /&gt;
#&lt;br /&gt;
KILL=&amp;quot;kill -TERM&amp;quot;&lt;br /&gt;
BASENAME=`basename &amp;quot;$0&amp;quot;`&lt;br /&gt;
PSQLC=&amp;quot;psql -U postgres -d template1 -c &amp;quot;&lt;br /&gt;
PSQLTC=&amp;quot;psql -U postgres -t -A -d template1 -c &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
while [ &amp;quot;$#&amp;quot; -gt 0 ]&lt;br /&gt;
do&lt;br /&gt;
    case &amp;quot;$1&amp;quot; in&lt;br /&gt;
        --help|-\?)&lt;br /&gt;
                usage=t&lt;br /&gt;
                break&lt;br /&gt;
                ;;&lt;br /&gt;
	-l)&lt;br /&gt;
                OPT=&amp;quot;list&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
	-k)&lt;br /&gt;
                OPT=&amp;quot;kill&amp;quot;&lt;br /&gt;
                ;;&lt;br /&gt;
	-f)&lt;br /&gt;
                force=t&lt;br /&gt;
                ;;&lt;br /&gt;
        -u)&lt;br /&gt;
		if [ -z &amp;quot;$2&amp;quot; ]; then&lt;br /&gt;
			echo &amp;quot;ERROR: Please specify user name&amp;quot;&lt;br /&gt;
			exit 1&lt;br /&gt;
		else&lt;br /&gt;
                	user=&amp;quot;$2&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
                shift;;&lt;br /&gt;
        -p)&lt;br /&gt;
		if [ -z $2 ]; then&lt;br /&gt;
			echo &amp;quot;ERROR: Please specify pid&amp;quot;&lt;br /&gt;
			exit 1&lt;br /&gt;
		else&lt;br /&gt;
                	pid=&amp;quot;$2&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
                shift;;&lt;br /&gt;
         *)&lt;br /&gt;
                if [ &amp;quot;$#&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
                        echo &amp;quot;$BASENAME: invalid option: $2&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
                        echo &amp;quot;Try '$BASENAME --help' for more information.&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
                ;;&lt;br /&gt;
    esac&lt;br /&gt;
    shift;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$usage&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;$BASENAME : List/Kill database user sessions&amp;quot;&lt;br /&gt;
        echo&lt;br /&gt;
        echo &amp;quot;Usage:&amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME [OPTION]... [USER]&amp;quot;&lt;br /&gt;
        echo&lt;br /&gt;
        echo &amp;quot;Options:&amp;quot;&lt;br /&gt;
        echo &amp;quot; --h  (help)                  show this help, then exit&amp;quot;&lt;br /&gt;
        echo &amp;quot;  -l  (list)                  list database sessions&amp;quot;&lt;br /&gt;
        echo &amp;quot;  -k  (kill)                  kill/terminate database sessions&amp;quot;&lt;br /&gt;
        echo &amp;quot;  -f  (force)                 force kill (do not ask for confirmation,&amp;quot;&lt;br /&gt;
        echo &amp;quot;                              use in conjunction with -k option)&amp;quot;&lt;br /&gt;
        echo &amp;quot;  -u  USER                    specify database user name&amp;quot;&lt;br /&gt;
        echo &amp;quot;  -p  PID                     specify database user process id (pid)&amp;quot;&lt;br /&gt;
        echo&lt;br /&gt;
        echo &amp;quot;Examples: &amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME -l                list all sessions&amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME -l -u &amp;lt;user&amp;gt;      list user sessions &amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME -k                kill all sessions&amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME -k -f             force kill all sessions&amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME -k -u &amp;lt;user&amp;gt;      kill user sessions&amp;quot;&lt;br /&gt;
        echo &amp;quot;  $BASENAME -k -p &amp;lt;pid&amp;gt;       kill user session with a specific pid&amp;quot;&lt;br /&gt;
	echo&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$OPT&amp;quot; = &amp;quot;list&amp;quot; ]; then&lt;br /&gt;
	UCTR=`$PSQLTC &amp;quot;select count(*) from pg_stat_activity&amp;quot; `&lt;br /&gt;
	echo; echo &amp;quot;Database Sessions (all users): $UCTR&amp;quot;&lt;br /&gt;
	SQL=&amp;quot;select procpid as &amp;quot;PID&amp;quot;, datname as &amp;quot;Database&amp;quot;, &amp;quot;&lt;br /&gt;
	SQL=&amp;quot;$SQL usename as &amp;quot;User&amp;quot; from pg_stat_activity&amp;quot;&lt;br /&gt;
	if [ ! -z &amp;quot;$user&amp;quot; ]; then&lt;br /&gt;
 		SQL=&amp;quot;$SQL where usename = '$user'&amp;quot;&lt;br /&gt;
		echo &amp;quot;Session List ($user)&amp;quot;&lt;br /&gt;
 	fi&lt;br /&gt;
	echo &amp;quot;----------------------------------&amp;quot;&lt;br /&gt;
	$PSQLC &amp;quot;$SQL&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$OPT&amp;quot; = &amp;quot;kill&amp;quot; ]; then&lt;br /&gt;
	SQL=&amp;quot;select procpid from pg_stat_activity &amp;quot;&lt;br /&gt;
	if [ ! -z &amp;quot;$user&amp;quot; ]; then&lt;br /&gt;
		SQL=&amp;quot;$SQL where usename = '$user'&amp;quot;&lt;br /&gt;
	elif [ ! -z &amp;quot;$pid&amp;quot; ]; then&lt;br /&gt;
		SQL=&amp;quot;$SQL where procpid = '$pid'&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	for pid in `$PSQLTC &amp;quot;$SQL&amp;quot; `; do&lt;br /&gt;
		if [ &amp;quot;$force&amp;quot; ]; then&lt;br /&gt;
			echo &amp;quot;Killing session (PID:$pid)&amp;quot;&lt;br /&gt;
			$KILL $pid&lt;br /&gt;
		else&lt;br /&gt;
			echo -n &amp;quot;Kill database session (PID:$pid) [y/n] ?:&amp;quot;&lt;br /&gt;
			read confirm&lt;br /&gt;
			if [ &amp;quot;$confirm&amp;quot; = &amp;quot;y&amp;quot; ]; then&lt;br /&gt;
				echo &amp;quot;Killing session (PID:$pid)&amp;quot;&lt;br /&gt;
				$KILL $pid&lt;br /&gt;
			fi&lt;br /&gt;
		fi&lt;br /&gt;
	done&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;$BASENAME: invalid option: $2&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
	echo &amp;quot;Try '$BASENAME --help' for more information.&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
	exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>