入出力のリダイレクトとは

にゅうしゅつりょくのりだいれくと

シェルで、コマンドの標準入力・標準出力・標準エラー出力の行き先を、画面やキーボードの代わりにファイルなどに切り替えること。> はファイルに上書き、>> は末尾に追加、< はファイルを標準入力にし、2> は標準エラー出力(番号2)をファイルに向ける。2>&1 は標準エラー出力を「その時点の」標準出力の行き先にそろえるので、> file 2>&1 と 2>&1 > file では結果が違う。

「入出力のリダイレクト」は、1分野の3問の練習問題に出てきます(Linuxとコマンドラインの基礎など)。

この用語の分野: Linuxとコマンドラインの基礎

入出力のリダイレクトの練習問題に挑戦

SSH で接続したサーバで、時間のかかる処理を「./run.sh &」で起動してから接続を切ったところ、処理も止まってしまった。接続を切った後も処理を続けさせる起動のしかたとして、最も適切なものはどれか。

  1. A./run.sh > run.log 2>&1 &
  2. Bnice -n 19 ./run.sh > run.log 2>&1 &
  3. Cnohup ./run.sh > run.log 2>&1 &
答えと解説を見る

正解:C. nohup ./run.sh > run.log 2>&1 &

接続が切れると、端末のハングアップを知らせる SIGHUP がシェルに送られ、bash などのシェルは自分のジョブにも SIGHUP を送ります。SIGHUP を受け取ったときの既定の動作は終了なので、バックグラウンドのジョブも止まります。nohup はコマンドが SIGHUP を無視するようにして起動し、出力をファイルに向けておけば、接続を切った後も処理が続きます。出力をリダイレクトせずに端末から起動すると、nohup は出力を nohup.out というファイルに書き込みます。tmux や screen のような端末多重化のソフトを使い、後で同じ画面につなぎ直す方法もよく使われます。

解説の中の「入出力のリダイレクト」

「入出力のリダイレクト」が出てくる問題(3問)

  1. 上のコマンドを順に実行したとき、最後の cat で表示される内容として、正しいものはどれか。
  2. 上のように、a.txt はあり nofile はないディレクトリで、最後のコマンドを実行した。結果として、正しいものはどれか。
  3. SSH で接続したサーバで、時間のかかる処理を「./run.sh &」で起動してから接続を切ったところ、処理も止まってしまった。接続を切った後も処理を続けさせる起動のしかたとして、最も適切なものはどれか。

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

SSH シェル inode 環境変数 Git grep cron シグナル(Unix) シンボリックリンク スーパーユーザ

用語集の一覧へ