在Linux的proc(5)
手册页告诉我,/proc/$pid/mem
“可用于访问进程的内存的页面”。但是直接尝试使用它只会给我
$ cat /proc/$$/mem /proc/self/mem
cat: /proc/3065/mem: No such process
cat: /proc/self/mem: Input/output error
Run Code Online (Sandbox Code Playgroud)
为什么不能cat
打印自己的内存(/proc/self/mem
)?当我尝试打印 shell 的内存时,这个奇怪的“没有这样的进程”错误是什么(/proc/$$/mem
显然进程存在)?那我怎么读/proc/$pid/mem
呢?
我写的时候会发生什么cat /proc/cpuinfo
。这是通向操作系统的命名管道(或其他东西),它会动态读取 CPU 信息并在我每次调用它时生成该文本?
procfs 和 sysfs 有什么区别?为什么它们被做成文件系统?据我了解, proc 只是存储有关系统中运行的进程的即时信息的东西。
我想从 Linux 系统上的 shell 脚本或本机代码中杀死特定用户的所有正在运行的进程。
我是否必须阅读 /proc 目录并查找这些?
有任何想法吗?Linux 中 UID 下的 pid 是否有动态映射?这不是在proc中吗?
如果没有,那么这个列表在哪里维护?我应该从中阅读吗?此外,系统中所有 UID 的静态列表在哪里,以便我可以验证此用户是否存在,然后继续杀死在其下运行的所有进程?
有没有办法告诉内核现在返还可用磁盘空间?就像在 /proc/ 中写入内容一样?使用 Ubuntu 11.10 和 ext4。
这可能是一个古老而重复的主题。只有当我的编辑器无法保存我打开的源代码文件时才注意到 0 空间后,令我恐惧的是文件夹列表中现在有 0 字节大小,我继续疯狂删除。
我从用户和 root 中删除了 100 MB 的大文件,并且还做了一些硬链接。
就在我这样做之前apt-get clean
,/var/cache/apt/archives 中有超过 900MB,现在只有 108KB:
# du
108 /var/cache/apt/archives
Run Code Online (Sandbox Code Playgroud)
一个小时后仍然没有可用空间并且无法保存我在编辑器中打开的宝贵文件,但请注意以下差异:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
Run Code Online (Sandbox Code Playgroud)
有什么建议?我关闭了一些服务/进程,但不确定如何检查谁可能正在积极占用磁盘空间。
更多信息
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First …
Run Code Online (Sandbox Code Playgroud) 查看/proc/$mypid/fd/,我看到这些文件
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 0 -> /dev/pts/36 (deleted)
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 3 -> socket:[1424055856]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 4 -> socket:[1424055868]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 5 -> socket:[1424055882]
Run Code Online (Sandbox Code Playgroud)
因为我可以访问代码,所以我知道这些套接字与 TCP 连接相关(一个是连接到某台机器上的端口 5672,另一个连接到其他机器上的端口 3306),但我想知道哪个套接字是绑定到哪个连接。我怎样才能做到这一点?
更一般地说,我如何向操作系统询问套接字的另一端是什么?
https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s3-proc-self.html 说
该
/proc/self/
目录是指向当前正在运行的进程的链接。
总是有多个进程并发运行,那么哪个进程是“当前运行的进程”呢?
考虑到上下文切换,“当前正在运行的进程”是否与当前在 CPU 上运行的进程有关?
“当前正在运行的进程”是否与前台和后台进程无关?
我目前在缓存方面遇到了一些问题。现在有点太多了,所以我想清除它。我用谷歌搜索并找到了这个小命令:sync && echo 3 > /proc/sys/vm/drop_caches
.
我通过 SSH 以 root 身份登录(不使用 sudo)。这些是我所做的尝试:
root@server: ~ # ll /proc/sys/vm/drop_caches
-rw-r--r-- 1 root root 0 15. Jan 20:21 /proc/sys/vm/drop_caches
root@server: ~ # echo 3 > /proc/sys/vm/drop_caches
-bash: /proc/sys/vm/drop_caches: Permission denied
root@server: ~ # sudo su -c "echo 3 > /proc/sys/vm/drop_caches"
bash: /proc/sys/vm/drop_caches: Permission denied
root@server: ~ # echo 3 | sudo tee /proc/sys/vm/drop_caches
tee: /proc/sys/vm/drop_caches: Permission denied
3
Run Code Online (Sandbox Code Playgroud)
它是一台运行 Debian 的远程机器。据我所知,这台机器中有一些 vCore,它使用 Virtuozzo 进行虚拟化。
我真的只想清除缓存(所以我只能使用 SSH 访问它)。
我也尝试将其注册为 cronjob。但它也只是失败了!
在的sysctl,所述/proc/sys/net/ipv[46]/conf/
键具有以下子项:all
,default
,和每个网络接口的密钥。例如,在具有单个网络接口 eth0 的机器上,它将如下所示:
iserv ~ # ll /proc/sys/net/ipv[46]/conf/
/proc/sys/net/ipv4/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/
/proc/sys/net/ipv6/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. …
Run Code Online (Sandbox Code Playgroud) 在 Linux 中/proc/PID/fd/X
,作为管道或套接字的文件描述符的链接有一个编号,例如:
l-wx------ 1 user user 64 Mar 24 00:05 1 -> pipe:[6839]
l-wx------ 1 user user 64 Mar 24 00:05 2 -> pipe:[6839]
lrwx------ 1 user user 64 Mar 24 00:05 3 -> socket:[3142925]
lrwx------ 1 user user 64 Mar 24 00:05 4 -> socket:[3142926]
lr-x------ 1 user user 64 Mar 24 00:05 5 -> pipe:[3142927]
l-wx------ 1 user user 64 Mar 24 00:05 6 -> pipe:[3142927]
lrwx------ 1 user user 64 Mar 24 00:05 7 …
Run Code Online (Sandbox Code Playgroud) proc ×10
linux ×7
filesystems ×2
kernel ×2
process ×2
socket ×2
c ×1
df ×1
disk-usage ×1
ext3 ×1
ext4 ×1
ipv6 ×1
memory ×1
networking ×1
open-files ×1
openvz ×1
permissions ×1
pipe ×1
sysctl ×1
sysfs ×1