知道你有什么工具
您永远都不会知道所有事情。但是您可以知道必须使用什么。您了解的工具越多,使用的功能就越多。如果您知道该工具是什么,它的作用以及在哪里可以找到有关它的更多信息,那么就足够了。
真正熟悉man
页面。您不必记住它们,但是您应该知道在哪里可以找到您想要的东西。man
在语法细节方面,Google页面比Google更好,因为安装在给定系统上的页面反映了与您所查看的系统相对应的各种古怪或特定于版本的信息。
如果您使用apache
很多,那么我建议您学习apache配置语法。如果您使用它nginx
,则改为学习。但是无论哪种方式,您都应该知道两者是什么以及它们有何不同。
系统工具
无论您从事哪种类型的sysadmin工作,都有一些工具可以帮助您。假设你知道的基本知识,如chmod
,mount
等,这里有一些非常有用的工具,某些管理员不理解不够好:
- 同步
- sar / iostat (sysstat软件包的一部分)
- setfacl / getfacl (大多数管理员认为chmod / chown是您所要使用的全部)
- 卷曲和/或wget
- iptables
- 谁/最后/ w
命令行忍者
我想说,对Shell脚本的深入了解确实使将困难的事情变得简单而又容易。如果您必须查找语法,那么您根本就不会使用它,因此提前知道是至关重要的。
例如,假设您的目录中充满了mysqldump
“ .sql”文件,每个文件代表一个需要导入服务器的数据库。您是否手动导入了全部35个?如果您相当熟悉Shell脚本,只需键入一个命令然后去喝杯咖啡,就会非常容易。
注意:为了便于阅读,我将其分为几行;如果保留分号,则可以全部放在一行中。否则,不需要在每行结尾处使用分号。
for FILE in *.sql; do
NAME=${FILE%.sql};
mysql -e "create database $NAME";
mysql $NAME < $FILE;
done
另外,我建议您重新使用sed
。可以将其视为在任何地方应用正则表达式的方式。http://www.grymoire.com/Unix/Sed.html
假设您更改了电话号码,并且需要相应地更新所有网页(并保存备份副本,以防万一。)
sed -i.bak 's/555-1234/555-4321/' *.html
知道如何正确地链接现有工具来做新的事情也很有帮助。假设您需要执行与上述相同的操作,还需要在子目录中进行搜索-
find public_html -name '*.html' -print0 | xargs -0 sed -i.bak 's/555-1234/555-4321/'
拥有一些经验也很有用perl
。您可能不需要用它编写任何严肃的程序,但是它被设计为可以做很多事情,sed
并且可以做很多事情awk
,只是灵活性更高。
使用该-e
选项,Perl可用于执行命令行魔术。与-p
,-n
和和结合使用-i
,您可以快速编写简单的过滤器来完成真正有用的事情。例如,假设您需要查找9月访问“ /admin.php”的每个人的IP地址:
perl -ne '
/([^ ]+).*\[..\/Sep\/2010.*\] "GET \/admin.php / and print "$1\n"' < access_log
看到?那还不错。作为系统管理员,您应该知道如何做这些事情。