免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4659 | 回复: 10
打印 上一主题 下一主题

求救关于shell执行脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-13 18:09 |只看该作者 |倒序浏览
小弟我写了个shell脚本,a.sh内容如下:

#!/bin/sh
echo "hello" > /etc/text.conf

在freebsd下命令行直接执行没有问题,可以正常的生成一个etc/text.conf文件,
但我用java线程Runtime.getRuntime().exec(“a.sh”)死活不能生成etc/text.conf,通过日志查看脚本还是执行的
哪位大侠知道这是为什么?

论坛徽章:
0
2 [报告]
发表于 2008-06-13 22:37 |只看该作者
权限问题吧

论坛徽章:
0
3 [报告]
发表于 2008-06-13 22:38 |只看该作者
带上绝对路径试试,可能JAVA调用的环境与SHELL的用户不一样吧.

论坛徽章:
0
4 [报告]
发表于 2008-06-15 13:05 |只看该作者

回复 #2 err7dd 的帖子

我把/etc 的权限改为777了,也不行
chmod -R 777 /etc

论坛徽章:
0
5 [报告]
发表于 2008-06-15 13:12 |只看该作者
原帖由 轩静天 于 2008-6-13 22:38 发表
带上绝对路径试试,可能JAVA调用的环境与SHELL的用户不一样吧.


/etc/text.conf 这就是绝对路径呀,我把tomcat安装在/root目录下了,我不清楚tomcat在调用执行脚本时是以什么用户执行的?

论坛徽章:
0
6 [报告]
发表于 2008-06-16 09:37 |只看该作者
你用touch看能不能生成文件?

论坛徽章:
0
7 [报告]
发表于 2008-06-16 10:00 |只看该作者
原帖由 wstar 于 2008-6-16 09:37 发表
你用touch看能不能生成文件?


生成不了

论坛徽章:
0
8 [报告]
发表于 2008-06-26 02:32 |只看该作者
Hi, LZ!
首先,shell 脚本不是真正的可执行程序,只不过你给它设置了可执行权限罢了。
在终端下能直接运行,那完全要受益于 shell 终端环境本身。它会根据你 shell
脚本里第一行指定的 shell 程序(比如,/bin/sh)来解释执行该脚本。很多其他
解释型语言也是如此。所以你要做的就是:
Runtime.getRuntime().exec("/bin/sh a.sh")

另外,对于执行 Runtime.getRuntime().exec("command") 将看不到控制台
输出(如果有信息输出的话),具体原因及解决见:
http://bbs.chinaunix.net/thread-148099-1-1.html 问题19。

论坛徽章:
0
9 [报告]
发表于 2008-06-26 03:23 |只看该作者
Sorry, LZ!
上面我说的不对,抱歉。
Runtime.getRuntime().exec("a.sh") 与 Runtime.getRuntime().exec("/bin/sh a.sh")
没区别,不是这个问题。

那么我猜,可能是没找到 a.sh 文件,就像在 Eclipse 中的默认当前目录是 project 的根
目录,那么除非你把 a.sh 放在 project 目录下,否则肯定找不到。Tomcat 也有类似当
前工作目录,所以楼上那位说的对,绝对路径,是 a.sh 写成绝对路径。不过 Tomcat
下用的上下文路径也是“/”开头的,不知道它怎么区别二者,你都试试吧。。。

论坛徽章:
0
10 [报告]
发表于 2008-06-26 10:25 |只看该作者
用全路径试试!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP