本記事は、Bashによる業務効率化の連載の一つです。Bashスクリプトを活用することで、日々の繰り返し業務を自動化し、業務負担を軽減する方法を紹介します。
本記事を読むことで、以下のことが学べます。
cron
を使った定期実行- ファイルの整理・バックアップの自動化
- サーバー管理の効率化
この知識を身につけることで、あなたの業務は大幅に効率化されるでしょう。
Bash仙人の物語
ある企業のシステム管理者、タカシは日々の業務に追われ、手作業の負担に苦しんでいた。ログの整理、バックアップ、サーバー監視――これらの作業は時間を奪い、ミスを生むリスクを伴っていた。
そんな時、彼の前に現れたのは「Bash仙人」。
“タカシ、手作業に追われているのか?Bashを使えば、君の時間は取り戻せる。さあ、一緒に自動化の力を手に入れよう!”
Bash仙人は彼にスクリプトの力を授け、業務を効率化する道を示した。タカシはBashを学び、次第に手作業の呪縛から解放されていった。
1. 定期実行と自動化
1.1 cronジョブによる定期実行
Linuxのcron
を活用すれば、決まった時間にスクリプトを自動実行できます。例えば、毎日深夜にバックアップを取る場合、以下のような設定を行います。
0 2 * * * /home/user/backup.sh
1.2 ファイルの自動バックアップ
システム管理では重要なファイルのバックアップが不可欠です。以下のスクリプトで、特定のディレクトリを日付付きでバックアップできます。
#!/bin/bash
backup_dir="/home/user/backup"
src_dir="/home/user/data"
date=$(date +"%Y-%m-%d")
mkdir -p "$backup_dir"
tar -czf "$backup_dir/backup_$date.tar.gz" "$src_dir"
1.3 ログの整理・圧縮
サーバーのログは増え続けるため、定期的な整理が必要です。以下のスクリプトで、7日以上前のログを圧縮し、30日以上前のログを削除します。
#!/bin/bash
log_dir="/var/log/myapp"
find "$log_dir" -type f -mtime +7 -name "*.log" -exec gzip {} \;
find "$log_dir" -type f -mtime +30 -name "*.log.gz" -delete
2. ファイル操作の自動化
2.1 ファイルの整理・リネーム
例えば、特定のディレクトリ内の拡張子が.txt
のファイルを日付付きでリネームするスクリプトです。
#!/bin/bash
dir="/home/user/documents"
for file in "$dir"/*.txt; do
mv "$file" "${file%.txt}_$(date +"%Y%m%d").txt"
done
2.2 指定フォルダ内の古いファイル削除
10日以上前のファイルを削除するスクリプト。
#!/bin/bash
find /home/user/archive -type f -mtime +10 -delete
2.3 CSV/JSONデータの加工・変換
例えば、CSVの特定の列を抽出して新しいファイルに保存するスクリプト。
#!/bin/bash
cut -d, -f1,3,5 input.csv > output.csv
3. サーバー管理の自動化
3.1 サーバーの状態監視(CPU・メモリ使用率)
#!/bin/bash
echo "CPU Usage:" >> system_status.log
top -bn1 | grep "Cpu(s)" >> system_status.log
echo "Memory Usage:" >> system_status.log
free -m >> system_status.log
echo "Disk Usage:" >> system_status.log
df -h >> system_status.log
3.2 アクセスログの分析
例えば、Apacheのアクセスログからアクセスの多いIPを集計するスクリプト。
#!/bin/bash
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10
3.3 システムアップデートの自動化
Ubuntuのシステム更新を自動化するスクリプト。
#!/bin/bash
apt update && apt upgrade -y
こうして、タカシはBashの力を手にし、日々の業務から自由を得た。Bash仙人は彼の成長を見届け、新たな困っているエンジニアの元へと旅立つのだった。
コメント