如何查看正在运行的进程?

如何查看正在运行的进程?

我使用 Ubuntu Server 10.10,我想查看正在运行哪些进程。我知道 PostgreSQL 正在我的机器上运行,但我无法使用topps命令看到它,所以我假设它们没有显示所有正在运行的进程。是否有另一个命令可以显示所有正在运行的进程,或者是否有任何其他参数可以与此一起使用topps用于此目的?

答案1

ps手册页:

-e 选择所有进程。与-A 相同。

因此,ps -e将显示所有进程。 “给我一切”的常见选项是ps -elyps aux,后者是 BSD 风格。通常,人们会将此输出通过管道传输到grep搜索进程,就像 xenoterracide 的答案一样。为了避免grep在输出中看到自身,您经常会看到类似以下内容:

 ps -ef | grep [f]oo

其中 foo 是您要查找的进程名称。

但是,如果您正在寻找特定进程,我建议使用该pgrep命令(如果可用)。我相信它可以在 Ubuntu 服务器上使用。使用pgrep意味着你可以避免上面提到的竞争条件。它还提供了一些其他功能,需要越来越复杂的grep技巧才能复制。语法很简单:

pgrep foo

其中 foo 是您正在查找的进程。默认情况下,如果找到进程,它将简单地输出该进程的进程 ID (PID)。请参见man pgrep其他输出选项。我发现以下页面非常有帮助:

http://mywiki.wooledge.org/ProcessManagement

答案2

你有没有尝试过ps aux | grep postgres?如果 postgres 正在运行,它确实应该显示。如果没有...你怎么知道 postgres 正在运行?

(注:这是一个常见的误解,ps -aux但这是不正确的)

答案3

答案包括有效过滤其输出以及自动化bash功能

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

将上面替换search_term为您希望搜索以查找 0 个或多个进程的任何术语,例如term

用法示例:

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

输出:

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

自动化

在主目录的根目录中,如果您还没有 .bash_aliases 文件,请键入以下内容:

touch .bash_aliases

接下来,添加一个函数来执行 .bash_aliases 文件末尾的命令:

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

使用示例(首先打开一个新的终端窗口):

pself term

输出:

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

(以上在 Ubuntu 18.04 上测试)。

文章详细解释了这一切:这里

相关内容