AIXで既存のPIDのSTDINに文字列を送信する方法はありますか?

AIXで既存のPIDのSTDINに文字列を送信する方法はありますか?

いくつかのコンテキストを提供するために、単一のrm file.txtコマンドでAIXでkshスクリプトを実行します。問題は、ファイルが共有グループが所有しているが他のユーザーが所有するため、スクリプトrmコマンドで確認を要求することです。

したがって、rmコマンドはファイル削除の確認を待っており、コマンドラインで実行されているため、他のスクリプトで実行されているyためnSTDIN非対話型ところで、私たちには方法がない入力するその中に価値があります。

私たちはさまざまなオプションを検索しましたが、すべてのコンテンツはLinuxまたはSolaris用でした。私たちの注目を集めたことの一つは解決策Linux の場合、PID の STDIN ファイル記述子の値をオーバーライドする操作が含まれます。これは理論的には妥当ですが、残念ながら、実際にはAIXではLinuxと同じようには機能しません。

foo@bar - /my/dir $ ps -fT 45023400
     UID      PID     PPID   C    STIME    TTY  TIME CMD
  foo 45023400 16449852   0 11:38:50 pts/17  0:00 /usr/bin/perl script1.pl
  foo  1507590 45023400   0 11:38:50 pts/17  0:00     \--/bin/sh script2.sh
  foo 50987084  1507590   0 11:38:51 pts/17  0:00         \--rm file.txt

私たちは最終的にPID 45023400を殺すことになりましたが、これが起こったときに唯一の解決策ではないと確信しています...だから私の質問は次のとおりです。どのような方法がありますか?送るAIXの既存のPIDのSTDIN文字列ですか?

Linuxフォーラムの指示に従って、エコーを上記のPIDのSTDINに対応するファイル記述子にリダイレクトできますが、この場合は機能しません。

foo@bar - /my/dir $ ls -l /proc/50987084/fd/
total 0
c---------    1 foo   cm           24, 17 Mar  8 13:43 0
p---------    0 foo   cm                0 Mar  8 11:38 1
p---------    0 foo   cm                0 Mar  8 11:38 2

foo@bar - /my/dir $ echo n > /proc/50987084/fd/0
Permission denied
ksh: /proc/50987084/fd/0: cannot create

Permission deniedファイルディスクリプタが尊重しないことを考えると、大丈夫だと思われるエラーが発生しました。ノーマルファイルのmodルール...または少なくともAIXではそうではありません。 :(

答え1

私はrm -fそれがあなたに役立つと思います:

   -f
        Does not prompt before removing a write-protected file. Does not display an error message or return error status if
        a specified file does not exist. If both the -f and -i flags are specified, the last one specified takes affect.

関連情報