批判するには初心者っぽいですね、すみません。
私は、名前に「bifn*0.2e」を含む current_directory の下のすべてのディレクトリに入り、名前に「acc」を含むファイルを 1 分ごとに自動的に削除するスクリプトを生成したいと考えていました。これらは別のプロセスによって継続的に生成されています。これが私の持っているもので、機能しているようです。
#!/bin/bash
while true
do
find /current_directory/bifn*0.2e* -name '*acc*' -mmin +1 -delete
sleep 60
done
ただし、スクリプト ./auto_remove を実行した後、Ctrl+Z を押して、bg
バックグラウンドで実行し続けました。ターミナルを終了した後も、このスクリプトでファイルの削除を継続したかったのです。その部分も機能します。しかし、現在、スクリプトの実行を終了できず、スクリプトが実行中である証拠も表示されません (acc ファイルが削除されていることを除く)。入力を試したりps fjx
、jobs.
find 行をコメント アウトしてスクリプトを再実行したりしてみました。
それで、それがやっていることを止めるのを手伝ってください! そして、将来の使用のために、必要なときにそれを終了できるようにしながら、やりたいことをよりエレガントに行うにはどうすればよいでしょうか?
答え1
終了時に問題が見つかりました。スクリプトを実行している特定のノードにログインして、kill を実行する必要がありました。今後これを回避する方法がまだわかりません。
答え2
スクリプトの半分は不要です。時間のすべてのチェックを削除します。名前をチェックして削除するように設定してください。次に、1分ごとにcrontabに設定します。何らかの理由で停止したい場合は、実行行をコメントアウトしてcronを停止し、cronを再起動します。