逆引きUNIXコマンド/2>&1をでバックグラウンド実行の&は何処に記述する?
の編集
Top
/
逆引きUNIXコマンド
/
2>&1をでバックグラウンド実行の&は何処に記述する?
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) *2>&1を指定した場合のバックグラウンド実行の&は何処に記述すればよいか [#d5082369] 2>&1により標準エラーを標準出力に変更し&によるバックグラウンド実行をしたい場合、以下のどちらの記述が正しいのかちょっと気になり確かめてみた。 - 2>&1の後にバックグラウンド実行の&を付加 コマンド > out.log 2>&1 & - 2>&1の前にバックグラウンド実行の&を付加 コマンド > out.log & 2>&1 #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) #contents * 関連資料 [#i011e8c3] -[[標準エラー出力をファイルに出力する方法>逆引きUNIXコマンド/標準エラー出力をファイルに出力する方法]] -[[echoコマンドの出力を標準エラー(stderr)に出力する方法>逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]] -[[端末から起動したプロセスを切り離す方法>逆引きシェルスクリプト/端末から起動したプロセスを切り離す方法]] -[[teeコマンドでstderr(標準エラー)も対象にする>逆引きUNIXコマンド/teeコマンドでstderr(標準エラー)も対象にする]] * 確認シェルスクリプト [#m7856aeb] 以下のような、stdout, stderrにechoするシェルスクリプトを作成した。 #ref(bg.sh) #/bin/bash for i in `seq 1 5` do echo "stdout" echo "stderr" 1>&2 done (1>&2の意味はstderrにechoするようにする。参考資料:「[[逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]]」) * 実行結果 [#n9185f21] バックグラウンド実行の&の位置を2>&1の前と後ろで動作させてみた結果は以下の通り。 ** バックグラウンド実行の&が2>&1の後ろの場合 [#s77c5f29] 作成した確認シェルスクリプトを下行のようにして起動 ./bg.sh > out.log 2>&1 & 実行結果 $ ./bg.sh > out.log 2>&1 & [1] 6029 $ [1]+ Done ./bg.sh > out.log 2>&1 $ cat out.log stdout stderr stdout stderr stdout stderr stdout stderr stdout stderr stdout, stdout共にout.logファイルに出力されているので意図した動作となっている。 ** バックグラウンド実行の&が2>&1の前の場合 [#mc3e48ce] 作成した確認シェルスクリプトを下行のようにして起動 ./bg.sh > out.log & 2>&1 実行結果 $ ./bg.sh > out.log & 2>&1 [1] 6035 $ stderr stderr stderr stderr stderr [1]+ Done ./bg.sh > out.log $ cat out.log stdout stdout stdout stdout stdout stdoutのみout.logファイルに出力されstderrは端末に出力され意図した動作となっていない。 #br #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html) #br
タイムスタンプを変更しない
#navi(../) *2>&1を指定した場合のバックグラウンド実行の&は何処に記述すればよいか [#d5082369] 2>&1により標準エラーを標準出力に変更し&によるバックグラウンド実行をしたい場合、以下のどちらの記述が正しいのかちょっと気になり確かめてみた。 - 2>&1の後にバックグラウンド実行の&を付加 コマンド > out.log 2>&1 & - 2>&1の前にバックグラウンド実行の&を付加 コマンド > out.log & 2>&1 #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) #contents * 関連資料 [#i011e8c3] -[[標準エラー出力をファイルに出力する方法>逆引きUNIXコマンド/標準エラー出力をファイルに出力する方法]] -[[echoコマンドの出力を標準エラー(stderr)に出力する方法>逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]] -[[端末から起動したプロセスを切り離す方法>逆引きシェルスクリプト/端末から起動したプロセスを切り離す方法]] -[[teeコマンドでstderr(標準エラー)も対象にする>逆引きUNIXコマンド/teeコマンドでstderr(標準エラー)も対象にする]] * 確認シェルスクリプト [#m7856aeb] 以下のような、stdout, stderrにechoするシェルスクリプトを作成した。 #ref(bg.sh) #/bin/bash for i in `seq 1 5` do echo "stdout" echo "stderr" 1>&2 done (1>&2の意味はstderrにechoするようにする。参考資料:「[[逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]]」) * 実行結果 [#n9185f21] バックグラウンド実行の&の位置を2>&1の前と後ろで動作させてみた結果は以下の通り。 ** バックグラウンド実行の&が2>&1の後ろの場合 [#s77c5f29] 作成した確認シェルスクリプトを下行のようにして起動 ./bg.sh > out.log 2>&1 & 実行結果 $ ./bg.sh > out.log 2>&1 & [1] 6029 $ [1]+ Done ./bg.sh > out.log 2>&1 $ cat out.log stdout stderr stdout stderr stdout stderr stdout stderr stdout stderr stdout, stdout共にout.logファイルに出力されているので意図した動作となっている。 ** バックグラウンド実行の&が2>&1の前の場合 [#mc3e48ce] 作成した確認シェルスクリプトを下行のようにして起動 ./bg.sh > out.log & 2>&1 実行結果 $ ./bg.sh > out.log & 2>&1 [1] 6035 $ stderr stderr stderr stderr stderr [1]+ Done ./bg.sh > out.log $ cat out.log stdout stdout stdout stdout stdout stdoutのみout.logファイルに出力されstderrは端末に出力され意図した動作となっていない。 #br #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html) #br
テキスト整形のルールを表示する
添付ファイル:
bg.sh
550件
[
詳細
]