linux下面切换用户执行命令

我想用程序启动一个可执行文件,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();

请各位大侠帮我看看吧!

第1个回答  2011-10-27
我执行过这个。没有出现问题啊。。不过我之前就没有用sudo。而是直接用root登陆的。
你的.sh可以直接放在root下面么。。
虽然这样的话可能会有一点安全的问题。
第2个回答  2019-02-10
su普通用户名
从root切换到普通用户不需要密码
如果要登录时候家在该用户的shell
就用su-普通用户名
第3个回答  2011-10-27
我看到你执行的那个命令行 你应该是想 切换用户 调用start.sh这个脚本
你执行命令行的时候 能够保证start.sh 执行了吗追问

我把su - dap -c /home/dap/dap/bin/start.sh直接放在SSH终端的时候能执行到start.sh ,结果就是我想要的,但是写在程序中就不行了,这个是怎么回事?

追答

那就是语法错误呗 没有执行

追问

我把JAVA 代码都贴上来了,您帮我看看哪儿的语法错了?
String cmd="su - dap -c /home/dap/dap/bin/start.sh";
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

追答

嗯 我只会shell不会java语言

追问

后台也没报错,工程在服务器上,我没办法调试

第4个回答  2011-10-27
可能跟权限有关系,追问

我把su - dap -c /home/dap/dap/bin/start.sh直接放在SSH终端java工程所在的用户下能正确执行 ,应该不是权限问题吧

追答

那sudo和su有啥区别?