您登录到一个不熟悉的 UNIX 或 Linux 系统(以 root 身份)。您运行哪些命令来定位自己并确定您所在的系统类型?您如何确定正在使用的硬件类型、正在运行的操作系统类型以及权限和安全方面的当前情况?
您输入的第一个和第二个命令是什么?
答案1
一个双重用途的问题!软件考古学家或邪恶黑客都可以使用这个问题的答案!现在,我是谁?
我总是用ps -ef
vsps -augxww
来了解我在做什么。 Linux 和 System V 机器倾向于使用“-ef”和“-augxww”上的错误,对于 BSD 和旧 SunOS 机器反之亦然。的输出ps
也可以让你了解很多。
如果您可以以 root 身份登录,并且它是一台 Linux 机器,那么您应该这样做lsusb
-lspci
这将使您 80% 地了解硬件状况。dmesg | more
可以帮助您了解任何当前的问题。
它已开始被淘汰,但实际操作ifconfig -a
通常可以告诉您很多有关网络接口和网络的信息。运行mii-tool
和/或在您在输出中看到的看起来像有线以太网的ethtool
接口上也可以为您提供一些信息。ifconfig
Runninip route
或netstat -r
可以提供有关 Internet 协议路由的信息,也可能提供有关正在使用的网络接口的信息。
调用mount
可以告诉您有关磁盘及其安装方式的信息。
运行uptime
,然后last | more
可以告诉您有关当前维护状态的信息。打个比方,正常运行时间超过 100 天可能意味着“是时候更换机油和液体了”。跑步who
也是
查看/etc/resolv.conf
并/etc/hosts
可以告诉您有关该机器的 DNS 设置的信息。也许可以做nslookup google.com
或dig bing.com
看看 DNS 是否大部分正常工作。
始终值得关注哪些错误(“未找到命令”)以及命令的哪些变体(“ps -ef”与“ps augxww”)可以确定您最终使用的 Unix 或 Linux 或 BSD 的哪个变体。
C 编译器是否存在以及它位于何处非常重要。做which cc
或者更好,which -a cc
找到他们。
答案2
cat /etc/*release*
是一个很好的命令,用于获取正在运行的发行版的概述。
答案3
http://bhami.com/rosetta.html审查可能很方便,否则我通常会在/etc
(帐户、初始化内容、操作系统风格的提示等)下浏览,crontab -l
并浏览ps
列表以查找需要学习的内容。
另外,“作为 root”是非常可怕的,因为我必须修复系统,其中 Linux 管理员进行此类调查将所有 Solaris 主机名设置为-f
.
这也是df
一个危险的命令,是阻塞 I/O 的好方法。因此,在您至少调查了安装,或者知道可以以某种方式打开另一个会话之前,切勿运行它。
使用非常简单的命令(uname
、cd /etc; ls
、cat
、$PAGER
),直到您弄清楚主机是什么,如果您不熟悉它,请检查 Rosetta 或始终阅读手册页,然后再假设某些命令或命令的标志执行其操作更受欢迎的系统。