这是一个 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 /proc
in /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