一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • 【java,Linux】管理者権限でjarを実行すると環境変数が読めないときの対処法

基礎知識すぎて笑われそうですが、sh内で管理者権限で実行可能jarを実行しようとしたら、環境変数が読み込めなくて無駄に時間を費やしたので一応メモ。

やろうとしていたこと

<div style=”background-color: whitesmoke; padding: 5px; width: 100%;”>
#!/bin/sh
# 環境変数
export ENV_TYPE=production
export SERVER_ID=1

# 実行
sudo java -jar my-app.jar
</div>

 

省略していますが、大体こんな感じのシェルを実行しようとしていました。

AWSのEC2インスタンスでポート番号80でアプリケーションを動かす際には、管理者権限で実行しないといけないようで、

脳死でjavaコマンドにsudoを付けました。

 

そしたら、デプロイ時に環境変数を読み込むところが、軒並みnullになってしまいました。

いやー世の中甘くないですな。

 

解決方法

<div style=”background-color: whitesmoke; padding: 5px; width: 100%;”>
# 実行
sudo -E java -jar my-app.jar
</div>

実行時に「-E」のオプションを付けてjavaコマンドを実行すればOKです。

sudoにもオプションがあるんだなぁ

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア