AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[proc](unix)

Martin Hope
czjabc
Asked: 2024-03-08 14:04:53 +0800 CST

为什么进程的通讯值来自进程名称的最后 15 个字符,而线程的通讯值来自前 15 个字符?

  • 5

我正在 Android 11 设备上进行开发。我很困惑的是,进程的通讯值来自进程名称的最后 15 个字符,但线程的通讯值来自前 15 个字符。有任何手册页对此进行解释吗?

例如:

console:/ # cat /proc/5455/comm                                                
ndroid.launcher
console:/ # cat /proc/5455/task/5470/comm                                      
ReferenceQueueD
proc
  • 1 个回答
  • 17 Views
Martin Hope
mrn
Asked: 2023-07-07 20:15:33 +0800 CST

谁在 GNU/Linux 系统中挂载 /proc 和 /sys?

  • 5

如果您为嵌入式设备构建自定义GNU/Linux系统,是否需要执行

mount -t proc proc /proc
mount -t sysfs sysfs /sys

在 init 进程中的某个地方还是由内核自动完成的?我读过有关此的相互矛盾的陈述。一本嵌入式 Linux 书籍建议在 init 脚本中运行命令,而我在某处读到 Systemd 没有这样做,因为它是在创建用户空间之前由内核完成的。

到底什么才是真实的呢?谁登上/proc和/sys?

proc
  • 1 个回答
  • 38 Views
Martin Hope
Nonok cantik
Asked: 2023-06-09 02:50:32 +0800 CST

在 8GB 内存 PC 上的 Linux 上显示的内存总量仅为 7038920 kB

  • 5

为什么 linux /proc/meminfo 显示:“ 1 MemTotal: 7038920 kB ”(proc 很可能是指 Kibibyte)在 8 GB 内存 RAM 的 PC 中,尽管它的 Kibibyte 是 7812500?

proc
  • 1 个回答
  • 29 Views
Martin Hope
Dejan Zelic
Asked: 2022-10-07 10:16:02 +0800 CST

什么机制阻止我在具有与主机共享的 PID 命名空间的容器中读取 /proc/<PID>/environ?

  • 3

在研究与容器共享 PID 命名空间时,我注意到一些我不理解的有趣的东西。当容器与主机共享 PID 命名空间时,一些进程的环境变量受到保护,而另一些则没有。

让我们以 mysql 为例。我将启动一个带有 env 变量集的容器:

ubuntu@sandbox:~$ docker container run -it -d --env MYSQL_ROOT_PASSWORD=SuperSecret mysql
551b309513926caa9d5eab5748dbee2f562311241f72c4ed5d193c81148729a6

我将启动另一个共享主机 PID 命名空间的容器并尝试访问该environ文件:

ubuntu@sandbox:~$ docker container run -it --rm --pid host ubuntu /bin/bash

root@1c670d9d7138:/# ps aux | grep mysql
999        18212  5.0  9.6 2006556 386428 pts/0  Ssl+ 17:55   0:00 mysqld
root       18573  0.0  0.0   2884  1288 pts/0    R+   17:55   0:00 grep --color=auto mysql

root@1c670d9d7138:/# cat /proc/18212/environ
cat: /proc/18212/environ: Permission denied

有些东西阻止了我读取环境变量的权限。我发现我需要CAP_SYS_PTRACE在容器中阅读它:

ubuntu@sandbox:~$ docker container run -it --rm --pid host --cap-add SYS_PTRACE  ubuntu /bin/bash

root@079d4c1d66d8:/# cat /proc/18212/environ
MYSQL_PASSWORD=HOSTNAME=551b30951392MYSQL_DATABASE=MYSQL_ROOT_PASSWORD=SuperSecretPWD=/HOME=/var/lib/mysqlMYSQL_MAJOR=8.0GOSU_VERSION=1.14MYSQL_USER=MYSQL_VERSION=8.0.30-1.el8TERM=xtermSHLVL=0MYSQL_ROOT_HOST=%PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binMYSQL_SHELL_VERSION=8.0.30-1.el8

但是,并非所有进程都以这种方式受到保护。

例如,我将启动另一个容器 ubuntu 容器并设置 env 变量并运行tail命令。

ubuntu@sandbox:~$ docker container run --rm --env SUPERSECRET=helloworld -d ubuntu tail -f /dev/null
42023615a4415cd4064392e890622530adee1f42a8a2c9027f4921a522d5e1f2

现在,当我使用共享 pid 命名空间运行容器时,我可以访问环境变量。

ubuntu@sandbox:~$ docker container run -it --rm --pid host ubuntu /bin/bash

root@3a774156a364:/# ps aux | grep tail
root       19056  0.0  0.0   2236   804 ?        Ss   17:57   0:00 tail -f /dev/null
root       19176  0.0  0.0   2884  1284 pts/0    S+   17:58   0:00 grep --color=auto tail

root@3a774156a364:/# cat /proc/19056/environ
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=42023615a441SUPERSECRET=helloworldHOME=/root

什么机制阻止我读取 mysqld 环境变量而不是tail -f进程?

docker proc
  • 1 个回答
  • 49 Views
Martin Hope
Daniel Walker
Asked: 2022-10-02 10:47:01 +0800 CST

IPv6环回地址的二进制格式

  • 3

在一个终端中,我跑了

$ nc -l -6 ::1 5000

在另一个终端,我跑了

$ cat /proc/net/tcp6

并看到了这一行:

   0: 00000000000000000000000001000000:1388 00000000000000000000000000000000:0000 ...

为什么说我在听::1:0:0:0而不是在听::1?

ipv6 proc
  • 1 个回答
  • 75 Views
Martin Hope
Georg Schölly
Asked: 2022-06-24 01:28:33 +0800 CST

/proc 如何与 PID 命名空间交互?

  • 7

我不明白命名空间如何与/proc. 我假设/proc根据查询它们的过程返回值。

例如,让我们确定全局 PID 命名空间内当前进程的 PID:

$ bwrap --bind / / readlink /proc/self
6182

这对我来说很有意义。readlink但是,当我在自己的 PID 命名空间中隔离时:

$ bwrap --bind / / --unshare-pid readlink /proc/self
6177

我得到同样的结果!要在命名空间中获取 PID,我需要添加--proc /proc:

$ bwrap --bind / / --unshare-pid --proc /proc readlink /proc/self
2

但不应该/proc总是考虑阅读过程的背景吗?为什么procfs需要额外的,它与readlink流程有什么关系?

如果我不创建新的 PID 命名空间,额外的procfs没有什么区别:

$ bwrap --bind / / --proc /proc readlink /proc/self
6179
linux proc
  • 1 个回答
  • 353 Views
Martin Hope
Arthur Tarasov
Asked: 2022-04-29 05:46:01 +0800 CST

为什么 VmallocTotal 为 34359738367 kB?

  • 0

/proc/meminfo有记忆统计VmallocTotal。它被描述为

vmalloc 内存区域的总大小。

在proc 的手册页中

和其他地方一样

内核中可用于vmalloc分配的总内存

它激发了我的好奇心,因为它是一个非常高的数字,而且我搜索的所有地方都恰好是 34359738367 kB。这似乎是一个任意的最大值。但是 34359738367 kB 有什么意义呢?它不是 2 的倍数,也不是质数,而是十六进制的 0x7FFFFFFFF。我还注意到pmap进程内存映射地址最大为 0x7FFFFFFFF。但是那么0x7FFFFFFFF的实际意义是什么呢?

proc meminfo
  • 1 个回答
  • 572 Views
Martin Hope
quber
Asked: 2022-04-20 12:58:54 +0800 CST

/sys 中的内核选项更改

  • 0

如果 /proc/sys 和 /sys 相同,我可以更改 /sys 中的内核选项而不是 /proc/sys 中的内核选项吗?
如果不是,为什么?

proc
  • 1 个回答
  • 23 Views
Martin Hope
Bruce Adams
Asked: 2022-04-14 16:08:39 +0800 CST

鉴于我们有 API /proc/pid/status 应该/可以 /proc/pid/stat 被弃用吗?

  • 0

我对通过procfs在 GNU/Linux 中可用的进程信息有一些疑问。这最初是因为希望从应用程序中提取 vmPeak、vmSize、vmRSS 和 vmHWM。

我从一个工作假设开始,即 根据kernel.org的评论,该版本是机器可读/proc/<pid>/status的人类可读版本:/proc/<pid>/stat

stat - 进程状态

status - 人类可读形式的进程状态

当我注意到vmPeak只能从/proc/pid/status.

似乎/proc/pid/status实际上结合了来自多个地方的值并添加了一些自己的值。

鉴于我们/proc/pid/status是否有任何理由使用/proc/pid/stat?需要什么? 为什么有两个 API?可能/proc/pid/stat被弃用还是有用?

stat不等价。它提供的字段较少。它只是稍微容易解析(如果你天真地这样做,会有一个微妙的错误)。任何使用 stat 的程序都可以轻松切换到使用状态。有多少人真的会崩溃?

我刚刚为两者编写了解析器(尽管最终我将一个用于 stat ,因为 API 不太有用)。对于机器可读的内容不多。事实上,“状态”的解析器最终变得更加优雅,因为您可以将它直接读入您喜欢的任何类型的键值存储中。状态似乎更容易从任何语言解析并且可扩展。

有多少程序实际上依赖于“stat”而不是“status”?他们中的任何一个人真的需要这可能提供的微不足道的解析速度吗?

现在我知道由于向后兼容性,stat 多年来无法删除,但您可以说“现在已弃用”,除非有充分的理由保留它(这将是我问题的一个可能答案)。

如果性能是一个问题,那么通过虚拟文件系统将此内核信息转换为文本并返回的性能肯定不如库调用的性能。

正如这个答案所暗示的那样,继续添加新的 API 可能令人讨厌,但鉴于其中大部分是稳定的,为什么没有 C 库 API,例如sysinfo?

linux proc
  • 3 个回答
  • 393 Views
Martin Hope
Daniel Walker
Asked: 2022-01-27 10:09:52 +0800 CST

以编程方式确定套接字文件的各个方面

  • 0

我正在尝试编写一个程序(用 C 语言),作为其功能之一,它遍历 procfs 以查找打开的套接字并确定诸如目标/源端口/地址之类的东西(类似于 netstat 和 lsof 所做的)。但是,一旦找到套接字文件,我不确定使用哪个系统调用。例如,假设我已经打电话回来readlink了。我可以用这些信息做什么,单独使用系统 API 来获取套接字的详细信息?/proc/123/fd/4socket:[56789]

我试过跑步strace,netstat但不清楚发生了什么。我看到了read,/proc/123/fdinfo/4但我不明白这是怎么回事。

例如,fdinfo一个打开的连接(到 127.0.0.1:5000 的 TCP 连接)的文件显示

pos:    0
flags:  04002
mnt_id: 9
socket proc
  • 1 个回答
  • 124 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve