linux系统查看进程命令

哎呀,你跳过了Linux进程命令百科全书。
它看起来绝对完美,不是吗?但让我告诉你我的经历。
这些命令在使用时并不完全相同。

我们来谈谈 ps 命令。
2 02 3 年我上次来深圳的时候,一位运维小哥告诉我,他刚开始使用Linux的时候,每次用PS都会感到困惑。
想想看,如果直接进入PS而不添加任何东西,只会显示你自己的进程,这是相当有限的。
后来他学会了用PS Aux,然后他才真正看到了整个画面,包括后台跑的鬼魂。
这个命令的关键是它有几个选项,你需要知道什么时候使用哪一个。

我经常使用top命令。
上次我在对上海一家公司的服务器上的 CPU 激增问题进行故障排除时,上面有一个很棒的工具。
它的实时刷新让你看得一清二楚,按CPU排序,哪个进程出问题一目了然。
按内存和PID排序也很方便。
然而,top 的一个烦人的事情是退出时总是必须按 q。
有时手抖,按错了,就得重新输入。

我对糕点印象不深,也很少用。
感觉这个过程可以看作是一种等级关系,就像一个家谱。
曾经是。
如果您管理一堆子程序并需要在后台启动它们,pstree 可能会很有用。

我在 PIDSTAT 方面经历了很多困难。
2 02 2 年,我在北京帮一个朋友测试服务器。
他断言某个过程的记忆会无限增长。
我让他用pidstat查看,他却摆摆手,加上了-u1 3 当我查看日志时,我很困惑,因为每次刷新数据只显示三次,所以我看不到全部。
后来我改了-u1 ,每次都刷新一下。
当我看着记忆慢慢增长时,我才意识到发生了什么。

我使用过 pmap 和 strace。
pmap 查看内存映射。
上次怀疑是某个Java程序使用了过多的共享库,就直接用pmap来查找,省去了一一检查的麻烦。
我喜欢使用压力。
上次程序无法连接到数据库,但像 ls 和 cat 这样的常规命令没问题,所以我使用 strace 来追踪它。
最后发现认证参数传递错误。
如果没有压力,我会感到震惊。

GDB是我自认为大师中的大师,但我可能玩不好。
我自己也用过很多次。
调试Python脚本时,GDB对我来说只是一个装饰品。
如果您从事内核开发或低级开发如果你从事C/C++这样的编程,那么GDB绝对是你的宿命。
不过话说回来,熟练使用GDB的人都是高级运维或者开发人员。
大多数人并不真正需要它。

一般来说,这些命令都有其用途。
如果你想快速查看正在运行的进程,ps 或 top 就足够了。
如果你想追踪进程之间的基本关系,pstree 是不错的选择。
如果您想密切关注某个进程以了解它在做什么,则 pystat 或 top 的交互模式可以满足您的需要。
内存问题? pmap 和压力联手。
代码级调试?然后你就可以使用gdb了。

但老实说,大多数人不需要学习所有这些命令。
只要想一下你的服务器上跑的是什么业务,有哪些常见的问题,然后有针对性的去了解一些问题。
我还在想一个问题,我应该先学哪个?无论如何,这取决于你。

linux中查看服务是否启动的方法有哪些

抱歉,检查Linux下的服务启动状态要根据具体情况而定。
我们以Redis服务为例。
对于其他服务,只需将“Redis”替换为服务名称和端口号即可。

方法一,直接使用进程状态命令,即 ps -ef | grep 服务名称,例如 ps -ef |抓紧萝卜。
这个东西可以给你列出Redis相关的进程信息。
如果您看到 redis-server 行,那么我们可以确定该服务已启动。
不过,这种方法有一个小缺点,那就是你必须小心排除 grep 命令本身生成的进程,以免将它们混淆。

方法二、看端口。
默认的 Redis 端口是 6 3 7 9 您可以使用 lsof -i:6 3 7 9 或 netstat -tulnp | grep 6 3 7 9 进行检查。
如果该端口被redis-server进程占用,则说明服务已启动。
当您知道服务端口号时,此方法适用。

方法三、使用网络连接状态工具,如netstat -tnlp。
这个东西可以显示所有 TCP 端口的监听状态和关联进程。
找到6 3 7 9 端口,看是否处于LISTEN状态,进程是否为redis server。
这个方法相当广泛,可以给你更多的信息,但是你需要考虑到权限问题,有时你需要sudo。

方法四,如果使用systemd来管理服务,比如在Ubuntu或者CentOS 7 以上版本,可以使用systemctl status服务名,比如systemctl status redis。
这个东西可以告诉您服务是否处于活动状态(正在运行),还可以为您提供详细信息,例如进程 ID 和启动时间。

总之,这几种方法各有各的用途,你要根据具体情况来选择。
进程控制简单直接,端口轮询适合检查监听状态,网络工具可以给你更详细的信息,服务管理工具适合检查系统级服务。
根据您的需要进行选择,或组合使用以提高准确性。
说实话,当时我不知道该用哪一个,但是尝试了几次就知道了。