ps 错误 /proc 必须被挂载 - 但可以作为 root 运行

ps 错误 /proc 必须被挂载 - 但可以作为 root 运行

这是一个 OpenVZ VPS 盒。例如:

$ ps
Error: /proc must be mounted
  To mount /proc at boot you need an /etc/fstab line like:
  /proc   /proc   proc    defaults
 In the meantime, run "mount /proc /proc -t proc"

$ sudo ps
[sudo] password for ....:
 PID TTY          TIME CMD
 4699 pts/2    00:00:00 sudo
 4700 pts/2    00:00:00 ps

它最近才开始(可能是从 开始apt-get upgrade)。我locale-gen最近也跑了,但我不知道这会有什么影响。

uname -a
Linux stormvz1 2.6.32-042stab072.10 #1 SMP Wed Jan 16 18:54:05 MSK 2013 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"

更新

尝试更改 /proc,但没有帮助:

$ ls -ld /proc
dr-xr-xr-x 98 root root 0 Apr  9 20:11 /proc
$ sudo chmod 755 /proc
[sudo] password for ....:
$ ls -ld /proc
drwxr-xr-x 98 root root 0 Apr  9 20:11 /proc
$ ps
Error: /proc must be mounted

也重启过几次 - 总体上看起来没问题,但就是有这个“小故障”

proc 在 fstab 中,但似乎没问题:

grep proc /etc/fstab
proc  /proc       proc    defaults    0    0

这些文件看起来/proc像这样 - 在我外行看来似乎没问题:

$ sudo ls -la /proc
[sudo] password for kimptoc:
total 4
drwxr-xr-x 105 root     root        0 Apr  9 20:11 .
drwxr-xr-x  22 root     root     4096 Mar  4 19:18 ..
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 1
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 108
dr-xr-xr-x   6 postfix  postfix     0 Apr 11 02:06 12337
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 139
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 140
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 173
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 2
dr-xr-xr-x   6 www-data www-data    0 Apr  9 21:02 2184
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 251
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 285
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 3
dr-xr-xr-x   6 postfix  postfix     0 Apr 11 07:20 30162
dr-xr-xr-x   6 root     root        0 Apr 11 07:20 30784
dr-xr-xr-x   6 postfix  postfix     0 Apr 11 07:20 30825
dr-xr-xr-x   6 postfix  postfix     0 Apr 11 07:20 30827
dr-xr-xr-x   6 postfix  postfix     0 Apr 11 07:20 30831
dr-xr-xr-x   6 kimptoc  kimptoc     0 Apr 11 07:20 30844
dr-xr-xr-x   6 kimptoc  kimptoc     0 Apr 11 07:20 30845
dr-xr-xr-x   6 root     kimptoc     0 Apr 11 07:20 30907
dr-xr-xr-x   6 root     root        0 Apr 11 07:20 30908
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 315
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 317
dr-xr-xr-x   6 syslog   syslog      0 Apr  9 20:11 401
dr-xr-xr-x   6 bind     bind        0 Apr  9 20:11 419
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 527
dr-xr-xr-x   6 postfix  postfix     0 Apr  9 20:11 531
dr-xr-xr-x   6 mongodb  nogroup     0 Apr  9 22:10 5372
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 557
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 559
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 663
dr-xr-xr-x   6 www-data www-data    0 Apr  9 20:11 667
dr-xr-xr-x   6 root     root        0 Apr  9 20:11 86
-r-xr-xr--   1 root     root        0 Apr 11 07:20 cgroups
-r-xr-xr--   1 root     root        0 Apr 11 07:20 cmdline
-r-xr-xr--   1 root     root        0 Apr 11 07:20 cpuinfo
-r-xr-xr--   1 root     root        0 Apr 11 07:20 devices
-r-xr-xr--   1 root     root        0 Apr 11 07:20 fairsched
-r-xr-xr--   1 root     root        0 Apr 11 07:20 fairsched2
-r-xr-xr--   1 root     root        0 Apr 11 07:20 filesystems
dr-xr-xr--   3 root     root        0 Apr 11 07:20 fs
-r--------   1 root     root        0 Apr 11 07:20 kmsg
-r--r--r--   1 root     root        0 Apr 11 07:20 loadavg
-r-xr-xr--   1 root     root        0 Apr 11 07:20 locks
-r-xr-xr--   1 root     root        0 Apr 11 07:20 meminfo
-r-xr-xr--   1 root     root        0 Apr 11 07:20 modules
lrwxrwxrwx   1 root     root       11 Apr 11 07:20 mounts -> self/mounts
lrwxrwxrwx   1 root     root        8 Apr 11 07:20 net -> self/net
-r--r--r--   1 root     root        0 Apr 11 07:20 partitions
lrwxrwxrwx   1 root     root       64 Apr  9 20:11 self -> 30908
-r-xr-xr--   1 root     root        0 Apr 11 07:20 stat
-r-xr-xr--   1 root     root        0 Apr 11 07:20 swaps
dr-xr-xr-x   1 root     root        0 Apr  9 20:11 sys
--wx--x---   1 root     root        0 Apr 11 07:20 sysrq-trigger
dr-xr-xr--   2 root     root        0 Apr 11 07:20 sysvipc
-r-xr-x---   1 root     root        0 Apr 11 07:20 uptime
-r-xr-xr--   1 root     root        0 Apr 11 07:20 user_beancounters
-r--r--r--   1 root     root        0 Apr 11 07:20 version
-r-xr-xr--   1 root     root        0 Apr 11 07:20 vmstat
dr-xr-x---   3 root     root        0 Apr 11 07:20 vz

更新

我最后重建了 VPS :)

答案1

看起来是你,或者可能是以 root 身份运行的有缺陷的脚本,更改了 的权限/proc。请检查它们:ls -ld /proc

这应该可以修复它:

sudo chmod 755 /proc

如果这还不够,重启可能是最简单的方法。你也许可以勉强继续下去。

检查中的其他文件是否/proc也受到影响:ls -l /proc。根据受影响的文件,以下内容可能足以修复(这不是完整列表,仅列出最重要的内容)。

sudo chmod -R 755 /proc/[a-z]*
find /proc -type d -exec sudo chmod +x {} +
sudo chmod 600 /proc/kcore /proc/kmsg /proc/kpagecount /proc/kpageflags /proc/vmallocinfo
sudo chmod 200 /proc/sysrq-trigger

确保您没有一行 for /procin /etc/fstab(通常不需要它,因为启动脚本无论如何都会在启动过程的早期挂载它),或者如果有,它只包含以下内容(并且可选择0 0在末尾):

proc  /proc  proc  defaults

如果您的fstab答案正确,但重启无法解决所有问题,则问题可能更大。请至少发布sudo ls -la /proc和的输出uname -a

答案2

我这样做:

strace ps aux | wc -l

我发现 :

在此处输入图片描述

答案3

我今天也遇到了同样的问题。原来是 ps 的 apparmor 配置文件不完整。使用sudo aa-logprof这个配置文件,我在 /etc/apparmor.d/ 中获得了这个新配置文件,它使 ps 恢复正常:

# Last Modified: Thu Mar 14 10:49:01 2019
#include <tunables/global>

/bin/ps {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>
  #include <abstractions/totem>

  capability sys_ptrace,

  /bin/ps mr,
  /etc/ld.so.preload r,
  /proc/*/cmdline r,
  /proc/*/stat r,
  /proc/*/status r,
  /proc/*/wchan r,
  /proc/filesystems r,
  /proc/meminfo r,
  /proc/sys/kernel/osrelease r,
  /proc/sys/kernel/pid_max r,
  /proc/tty/drivers r,
  /proc/uptime r,

}

不要忘记:

  • 在尝试新的配置文件之前,请备份旧的配置文件。
  • 在进行任何更改后,sudo service apparmor restart重新启动 apparmor 。/etc/init.d apparmor restart

相关内容