2

「a」で始まるすべてのファイルを削除する必要があります。/ tmpの容量が50%を超えるとすぐに、このコマンドは常にバックグラウンドで実行されるはずです。私はUnixを初めて使用するので、誰かが私を助けてくれますか。

4

2 に答える 2

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)でお読みください。比較演算子を使用し、「もしも"。)

于 2012-05-02T11:24:48.513 に答える
0

コマンド出力を解析して照合するために、コストのかかるフォークやパイプなしでできることはたくさんあります。私の提案は、次のようなコマンドスクリプトを使用することです。

#!/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=vicrontab -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

于 2012-05-02T13:10:23.187 に答える