私たちの企業が使用するサードパーティのスケジューリングアプリケーションは、期待どおりにrm
コマンドを実行しません。つまり、rm -f $filetoremove
が完了し、スクリプトの次のコード行に進むことを期待しています。
しかし、優先的に実行するには、rm -f
を取得する必要があります。
rm
を使用せずにファイルを削除する別の方法はありますか? > delete_foobar.file
を試しましたが、削除せずに空にしただけです。
追加情報:私の作業環境は大企業です。 .sh
スクリプトを書いて、スケジューリングアプリケーションの外部でテストしています。スケジューリングソフトウェアの外では、rm -f $filetoremove
コマンドは0
の戻りコードで機能します。ただし、スケジューリングソフトウェアは0
戻りコードを登録せず、残りの.sh
スクリプトを実行せずにすぐに終了します。これは問題があり、ベンダーはこの欠陥を認めています。
自動化ソフトウェアの詳細も、自動化ソフトウェアが受け取る正確な戻りコードも知りません。私が知っているのは、自動化ソフトウェアを介して実行すると、スクリプトにrm
が含まれている場合、スクリプトが完全には実行されないことです。これがrm
の代替案を探している理由です。
はい、ファイルの処理が完了したら、ファイルを削除することが重要です。
unlink
コマンドもPOSIXの一部です:
unlink <file>
shred
を実行できますか?もしそうなら、それから:
shred -u <file to remove>
rm
を使用せずにファイルを削除する別の方法はありますか?
busybox rm -f path/to/file
これは、スケジューリングアプリケーションでbusybox
を無制限に実行できることを前提としています。どのアプリケーションであるかを指定していないため、どのような制限があるのか実際にはわかりませんが、アプリケーションがrm
の実行を防止する単純なモリーガードを備えている場合は、上記が機能するはずです。
GNU find
、find /your/file -delete
は機能する可能性があります。
ファイルを/ tmpに移動します。
mv filename /tmp
次回の再起動時に削除されます。