昨晚到现在都一直在弄apache更新,由于机器数较多,又是单独操作,
所以特别慢。
终于在今日完成了更新……
总结一下写这个脚本所学习到的知识:
1、用ssh链接远程主机执行命令的时候,加上 -n 参数
ssh -n 192.168.1.100 "cd /home/admin;bash apache_fix.sh"
双引号里面接你要执行的命令,用分号隔开多条命令,双引号里面的单引号使用问题我还在摸索。。。
·如果你要执行的命令很多的话,最好是写在一个shell文件里面,scp到远程主机上执行。
2、重定向的问题
一个命令执行完之后打印的信息分为stdout和stderr,分别用 1 和 2 两个文件描述符来描述。
重定向一条命令的输入到文件里可以这样:
ls -al > output.log 2>&1 # 把ls -al的stdout输出到output.log文件里面,同时stderr也输入到这个文件,2>&1 即完成把stderr也输入到文件的功能。
当然,把 > 换成 >> 即转换为追加stdout到文件中
3、cp 覆盖问题
修改文件的时候,要先备份,在出错之后就cp备份覆盖掉出错的配置文件,有时候cp覆盖会提示你是否确认override,在shell里面你可以这样写:
yes | cp httpd.conf.bak.20110826 httpd.conf 即在提示你确认是否override的时候输入yes
借此跳过这个输入的挂起,不然脚本一直要等待输入,之后的语句就执行不了了。
4、一个应用的启动脚本,以及目录,还有所实用配置的目录很多时候都可以用ps命令来查看
比如 ps axu | grep 'httpd' 在最后的几栏你可以看到启动脚本的位置还有使用的什么配置文件(如果你启动的是用这个命令的话)
然后再使用 sed 或者 awk 来处理每一行和每一段字符,拿到想要的数据
总结:
1、修改任何一个重要的文件之前记得要备份。
2、把提示消息同时记录到日志里面。
3、判断出程序错误后,要把备份好的配置文件覆盖回去,还原环境。
4、多写程序,多思考。
(2011-08-26 19:38:27)