linux 常用和不那么常用命令记录01

场景描述

我拿到了一台linux  知道了服务名 我想通过服务名称找到对应的服务的位置,主要是懒得挨个翻,常用的服务安装位置都没有找到。如果你的同事只给了你一台服务器 却什么都没告诉你,你找不到他 那么也许需要一些其他手段,求人不如靠自己呀!

使用哪些手段可以解决这个问题?下面看命令。

命令学习

ps -ef|grep java   过滤包含java关键字的进程信息,可以通过这个命令,来判断是否启用了相关进程
当然 这会查出全部的java进程 如果确定了名字 可以ps -ef|grep name

它的结果是这样的

上面模糊的位置就是服务的路径

ps -aux |grep java

ps 是一个用于列出当前系统上运行的进程的命令。它有许多选项,可以用来显示不同的信息。aux 选项组合是常见的,用于显示所有用户的所有进程

a 显示所有用户的进程,不仅仅是当前终端的进程。
u 以用户友好的格式显示进程信息,包括用户、CPU 和内存使用情况等。
x 显示没有控制终端的进程(主要是守护进程)。

grep <service-name>

grep 是一个文本搜索工具,(linux 万物皆文件)它从输入中查找匹配指定模式的行。这里 <service-name> 是你要查找的服务名称。这部分命令会筛选出包含该服务名称的所有进程信息行。

例如,如果你想查找所有与 nginx 服务相关的进程,可以运行:

ps aux | grep nginx

假设系统上有一个名为 nginx 的服务在运行,执行上述命令后,你可能会得到类似下面的输出:


root      1234  0.0  0.1 123456  7890 ?        Ss   12:34   0:01 nginx: master process /usr/sbin/nginx
www-data  5678  0.0  0.2 234567 12345 ?        S    12:34   0:00 nginx: worker process
user      9012  0.0  0.0  12345   678 pts/0    S+   12:36   0:00 grep --color=auto nginx

输出详解
第一列:用户(如 root, www-data, user)。
第二列:进程 ID(PID)。
第三列:CPU 使用率(百分比)。
第四列:内存使用率(百分比)。
第五列:虚拟内存大小(单位为 KB)。
第六列:常驻内存大小(单位为 KB)。
第七列:终端标识符(如 ? 表示没有控制终端)。
第八列:进程状态(如 S 表示睡眠状态)。
第九列:启动时间。
第十列:累计 CPU 时间。
第十一列:命令和参数。


关键点
nginx: master process /usr/sbin/nginx 表示主进程及其可执行文件路径。
nginx: worker process 表示工作进程。
grep --color=auto nginx 表示 grep 命令本身的进程,这是因为 grep 在查找过程中也会被列入结果中。

过滤 grep 自身的进程
为了避免输出中包含 grep 自身的进程,可以使用以下方式:


ps aux | grep nginx | grep -v grep
这里 grep -v grep 用于排除包含 grep 字样的行。

补充下 e f

-e

-e 选项等同于 -A 选项,表示显示所有用户的所有进程。这包括所有终端和守护进程。

-f

-f 选项表示“全格式”,它提供了一个更详细的输出,包括一些标准的和额外的列,如完整的命令行、父进程 ID(PPID)等。


查看树状结构:
如果你想查看进程之间的父子关系,可以使用 pstree 命令,它会以树状结构显示进程:

pstree -p

假设你想查看 sshd 进程及其子进程的树状结构,可以按以下步骤操作:

使用 pgrep 获取 sshd 的 PID:

pgrep sshd
这将返回 sshd 进程的 PID 列表,例如:


1234
5678
(假设系统中有两个 sshd 进程,其 PID 分别为 1234 和 5678。)

使用 pstree 显示特定 PID 的树状结构:


pstree -p 1234
这将显示 PID 为 1234 的 sshd 进程及其子进程的树状结构。

如果你想同时查看多个 sshd 进程的树状结构,可以分别执行命令,或者使用一个循环:


for pid in $(pgrep sshd); do pstree -p $pid; done


如果 你要找的是一个系统服务 那么可以使用下面的命令

systemctl 是systemd系统和服务管理器的命令行工具,你可以使用它来查看服务的状态和详细信息

# 通过系统命令行工具 找一个特定服务名的 状态信息
systemctl status <servie-name>

 它的结果是这样的  如果输错了 或者没有系统服务 就会没找到

在输出的详细信息中,你可能会看到服务的主可执行文件路径和配置文件路径

同时如果上面觉得 查出来的信息比较多 喜欢直接的可以使用下面的命令

使用 which 或 whereis 命令

如果你知道服务的可执行文件名,可以使用 which 或 whereis 命令来找到其路径。

which <executable-name>
或者
whereis <executable-name>
例如:

which nginx
或
whereis nginx

which 和 whereis 是两个常用的命令行工具,用于查找可执行文件的位置以及相关信息


which 命令
功能
which 命令用于查找并显示给定命令的可执行文件路径。当你在终端中输入一个命令时,操作系统会在环境变量 PATH 中指定的目录里查找该命令的可执行文件。which 命令可以告诉你这个可执行文件位于哪个目录。

which [选项] 命令
-a:显示在 PATH 变量中所有匹配的路径,而不仅仅是第一个。

例如:

which -a python3
输出可能是:

/usr/bin/python3
/usr/local/bin/python3


whereis 命令
功能
whereis 命令用于定位命令的二进制文件、源代码文件和 man 手册页。与 which 不同的是,whereis 更加强大,可以提供更多与命令相关的信息。


使用方法
whereis 命令
示例

查找 ls 命令及其相关文件的位置:
whereis ls
输出可能是:
ls: /bin/ls /usr/share/man/man1/ls.1.gz

查找 gcc 命令及其相关文件的位置:
whereis gcc

输出可能是:
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz

常用选项

-b:只搜索二进制文件。
whereis -b gcc

-m:只搜索手册页。
whereis -m gcc

-s:只搜索源代码文件。
whereis -s gcc

总结
which:用于查找可执行文件的位置,只返回环境变量 PATH 中找到的第一个匹配项,或者通过 -a 选项返回所有匹配项。
whereis:用于查找命令的二进制文件、源代码文件和手册页,返回更全面的信息。

 上面你都没找到那就上最后大招 那么就直接开始搜吧 有什么办法呢 搜起来

使用 find 命令

如果你对上述方法没有找到所需的信息,可以使用 find 命令在系统中搜索相关文件或目录。

find / -name "<service-name>*"

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值