• ベストアンサー
  • すぐに回答を!

シェルスクリプトで環境変数が読めない

Javaアプリケーションサーバー構築(Tomcat5) - CentOSで自宅サーバー構築: http://centossrv.com/tomcat5.shtml 上記のサイトでtomcatのインストールをしていて tomcat起動スクリプトを書き、 /etc/rc.d/init.d/tomcat start だとtomcatは正常に起動するのですが、 service tomcat start で起動すると Starting tomcat Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program というメッセージが表示されて、起動に失敗します スクリプト内で環境変数が読めていないように見えるのですが、 原因が分かりません。教えてください OSはCentOS 5.3です

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1339
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

serviceのman http://man.sourcentral.org/centos5/8+service に 「service runs a System V init script in as predictable environment as possible, removing most environment variables and with current working directory set to /.」 とある通り、serviceコマンドはほとんどの環境変数をクリアしてしまうので、それが原因だと思います。 serviceコマンドは単なるシェルスクリプトなはずなので、中身を読んでみるといいと思います。 serviceコマンドを使って起動できるようにするには、/etc/rc.d/init.d/tomcat の内容を工夫して書くようにする必要がありそうです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

そうなんですか! serviceコマンドを調べればよかったんですね。 /etc/profile.dにtomcat.shファイルを作って 変数に入力するようにして解決しました。 回答ありがとうございます!

関連するQ&A

  • Tomcat のrestart時にメッセージが・・

    いつもお世話になっております 自宅サーバーを設置しておりTomcatをインストールしております。 Tomcatをリスタートするときに下記のメッセージが出るのですが これは、エラーメッセージなのでしょうか? -------------------------------------------------------- [root@digitalrain root]# /etc/rc.d/init.d/tomcat restart Stopping the tomcat service. The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program Starting the tomcat service The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program -------------------------------------------------------

  • tomcat5について

    tomcat5をコマンドプロンプトで起動させようとしたところ The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE とでます。 環境変数JAVA_HOMEを見てみると C:\Program Files (x86)\Java\jdk1.8.0_11; となっております。 ちなみにtomcatはDドライブにあります。 その他は、 C:\Program Files (x86)\Java\jdk1.8.0_11の中にjreフォルダがあるのですが C:\Program Files (x86)\Javaにjre8フォルダがあります(その中にはlib,binフォルダ) どこが間違っているのでしょうか?

  • CentOS 4.8に、JDKがインストールできません。

    CentOS 4.8に、JDKがインストールできません。 Tomcatを使用したいために下記を参考にJDKをインストールしたいのですが、巧くいきません。 http://centossrv.com/tomcat5.shtml 環境設定ファイルの「profile」が作成されないのです。 以下のコマンドを試してもファイルが存在しないため、空のファイルが開かれます。 vi /etc/profile

  • OpenSSHについて

    疑問に思ったので質問させていただきます。 SSHなのですが(CentOS使用中) デフォルトでインストールされるSSHを止めて SSHサーバーを構築しているようなサイトをチラホラ見かけますが (参考サイト:http://centossrv.com/openssh.shtml) セキュリティなどの問題で変更したほうが良いのでしょうか? それともそのまま使用しても問題ないのでしょうか? なぜ再構築するのか教えていただければ幸いです。

  • CentOS 6のインストール後GNOMEを入れる

    CentOS 6の最小インストール後GNOMEインストール とあるサイトを参考にCentOS 6の最小インストールを行いました。 その後、GNOMEインストールをインストールしたいのですが、方法がわかりません。 CentOS 6インストール http://centossrv.com/centos6.shtml 検索していると以下のコマンドに行き着きますが、うまくいきません。 # yum groupinstall "X Window System" "GNOME Desktop Environment" CentOS 6の場合は、やりかたが異なるのでしょうか?

  • mod_rewriteの環境変数を埋め込みたい

    お世話になります。 現在、以下の環境でWebアプリケーションを開発しています。 CentOS5.4 Apache2.2.3 Tomcat7 JavaSE6 ApacheとTomcatの連携にmod_proxy_ajpモジュールを使用しています。 ただ、クライアントからアクセスするURLと連携先のURLが異なるため、Java側でHttpRequestからコンテキストパス以降を取得するとajp連携されたパスしか取得できず、クライアントがアクセスしたURI情報が取得できません。 これを対策するために、Apacheモジュールのmod_rewriteとmod_headersを利用して、 クライアントがアクセスしたURIをリクエストヘッダに埋め込もうとしています。 以下httpd.confに追加した設定です。 (rewrite.confも試しました) RewriteEngine On RewriteRule .* - [E=ORG_QUERY_STRING:%{QUERY_STRING}] RequestHeader append "test_query_string" %{ORG_QUERY_STRING}e 設定後、Apacheを再起動してWebアプリケーションにアクセスすると、リクエストヘッダ自体は追加されているのですが値が(null)となってしまい取得できません。 mod_rewriteの環境変数が取得できていないのかと思い、 RewriteRule .* - [E=ORG_QUERY_STRING:TEST] と固定文字列を埋め込んでも取得できませんでした。 このことからENVによる環境変数への設定、または参照が出来ていないのかと思われますが、どうにも解決できません。 参照時に RequestHeader append "test_query_string" %{ENV:ORG_QUERY_STRING}e としても同様の結果でした。 心当たりのある方、またはデバッグ方法や別解などアドバイスを頂けないでしょうか? なお、httpd.confではmod_rewrite、mod_headersのモジュール定義は有効となっております。 また、環境変数のスペルミスもコピペして確認しております。

  • tomcat自動起動がうまくいかない。

    FC3でApache2+tomcat4+mod_jk2で環境を構築しています。 Apache単体、tomcat単体、連繋とも全てうまくいきtomcatの自動起動設定を/etc/rc.d/init.d/tomcat というファイルで作製し、起動テストをおこなったのですが、実行時にエラーがでます。 作製したファイルの内容は以下のとおりです。 ここから #!/bin/sh # # Startup script for the tomcat # # chkconfig: 345 80 15 # description: Tomcat is a Servlet+JSP Engine. # Source function library. . /etc/rc.d/init.d/functions case "$1" in 'start') if [ -f /usr/local/tomcat/bin/startup.sh ]; then echo "Starting the tomcat service " su - nobody -c "export JAVA_HOME=/usr/java/j2sdk1.4.2_07;\export TOMCAT_HOME=/usr/local/tomcat;/usr/local/tomcat/bin/startup.sh" fi ;; 'stop') echo "Stopping the tomcat service." su - nobody -c "export JAVA_HOME=/usr/java/j2sdk1.4.2_07;\export TOMCAT_HOME=/usr/local/tomcat;/usr/local/tomcat/bin/shutdown.sh" ;; 'restart') $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac exit 0 ここまで rootでの/usr/local/tomcat/bin/startup.shを利用した起動は問題無く起動します。 JAVA_HOMEとCATALINA_HOMEは設定済みです。 どこが問題でしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • PostfixのSSL

    http://centos.server-manual.com/postfix_ssl.html http://centossrv.com/postfix-tls.shtml 上記の設定をしないと、セキュリティー的にどうなんでしょうか? 自宅・自社サーバを構築する際、上記の設定は必ず必要でしょうか?

  • 対話形式処理のスクリプト化

    例えば次のような処理をスクリプトやマクロで行いたいのですが可能でしょうか? (シェル言語はbash,zshなどを想定しておりますが他の言語を想定したご回答でも参考になります) ちなみに対話途中で表示される出力結果はあってもなくても構いませんが 出力結果を表示させないようなやり方から理解したいと考えております。 # mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 to server version: 4.1.12 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select user,host,password from ysql.user; +------+----------------------+----------+ | user | host | password | +------+----------------------+----------+ | root | localhost | | | root | centos.centossrv.com | | | | localhost | | | | centos.centossrv.com | | +------+----------------------+----------+ 4 rows in set (0.00 sec) mysql> set password for root@localhost=password('rootパスワード'); Query OK, 0 rows affected (0.00 sec) mysql> set password for root@'centos.centossrv.com'=password('rootパスワード'); Query OK, 0 rows affected (0.00 sec) mysql> select user,host,password from mysql.user; +------+----------------------+------------------+ | user | host | password | +------+----------------------+------------------+ | root | localhost | **************** | | root | centos.centossrv.com | **************** | | | localhost | | | | centos.centossrv.com | | +------+----------------------+------------------+ 4 rows in set (0.00 sec) mysql> exit Bye

  • 環境変数PATHをスクリプトかバッチから設定する方法

    社内研修の準備のために、何台ものパソコン(Windows XPを想定)のセットアップを 行うことがありまして、 ・ZIPファイルの展開 ・展開後フォルダを特定の場所へ配置 ・環境変数JAVA_HOMEとPATHの変更 などをバッチやJavaScriptを利用して自動的に処理させようと しています。ZIPの展開と配置は解決できたのですが、 環境変数(pathなど)をスクリプトかバッチから設定できないでしょうか? JavaScript(またはVBスクリプト)で次のように記述すると、 一見うまくいったように見えるのですが、レジストリが書き換わるだけで、 再起動しないとpathが有効になりませんでした。(スクリプト実行後に開いた コマンドプロンプトで echo %path% をしても反映されていない。) <setenvion.js> var shell = WScript.CreateObject("WScript.shell"); shell.RegWrite("HKEY_CURRENT_USER\\Environment\\path", "C:\\Program Files\\Java\\jdk1.6.0_06\\bin", "REG_EXPAND_SZ"); googleで検索しても、バッチを実行するためにpathを設定しましょう、みたいな 情報しか見つからないので、質問させていただきました。 上記のスクリプトでも再起動すれば反映されるのでその点我慢すればよいのですが、 なにかよい方法をご存知の方、よろしくお願いします。

    • ベストアンサー
    • Java