我有一个 12.04LTS 系统,当普通用户(即非 root 用户)运行 uptime 命令时,该命令不会产生任何输出:
bbx@bard:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.3 LTS
Release: 12.04
Codename: precise
bbx@bard:~$ id
uid=1000(bbx) gid=1000(bbx) groups=1000(bbx),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),111(lpadmin),112(sambashare)
bbx@bard:~$ w
10:42:56 up 21 days, 21:31, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 redacted 10:35 0.00s 0.35s 0.00s w
bbx@bard:~$ uptime
bbx@bard:~$ echo $?
0
还...
bbx@bard:~$ ls -l /proc/uptime /proc/loadavg
-r--r--r-- 1 root root 0 Jan 21 12:57 /proc/loadavg
-r--r--r-- 1 root root 0 Jan 21 12:57 /proc/uptime
strace 输出是可从 PasteBin 获得。
同时,当由 root 调用时,uptime 工作正常(输出与 w(1) 命令匹配):
root@bard:~# id
uid=0(root) gid=0(root) groups=0(root)
root@bard:~# uptime
10:45:49 up 21 days, 21:34, 1 user, load average: 0.00, 0.01, 0.05
有人知道为什么吗?
答案1
看看你提供的 strace:
bbx@bard:~$ 更多 strace-uptime.txt 执行(“/home/bbx/bin/正常运行时间", ["正常运行时间"], [/* 15 变量 */]) = 0 ...
您的非 root 用户bbx
有一个脚本~/bin/uptime
需要执行。以 root 身份运行时,另一个uptime
程序会执行。要解决此问题,请检查/home/bbx/bin/uptime
那里正在执行的操作,并尽可能将其删除。否则,请使用完整路径 ( /usr/bin/uptime
)。