[Flinkの概要] Flinkはshを介してクラスターを起動し、エラーを報告します

Flinksh ${file}は、クラスターを開始および停止することにより、次のエラーを報告します。

[fuyun@bigdata-training tools]$ sh /opt/modules/flink-1.12.0/bin/stop-cluster.sh 
/opt/modules/flink-1.12.0/bin/config.sh: line 32: syntax error near unexpected token `<'
/opt/modules/flink-1.12.0/bin/config.sh: line 32: `    done < <(find "$FLINK_LIB_DIR" ! -type d -name '*.jar' -print0 | sort -z)'
/opt/modules/flink-1.12.0/bin/config.sh: line 32: warning: syntax errors in . or eval will cause future versions of the shell to abort as Posix requires
/opt/modules/flink-1.12.0/bin/stop-cluster.sh: line 26: TMWorkers: command not found
/opt/modules/flink-1.12.0/bin/stop-cluster.sh: line 45: /jobmanager.sh: No such file or directory

理由:
flinkの開始および停止スクリプトインタープリターはbashではないため、shコマンドを使用してスクリプトを実行することはできません/opt/modules/flink-1.12.0/bin/start-cluster.sh実行時にファイルの絶対パスまたは相対パスを直接入力できます以下に示すように:

ここに画像の説明を挿入します

!/ usr / bin / env bashと#!/ usr / bin / bash、#!/ bin / bashの比較

  • #!/usr/bin/env bashさまざまなシステムである程度の柔軟性を提供します。
  • #!/usr/bin/bash指定された実行可能ファイルシステムは明示的に制御されます。

/usr/bin/envプログラムを実行することにより、プログラムがシステム内にある限り、ユーザーはシステム内のプログラムの場所を見つける必要がありません(コマンドまたはプログラムの場所はシステムによって異なる場合があるため)$PATH

/usr/bin/envプログラムを実行することによるもう1つの利点は、環境に基づいてデフォルトバージョンを見つけて実行し、柔軟性を提供することです。

欠点は、マルチユーザーシステムでは、他の誰かがあなたに$PATHbash入れて、エラーが発生する可能性があることです。

ほとんどの場合、/usr/bin/env特にこのスクリプトを別のバージョンで実行する場合は柔軟性があり、特定の場所を指定する方法#!/usr/bin/bashがコードを制限するため、より安全な場合があります。インジェクションの可能性。

一部のシステム/usr/bin/bashでは使用できない場合がありますが/bin/bash存在している必要があります。したがって、これ/bin/bashはディスプレイ指定に適した選択肢です。

おすすめ

転載: blog.csdn.net/lz6363/article/details/112472262