2015-06-05

CentOS ssh 無法執行 java

今天發生透過Jenkins要遠端啟動shellscript, 卻無法執行的情況,
但是直接在本機端執行可以的,已有設定環境變數。

原因ssh時不會執行/etc/profile 內的環境變數

shellscript內容是去呼叫一個jar檔:
#!/bin/bash
nohup java -jar /xxx/abc.jar 2>&1

ssh遠端指令:
ssh xx@10.10.10.10 "sh /xxx/abc.sh"

解決方式:
在/etc/profile.d 底下新增一個shellscript, 名稱都可以jdk1.5.sh,
裡面加入:
export JAVA_HOME=/project/server/jdk1.5
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


其他方式
1. 使用alternatives 
https://www.cnblogs.com/killkill/archive/2010/08/23/1806468.html

2. 使用 #!/bin/bash --login
https://bbs.csdn.net/topics/392163467

3. java 帶完全路徑
--
/etc/profile 與 /etc/profile.d 差異
.Login shell 啟動時才會運行 /etc/profile 這個腳本
/etc/profile對所有使用者生效
./etc/profile.d 存放一些應用程式所需的啟動腳本
.~/.bash_profile只對當前使用者生效
.~/.bashrc:該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該檔案被讀取.每個使用者都有一個.bashrc檔案,在使用者目錄下


No comments:

Post a Comment