`sleep3`の代わりに` read -t3`を使用すると便利な場合があります。`nohup`で動作させるにはどうすればよいですか?

グラリー

read -t 3代わりに使用すると便利な場合がありsleep 3ます。どうすればそれを動作させることができnohupますか?

nohup bash -c ' date; read -t 3; date ' | tail -n 2 nohup.out

ご覧のとおりread -t 3、3秒待たないでください

ステファン・チャゼラス

read -t 3ksh93拡張機能は、、およびでサポートされるようzshbashなりましたmksh)は、stdinから3秒のタイムアウトで1行(その行の論理行は末尾の円記号で継続される場合があり-rます)を読み取ることを目的としています$REPLY

stdinが端末の場合、ユーザーがEnterキーを押さない限り、3秒間スリープします(スクリプトがバックグラウンドで開始された場合、スクリプトはSIGTTINシグナルで中断されます)。

通常のファイルの場合は、その行を読み取り、すぐに戻ります。もしそうなら/dev/zero、そこからギガバイトのゼロの読み取りを非常に忙しくします。

nohupは、端末からコマンドを切り離すために使用するコマンドです。stdinをにリダイレクトし/dev/null、stdoutとstderrをにリダイレクトnohup.outます。したがって、通常、その場合は端末から読み取りたくないでしょう

read/dev/nullデータが返されないまますぐ返品される場合は、それ/dev/nullが目的です。

使用の目的read -tが、Enterスキップできるメッセージを読む時間をユーザーに与えたいときのように、ユーザーが(を押すことによって中断できるような睡眠をとることであるread -t場合、非対話型のときにすぐに戻る(で実行しているときのようにnohup)スクリプトを遅らせる意味がないので、それは正しいことのように思われます。

ただし、stdinがターミナルの場合はタイムアウトでターミナルから読み取り、それ以外の場合はスリープする場合は、次のようにします。

if [ -t 0 ]; then
  read -t 3
else
  sleep 3
fi

[ -t n ]ファイル記述子n(0はstdin)が端末デバイスを参照しているかどうかをテストします

あなたはそうすることができますread -t 3 < /dev/ttyが、nohupそれnohupは防御することを意図した端末との相互作用を追加することによって目的を無効にします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ