4

次の bash コードを見ました: at 19:00 <<! echo "job 1". 2 つの問題があります。

  1. このリダイレクト演算子は何ですか: <<!?
  2. 次のスクリプト コードを記述しました。

    at 19:00 <<!
        echo "job 1"
    
    at 20:00 <<!
        echo "job 2"
    

    このスクリプトを実行すると、atqコマンドは 1 つのジョブ (最初のジョブ) しか表示しませんでした。どうしたの?また、このスクリプトを介して 2 つのジョブを正しく送信するにはどうすればよいですか?


おそらく多くのプロキシ サーブレットが利用可能で、Apache の ProxyPass よりも機能セットが充実しているものもあります。しかし、通常はサーブレットの前に堅牢なサーバーを配置したいので、人々は Apache のようなものをセットアップし、ProxyPass を使用してリクエストをローカル (または内部) サーブレット エンジンにプロキシします。

Apache を使用する必要はありません。たとえば、NGinx の ProxyPassを使用して、ほぼ同じことを行うことができます。負荷分散が心配な場合は、これを行うための Apache の mod_proxy 以外のモジュールもあります。

4

2 に答える 2

6

bashリファレンスマニュアルより

3.6.6 ヒアドキュメント

このタイプのリダイレクトは、シェルに現在のソースから入力を読み取るように指示し、単語のみを含む (末尾の空白がない) 行が表示されるまで続けます。その時点までに読み取られたすべての行は、コマンドの標準入力として使用されます。

The format of here-documents is: 
     <<[−]word
             here-document
     delimiter

そう

  1. 後に何も指定する必要はありませんword(あなたの場合!
  2. 次にat、1 つ以上の行でジョブを指定する必要があります
  3. word最後に、 (ここでも、あなたの場合は!)を含む行を追加します
于 2012-08-06T23:06:35.020 に答える
5

Nya が説明したように、これ<<!ヒア ドキュメントです。

あなたは書くべきです:

at 19:00 <<!
    echo "job 1"
!
at 20:00 <<!
    echo "job 2"
!

で始まる行がなければ、!ヒア ドキュメントは残りのシェル スクリプトでした。そのため、atq. (しかし、コマンドは実行時に 2 番目のジョブをスケジュールしていたはずです!)

于 2012-08-06T23:23:39.423 に答える