linux下面切换用户执行命令

我想用程序启动一个可执行文件,su-dap-c/home/dap/dap/bin/start.sh上面的语句直接拿到ssh终端执行没有任何问题,但是写到程序里面去执行好像... 我想用程序启动一个可执行文件,su - dap -c /home/dap/dap/bin/start.sh
上面的语句直接拿到ssh终端执行没有任何问题,但是写到程序里面去执行好像执行不到,但是也不报错误。
我的程序如下:
String cmd="su - dap -c /home/dap/dap/bin/start.sh";
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

请各位大侠帮我看看吧!
展开
 我来答
雨忆将离
2011-10-27 · TA获得超过568个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:599万
展开全部
我执行过这个。没有出现问题啊。。不过我之前就没有用sudo。而是直接用root登陆的。
你的.sh可以直接放在root下面么。。
虽然这样的话可能会有一点安全的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乙翠桃敏星
2019-02-10 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:635万
展开全部
su普通用户名
从root切换到普通用户不需要密码
如果要登录时候家在该用户的shell
就用su-普通用户名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鸿初丫
2011-10-27 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:52.3万
展开全部
我看到你执行的那个命令行 你应该是想 切换用户 调用start.sh这个脚本
你执行命令行的时候 能够保证start.sh 执行了吗
更多追问追答
追问
我把su - dap -c /home/dap/dap/bin/start.sh直接放在SSH终端的时候能执行到start.sh ,结果就是我想要的,但是写在程序中就不行了,这个是怎么回事?
追答
那就是语法错误呗 没有执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惬意且宽厚的东青1598
2011-10-27 · TA获得超过703个赞
知道小有建树答主
回答量:1440
采纳率:100%
帮助的人:864万
展开全部
可能跟权限有关系,
追问
我把su - dap -c /home/dap/dap/bin/start.sh直接放在SSH终端java工程所在的用户下能正确执行 ,应该不是权限问题吧
追答
那sudo和su有啥区别?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式