init.dスクリプトについて質問があります。
現在、次のカスタムデーモンを起動する起動スクリプトがあります。
sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
echo $! > "$pid_file"
initスクリプトをrootとして実行する限り、デーモンは動作します。
画面を作成するにはデーモンにアクセスする必要がありますが、CentOS 6.7以降、root以外のユーザーが "script"コマンドを使用して画面を実行できるようにする回避策を使用する必要があります(root以外のユーザーで「スクリーン」セッションを開始する方法)、root以外のユーザーとしてデーモンを完全に起動する次の行で終わります。
sudo -u "$user" bash -c "script -c \"$cmd\"" >> "$stdout_log" 2>> "$stderr_log" &
問題は、プロセスのpidをpidファイルにエコーしてパイプしようとしたときに始まります。これは、デーモン自体のpidではなく、「スクリプト」コマンドのpidを提供するためです。
デーモンPIDを入手するための提案や解決策がある人はいますか?
答え1
どうですか?
sudo -u "$user" bash -c "script -c \"$cmd& echo $! > \"$pid_file\"\"" >> "$stdout_log" 2>> "$stderr_log" &