2

.bashrc ファイル内の特定のコードを、特定の曜日の最初のログイン時にのみ実行する方法はありますか? コマンド置換 "$(date +%u)" を使用すると、曜日 (1 は月曜日) に対応する 1 から 7 までの数字が得られることは既にわかっています。ただし、後続のログインごとにこのコードを終日実行したくありません。どんなヒントでも大歓迎です。前もって感謝します!

4

3 に答える 3

2

ディスクに何も書き込む必要はありません。

コマンドから日を抽出します: lastlog -u $USER and date

次に、適切な一致/比較を行います。

ロジックは次のようになります。

    日付から日を取得
    開始日が魔法の日である場合、
      lastlog から日を取得 -u $USER
      日が今日と一致しない場合
        コマンドを実行します
于 2013-04-22T23:16:25.203 に答える
0
date +%u |                  ## Generate timestamp (could be a better date-spec)
   tee timestamp.tmp |      ## Save a copy for later usage
   cmp - timestamp ||       ## Fail if date-spec changed
   {  
      ## In that case, update timestamp
      mv timestamp.tmp timestamp && 

      ## And only if that succeeds, run your code
      echo "Once a day" ;
    }

de コマンドを実行する前にタイムスタンプに触れることを好みます。通常、何も実行しない方が繰り返し実行するよりも安全だからです。(パーティションが読み取り専用で再マウントされた可能性、ディスクがいっぱいになった可能性、アクセス許可が変更された可能性があります...)

于 2013-04-22T22:01:07.477 に答える