いくつかのコンテキストを提供するために、単一のrm file.txt
コマンドでAIXでkshスクリプトを実行します。問題は、ファイルが共有グループが所有しているが他のユーザーが所有するため、スクリプトrm
コマンドで確認を要求することです。
したがって、rm
コマンドはファイル削除の確認を待っており、コマンドラインで実行されているため、他のスクリプトで実行されているy
ためn
STDIN
非対話型ところで、私たちには方法がない入力するその中に価値があります。
私たちはさまざまなオプションを検索しましたが、すべてのコンテンツは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.