-
-
【Linux】シンボリックリンク
シンボリックリンクとはファイルへのリンクです。Windowsでいうとショートカットになります。 シンボリックリンクの作成や削除は、lnコマンドを使います。 シンボリックリン ...
-
-
【Linux】ファイルアーカイブ
複数のファイルやディレクトリー内のファイルをまとめてひとつのファイルにしたり、テープに書き込んだりすることをアーカイブするといいます。 ファイルをアーカイブするには、tar(ター)コマン ...
-
-
【Linux】ファイル圧縮
ファイルを圧縮する ファイルを圧縮するには、gzip(ジージップ)コマンドを使います。 ファイルを圧縮すると、ファイル名の末尾にgzという拡張子が追加されます。 また、ファイル名にワイル ...
-
-
【Linux】ログ出力
Linuxには、OSに関する様々な情報やメッセージを収集して、ファイルに出力する仕組みがあります。 これをsyslog(シスログ)といいます。 ユーザーもloggerコマンドを使って、s ...
-
-
【Linux】スケジュール実行
スケジュールを設定して、自動でプログラムを実行するには、cron(クーロン)を使います。 cronはユーザー毎に設定します。 cronの書式 cronの書式は、以下のように ...
-
-
bash実践シェルスクリプト【ログ削除】
ログを削除するシェルスクリプトです。 このシェルスクリプトの仕様は、以下のようになります。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#!/bin/bash### 定数readonly LIST=delete.lst # 削除対象リストreadonly LOG=delete.log # 削除結果ログ### 変数INF_COUNT=0 # 削除成功数ERR_COUNT=0 # 削除失敗数### リストファイル確認if [[ ! -r "$LIST" ]]thenecho "ERR [$LIST] リストファイルが存在しない" >> $LOG 2>&1exit 1fi### リストファイル読み込みwhile read target pattern days dummydo### コメントまたは空白の場合は読み飛ばすif [[ "$target" == \#* ]] || [[ -z "$target" ]]thencontinuefi### パラメーター不正if [[ "$pattern" == \#* ]] || [[ -z "$pattern" ]] || \[[ "$days" == \#* ]] || [[ -z "$days" ]]then(( ERR_COUNT++ ))echo "ERR [$target][$pattern][$days] パラメーター不正" >> $LOG 2>&1continuefi### 削除対象ファイル取得files=$(find $target -maxdepth 1 -name "$pattern" -mtime +$days -type f 2>/dev/null)### 該当ファイルチェックif [[ -z "$files" ]]thenecho "WAR [$target/$pattern] 該当ファイルなし" >> $LOG 2>&1continuefi### 削除処理for buf in $filesdocmd_del="/bin/rm -f $buf"### 削除コマンド実行$cmd_del > /dev/null 2>&1if (( $? == 0 ))then(( INF_COUNT++ ))echo "INF DEL $buf" >> $LOG 2>&1else(( ERR_COUNT++ ))echo "ERR DEL $buf" >> $LOG 2>&1fidonedone < "$LIST"### 総合エラーチェックecho "INF 削除数=[$INF_COUNT] 削除エラー数=[$ERR_COUNT]" >> $LOG 2>&1### 終了処理if (( ERR_COUNT == 0 ))thenexit 0elseexit 1fiメモ 19行目のdummy変 ...
-
-
bash実践シェルスクリプト【ログバックアップ】
ログをバックアップするシェルスクリプトです。 このシェルスクリプトの仕様は、以下のようになります。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113#!/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" ]]thenecho "ERR [$LIST] リストファイルが存在しない" >> $LOG 2>&1exit 1fi### リストファイル読み込みwhile read target pattern backup option dummydo### コメントまたは空白の場合は読み飛ばすif [[ "$target" == \#* ]] || [[ -z "$target" ]]thencontinuefi### パラメーター不正if [[ "$pattern" == \#* ]] || [[ -z "$pattern" ]] || \[[ "$backup" == \#* ]] || [[ -z "$backup" ]] || \[[ "$option" == \#* ]] || [[ -z "$option" ]]then(( ERR_COUNT++ ))echo "ERR [$target][$pattern][$backup][$option] パラメーター不正" >> $LOG 2>&1continuefi### バックアップ先ディレクトリ確認if [[ ! -d "$backup" ]]then(( ERR_COUNT++ ))echo "ERR [$backup] ディレクトリーなし" >> $LOG 2>&1continuefi### バックアップ対象ファイル取得files=$(ls -1 $target/$pattern 2>/dev/null)### 該当ファイルチェックif [[ -z "$files" ]]thenecho "WAR [$target/$pattern] 該当ファイルなし" >> $LOG 2>&1continuefi### オプション毎のコマンドを作成for buf in $filesdocase "$option" inc) # コピーのみ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>&1break;;esac### バックアップコマンド実行$cmd_cpy > /dev/null 2>&1if (( $? == 0 ))then(( INF_COUNT++ ))echo "INF CPY $buf" >> $LOG 2>&1### 削除コマンド確認if [[ -z "$cmd_del" ]]thencontinuefi### 削除コマンド実行$cmd_del > /dev/null 2>&1if (( $? == 0 ))thenecho "INF DEL $buf" >> $LOG 2>&1else(( ERR_COUNT++ ))echo "ERR DEL $buf" >> $LOG 2>&1fielse(( ERR_COUNT++ ))echo "ERR CPY $buf" >> $LOG 2>&1fidonedone < "$LIST"### 総合エラーチェックecho "INF バックアップ数=[$INF_COUNT] バックアップエラー数=[$ERR_COUNT]" >> $LOG 2>&1### 終了処理if (( ERR_COUNT == 0 ))thenexit 0elseexit 1fiメモ 20行目のdu ...
-
-
【Linux】ファイルを使用しているプロセスを調べる
ファイルを使用しているプロセスを調べるには、fuserコマンドを使います。 ファイルを使用しているプロセスを停止するには、fuserコマンドの-kオプションを使います。 ファイルを使用し ...
-
-
【Linux】ファイルサイズの合計
ディレクトリー内のファイルサイズの合計を計算するには、duコマンドを使います。 awkコマンドを併用していますが、awkコマンドの詳細は以下の記事を参照してください。 ディ ...
-
-
初心者のためのbash超入門【第18回 コマンドラインオプション】
シェルスクリプトでコマンドラインオプションを使おう getoptsの基本的な使い方 getoptsの基本的な使い方は、以下のようになります。 オ ...