More Related Content
Mojoliciousをウェブ制作現場で使ってみてる omoon.org の裏側 〜FuelPHP の task 活用例〜 15分でCakePHPを始める方法(Nseg 2013-11-09 ) FuelPHPで3種のprofilerを使ってみた What's hot (19)
Rails初心者レッスン lesson5 2edition Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo オンプレでPrivate Registry使ったDockerイメージの運用について Lightweight Language Tiger 2010 Yapc -asia 2012 lt @studio3104 awk v.s. bashどっちが強い?@OSC2011Tokyo serverspecを使用したサーバ設定テストの実例 2日間Fabricを触った俺が
色々解説してみる CakeRequest::onlyAllow() について Viewers also liked (20)
マインドハック研究会 ライフハック編 20100512 IGDA_Sig-BoardGame_ワークショップ用資料 Software Foundation:形式的証明と非形式的証明 理系女子の恋愛と結婚 「東大で理系の恋愛を語ろう」 TO LOVE IN'~人生のパートナーを見つける旅~ 名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン 20161026_超高層大気観測データのメタデータ作成実験経過報告 『スクラムを活用したアジャイルなプロダクト管理』第1回読書会 振り返り結果 POStudy ~プロダクトオーナーシップ勉強会~ Similar to 実用裏方 Perl 入門 (20)
Powershell勉強会 v5 (こちらが最新です。) ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発 Powershell勉強会 v3 (もっと新しいバージョンがあります) Powershell勉強会 v2 (もっと新しいバージョンがあります) Powershell勉強会 v4 (もっと新しいバージョンがあります。) Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります) ホームディレクトリに埋もれた便利なコードをさがせ! CPANの依存モジュールをもう少し正しく検出したい Fluentdでログを集めてGlusterFSに保存してMapReduceで集計 2017-12-04 Linuxの基本構造とBashでの扱い方 More from keroyonn (6)
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう 非同期処理の通知処理 with Tatsumaki 実用裏方 Perl 入門
- 12. 要件毎週日曜日、特定のフォルダ以下のファイルを削除する ( cron + find でOK)ファイル名の拡張子は、*.bak (cron + find でOK)ただし、消していいのは過去3時間以内に更新されていないファイルのみ (なんか find じゃだめっぽい)削除できたファイルを標準出力に、できなかったファイルを標準エラーに出力 (シェルスクリプトかな?)UNIXコマンドライクにオプション指定ができ、ヘルプも出てくる (なんかどんどん面倒になってきた)色々要件が膨らみそうな予感。(汎用的な言語で書いといた方がいいかな?)Hokkaido.pm #4
- 14. ソースコード (1/3)端折り過ぎなのでそのまま使うと危険!!#!/usr/bin/perluse warnings;use strict;use utf8;use Getopt::Long;use Pod::Usage;use File::Find;use File::stat;BEGIN { binmode STDOUT, ':utf8‘; }# コマンドオプションの解析my $modified_time = 6;GetOptions( 'mtime=i' => \$modified_time, ) or pod2usage(2);my $base_dir = shift @ARGV;if ( !defined $base_dir ) { print "削除対象のディレクトリ名を指定してください。\n"; pod2usage(2);}# 全bakファイルを取得して削除find( \&delete_files, $base_dir );Hokkaido.pm #4
- 15. ソースコード (2/3)sub delete_files { my $fullpath = $File::Find::name; my $filename = $_; # bak以外ならスキップreturn if $filename !~ m{\.bak$}xms; # n 時間以内に更新されたファイルを除外my $stat = stat($fullpath); my $mtime = $stat->mtime; return if $mtime + $modified_time * 3600 > time; # 削除my $ret = unlink $fullpath; if ( $ret < 1 ) { print STDERR "$fullpathを削除できませんでした。\n"; return; } print "$fullpathを削除しました。\n";}Hokkaido.pm #4
- 16. ソースコード (3/3)__END__=encoding utf-8=head1 NAMEdelete_backup_files - 過去n時間以内に更新されなかったバックアップファイルを除外する=head1 SYNOPSISdelete_backup_files [options] directory_name Options: --mtime=n 過去n時間以内に更新されなかったバックアップファイルを除外する。デフォルト 6 時間Hokkaido.pm #4
- 18. ジョブを登録するcrontab –e分 時 日 月 曜日** * * *コマンドのフルパス30 3 * * 0 /home/hogehoge/delete_backup_files例. 毎月1日の3時30分にコマンドを実行3031 * * コマンド毎週日曜日に毎分コマンドを実行* * * * 0 コマンドとにかく毎分実行する* * * * * コマンドHokkaido.pm #4
- 19. まとめPerl は Linux に標準インストールなので、標準モジュールだけ使って作ればシェルスクリプトと同じ感覚で配布できる。なのでコマンドは、Perl で作った方が楽-> corelist (Module::CoreList)メモリリークなどに気をつける必要がある-> Devel::Leak::Object性能の要件を満す必要がある-> Devel::NYTProfHokkaido.pm #4