Linuxnetworking和系统pipe理工具包和习惯

我的任务是pipe理一个小型办公室networking以及几个主要运行Debian和Ubuntu的工作站。 有两台服务器:一台数据库和打印服务器,一台备份和文件服务器。

在这方面相对比较陌生,在Linux上有足够的知识来帮助自己,我想知道我可以使用/获取什么样的软件工具和任务/习惯来学习这个领域,并且在这样做的时候是有效的。

我不需要知道什么是最好的,只是一个新手系统pipe理员可以使用作为一个入门包,学习和使用作为一个基础,发展到适当的系统pipe理。

我需要的是一些基本的工具,以及我需要经常做的事情,比如:哪些日志需要检查,什么时候监视什么,哪些“正确”的地方开始,哪些地方可以广告,因为我需要。

1

监控业务关键stream程[例如:数据库运行和对简单查询的响应],操作系统的基本参数[可用磁盘空间,平均负载]。 你可以使用nagios或者zabbix 。

2

收集统计数据以build立一些基线。 在未来这将对容量规划有用。 你可以使用munin ,zabbix, 仙人掌等

3

运行预定的自动备份,离线存储其中的一些,非现场。 监视它们是否成功,不时手动检查是否可以恢复关键数据。 你可能想使用backupninja来编排它们或Zmanda ,但是还有更多有用的工具。

4

文件。 为了你自己的好处。 不要以为缺乏文件可以提高工作的安全性。 第一个因缺乏而受苦的人就是你,你很可能会很快忘记事情。

从其他随机的东西:

学习一些脚本语言 – 也许你知道一个aldready? perl / python / php可以用于自动化任务,在许多情况下比bash更适合更复杂的任务

学习你的工具 – 这是无尽的列表… ssh首先想到的。 看看这个和那个 。

Limoncelli等人的“系统和networkingpipe理的实践”就是你应该开始的地方。 技术会来来去去(可以根据需要轻松地谷歌search),但该书中的信息是永恒的(无价的)。

几个基本的工具开始

谷歌。 没有认真。 Google是系统pipe理员的梦想成真。 利用互联网上大量的信息没有更好的方法。 不要只限于search“初学者的linux”; 如果你有一个特定的任务,你试图完成,谷歌的具体事情。 你经常会find比你需要的更多的信息,作为一个初学者,它看起来像是另一种语言,但是通过做法来学习是快速提取事物的好方法。

制表完成。 Linux命令行允许所有命令,目录树,目录名和文件名的制表符完成。

手册页。 每个命令和许多系统configuration文件(/ etc / fstab,/ etc resolv.conf等)都有Man页面。 只要input“man command_name”或“man file_name”来查看你正在寻找的是否有一个。 哦,“q”退出手册页。

SSH。 访问Linux系统的最佳方法之一。 可能最好的方式,如果你没有物理访问系统。

屏幕。 屏幕是一个梦幻般的小应用程序,可以让你把一个terminal变成多个,让你把事情从你的方式/背景中,让你离开事情运行,以便以后可以回来。

纳米。 你在上面提到你已经在使用这个,但是我只是认为我会抛出两分钱,并且说我同意。 Vi和Vim以及所有这些都很好,但是我喜欢Nano的简单。 这就像Linux世界的记事本。

查找和Grep。 查找对search文件非常有用,Grep非常适合文件中search。 两者都可以以非常简单的方式使用,而且它们都可以以非常复杂的方式使用,但是两者都是非常有用的。

须藤。 让你像根一样行事,而不是根。 很有用。

再加上我将在下一节中提到的其他一些工具…

你需要定期做的事情的种类

监视你的系统。 监视你的磁盘使用情况(df是一个有用的命令,du以及特定的目录),监视正在运行的进程和任务(通过ps命令和顶部命令),监视login到你系统的用户(用户和谁的命令将告诉你这一点),并监测你的networking使用情况(像仙人掌这样的应用程序是很好的)。 如果您恰好有权访问X Windows环境,我总是发现GKrellM是一个非常有用的一体化系统监控工具。

备份。 对于Tux的爱情,备份。 备份configuration文件,备份主目录,备份应用程序数据。 备份。 即使你正在做的是直接将数据从服务器复制到另一个盒子和外部硬盘上的CIFS / NFS共享。 是的,你应该保留每个备份的两个副本,而不要在同一个媒体/系统上。 把它看作备份的备份。

检查你的备份。 定期检查以确保可以将备份中的数据恢复到系统中。 空闲/损坏/不完整的备份是无用的,因为一天很长。

使用你的日志文件。 Dmesg,/ var / log / messages,以及/ var / log期间的任何东西。 如果有什么不对的,你不知道为什么,日志可能没有答案,但他们肯定可以帮助你find它。 并且/ var / log中的日志和目录明智地命名,所以find正确的日志不应该很难。 您不需要持续监视每个日志文件,但要留意它们将有助于保持系统的健康和安全。

保持您的系统更新。 不要让你的软件数月甚至数月不更新,因为当configuration文件的语法或依赖关系发生变化时,会导致很多麻烦和破坏。 不同的发行版有不同的更新程序(apt-get,yum等),但是无论你使用哪一个,学习它并定期使用。

确保您的系统安全。 使用像iptables,PAM,hosts.allow / hosts.deny和类似的东西,以防止不必要的访问和使用您的系统。

从未停止学习。 为了继续我之前所说的(通过这样做来学习),你应该研究一下虚拟机。 下载VirtualBox(或者如果你有更好的VMWare许可证),并且使自己成为一个Linux虚拟机。 你可以select任何你想要的发行版,但显然这可能是最有意义的去与你在你的环境中使用的一个。 在虚拟机中玩耍..像使用沙箱一样使用它。 设置东西,打破事情,调查,学习。 沙盒虚拟机的美妙之处在于它不会发生什么变化。 如果你完全用软pipe,只要做一个新的。 或者在安装完成后保留原件的备份副本,并在需要时重复使用。

正如在这个线程中的其他一些post所提及和暗示的,这些列表可能真的是无限的,但希望这可以让你一个良好的开端。

如果你刚刚开始,特别是因为你有一些Debian(Ubuntu是Debian的核心)系统,我强烈推荐Debian Reference 。 这几乎涵盖了系统pipe理的各个方面,应该涵盖几乎所有你需要知道的有关维护这样一小组系统的知识。

我也同意pQd所提出的所有要点,更具体地说,我认为build立一个wiki来logging所有的stream程和configuration是个不错的主意。 在我的组织中,我们使用Trac,但任何维基引擎都应该这样做,只要确保它有一个很好的显示源代码的方法,因为这对于小脚本和命令列表很有用。

老实说,Linux系统pipe理不是一个你可以“跳入”的领域。

但是,如果你不得不在这个问题上有几本好书的话。 O'Reilly有两本书(Linuxnetworkingpipe理和Linux系统pipe理),应该让你开始。

就个人而言,如果我是你,我只是花了几天的时间搞乱不同的发行版本,安装软件,设置Nagios / Cacti / Apache2 / SSH / NFStypes的东西,也许学习某种脚本语言(我使用Perl,我自己;但是我的许多pipe理员更喜欢使用Python,但是这真的取决于你想学习的内容)。

绝对要学习命令行。 不要使用graphics工具作为拐杖。

学习vi。 即使你只学得够好,进行基本的编辑就没问题 – 但学习vi很重要,因为有时候你会被困在没有Vim / Nano / Emacs的系统上。 在这种情况下,你会很高兴你花了一两天的时间学习vi。

如果您需要任何帮助,请随时给我发电子邮件(我的电子邮件是出于安全原因)[删除] – 我很乐意在ServerFault之外帮助您。

如果您愿意在服务器上安装应用程序,请考虑webmin,因为它为大多数日志logging和configuration提供了“一站式”服务。 设置它使用SSL运行在一个高端的端口,它支付自己容易的检查。

我会告诉你系统和networkingpipe理最大的非秘密。 你准备好了吗? 好吧,这里是:

学习基础知识。 让我详细说一下。

任何人(或者只是)都可以学习这个或那个特定软件的function,以及如何在该工具上推动这个button来使x,y或z工作。 没什么特别的

如果你想成为一个很好的系统/networkingpipe理员,学习下面的东西。 典型networking连接中的事件顺序是什么? 帧和数据包有什么区别? 在Unix系统上,平均负载意味着什么? 一台机器的典型启动过程是什么(只有一个,如果你从头到尾跟着它,将提供丰富的知识)。

一旦你理解了基础知识,并且真正理解它们,把基础知识放在一个好的基础上就容易多了。 但是如果你从顶层开始,并且试图在不知道底层发生什么的情况下学习软件的特定部分,那么基本上,这只会让你成为另一个高科技的看门人。

首先,find你的日志。 大多数Linux发行版login到/ var / log / messages,尽pipe我已经看到了几个日志到/ var / log / syslog。 如果出了什么问题,日志里最有可能会有一些相关的信息。 另外,如果您正在处理电子邮件,请不要忘记/ var / log / mail。 仔细检查你的应用程序,看看是否有任何日志logging在系统日志以外的地方。

刷上你的vi技能。 纳米可能是所有酷的孩子现在使用的,但经验告诉我,唯一的文本编辑器是保证在系统上。 一旦习惯了键盘快捷方式,并开始创build自己的触发器,vi将像你的第二天性。

阅读手册页,然后在每台机器上运行以下命令,并将结果复制到文档中:

hostname cat /etc/*release* cat /etc/hosts cat /etc/resolv.conf cat /etc/nsswitch df -h ifconfig -a free -m crontab -l ls /etc/cron.d echo $SHELL 

这将作为您的文档的开始。 这些命令让您了解您的环境,并可以帮助您缩小问题的范围。

grep通过你的日志和search“错误”或“失败”。 这会让你知道什么是不应该的。 你的用户会给你什么错误的意见,仔细听他们说什么。 他们不理解这个系统,但是他们用不同的方式看待它。

如果遇到问题,请按以下顺序进行检查:

  1. 磁盘空间(df -h):Linux和一些在Linux上运行的应用程序在磁盘空间耗尽时会做一些非常奇怪的事情。 这似乎是无关的,直到你检查并find一个文件系统100%满。

  2. 顶部:顶部会让你知道,如果你有一些进程,在那里吃掉所有可用的CPU周期。 在任何延长的时间内,任何东西都不应该消耗99%的CPU。 如果它是一个合法的过程,它可能会上下波动。 当你在上面,检查…

  3. 系统负载:标准服务器或工作站上的系统负载通常应低于3。 系统负载基于CPU,内存和I / O。

  4. 内存(free -m):在Linux中使用RAM有点不同。 看到几乎所有内存用完的服务器并不罕见。 不要惊慌,如果你看到这一点,它主要是caching,并将根据需要被清除。 但是,密切关注交换使用量。 如果可能的话,尽可能保持接近于零。 内存不足可能会导致各种性能问题。

  5. 日志:返回到日志,运行尾部-500 / var / log / messages | 更多,开始阅读,看看发生了什么事情。 希望日志能够指出你下一步的方向。

一个维护良好的Linux服务器可以运行多年,没有问题。 我们只closures了已经运行了748天的一个,我们只closures它,因为我们已经将应用程序迁移到了新的硬件上。 希望这能帮助你把脚弄湿,让你有一个好的开始。

最后一件事情,总是复制一个你想改变的configuration文件,并且总是复制你正在改变的行,并且注释掉原来的内容,并添加改变它的原因。 这会让你养成logging的习惯,并且可能会在路上保存你的皮肤。

好问题。

我的build议。 学习使用你的shell。

标准是bash。 你可以inputhelp来获得文档。

学习pipe道“|” 从一个命令的输出到第二个命令的input。

最后一件事,帮了我很久以前: Linux One Page Manual

努力工作,永不放弃。

在3 – 4年内,你将有足够的知识和许多东西来自本身:)