LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1051|回复: 5

帮我纠个错,实现不知道错在哪了.(已解决)

[复制链接]
发表于 2007-8-8 21:29:11 | 显示全部楼层 |阅读模式
我的pgsql是自己编译安装的,freebsd6.2
我知道安装目录下有个脚本是pgsql自启动的.但放到/etc/rc.d下执行无效.
于是自己写个脚本.
如下:
#!/usr/local/bin/expect
set user "postgres"
set cmd "/home/soft/pgsql/bin/postmaster -D /home/soft/pgsql/data &"
spawn su -l $user -c $cmd
expect "assword:"
send "admin\n"
expect eof
运行后提示如下:
[aron@aron ~/shell]$ ./su.sh
spawn su -l postgres -c /home/soft/pgsql/bin/postmaster -D /home/soft/pgsql/data &
Password:
su: no directory
还是没有启动.:em16:
不知道提示的su: no directory是何意.

而如果
[aron@aron~/shell]$ su postgres
Password:
[postgres@aron/home/aron/shell]$ /home/soft/pgsql/bin/postmaster -D /home/soft/pgsql/data/ &
[1] 6063
这样启动就完全正常.
还不知道错在哪里.
请大家帮忙看看
发表于 2007-8-9 11:07:47 | 显示全部楼层
what if you give the absolute path for su?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-9 16:22:17 | 显示全部楼层
改用绝对路径,
#!/usr/local/bin/expect
set user "postgres"
set cmd "/home/soft/pgsql/bin/postmaster -D /home/soft/pgsql/data &"
spawn /usr/bin/su -l $user -c $cmd
expect "assword:"
send "admin\n"
expect eof

运行提示如下:
spawn /usr/bin/su -l postgres -c /home/soft/pgsql/bin/postmaster -D /home/soft/p gsql/data &
Password:
su: no directory
仍然是错误的,不明白这个no directory是指的少的哪个目录。
应该我上面给出的肯定是正确的路径。
回复 支持 反对

使用道具 举报

发表于 2007-8-11 09:23:24 | 显示全部楼层
好像 su <cmd> 后面不能用 &
& 把进程放到了后台,su 就不能接受口令输入了。
不知道我说的对不对。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-11 14:40:20 | 显示全部楼层
先试试看,  希望可行.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-11 14:50:44 | 显示全部楼层
问题解决了,不是&的问题,su -l,我把-l去掉就OK了.
不知道BSD里面好像没有-l这个参数. 不知道linux下有没有.
[sail@sail ~/shell]$ more su.sh
#!/usr/local/bin/expect
set user "postgres"
set cmd "/home/soft/pgsql/bin/postmaster -D /home/soft/pgsql/data "
spawn /usr/bin/su $user -c $cmd
expect "*Password:*"
send "admin\n"
expect eof
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表