Shell编程经验总结
2013-09-21 15:26
260 查看
这篇博客将持续更新,用于记录自己在shell编程中遇到的问题~
问题举例: 在编写postgresql测试脚本的时候,在一个shell里面需要后台启动postgres进程,然后再调用psq执行命令,代码如下:
但是在执行的时候,总是报如下错误:
上面的信息显示postgres尚未启动,找不到postgresql锁文件/tmp/.s.PGSQL.5432,这个文件是在postgres成功启动以后建立的。可是当我查看/tmp文件夹是,这个文件确实存在,并且当我使用ps aux| grep postgres查看进程时也证明postgres启动成功了。怎么回事?
在纠结了一整天以后,我终于在goolge中找到了答案:https://bugzilla.redhat.com/show_bug.cgi?id=557749
原因是在调用了第一条命令以后,postgres进程还没有完全启动,所以psql在访问服务的时候报错。解决办法就是在两者之间加上一个sleep,如下:
1. 多个子shell命令调用
如果在一个shell里面调用了多个其它的子shell,注意是否需要在调用之间增加sleep。问题举例: 在编写postgresql测试脚本的时候,在一个shell里面需要后台启动postgres进程,然后再调用psq执行命令,代码如下:
bin/postgres -D mydb >logfile 2>&1 & bin/psql -c "\l" testdb
但是在执行的时候,总是报如下错误:
psql: could not connect to server: 没有那个文件或目录 Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
上面的信息显示postgres尚未启动,找不到postgresql锁文件/tmp/.s.PGSQL.5432,这个文件是在postgres成功启动以后建立的。可是当我查看/tmp文件夹是,这个文件确实存在,并且当我使用ps aux| grep postgres查看进程时也证明postgres启动成功了。怎么回事?
在纠结了一整天以后,我终于在goolge中找到了答案:https://bugzilla.redhat.com/show_bug.cgi?id=557749
原因是在调用了第一条命令以后,postgres进程还没有完全启动,所以psql在访问服务的时候报错。解决办法就是在两者之间加上一个sleep,如下:
bin/postgres -D mydb >logfile 2>&1 & sleep 2 bin/psql -c "\l" testdb
2. ...
相关文章推荐
- shell编程经验总结
- 15年编程生涯,资深架构师总结的7条经验
- 晓亮的编程经验总结.txt
- 【转载】15年编程生涯,资深架构师总结的7条经验
- 我从编程总结的 22 个经验
- 程序员编程知识经验总结
- WIN32编程经验总结
- IE编程经验总结(一)——聊天室自动发言
- 编程经验总结
- 我的编程经验不是很足,简单的总结了自己
- 我从编程总结的 22 个经验
- 【经验总结】服务器端编程部分概念理解
- [Qt] Qt编程经验总结 [2013-07-01更新]
- Shell编程入门总结(编辑器Vim篇)
- 网络编程的实践过程中总结出来的一些经验(转)
- Shell编程入门总结(一)
- Bigcommerce:intershop编程经验总结
- shell 编程语法总结(I/O 逻辑控制结构)
- 关于Qt Graphics编程的几点经验总结
- 10年学到的编程经验总结