• HOME
  • COMPUTER
    • AWS
    • DB
    • LINUX
    • WSL
  • PROGRAM
    • C#
    • HTML/CSS
    • JAVASCRIPT
    • POWERSHELL
    • PYTHON
    • SHELL
    • VISUALBASIC
  • STUDY
  • BLOG
    • PLUGIN
    • TIPS

ITを楽しもう!

ITよろず雑記帳

  • HOME
  • COMPUTER
    • AWS
    • DB
    • LINUX
    • WSL
  • PROGRAM
    • C#
    • HTML/CSS
    • JAVASCRIPT
    • POWERSHELL
    • PYTHON
    • SHELL
    • VISUALBASIC
  • STUDY
  • BLOG
    • PLUGIN
    • TIPS

新着記事一覧

book_gijutsusyo_it_set

【Linux】シンボリックリンク

  シンボリックリンクとはファイルへのリンクです。Windowsでいうとショートカットになります。 シンボリックリンクの作成や削除は、lnコマンドを使います。   シンボリックリン ...

COMPUTER LINUX

book_gijutsusyo_it_set

【Linux】ファイルアーカイブ

  複数のファイルやディレクトリー内のファイルをまとめてひとつのファイルにしたり、テープに書き込んだりすることをアーカイブするといいます。 ファイルをアーカイブするには、tar(ター)コマン ...

COMPUTER LINUX

book_gijutsusyo_it_set

【Linux】ファイル圧縮

  ファイルを圧縮する ファイルを圧縮するには、gzip(ジージップ)コマンドを使います。 ファイルを圧縮すると、ファイル名の末尾にgzという拡張子が追加されます。 また、ファイル名にワイル ...

COMPUTER LINUX

book_gijutsusyo_it_set

【Linux】ログ出力

  Linuxには、OSに関する様々な情報やメッセージを収集して、ファイルに出力する仕組みがあります。 これをsyslog(シスログ)といいます。 ユーザーもloggerコマンドを使って、s ...

COMPUTER LINUX

book_gijutsusyo_it_set

【Linux】スケジュール実行

  スケジュールを設定して、自動でプログラムを実行するには、cron(クーロン)を使います。 cronはユーザー毎に設定します。   cronの書式 cronの書式は、以下のように ...

COMPUTER LINUX

computer_programming_man

bash実践シェルスクリプト【ログ削除】

  ログを削除するシェルスクリプトです。 このシェルスクリプトの仕様は、以下のようになります。

delete.sh
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
 
### 定数
readonly LIST=delete.lst     # 削除対象リスト
readonly LOG=delete.log      # 削除結果ログ
 
### 変数
INF_COUNT=0                  # 削除成功数
ERR_COUNT=0                  # 削除失敗数
 
### リストファイル確認
if [[ ! -r "$LIST" ]]
then
  echo "ERR [$LIST] リストファイルが存在しない" >> $LOG 2>&1
  exit 1
fi
 
### リストファイル読み込み
while read target pattern days dummy
do
  ### コメントまたは空白の場合は読み飛ばす
  if [[ "$target" == \#* ]] || [[ -z "$target" ]]
  then
    continue
  fi
 
  ### パラメーター不正
  if [[ "$pattern" == \#* ]] || [[ -z "$pattern" ]] || \
     [[ "$days"    == \#* ]] || [[ -z "$days"    ]]
  then
    (( ERR_COUNT++ ))
    echo "ERR [$target][$pattern][$days] パラメーター不正" >> $LOG 2>&1
    continue
  fi
 
  ### 削除対象ファイル取得
  files=$(find $target -maxdepth 1 -name "$pattern" -mtime +$days -type f 2>/dev/null)
 
  ### 該当ファイルチェック
  if [[ -z "$files" ]]
  then
    echo "WAR [$target/$pattern] 該当ファイルなし" >> $LOG 2>&1
    continue
  fi
 
  ### 削除処理
  for buf in $files
  do
    cmd_del="/bin/rm -f $buf"
 
    ### 削除コマンド実行
    $cmd_del > /dev/null 2>&1
    if (( $? == 0 ))
    then
      (( INF_COUNT++ ))
      echo "INF DEL $buf" >> $LOG 2>&1
    else
      (( ERR_COUNT++ ))
      echo "ERR DEL $buf" >> $LOG 2>&1
    fi
  done
done < "$LIST"
 
### 総合エラーチェック
echo "INF 削除数=[$INF_COUNT] 削除エラー数=[$ERR_COUNT]" >> $LOG 2>&1
 
### 終了処理
if (( ERR_COUNT == 0 ))
then
  exit 0
else
  exit 1
fi

メモ 19行目のdummy変 ...

PROGRAM SHELL

computer_programming_man

bash実践シェルスクリプト【ログバックアップ】

  ログをバックアップするシェルスクリプトです。 このシェルスクリプトの仕様は、以下のようになります。

backup.sh
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/bash
 
### 定数
readonly LIST=backup.lst        # バックアップ対象リスト
readonly LOG=backup.log         # バックアップ結果ログ
 
### 変数
INF_COUNT=0                     # バックアップ成功数
ERR_COUNT=0                     # バックアップ失敗数
YMDHMS=$(date +"%Y%m%d%H%M%S")  # 現在年月日時分秒
 
### リストファイル確認
if [[ ! -r "$LIST" ]]
then
  echo "ERR [$LIST] リストファイルが存在しない" >> $LOG 2>&1
  exit 1
fi
 
### リストファイル読み込み
while read target pattern backup option dummy
do
  ### コメントまたは空白の場合は読み飛ばす
  if [[ "$target" == \#* ]] || [[ -z "$target" ]]
  then
    continue
  fi
 
  ### パラメーター不正
  if [[ "$pattern" == \#* ]] || [[ -z "$pattern" ]] || \
     [[ "$backup"  == \#* ]] || [[ -z "$backup"  ]] || \
     [[ "$option"  == \#* ]] || [[ -z "$option"  ]]
  then
    (( ERR_COUNT++ ))
    echo "ERR [$target][$pattern][$backup][$option] パラメーター不正" >> $LOG 2>&1
    continue
  fi
 
  ### バックアップ先ディレクトリ確認
  if [[ ! -d "$backup" ]]
  then
    (( ERR_COUNT++ ))
    echo "ERR [$backup] ディレクトリーなし" >> $LOG 2>&1
    continue
  fi
 
  ### バックアップ対象ファイル取得
  files=$(ls -1 $target/$pattern 2>/dev/null)
 
  ### 該当ファイルチェック
  if [[ -z "$files" ]]
  then
    echo "WAR [$target/$pattern] 該当ファイルなし" >> $LOG 2>&1
    continue
  fi
 
  ### オプション毎のコマンドを作成
  for buf in $files
  do
    case "$option" in
      c)  # コピーのみ
        cmd_cpy="/bin/cp -p $buf $backup/$(basename $buf).$YMDHMS"
        cmd_del=""
        ;;
      d)  # コピー後に削除
        cmd_cpy="/bin/cp -p $buf $backup/$(basename $buf).$YMDHMS"
        cmd_del="/bin/rm -f $buf"
        ;;
      *)  # オプション不正
        (( ERR_COUNT++ ))
        echo "ERR [$target/$pattern][$option] オプション不正" >> $LOG 2>&1
        break
        ;;
    esac
 
    ### バックアップコマンド実行
    $cmd_cpy > /dev/null 2>&1
    if (( $? == 0 ))
    then
      (( INF_COUNT++ ))
      echo "INF CPY $buf" >> $LOG 2>&1
 
      ### 削除コマンド確認
      if [[ -z "$cmd_del" ]]
      then
        continue
      fi
 
      ### 削除コマンド実行
      $cmd_del > /dev/null 2>&1
      if (( $? == 0 ))
      then
        echo "INF DEL $buf" >> $LOG 2>&1
      else
        (( ERR_COUNT++ ))
        echo "ERR DEL $buf" >> $LOG 2>&1
      fi
    else
      (( ERR_COUNT++ ))
      echo "ERR CPY $buf" >> $LOG 2>&1
    fi
  done
done < "$LIST"
 
### 総合エラーチェック
echo "INF バックアップ数=[$INF_COUNT] バックアップエラー数=[$ERR_COUNT]" >> $LOG 2>&1
 
### 終了処理
if (( ERR_COUNT == 0 ))
then
  exit 0
else
  exit 1
fi

メモ 20行目のdu ...

PROGRAM SHELL

book_gijutsusyo_it_set

【Linux】ファイルを使用しているプロセスを調べる

  ファイルを使用しているプロセスを調べるには、fuserコマンドを使います。 ファイルを使用しているプロセスを停止するには、fuserコマンドの-kオプションを使います。 ファイルを使用し ...

COMPUTER LINUX

book_gijutsusyo_it_set

【Linux】ファイルサイズの合計

  ディレクトリー内のファイルサイズの合計を計算するには、duコマンドを使います。 awkコマンドを併用していますが、awkコマンドの詳細は以下の記事を参照してください。   ディ ...

COMPUTER LINUX

computer_programming_man

初心者のためのbash超入門【第18回 コマンドラインオプション】

      シェルスクリプトでコマンドラインオプションを使おう   getoptsの基本的な使い方 getoptsの基本的な使い方は、以下のようになります。 オ ...

PROGRAM SHELL

« Prev 1 … 36 37 38 39 40 … 43 Next »
  • Post
  • Share
  • Hatena
fusanosuke

三貫房之輔

IT技術者。C言語、JavaScript、Visual Basicなどのプログラミングを経験後、UNIX系のインフラ(サーバー、ストレージの構築)を担当。 趣味は旅行、写真撮影、音楽鑑賞、野球観戦、TVゲームなど。 最近は昔のSF小説を再読中。

月間アーカイブ

  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年3月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  •  問い合わせ
  •  案内

ITを楽しもう!

ITよろず雑記帳

© 2025 ITよろず雑記帳