当前位置: 首页 > Linux

提高效率!每个Linux管理员都必须使用的10项关键技能

时间:2023-04-07 00:17:23 Linux

优秀的系统管理员以效率着称。如果一个高效的系统管理员可以在10分钟内完成其他人需要2小时才能完成的任务,他应该得到奖励(获得更多报酬),因为他为公司节省了时间,而时间就是金钱。这里有一些节省时间的技巧——即使不能因为提高工作效率而获得更多报酬,至少给你更多的自由支配时间。提示1:弹出无响应的DVD驱动器网络新手体验:当我按下服务器(运行基于Redmond的操作系统)DVD驱动器上的弹出按钮时,它会立即弹出。然后他抱怨说,在大多数企业Linux服务器中,如果您在该目录中运行进程,则不会出现弹出窗口。作为长期的Linux管理员,我会重启机器。如果我不知道正在运行什么以及为什么DVD驱动器没有释放,我只是弹出磁盘。但这是非常低效的。以下是找出DVD驱动器上有什么东西并轻松弹出它的方法:首先模拟它。将磁盘放入DVD驱动器,打开终端,挂载DVD驱动器:mount/media/cdromcd/media/cdromwhile[1];doecho"你所有的驱动器都属于我们!";睡30;done现在打开第二个打开终端并尝试弹出DVD驱动器:弹出将收到以下消息:umount:/media/cdrom:deviceisbusy在释放设备之前,让我们找出谁在使用它fuser/media/cdromprocessisrunning无法弹出磁盘其实是我们的错。现在,如果你是root,你可以随意终止进程:fuser-k/media/cdrom现在你终于可以卸载驱动器了:ejectfuser工作正常。技巧2:恢复有问题的屏幕试试这个:cat/bin/cat注意!终端就像垃圾。输入的所有内容都非常混乱。那么该怎么办?输入重置。但是,键入reset与键入reboot或shutdown太接近了。手心出汗——尤其是当你在生产机器上做这件事的时候。请放心,机器不会在执行此操作时重新启动。继续:重置现在屏幕恢复正常。这比关闭窗口并重新登录要好得多,特别是如果你必须经过5台机器和SSH才能到达这台机器。技巧3:屏幕上的协作产品工程部的高级维护用户David打电话说“为什么我不能在您要部署到的这些新机器上编译supercode.c”。你问他,“你在运行什么机器?”大卫回答说,“豪华”。(虚拟公司将其五台生产服务器命名为纪念辣妹)。现在你可以展示你的技能了,另一台机器由David操作:su-davidgotoposh:ssh一旦posh到达,运行以下代码:screen-Sfoo然后调用David:“David,在终端运行命令#屏幕-xfoo”。此时,您与David的会话已加入Linuxshell。你可以打字,他也可以,但每个人都可以看到对方在做什么。这样就避免了去其他层,双方都有平等的控制权。这样做的好处是David可以观察到您的故障排除技巧,并确切地知道如何解决问题。最后,每个人都可以看到问题所在:David的编译脚本硬编码了一个不在这个新服务器上的旧目录。加载并再次编译解决了问题,David继续工作。您可以继续之前的娱乐活动。关于此技术需要注意的一件事是双方需要以同一用户身份登录。screen命令还可以:实现多窗口和分屏。请阅读手册页以获取更多信息。对于屏幕会话,我还有最后一招。要与其分离并使其保持打开状态,请键入Ctrl-AD(即,按住Ctrl键并单击A键。然后按D键)。然后可以通过再次运行screen-xfoo命令将其重新拼接在一起。技巧4:恢复您的root密码如果您忘记了root密码,您将不得不重新安装整个机器。更糟糕的是,很多人都这样做。但是启动机器和更改密码非常简单。这并非在所有情况下都有效(例如设置GRUB密码但又忘记了它),但这里有一个CentOSLinux示例,说明了一般情况下该怎么做。首先重启系统。重新启动后,将弹出图1所示的GRUB屏幕。移动箭头键,以便您停留在该屏幕上,而不是进入正常启动。图1.重新引导后的GRUB屏幕然后,使用箭头键选择要引导的内核,然后输入E编辑内核行。然后您应该看到图2所示的屏幕:图2:准备编辑内核行再次使用箭头键突出显示以内核开头的行,然后按E编辑内核参数。当您到达图3所示的屏幕时,只需将数字1附加到图3所示的参数:图3.将数字1附加到参数并按Enter和B,内核将启动到单用户模式。然后运行??passwd命令更改用户root密码:sh-3.00#passwdNewUNIXpassword:RetypenewUNIXpassword:passwd:allauthenticationtokensupdatedsuccessfully现在你可以重新启动,机器将以新密码启动。提示5:SSH后门出现过很多次,我所在的站点需要远程支持,但被公司的防火墙阻止了。很少有人意识到,如果能通过防火墙到达外面,就可以很容易地让外面的信息进来。从字面上看,这就是所谓的“在防火墙上打个洞”。我称之为SSH后门。为了使用它,必须有一台连接到互联网的中介机器。在本例中,将这样的机器称为blackbox.example.com。公司防火墙后面的机器称为生姜。这种技术支持的机器称为技术。图4解释了设置过程。图4.在防火墙上打一个洞方法如下:检查允许的内容,但要确保您问的是正确的人。大多数人担心您打开了防火墙,但他们不了解它是完全加密的。此外,必须入侵外部机器才能进入公司内部。但是,您可能是“可以做”的类型之一。你应该选择你自己判断的方式,但不要在你不满意的时候抱怨别人。使用-R标志从ginger通过SSH连接到blackbox.example.com。假设你是rootonginger,tech需要一个rootID来帮助使用系统。使用-R标志将黑盒上的端口2222上的指令转发到姜上的端口22。这将设置SSH隧道。请注意,只有SSH流量可以进入ginger:您不会将ginger放在未受保护的Internet上。这可以使用以下语法实现:~#ssh-R2222:localhost:22thedude@blackbox.example.com一旦你进入黑盒,只需保持登录状态。我总是输入以下命令:thedude@blackbox:~$而[1];约会;睡眠300;完成以保持机器忙碌。然后最小化窗口。现在指导你的技术朋友使用SSH连接到黑盒,而不使用任何特殊的SSH标志。但是你必须给他们密码:root@tech:~#sshthedude@blackbox.example.com一旦tech在blackbox上,你可以通过SSH连接到ginger:thedude@blackbox:~$:ssh-p2222root@localhostTech系统将提示您输入密码。应输入ginger的root密码。现在您和技术支持人员可以一起工作并解决问题。连屏幕都需要配合使用!(见提示4)。技巧6:通过SSH隧道的远程VNC会话VNC,或虚拟网络计算,已经存在了很长时间。通常,只有当远程服务器上的某种图形程序只能在本服务器上使用时,我才需要VNC。例如,假设ginger是技巧5中的存储服务器。许多设备使用GUI程序来管理存储控制器。这些GUI管理工具通常需要通过网络直接连接到存储服务器,有时存储服务器位于专用子网上。因此,这个GUI只能通过ginger访问。您可以尝试使用-X选项通过SSH连接到ginger并启动它,但这会占用大量带宽,您将不得不等待。VNC是一种网络友好型工具,几乎可以在任何操作系统上运行。假定与技巧5中的设置相同,但希望技术人员能够访问VNC而不是SSH。对于这种情况,需要做类似的事情,但转发VNC端口。执行以下步骤:在ginger上启动VNC服务器会话。运行以下命令:root@ginger:~#vncserver-geometry1024x768-depth24:99这些选项指示以1024x768的分辨率和每像素24位的像素深度启动服务器。如果使用较慢的连接设置,8可能是更好的选择。使用:99指定可访问VNC服务器的端口。VNC协议从5900开始,所以:99表示可以从端口5999访问服务器。启动此会话时,系统会要求您指定密码。用户ID与启动VNC服务器的用户(在本例中为root)相同。从ginger到blackbox.example.com的SSH将blackbox上的端口5999转发到ginger。这是在ginger中通过运行以下命令完成的:root@ginger:~#ssh-R5999:localhost:5999thedude@blackbox.example.com运行此命令后,您需要保持此SSH会话打开以继续转发到姜港。此时,如果你在blackbox上,你可以通过运行以下命令访问ginger上的VNC会话:thedude@blackbox:~$vncviewerlocalhost:99这将通过SSH将端口转发到ginger,但我们希望通过techVNC访问ginger.为此,需要另一个通道。在tech中,通过SHH打开一个通道转发端口5999到blackbox上的端口5999。这是通过运行以下命令完成的:root@tech:~#ssh-L5999:localhost:5999thedude@blackbox.example.com这次使用的SSH标志是-L,而不是将5999放入黑匣子,它得到它从它。到达黑盒后,您需要保持此会话打开。现在您可以在技术中使用VNC了!在tech中,运行以下命令以VNC连接到ginger:root@tech:~#vncviewerlocalhost:99Tech现在将直接与ginger建立VNC会话。设置起来有点麻烦,但总比四处奔波试图修复存储阵列要好。但稍加练习就会变得更容易。此技巧的一个补充:如果技术人员正在运行Windows?操作系统并且没有命令行SSH客户端,技术人员可以运行Putty。可以通过在边栏中查找选项来将Putty设置为转发SSH端口。如果此示例中的端口是5902而不是5999,您可以输入图5中所示的内容。图5.Putty可以转发SSH用作隧道如果已设置,tech可以使用VNC连接到localhost:2作为如果技术在Linux操作系统上运行。技巧7:检查带宽假设:公司A有一个名为ginger的存储服务器,并安装了一个名为beckham的客户端节点的NFS。公司A确定他们需要从ginger获得更多带宽,因为有大量节点需要NFS挂载ginger的共享文件系统。最常见和最便宜的方法是将两个千兆以太网NIC组合在一起。这是最便宜的,因为您通常有一个额外的可用NIC和一个额外的端口。所以采用这种方法。但现在的问题是:需要多少带宽?千兆以太网的理论极限是128MBit/s。这个数字从何而来?看看这些计算:1Gb=1024Mb;1024Mb/8=128MB;"b"="bits","B"="bytes"但你实际看到的是什么,是否有好的测量方法?我推荐一个工具iperf。iperf可以通过以下方式获取:wgethttp://dast.nlanr.net/Project...该工具需要安装在对ginger和beckham都可见的共享文件系统上,或者编译安装在两个节点上。我将在两个节点都可见的bob用户主目录中编译它:tarzxvfiperf*gzcdiperf-2.0.2./configure-prefix=/home/bob/perfmakemakeinstall在ginger上,运行:/home/bob/perf/bin/iperf-s-fM这台机器将充当服务器并以MBit/s为单位输出执行速度。在beckham节点上,运行:/home/bob/perf/bin/iperf-cginger-P4-fM-w256k-t60两个屏幕上的结果表明速度是多少。在配备千兆位适配器的普通服务器上,您可能会看到大约112MBit/s的速度。这是TCP堆栈和物理电缆中的常见带宽。通过端到端连接两台服务器,分别使用两块绑定的以太网卡,我获得了大约220MBit/s的带宽。事实上,在联结网络上看到的NFS约为150-160MBit/s。这仍然意味着带宽符合预期。如果您看到较低的值,则应检查是否存在问题。我最近遇到一种情况,两个使用不同驱动程序的NIC通过链接驱动程序连接。这导致性能非常低,带宽约为20MBit/s,这比没有连接以太网卡时要低!技巧8:命令行脚本和实用程序Linux系统管理员可以通过使用权威的命令行脚本来提高工作效率。这包括巧妙地使用循环以及了解如何使用awk、grep和sed等实用程序解析数据。通常这会减少击键次数并减少用户错误。例如,假设需要为要安装的Linux集群生成一个新的/etc/hosts文件。通常的做法是在vi或文本编辑器中添加IP地址。但是,它可以通过使用现有的/etc/hosts文件并将以下内容附加到它来实现。在命令行运行:#P=1;对于我在$(seq-w200);回声“192.168.99.$Pn$i”;P=$(expr$P+1);done>>/etc/hosts200个主机名(n001到n200)将从IP地址(192.168.99.1到192.168.99.200)创建。手动填充此类文件可能会创建重复的IP地址或主机名,因此这是使用内置命令行消除用户错误的一个很好的示例。请注意,这是在bashshell(大多数Linux发行版的默认设置)中完成的。再举一个例子,假设你想检查Linux集群中每个计算节点的内存大小是否相同。通常,拥有发行版或类似的shell是最好的。但为了演示,以下使用SSH。假设SSH设置为不使用密码身份验证。然后运行:#fornumin$(seq-w200);执行sshn$numfree-tm|grep内存|awk'{print$2}';完成|排序|uniq这个命令行相当简洁。(如果你把正则表达式放在那里更糟)。让我们将其分解并详细讨论每个部分。从001到200的第一个循环。使用seq命令的-w选项在前面加上零。然后替换num变量以创建一个通过SSH连接的主机。拥有目标主机后,向其发出命令。在本例中:free-m|grep内存|awk'{print$2}'1.这条命令的意思是:使用free命令获取内存大小,单位是兆字节。2.获取此命令的结果并使用grep获取包含字符串Mem的行。3.在那一行中使用awk输出第二个字段,即节点中的总内存,并在每个节点上执行此操作。在每个节点上执行命令后,200个节点的全部输出将通过管道(|d)传输到排序命令以对所有内存值进行排序。最后,使用uniq命令消除重复项。此命令将导致以下情况之一:1.如果所有节点(n001到n200)的内存大小相同,则只会显示一个数字。这个数字是每个操作系统看到的内存量。2.如果节点内存大小不同,您将看到多个内存大小值。3.最后,如果SSH在节点上失败,您将看到一些错误消息。此命令并非完美无缺。如果看到与预期不同的内存值,则不知道是哪个节点出了问题,也不知道有多少个节点。为此需要发出另一个命令。这个技巧提供了一种快速查看某些内容的方法,如果出现问题,您会立即知道。它的价值是快速检查。技巧9:控制台侦察有些软件会向控制台输出错误消息,这些错误消息不一定会出现在SHH会话中。可以使用vcs设备进行检查。在SSH会话中,在远程服务器上运行以下命令#cat/dev/vcs1。这将显示第一个控制台中的内容。也可以使用2、3等查看其他虚拟终端。如果用户在远程系统上键入,您将看到他键入的内容。在大多数数据场中,使用远程终端服务器、KVM甚至SerialOverLAN是查看此类信息的最佳方式;它还提供带外查看功能的一些好处。使用vcs设备提供了一种快速的带内方法,可以节省在机房查看控制台的时间。技巧10:收集随机系统信息在技巧8中,展示了一个使用命令行获取系统总内存信息的示例。在本技巧中,我将介绍一些其他方法,用于从需要验证、排除故障或提供远程支持的系统中收集重要信息。首先,收集有关处理器的信息。这可以使用以下命令轻松完成:cat/proc/cpuinfo此命令提供有关速度、处理器数量和类型的信息。在许多情况下,grep可用于获取所需的值。我经常做的一项检查是确定系统中处理器的数量。因此,如果我购买带有双核处理器的四核服务器,我可以运行命令:cat/proc/cpuinfo|grep处理器|wc-l,我看到该值应该是8。如果不是,我会打电话给供应商,让他们给我发送另一个处理器。我需要的另一条信息是磁盘信息。可以使用df命令获取。我总是添加-h标志以查看以千兆字节或兆字节为单位的输出。#df-h也会显示磁盘的分区状态。最后一项是查看系统固件的方法——一种在BIOS级别和NIC上获取有关固件信息的方法。要检查BIOS版本,您可以运行dmidecode命令。不幸的是,信息不能轻易地被grep,所以这不是一个非常有效的方法。对于我的LenovoT61笔记本电脑,输出如下:dmidecode|less...BIOSInformationVendor:LENOVOVersion:7LET52WW(1.22)ReleaseDate:08/27/2007...这比重新启动机器并查看POST输出要有效得多。要检查以太网适配器的驱动程序和固件版本,请运行ethtool:ethtool-ieth0driver:e1000version:7.3.20-k2-NAPIfirmware-version:0.3-0结论有很多技巧可以从精通的人那里学到在命令行中。最好的学习方法是:1.与他人合作。共享屏幕会话并观察其他人的工作方式——您会发现新的做事方式。让别人指导你可能需要一点谦逊,但通常有很多东西要学。2.阅读手册页。仔细阅读手册页,即使是众所周知的命令,也可以产生更深刻的见解。例如,您可能不知道可以使用awk进行网络编程。3.解决问题。作为系统管理员,它总是与解决问题有关,无论是您还是其他人造成的。这就是经验,经验可以让你做得更好,更有效率。最好的管理员是悠闲的,因为他们找到了完成工作的最快方法并迅速完成,这样他们就可以保持悠闲的生活。(来源:ibm.com)

猜你喜欢