他们说:“失败是成功的关键; 每个错误都会教给我们一些东西。“我希望你能从我的10个Linux或Unix命令行错误中学到一些东西,以及读者在下面发表的评论。
userdel命令
文件/etc/deluser.conf被配置为删除主目录(它是由以前的系统管理员完成的,这是我工作的第一天)以及要删除的用户的邮件缓冲池。我只想删除用户帐户,最后删除所有内容(注意-r通过deluser.conf激活):
userdel foo
重新启动的Solaris Box
在Linux上,killall命令按名称杀死进程(killall httpd)。在Solaris上它会终止所有活动进程。以root身份杀死所有进程,这是我们的主要Oracle数据库框:
killall process-name
销毁named.conf
我想追加一个新的区域到/var/named/chroot/etc/named.conf文件,但最终运行:
./mkzone example.com > /var/named/chroot/etc/named.conf
使用Tar和Rsync销毁工作备份(个人备份)
我只有一个我的QT项目的备份副本,我只想获得一个名为functions的目录。我最终删除了整个备份(注意-c开关而不是-x):我没有备份。同样,我最终运行rsync命令并通过覆盖备份集中的文件(现在我已切换到rsnapshot)来删除所有新文件。再次,我没有备份。
cd /mnt/bacupusbharddisk
tar -zcvf project.tar.gz functions
rsync -av -delete /dest /src
删除了Apache DocumentRoot
我有我的Web服务器docroot的sym链接(/ home / httpd / http被链接到/ www)。我忘记了符号链接问题。为了节省磁盘空间,我在http目录上运行rm -rf。幸运的是,我有完整的备份集。
意外更改的主机名称和触发的错误警报
无意中改变了我们的一个群集节点的当前主机名(我想查看当前的主机名设置)。在几分钟内,我收到了手机和电子邮件的警报消息。
hostname foo.example.com
公共网络接口关闭
我想关闭VPN接口eth0,但最终在我通过SSH登录时关闭了eth1:
ifconfig eth1 down
防火墙锁定
我对sshd_config进行了更改,并将ssh端口号从22更改为1022,但未能更新防火墙规则。在快速内核升级之后,我重新启动了这个盒子。我不得不打电话给远程数据中心技术来重置防火墙设置。(现在我使用防火墙重置脚本来避免锁定)。
在错误的框中输入UNIX命令
我想关闭我的本地Fedora桌面系统,但是我在远程服务器上发出暂停(我通过SSH登录到远程框):
halt
service httpd stop
错误的CNAME DNS条目
在example.com区域文件中创建了错误的DNS CNAME条目。最终结果 - 一些访问者转到/ dev / null:
echo 'foo 86400 IN CNAME lb0.example.com' >> example.com && rndc reload
无法更新后缀RBL配置
2006年,ORDB停止运行。但是,我没有更新我的Postfix RBL设置。有一天,ORDB被重新激活,它将每个被查询的IP地址作为黑名单返回。最终的结果是一场灾难。
结论
所有人都会犯错误,但只有聪明人才会从错误中学习 - 温斯顿丘吉尔。
从所有这些错误中我都了解到:
您必须保留一套完整的备份。定期测试您的备份。
保存所有UNIX文件系统数据的明确选择是转储,这是保证所有条件下恢复的唯一工具。
切勿将rsync与单个备份目录一起使用。使用rsync或rsnapshots创建快照。
使用CVS / git来存储配置文件。
在命中[Enter]键之前,等待并读取命令行两次。
使用经过良好测试的perl / shell脚本和开放源代码配置管理软件(如puppet,Ansible,Cfengine或Chef)来配置所有服务器。这也适用于今天的日常工作,如创建用户等等。