yuu_nkjm blog


2011-02-05(Sat) 編集

[bash][Linux][Java] シェルスクリプトの設置場所に移動してからのコマンド実行

状況

"/home/hoge/deep/path/project/sh/"という位置にJavaプロジェクトの起動スクリプトを置きたい.Javaのクラスパスの関係から,"/home/hoge/deep/path/project/"でjavaコマンドを発行したい.

スクリプト

起動スクリプトとしてboot.shを作成し,"/home/hoge/deep/path/project/sh/"に設置する.

シェルスクリプトの$0という環境変数には,スクリプトの相対パス付ファイル名が入っている.dirnameコマンドを使って,そこからファイル名を取り除いている.

以下では,全てを絶対パスに変換してから渡しているが,Javaに渡す引数は絶対パスではなく,javaコマンドを実行するパスからの相対パスにした方が良いかもしれない.

#!/bin/bash
SCRIPT_CALLED_DIR=`pwd`
echo   This script is called from  ${SCRIPT_CALLED_DIR}
SCRIPT_LOCATED_DIR=${SCRIPT_CALLED_DIR}/`dirname $0`
echo   This script is located at  ${SCRIPT_LOCATED_DIR}
cd ${SCRIPT_LOCATED_DIR}
echo   Move to script dir  ${SCRIPT_LOCATED_DIR}
cd ../
PROJECT_DIR=`pwd`
echo   Move to Project dir  ${PROJECT_DIR}
`java -cp bin:jar/log4j-1.2.15.jar info.nkjm.yuu.Hoge`

実行結果

どこからboot.shを実行しても,javaコマンドを実行したい"/home/hoge/deep/path/project/"に移動できている.

[hoge@info /home/hoge]$ deep/path/project/sh/boot.sh
  This script is called from  /home/nkjm
  This script is located at  /home/hoge/deep/path/project/sh
  Move to script dir  /home/hoge/deep/path/project/sh
  Move to Project dir  /home/hoge/deep/path/project
[hoge@info /home/hoge/deep/path]$ project/sh/boot.sh
  This script is called from  /home/hoge/deep/path
  This script is located at  /home/hoge/deep/path/project/sh
  Move to script dir  /home/hoge/deep/path/project/sh
  Move to Project dir  /home/hoge/deep/path/project

関連ページ


2012-02-05(Sun) 編集

[openSUSE][Linux][Windows][Troubleshooting] OSが正常起動しない

接続機器に問題がある

USB接続機器(USB HDD)の問題
  • USB HDDなどのUSB接続機器がささっていると,OSがブートしなくなることがあるので,抜いてから起動してみる.抜いて起動したとしても,今度は「ディスクの接続状況の不整合」のようなエラーが待っていることも多い.

ハードディスクに問題がある

ディスクの接続状況の不整合
  • yast->System->パーティション設定や/etc/fstabを確認する.
  • /etc/fstabに書かれた/dev/sdaなどのディスクが存在しないと通常のブートが出来なくり,レスキューモードで起動される.「ブートに必須のデータが入っていないHDDだし,なくてもbootするやろ」と軽い気持ちでいると,やられることがある.
  • レスキューモードでbootすると,rootのパスワードを聞かれる.ログインすると「通常起動するなら"systemctl default"と入れろ」など促される.yastを使うか/etc/fstabを編集するなどして,設定と接続状況が整合するようにする.
ファイルシステムの不整合

レスキューモードの様な形でOSが起動し,以下の様に表示されることがある.

ata_id HDIO_GET_IDENTITY failed for /dev/sdc: Invalid argument
fsck.ext2  Bad magic number in super-block while trying to open sdc2

祈りながらfsckをするぐらいしかないのか….

 fsck -y /dev/sdc2

トップ «前の日(02-04) 最新 次の日(02-06)» 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|