论坛首页 编程语言技术论坛

今日小结--shell脚本小结

浏览 1965 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-07  

昨晚到现在都一直在弄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)

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics