echo / printfリダイレクトはバックグラウンドプロセスでは機能しません。

echo / printfリダイレクトはバックグラウンドプロセスでは機能しません。

次のコマンドがあります。

sudo sh -c "echo $ADDR > /sys/class/gpio/export"

シェルではうまく動作しますが、バックグラウンドプロセスとして実行すると、次のエラーが発生します。

ttyが存在せず、Askpassプログラムが指定されていません。

この問題をどのように解決できますか?

ありがとう

編集する私が行ったステップをお見せするのを忘れました。

  1. SSH経由で組み込みLinuxに接続します。
  2. "nohup &"を介して上記のコマンドを含むスクリプトを実行します。
  3. これで、プロセスはバックグラウンドで実行されています。
  4. GPIOボードに接続されたLEDが期待どおりに動作します。
  5. SSHセッションを切断します。
  6. LEDが動作しなくなりました。
  7. SSH経由で再接続してファイルを入力しました。nohup.out読んだ」ttyが存在せず、Askpassプログラムが指定されていません。」。

答え1

問題は、sudoプロセス全体をバックグラウンドで実行していて、パスワードの入力を求められないことです。

あなたはできます:

  • sudo別のプログラムを実行し、パスワードを入力してコマンドを入力します(Sudo構成によって異なります)。
  • visudoユーザー/グループがパスワードなしでsudoコマンドを実行できるようにsudo(pass)を設定します。%wheel ALL=(ALL) NOPASSWD: ALL

第二は、より合理的な解決策です。もちろん、より多くの解決策がありますが、主な要件を説明すると多くの助けになります。

答え2

私の考えでは、/etc/sysfs.confにパラメータを入れるのが良いと思います。

バラより

https://serverfault.com/questions/373624/suggestions-for-making-sysfs-parameters-persist-across-reboots

関連情報