我尝试在Ubuntu中以其他用户身份运行命令。但它无法找到命令。
$ sudo su - hbase -c "echo $JAVA_HOME"
/usr/local/jdk
$ sudo su - hbase -c "echo $PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/jdk/bin
$ sudo su - hbase -c "java -version"
-su: java: command not found
$ sudo su - hbase -c "/usr/local/jdk/bin/java -version"
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
我在centos中测试过,没有问题。我不知道为什么?我怎样才能在其他用户中运行java?
我的JAVA_HOME
设置在/etc/bash.bashrc
,Ubuntu版本是ubuntu服务器14.04.1。
实际上,我试图在hadoop用户中启动/停止hbase
$ sudo su - hbase -c "/usr/local/hbase-1.1.5/bin/hbase-daemon.sh stop regionserver"
no regionserver to stop because no pid file /tmp/hbase-hbase-regionserver.pid
此错误是因为它无法获取我在export HBASE_PID_DIR="/data/hadoop/run/hbase"
中设置的环境/etc/bash.bashrc
。
我做了更多测试,首先,我将export ENVTEST=hello
添加到/etc/bash.bashrc
,然后进行了以下测试。
$ echo $ENVTEST
$ sudo su - hbase -c "echo $ENVTEST"
$ source /etc/bash.bashrc
$ sudo su - hbase -c "echo $ENVTEST"
hello
看来,当你执行sudo su - hbase -c "echo $ENVTEST"
时,它正在使用我的用户环境而不是hbase。
答案 0 :(得分:0)
看起来/usr/local/jdk/bin
hbase
PATH
不在/usr/local/jdk/bin
。在PATH
或/etc/bash.bashrc
或/home/hbase/.bashrc
中将sudo su - hbase -c "echo $PATH"
添加到$PATH
。
因为双引号,这个测试没有你想象的那样:
sudo su - hbase -c
双引号内的 sudo su - hbase -c "echo `whoami`"
sudo su - hbase -c 'echo `whoami`'
sudo su - hbase -c 'echo $JAVA_HOME'
sudo su - hbase -c 'echo $PATH'
在.run(["$rootScope", "$state", function($rootScope, $state) {
$rootScope.$on('$locationChangeStart', function(event, next, current) {
if (!$rootScope.loggedUser == null) {
$state.go('home');
}
});
}])
运行之前将其值替换为。
尝试这些测试:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>