我不是系统pipe理员,但是我对Linux,Unix,Windows和硬件有很好的了解。
什么是Linuxpipe理员必须知道的最需要的主题(即能够修复,设置,解决问题而不必阅读最大的手册;检查任何分发中常见的手册页)?
我想为此设置的焦点将从公司networking到服务器pipe理,可能有一些相同的function,大多数时间也有一些不同的。 例如,你不会总是看到公司服务器的FTP服务器,但大多数时候可能会看到Samba …
我不是说“你必须阅读的书”或类似的东西,但是我的意思是作为Linuxpipe理员在日常生活中可能需要的最必要的function。
喜欢:
这不是一个有序列表,也不是最需要的。 它只是说出了一些我脑海中的东西。
PS:我已经有了基本的知识,但是我没有在这个领域的日常经验。 我有服务器,build立了一些networking,等等。 此外,我甚至对它的某些部分有深入的了解。 我只是想在这里更新,就像我说的这是更多的LINUX SYSADMIN生活的日常列表。
我会很感激,如果你们/ gals可以列出主题,例如里面的哪个领域是最常用或最重要的记忆。
如果您认为我的问题不适合,请让我知道,我会自己删除,或者如果您认为适合,但需要重新工作,请让我知道,我会尽我所能。
你真的确定你在乎日常的事吗? 就我个人而言,我认为你应该记住的东西就是当有事情发生时你需要做的事情,而且每个人都在为了恢复networking而喋喋不休。 日常的事情往往会根据你的Linux机器在你的networking上做什么而变化。
我认为有一些非常重要的技能。
您必须能够使用cli工具(如ifconfig,route和ip)来configurationnetworking。
我想你应该知道如何做一个使用tar,rsync或dd系统的完整备份。 如果你不知道如何做一个备份和恢复的东西,你几乎肯定不应该触摸系统。 在进行系统更改之前,您确实也需要确保进行备份。
我想你应该知道如何访问你的服务器上的livecd文件系统。 这意味着您应该知道如何激活LVM和基于软件RAID的驱动器,访问分区信息以及安装文件系统。
你永远不会知道所有的事情 。 但是你可以知道你需要做什么。 你知道的工具越多,你就可以使用的越多。 如果你知道这个工具是什么,它做了什么,在哪里可以find更多关于它的信息,那就足够了。
熟悉man
页。 你不必记住他们,但你应该知道在哪里find你要找的东西。 因为安装在给定系统上的页面反映了与您所查看的系统相对应的各种怪癖或特定于版本的信息,所以man
页比Google更好地查找语法细节。
如果您使用apache
很多,那么我build议您学习apacheconfiguration语法。 如果你使用nginx
,那就改为学习。 但无论哪种方式,你都应该知道这两者是什么以及它们有什么不同。
有几个工具可以帮助你,无论你在做什么types的系统pipe理员工作。 假设你知道基础知识,比如chmod
, mount
等等,下面是一些非常有用的工具,一些pipe理员不太了解:
我认为对shell脚本的深入理解并不奇怪,因为它们让事情变得简单快捷。 如果你必须查询语法,那么你很可能根本不会这样做,所以提前知道是非常重要的。
例如,假设您的目录中有完整的mysqldump
“.sql”文件,每个文件都代表需要导入服务器的数据库。 你手动导入所有35个? 如果您对shell脚本非常熟悉,只需键入一个命令,然后去抓一些咖啡,
注:我把它分成单独的行,以便可读性; 如果你把分号留下,你可以把它放在一行。 否则在每行的结尾不需要分号。
for FILE in *.sql; do NAME=${FILE%.sql}; mysql -e "create database $NAME"; mysql $NAME < $FILE; done
另外,我build议刷新使用sed
。 把它看作是在任何地方应用正则expression式的一种方法。 http://www.grymoire.com/Unix/Sed.html
假设你改变了你的电话号码,并需要相应地更新你的所有网页(并保存备份副本,以防万一)。
sed -i.bak 's/555-1234/555-4321/' *.html
知道如何正确地链接现有的工具来做新事物也是非常有用的。 假设你需要像上面那样做,但是也要在子目录里search –
find public_html -name '*.html' -print0 | xargs -0 sed -i.bak 's/555-1234/555-4321/'
与perl
有一些经验也是有用的。 你可能不需要用它编写任何严肃的程序,但它的目的是做很多sed
和awk
做的事情,或许只是更灵活一些。
Perl可以使用-e
选项来执行命令行。 与-p
, -n
和-i
,可以快速编写简单的filter来做非常有用的事情。 例如,假设您需要查找9月份访问“/admin.php”的每个人的IP地址:
perl -ne ' /([^ ]+).*\[..\/Sep\/2010.*\] "GET \/admin.php / and print "$1\n"' < access_log
看到? 那并不糟糕。 作为系统pipe理员,你需要知道如何做这个东西。
我是一个在Linux中涉猎很less的Windowspipe理员,所以我无法直接回答这个问题。 但是,在我看来,一旦你掌握了基本知识,pipe理员需要知道的一个最重要的事情就是在哪里以及如何find答案。
除了其他的答案:
我想你也应该知道你的方式处理过程:
我认为你不需要掌握sed(我不知道我是否至less),我设法轻松地与greps(grep,egrep,zgrep等)之一。 不过,您必须了解基本的正则expression式语法。
如果你维护一个邮件服务器,我认为你应该知道操作和/或监视MTA(postfix或exim)和MDA(dovecot,cyrus,courier)的基本命令。 即使你不运行一个,你也必须能够在MTA上运行基本的SMTPtesting,如果只是为了本地交付的问题。
您应该了解您使用的身份validation系统(PAM,LDAP)的方法。 你的密码在哪里存储? 使用什么程序? 什么应用程序使用什么authentication机制
有几件事情你绝对需要知道。
你需要对你的shell有一个很好的理解(它是如何parsing参数的,它是如何扩展通配符的,在那些非常错误的情况下)。
您必须能够在没有运行X11的情况下编辑文件。
您必须能够装载和卸载文件系统。
你必须有能力吸收新的信息,快速。 因为这些技能是整个公司的服务器场崩溃时所需要的技能,而且您只能通过一个微妙的控制台服务器(即在串行端口中的“控制台”)和/或非常慢的VPN连接进行访问(也可以使用任何基于X11的方法痛苦)。 它会发生,所以计划。
给出的例子都是伟大的服务器相关的答案..但是..系统pipe理是从来没有100%的电脑..我希望它是!
你也必须同人打交道,在我们的情况下,这意味着pipe理,使用者,承包商和供应商。arg ^ n
客户服务技能知道如何谈论你需要/想要/必须做什么,获取信息给其他人,文档,所有这些都是保持系统pipe理员工作的基础。
如果你想让你的项目得到资助和使用:如果你不知道如何索要钱,如果你没有数据/备选scheme/ DR计划/报价/实施计划办公室政治是一个B ** CH,钱总是:“紧”..不pipe是什么意思..它不影响执行公司的汽车,但它会影响你的网站的安全性和能力,如果你可以标准化不要把你的理由打动他们。
我要说的最重要的事情要记住: 不要相信用户说什么 。 在接电话的时候记住这一点。不pipe他们怎么说,你仍然必须为自己弄明白,因为它最终是你的屁股,而不是他们的,他们一般都不知道。 只是因为他们可以把一个stream行词汇载入你的老板,并不意味着他们实际上知道他们刚刚说了什么。
其他想法:
确保在UPS断电时有足够的时间closures所有设备
监测,确保你知道它已经下降..不要等待用户打电话。
BACKUPS BACKUPS BACKUPS ..如果你没有一个好的备份系统,多用户系统很容易超时。加class是不好的,(不是为你的口袋,而是为了你的预算和专业的外观)。
不要在星期五或假日的前一天改变任何事情..你将在周末被打电话,你将不得不解决它,你将有一个非常糟糕的时间..
标准化和自动化..尽可能多的你freakin可以! 如果你可以编写它,为什么不呢?
弄清楚如何使用/安装一个帮助台系统,使用户能够通过它logging呼叫,它将允许你跟踪你的活动,为上级提供激励,为你付出更多的工作,并允许你logging你的答案(事实上的KB)..所有通知用户的进展。 确保用户查询/问题不会在洪水中丢失..(Spiceworks是免费的,还有很多其他的)
我买了一份:Limoncelli 的“系统pipe理实践” ,我强烈推荐它。
Linuxpipe理员需要彻底理解文件权限 ,以及使用诸如su和sudo , chmod和chown等工具,如何将用户添加到组或创build新用户,如何将SSH权限授予某些用户或组。
在命令行上使用编辑器需要很快。
学习sed
, grep
和awk
:我每天做Linux系统pipe理员的很多东西是下拉大量的文件/电脑/用户等等。 并将input转换为另一组输出供另一个程序使用。
一个具体的例子是从bugzilla或RT抓取一个破坏的计算机列表,然后使用上述三种工具之一,将我已经快速复制并粘贴到文本文档中的所有无关信息剔除掉,然后输出一个我需要SSH进入一堆节点的空格分隔列表。
另外,你一定要知道你正在使用的shell的上限。 通常情况下,如果你必须剔除一堆陈旧的文件,你可能会遇到一个文件夹,其中包含30k +文件。 rm *
将不起作用,因为星号会扩展到超过30k条目的列表,并且您正在使用的shell可能无法保存该大小的列表。 你解决这个问题的方法是用xargs
:而不是rm *
,你可以使用ls | xargs -i{} rm {}
ls | xargs -i{} rm {}
,这将工作。
作为一名系统pipe理员,我认为自己是一名数字医生(或者根据当天的情况,有时候也是世界级的脑外科医生)。
当一切正常时,您将有足够的时间来提高自己的技能和pipe理的系统。
当某些事情失败时,您需要能够立即诊断问题并实现如何解决问题。
因此,您需要学习/记忆您所pipe理的服务器和应用程序的基础知识(以及内部的某些方面)。 假设您的公司托pipe一个Web站点,并通过NFS提供Web根。 突然,所有的www节点开始报警,站点停止响应。 怀疑什么? 啊,哈! NFS服务器刚刚closures,故障转移群集也因为某种原因无法工作。
另一个要学习的重要方面是您pipe理的服务器的基本负载。 学习记住他们的平均负载,CPU使用率,内存使用情况和类似的东西。 好的,你不必记住所有的东西 – 使用Cacti或net-snmp + mrtg创build的图表可以提供很多帮助,但是如果你的寻呼机发出有关服务器X的奇怪行为的警报,同时帮助台打电话给你讲述其他的服务器或者服务变得疯狂,你可能能够把这两件事情结合起来,甚至在查看日志,报警历史或者图表之前去解决这个问题。
还要做好最糟糕的准备:想想如果整个数据中心因停电而停电,你会怎么做。 在电力再次可用之后,你将如何启动一切? 如果不能启动,你会怎么做? 你将如何恢复备份? 或者如果有人提醒你关于一个刚刚侵入你的服务器的黑客,你会怎么做? (这种东西应该logging成清单,但也有一些直觉)
而且,正如其他人所提到的,继续编写应该自动运行(半)的内容。 学习和使用shell / Perl,他们真的是你最好的朋友,并且通常只需要几个命令就可以解决非常复杂的问题。