LoginSignup
1

More than 5 years have passed since last update.

matlabでnohupを使うとプログラムが終了しない件

Last updated at Posted at 2018-12-07

あるmatlabスクリプトsample.mをバックグラウンドで実行したいとき, rオプションをつけて

ダメな例
nohup matlab -r sample &

と書く.
しかし, このように書いてしまうと, プログラム終了後Matlabが永遠と標準入力から読み取ろうとしてエラーを出し続ける.
その結果, nohupの出力であるnohup.out数十ギガになるような危険事態が発生する. (気づかなければHDDを埋め尽くす)
sample.mの最後にexitと書けばこの問題は解決されるように思えるが, プログラム中でエラーが発生したときにも, 同じ事態が発生する.
解決策は次のようにすることである.

良い例
nohup matlab -r sample < /dev/null &

/dev/nullはLinuxでEOFを返す特殊なものである.
こうすることで, プログラムがどのように終了しても, matlabがEOF(終了)を受け取って, 正常に終了してくれる.

/dev/nullに限らず, touch nullなどで空ファイルnullを作成して, 渡してあげてもよい: nohup matlab -r sample < null &

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1