「a」で始まるすべてのファイルを削除する必要があります。/ tmpの容量が50%を超えるとすぐに、このコマンドは常にバックグラウンドで実行されるはずです。私はUnixを初めて使用するので、誰かが私を助けてくれますか。
2 に答える
私はあなたに答えを与えずに助けようとします。そうすれば、他のことを学ぶことができます!
まず、一連のコマンドをスクリプトとして保存し、cronなどで実行することをお勧めします。あなたは好きなことをすることができますがwhile true ; do rm a.* ; sleep 60 ; done
、再起動後に再起動しません。cronジョブはそうなります。
そのコード行は毎分実行され、a。*を削除します。毎秒必要な場合は、60を1に変更します。さらに便利にするには、ディスクスペースのお気に入りのコマンドを調べ、cutやgrepなどを使用して特定のフィールドを取得し、ヘッダー行を削除します(%spaceを出力するためだけに基本スペースコマンドのオプションがない場合)
。
[max@fedora ~]$ df /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 4866748 202812 4419868 5% /tmp
[max@fedora ~]$ df /tmp | grep tmp| cut -c43-45
5
次に、ifステートメントの構文を確認するだけで済みます。書き込んだコマンドを「space_clear.sh」というファイルに保存してから、space_clear.shをcronに追加して、1分ごとに実行します。
ヒント:テスト中は、ls a.*
代わりに実行してください。rm a.*
ひどく間違っている場合は、削除するのではなく、削除したはずのファイルが表示されます。物事を間違えることは学習であることを忘れないでください。
(それでも問題が解決しない場合は、if、then、およびfiをお好みのシェル(bash / ksh csh / bourne)でお読みください。比較演算子を使用し、「もしも"。)
コマンド出力を解析して照合するために、コストのかかるフォークやパイプなしでできることはたくさんあります。私の提案は、次のようなコマンドスクリプトを使用することです。
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin # Cron does not export any PATH.
case `df /tmp` in
(* [5-9]?% *) rm -f /tmp/a.*
esac
これは、使用されたパーセンテージがによって出力される列とは独立して機能しdf
ます。これは、50%から99%までのUse%値で機能しますが、100%以上では機能しないことに注意してください(スーパーユーザー用に予約されたスペースが原因で発生する可能性があります)。これは演習として残されています:-)
これを定期的に実行する場合は、設定およびVISUAL=vi
/または指定したエディターにポップアップ表示されます。次のような行を挿入しますEDITOR=vi
crontab -e
* * * * * /full/path/to/above/script
保存して終了します。これにより、スクリプトが1分に1回実行されます。10分に1回
0,10,20,30,40,50 * * * * /full/path/to/above/script
スクリプトがで実行可能であることを確認してくださいchmod +x /full/path/to/above/script
。