2013年06月04日

cron ジョブの追加と設定

Unix/Linux システムで定期的にコマンドを実行するジョブを cron ジョブと言います。

cron デーモンが走っているサーバーであれば、root 権限がなくとも、個々のユーザー単位で設定が可能です。

ここでは、root権限のないユーザーがcronジョブを追加する方法を説明します。

cron ジョブの登録/編集


cron ジョブの登録または編集を行うには、crontab コマンドを利用します。(図1)

$ crontab -e

 図1 crontab 編集コマンド

viインターフェイスのエディタが起動します。既に項目が設定されている場合は、その内容が表示されます。

crontab の記述とフォーマット



cronジョブは一行単位で以下の書式で記述します。(図2)
1 2 3 4 5 /path/to/command arg1 arg2

 図2

各項目は以下の通りです。

  • 1: 分(Minute) [0-59]

  • 2: 時(Hour) [0-23]

  • 3: 日(Day) [0-31]

  • 4: 月(Month) [1-12]

  • 5: 週(Day of the Week) [0-7]

  • /path/to/command : 実行可能なコマンド/スクリプトの絶対パス

  • arg1 arg2 ... : コマンドの引数


サンプル


それでは実際の例として、バックアップスクリプト(/home/user/bin/backup.sh)を定期的に実行する設定を考えます。

crontab -e コマンドで編集画面を起動します。

以下の記述を保存するとバックアップスクリプトが毎日午前3時ちょうどに実行します。(図3)
0 3 * * * /home/user/bin/backup.sh

 図3

同様に以下の例では、毎月1日の午後2時15分に実行されます。(図4)
15 14 1 * * /home/user/bin/backup.sh

 図4

月曜日〜金曜日までの午後10時30分に実行されます。(図5)
30 22 * * 1-5 /home/user/bin/backup.sh

 図5

毎日午前0時23分,午前2時23分,午前4時23分と2時間おきに実行されます。(図6)
23 0-23/2 * * * /home/user/bin/backup.sh

 図6

オペレーターの使い方


以下のオペレーターが使えます

  1. * : ワイルドカードです。可能な値すべてがが適用されます

  2. , : 値のリスト指定です。(例:1,5,10,15)

  3. - : 値の連続した間隔を指定します(例:5-15)

  4. / : 値の実行間隔を指定します(例:*/10 10単位毎)



e-mail 送信の設定


システムのユーザー設定でemailが登録されている場合、実行されるコマンド/スクリプトの標準出力は、設定されているアドレスにemail送信されます。これを停止するには以下のように出力を/dev/null に送ります。(図7)
0 3 * * * /home/user/bin/backup.sh > /dev/null 2>&1

 図7

特定のメールアドレスに送るには以下のように指定します(図8)
MAILTO="user@example.com"
0 3 * * * /home/user/bin/backup.sh > /dev/null 2>&1

 図8

cronジョブの確認(リスト)


登録しているcronジョブを確認するには以下のコマンドを実行します(図9)

$ crontab -l

 図9
ラベル:Linux cron crontab
posted by ayagu at 20:56| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2013年04月27日

scp

ssh(Secure Shell) やsftp を利用してリモートホストにログインして、作業している人は少なくないとおもいます。

そんな人の為にscp というセキュアなリモートファイルコピーのコマンドを紹介します。

通常、Linux(Unix)のcp コマンドは
cp [コピー元ファイル名] [コピー先ファイル名/コピー先ディレクトリ]


という書式です。第一引数の[コピー元ファイル名]のファイルを第二引数の[コピー先ファイル名]にリネームして保存するか、[コピー先ディレクトリ]にコピー元と同名のファイル名で保存します。
コピー元ファイルは複数指定できます。

scpは、この書式がそのままあてはまります。
例えば、user というログインIDを持つ人がリモートのファイルをローカルPCにコピーするときは以下の書式になります。

scp user@example.com:[リモートホストのコピー元ファイルのパス] [ローカルPCのコピー先ファイル名/コピー先ディレクトリ]


反対に、ローカルPCからリモートホストにコピーする書式は以下の通りです。

scp [ローカルPCのコピー先ファイル名] user@example.com:[リモートホストのコピー元ファイルのパス/コピー先ディレクトリ]


ファイルやディレクトリの指定はcpコマンドと一緒ですが、リモートホスト側はログインユーザーのホームディレクトリが相対パスの基点になります。
例:

scp samplefile.txt user@example.com:remotesample.txt


この例はuserというログインIDのリモートホスト側のホームが/home/userだった場合、ローカルのeamplefile.txt というファイルが/home/user/remotesample.txt と言う名前でコピーされます。

このときユーザー認証の方法はssh/sftpと全く同じです。

また、

scp samplefile.txt user@example.com:tmp


ならば、ローカルのsamplefile.txt は /home/user/tmp ディレクトリの下に同名でコピーされます。
/home/user/tmpディレクトリが存在しない場合はエラーです。

まさに、標準コマンドの ssh と cp が融合した scp 。 気軽に使えるユーティリティですね。

ラベル:SCP Linux ssh
posted by ayagu at 18:28| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2013年04月21日

yum リポジトリの追加

yum 名前の由来で RedHat系 Linux標準のインストーラー yum の説明をしました。

yum はリポジトリというインストール用のデータベースを持っています。しかし、デフォルトで入っているリポジトリでは、パッケージが古くて使えない場合があります。

例えばPHPなんかはデフォルトのリポジトリよりは新しいものが出回っている場合が多いです。

そんな場合ネットワーク上のリポジトリを探してきて追加することが可能です。
ここではその手順を説明します。

1. リポジトリのダウンロード


 有名どころのリポイトリを3つ紹介します。インストール対象のアプリケーションによって検索してみてください。
 i. Fedra EPEL: http://dl.fedoraproject.org/pub/epel/6/x86_64/

ii. remi: http://rpms.famillecollet.com/enterprise/

iii. RPMForge : http://pkgs.repoforge.org/rpmforge-release/

 上記URLを参照して、目的のリポジトリの最新版をダウンロードします。
 例:
 
$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm    


2. ダウンロードしたリポジトリの追加


 
$ sudo rpm -ivh <ダウンロードしたrpm ファイル>

 例:
 
$ sudo rpm -ivh remi-release-6.rpm


3. それぞれのリポジトリを使う


 それぞれのリポジトリを yumで使う場合は以下のオプションを yum コマンドに指定します
 i. Fedra EPEL: --enablerepo=epel install
 ii. remi: --enablerepo=remi install
iii. RPMForge:--enablerepo= rpmforge install

以下は remi を指定してphpのバージョンを表示して、インストールする例です。
 
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum --enablerepo=remi info php
Loaded plugins: priorities, security, update-motd, upgrade-helper
446 packages excluded due to repository priority protections
Available Packages
Name : php
Arch : x86_64
Version : 5.3.23
Release : 1.33.amzn1
Size : 2.7 M
.
.
.
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ sudo yum --enablerepo=remi install php
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-main | 2.1 kB 00:00
amzn-updates | 2.3 kB 00:00
446 packages excluded due to repository priority protections
Setting up Install Process
.
.
.
Installed size: 20 M
Is this ok [y/N]: y
.
.
.

Complete!
[ec2-user@ip-xxx-xxx-xxx-xxx ~]$

ラベル:Linux yum
posted by ayagu at 19:34| Comment(1) | Linux | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。