标签: proc

如何检查我的虚拟机有多少总内存?

我已经尝试过 /proc/meminfo 但我的许可被拒绝。

memory proc

4
推荐指数
1
解决办法
1万
查看次数

无法读取 sysctl 中的密钥“net.ipv6.conf.all.stable_secret”?

我在 Arch Linux 计算机上运行的内核版本如下:

[root@router ~ ]$ uname -a
Linux router 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 
Run Code Online (Sandbox Code Playgroud)

我注意到每次我通过sysctl -a管道输入 grep 命令时我都会收到以下消息

[root@router ~ ]$ sysctl -a | grep no_meaning
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
...
Run Code Online (Sandbox Code Playgroud)

对这些文件运行 cat:

[root@router ~ ]$ cat /proc/sys/net/ipv6/conf/all/stable_secret 
cat: /proc/sys/net/ipv6/conf/all/stable_secret: Input/output error
[root@router ~ ]$ ls -hl /proc/sys/net/ipv6/conf/all/stable_secret 
-rw------- 1 root root 0 Dec 24 14:57 /proc/sys/net/ipv6/conf/all/stable_secret
Run Code Online (Sandbox Code Playgroud)

到目前为止我还没有看到任何不良影响,但我想知道这是否正常,特别是这些stable_secret键的功能是什么?提前致谢。

kernel proc ipv6 sysctl

4
推荐指数
1
解决办法
8992
查看次数

为什么 INotify 不能与 `/etc/mtab` 或 `/proc/mounts` 一起使用?

当我将 INotify 与/etc/mtab或一起使用时/proc/mounts,它在安装或卸载事物时不会检测到更改,即使当我手动检查时/etc/mtab/proc/mounts都已更改。为什么会这样?我如何跟踪安装和卸载东西?

mount proc inotify

4
推荐指数
1
解决办法
1084
查看次数

sudo pgrep -f 匹配任意字符串并返回递增的 pids

在调试相关问题时,我注意到 pgrep 正在为看似任意的命令行模式返回一个 PID,例如:

$ sudo pgrep -f "asdf"
13017

$ sudo pgrep -f ";lkj"
13023

$ sudo pgrep -f "qwer"
13035

$ sudo pgrep -f "poiu"
13046

$ sudo pgrep -f "blahblahblah"
14038

$ sudo pgrep -f "$(pwgen 16 1)"
14219
Run Code Online (Sandbox Code Playgroud)

没有 sudo 的相同命令没有返回任何内容(如预期):

$ pgrep -f blahblahblah
Run Code Online (Sandbox Code Playgroud)

我试图通过管道将 PID 传递给 ps 以查看命令是什么,但这不起作用:

$ sudo pgrep -f blahblahblah | xargs ps -f -p
UID        PID  PPID  C STIME TTY          TIME CMD
Run Code Online (Sandbox Code Playgroud)

看起来进程终止得太快了。然后我尝试使用 ps 和 grep,但这也不起作用(即没有结果):

$ sudo ps -e …
Run Code Online (Sandbox Code Playgroud)

linux process ps proc

4
推荐指数
1
解决办法
1338
查看次数

如何在没有新依赖项的情况下获取磁盘读/写统计信息?

我明白通过安装dstatiostat我可以获得磁盘活动统计信息。

但是,现在我希望尽量减少依赖项,因为我不想强迫我的脚本用户安装其他东西。

所以我想知道是否有任何方法可以从某个地方读取磁盘统计信息/proc/

linux proc disk

4
推荐指数
1
解决办法
1184
查看次数

是否可以直接从Linux内核查询进程信息?

我知道pgrep, top, 和ps所有查询/proc文件系统。到现在为止还挺好。然而让我想到的是,过去没有/proc文件系统。即使在今天,据我所知,Mac OS X 没有/proc文件系统,但top仍然访问进程信息,这表明这些信息应该直接来自内核。但是,我的问题是针对 Linux 的。哪些库和/或系统调用可用于直接查询进程信息,绕过/proc?

c proc linux-kernel

4
推荐指数
1
解决办法
881
查看次数

如何读取具有linux能力的进程的/proc/<pid>/fd目录?

作为非 root 用户,我正在运行一个进程。进程二进制文件被赋予了 cap_sys_resource 能力。即使该进程由同一用户拥有,该用户也无法读取其 /proc//fd 目录。/proc/pid 中的权限如下所示:

dr-xr-xr-x.   9 ec2-user ec2-user 0 May 12 01:03 .
dr-xr-xr-x. 249 root     root     0 Apr  3 13:34 ..
dr-xr-xr-x.   2 ec2-user ec2-user 0 May 12 01:03 attr
-rw-r--r--.   1 root     root     0 May 12 01:04 autogroup
-r--------.   1 root     root     0 May 12 01:03 auxv
-r--r--r--.   1 root     root     0 May 12 01:04 cgroup
--w-------.   1 root     root     0 May 12 01:04 clear_refs
-r--r--r--.   1 root     root     0 May 12 01:03 cmdline …
Run Code Online (Sandbox Code Playgroud)

root permissions proc not-root-user capabilities

4
推荐指数
1
解决办法
7440
查看次数

/proc/pid/fd 中的 [socket:number] 是什么意思

由给定打开的 UNIX 域套接字作为 的符号链接$PID列出。我知道它是该套接字的标识符,但它到底是什么?它是 inode 吗?它到底是一个索引节点吗?/proc/$PID/fd/X[socket:ID]sockfs

# stat  /proc/15474/fd/18
  File: /proc/15474/fd/18 -> socket:[100754490]
  Size: 64              Blocks: 0          IO Block: 1024   symbolic link
Device: 4h/4d   Inode: 100753577   Links: 1
Access: (0700/lrwx------)  Uid: (  999/mysql)   Gid: (  999/  docker)
Access: 2020-08-14 10:08:09.834593933 +0200
Modify: 2020-08-14 10:08:07.842537799 +0200
Change: 2020-08-14 10:08:07.842537799 +0200
Run Code Online (Sandbox Code Playgroud)

linux proc socket

4
推荐指数
1
解决办法
3295
查看次数

执行 chmod 640 /etc/passwd /etc/group 是否安全?

我想阻止用户看到其他系统用户。我已经阻止使用 hidepid=2 挂载选项列出 /proc 的进程,阻止列出其他用户的主目录,但他们仍然可以通过执行“getent passwd”或“cat /etc/passwd”来查看用户所在的位置。

“chmod 640 /etc/passwd /etc/group”安全吗?什么可能会破坏?运行 Ubuntu 20.04 或 22.04。

linux security users ubuntu proc

4
推荐指数
1
解决办法
1321
查看次数

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

在研究与容器共享 PID 命名空间时,我注意到一些我不明白的有趣的事情。当容器与主机共享 PID 命名空间时,某些进程的环境变量会受到保护,而其他进程则不会。

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

ubuntu@sandbox:~$ docker container run -it -d --env MYSQL_ROOT_PASSWORD=SuperSecret mysql
551b309513926caa9d5eab5748dbee2f562311241f72c4ed5d193c81148729a6
Run Code Online (Sandbox Code Playgroud)

我将启动另一个共享主机 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
Run Code Online (Sandbox Code Playgroud)

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

ubuntu@sandbox:~$ docker container run -it --rm --pid host --cap-add …
Run Code Online (Sandbox Code Playgroud)

proc capabilities namespace docker kubernetes

4
推荐指数
1
解决办法
979
查看次数