25

I use Ubuntu Server 10.10 and I would like to see what processes are running. I know that PostgreSQL is running on my machine but I can not see it with the top or ps commands, so I assume that they aren't showing all of the running processes. Is there another command which will show all running processes or is there any other parameters I can use with top or ps for this?

3 Answers 3

30

From the ps man page:

-e Select all processes. Identical to -A.

Thus, ps -e will display all of the processes. The common options for "give me everything" are ps -ely or ps aux, the latter is the BSD-style. Often, people then pipe this output to grep to search for a process, as in xenoterracide's answer. In order to avoid also seeing grep itself in the output, you will often see something like:

 ps -ef | grep [f]oo

where foo is the process name you are looking for.

However, if you are looking for a particular process, I recommend using the pgrep command if it is available. I believe it is available on Ubuntu Server. Using pgrep means you avoid the race condition mentioned above. It also provides some other features that would require increasingly complicated grep trickery to replicate. The syntax is simple:

pgrep foo

where foo is the process for which you are looking. By default, it will simply output the Process ID (PID) of the process, if it finds one. See man pgrep for other output options. I found the following page very helpful:

http://mywiki.wooledge.org/ProcessManagement

1
  • I wonder what percentage of people use ps without knowing the flags. I just throw aux at it always; I have no idea what the individual flags actually control Oct 21, 2010 at 5:07
4

have you tried ps aux | grep postgres? it really should show up if postgres is running. If it doesn't... how do you know postgres is running?

(note: it's a common misconception that's it's ps -aux but that's not correct)

3
  • 1
    Thanks, ps aux worked better, it showed around 70 processes, while ps showed only two. I know PostgreSQL was running since I saw that it was started on boot up and it was stopped on shutdown.
    – Jonas
    Oct 21, 2010 at 0:20
  • @Jonas some init scripts are poorly written. Don't believe them just because they say something was started and stopped. Just some advice Oct 21, 2010 at 0:41
  • There's also pgrep for this, which has the benefit of never catching your ps aux | grep postgres command itself in the process list and outputting it Oct 21, 2010 at 5:09
0

Answer including Filtering its Output Effectively Along with Automated bash Function

ps -elf | head -n 1; ps -elf | grep -i search_term | grep -v grep | grep -v "ps -elf"

Replace search_term above with any term you wish to search on to find 0 or more processes, for instance term.

Example usage:

ps -elf | head -n 1; ps -elf | grep -i term | grep -v grep | grep -v "ps -elf"

Output:

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 S user     14919  1394  0  80   0 - 217553 poll_s 04:14 ?       00:00:12 /usr/lib/gnome-terminal/gnome-terminal-server

Automate

In the root of your home directory, if you do not already have a .bash_aliases file, type the following:

touch .bash_aliases

Next, add a function to do the commands to the end of your .bash_aliases file:

echo 'pself() { ps -elf | head -n 1; ps -elf | grep -i "$1" | grep -v grep | grep -v "ps -elf"; }' >> .bash_aliases

Example usage (open up a new terminal window first):

pself term

Output:

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 S user     14919  1394  0  80   0 - 217553 poll_s 04:14 ?       00:00:12 /usr/lib/gnome-terminal/gnome-terminal-server

(Above tested on Ubuntu 18.04).

Article explaining all this in detail: here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .