ラッパースクリプト:フォーク:再試行:サブプロセスなし

ラッパースクリプト:フォーク:再試行:サブプロセスなし

「myapplication」にはいくつかの設定やクリーンアップが必要なので、次のラッパースクリプトを使用します。

#!/bin/bash
echo "Do important set up stuff"
myapplication
echo "Clean up"

元のパスよりも自動的に優先順位を持つように、「myapplication」というパスに入れます。これはテスト時には機能しますが、実際にパスに入れた後は停止し、次のエラーが発生します。

/home/user/bin/myapplication: fork: retry: No child processes
[more of the same line]
/home/user/bin/myapplication: fork: retry: No child processes
/home/user/bin/myapplication: fork: Resource temporarily unavailable

また、スクリプトの開始後に最後のエラーが発生したため、中断される前に他のプログラムで同じエラーが発生します。

答え1

スクリプトがパスにある場合は、元のプログラムを呼び出す必要があるスクリプトの行がスクリプトを呼び出して、特定のシステム制限に達するまで無限の非終了再帰を生成します。

正しい方法は、which myapplicationスクリプトを PATH に入れる前に myapplication 元の実行可能ファイルの絶対パスを探し、そのパスを使用してスクリプトから myapplication を呼び出すことです。

一般的に学ぶべき教訓は次のとおりです。このエラーは終了しない再帰を示す可能性があります。

関連情報