TopLinux > 2012年10月
2012年10月30日

cronが起動しないときの確認ポイントまとめ

October 30,2012 1:55 AM
Tag:[, ]
Permalink

cronが動かないときの確認ポイントについてまとめました。

日付や時間といった基本的な内容は別エントリーしたいと思います(どこまでが基本かという話もありますが)。

1.原因を調べる

確認ポイントの説明の前に、cronに設定したコマンドやスクリプトが起動しない原因を調べるには、標準エラー出力を確認することが先決です。

もし標準エラー出力に何か残っていれば、そこから対処案を導き出すことができます。

標準エラー出力の設定方法については5項をご覧ください。

2.ファイルを実行する場合は実行権のパーミッションをつける

cronでシェルやPerlなどのファイルを実行する場合、ファイルに実行権のパーミッションの付与を忘れないようにしましょう。

3.ファイルはフルパスで指定する

よくやってしまう失敗ですが、ファイルの指定はフルパスで行います。

/home/foo/public_html/foo.shを実行する場合、cronに設定する内容は次のようになります。

00 * * * * /home/foo/public_html/foo.sh

または、実行ファイルがあるディレクトリまでcdコマンドで移動し、相対パス「./」でそのディレクトリを指定します。

00 * * * * cd /home/foo/public_html; ./foo.sh

cdコマンドで移動した場合、実行ファイルの中に記述したファイルにもディレクトリが反映されるようですが、フルパス指定で実行した場合、実行ファイルの中に記述したファイルはフルパス(またはcdコマンドとペア)で記述する必要があります。

4.シェルで起動する

環境によってはcronからPerlスクリプトなどを直接実行できない場合があります。

そういう場合はcronからshスクリプトを実行し、そのshスクリプトからPerlスクリプトを起動するとよいでしょう。

5.標準出力や標準エラー出力をファイルに書き込む

cronの実行結果は/var/log/cronに保存されるようですが、レンタルサーバによっては閲覧できない場合があります。

そういう場合(でなくても)、cron実行による標準出力や標準エラー出力をファイルに書き込み、そのファイルを参照することでcronが正しく動作しているのか、あるいは動作していないかを判断できます。

書き方の詳細は別エントリーに譲りますが、コマンド実行の後方にリダイレクトで任意のファイル(result.txt)に出力させ、その後方にさらに「2>&1」を記述すれば、標準出力と標準エラー出力をリダイレクト先のファイルに出力してくれます。

/home/foo/public_html/foo.sh > /home/foo/public_html/result.txt 2>&1

または、

cd /home/foo/public_html; ./foo.sh > ./result.txt 2>&1

標準出力と標準エラー出力を異なるファイルに出力するには

/home/foo/public_html/foo.sh 1>/home/foo/public_html/result1.txt 2>/home/foo/public_html/result2.txt

とします。

bashやzshではお作法が若干違うかもしれないのでご注意ください。

6.Windowsでアップロードする際は改行コードに注意する

Windowsで作成したファイルの文字コードはデフォルトでCR+LFですが、Linuxの改行コードはLFなので、そのままサーバにアップロードすると、次のようなエラーになります(エラーの確認方法は4項)。

/bin/sh^M: bad interpreter: No such file or directory

上記のエラーの原因は、次のシェルファイルの1行目の末尾の改行コードがCR+LFになっているためです。

#!/bin/sh
 
(略)

ということで、Windowsでファイルを作成する際やFFFTPなどで転送する際、正しい改行コードでアップロードされることを確認しましょう(最近のMacはLFみたいです)。

2012.08.08
確認ポイントを追記しました。

Comments [0] | Trackbacks [0]
2012年10月 5日

Linuxのプロンプトを変更する(csh編)

October 5,2012 12:55 AM
Tag:[, , ]
Permalink

Linuxのプロンプトを変更する方法を紹介します。

コマンドプロンプトを変更することで、TeraTermなどを使った作業が効率的に行えるようになります。

1.プロンプトとは

プロンプト (Prompt) とは、画面上に表示された「コマンド入力待ち状態であることを表す記号」を指します。

Windowsであればコマンドプロンプトを起動したときに表示される「C:¥>」の部分を指します。

Windowsのプロンプト

2.Linuxのプロンプト

Linuxのプロンプトは、「$」「>」「%」「#」などで表示されます。「#」はスーパーユーザーを示します。

さくらインターネットにTeraTermでログインしたときのプロンプトは次のように「%」で表示されます。

Linuxのプロンプト

Windowsの場合、フォルダ(ディレクトリ)を移動すれば移動したパスが表示されます。

Windowsのプロンプト

が、Linuxの場合は個別にカスタマイズを行わないと、そういった表示を行うことができません。

さくらインターネットの場合、次のようにcdコマンドでディレクトリを移動しても、移動したディレクトリが表示されません。

Linuxのプロンプト

これではディレクトリを移動したときのカレントディレクトリが確認できず、「pwd」を入力するなど、非常に非効率です。

ということで、Linuxのプロンプトを変更する方法を紹介します。

なおここで説明するのは、シェルにcsh(シーシェル)を使っている場合の方法です。

「シェル」とは、ユーザーから入力されたコマンドを解釈し、 プログラムを起動するアプリケーションのことです。

シェルにはcshやbash、tcshなどいくつかの種類があり、Linuxのディストリビューションによって異なるようです(bash編については別エントリーしたいと思います。
)。

3.使われているシェルの種類を確認する

使われているシェルの種類を確認するには、以下のコマンドを実行してください。

% echo $SHELL

cshを使っている場合は「/bin/csh」が表示されます。さくらインターネットはFreeBSDなのでcshです。

csh

4.コマンドプロンプトを変更する

コマンドプロンプトを変更するには、次のように入力します。

% set prompt="フォーマット"

赤色で示した「フォーマット」には任意の文字の他、次の記号が設定できます。

記号表示する内容
%/カレントディレクトリ
%~カレントディレクトリ。ただしホームディレクトリは~で表示
%cカレントディレクトリの最後のディレクトリ
%mホスト名
%nユーザー名
%Y西暦(4桁)
%y西暦(2桁)
%w月(Jun~Dec表示)
%W月(01~12表示)
%d曜日(Sun~Sat表示)
%D日(01~31表示)
%t現在時刻(YY:MM、12時間表示で末尾にam/pmあり)
%T現在時刻(YY:MM、24時間表示)
%p現在時刻(YY:MM:SS、12時間表示で末尾にam/pmあり)
%P現在時刻(YY:MM:SS、24時間表示)
%S反転表示
%s反転表示終了
%B太字表示
%b太字表示終了
%U下線表示
%u下線表示終了
%hまたは\!history番号
\n改行
\tタブ

5.サンプル

以下、いくつかサンプルを示します。

カレントディレクトリを表示するには「%/」を設定します。

% set prompt="%/ "

カレントディレクトリを表示

任意の文字列を与えることもできます。たとえば、

% set prompt="[%/] "

とすれば、カッコで括ることもできます。

カッコで括る

ユーザー名とホスト名を表示し、その右側にパス(カレントディレクトリは「~」)をするには、

% set prompt="%n@%m %~ "

とします(サンプルが分かりにくくてすいません)。

ユーザー名とホスト名を表示

現在時刻やフルパスを表示して、改行してコマンド入力ができるようにもできます。

% set prompt="[%Y/%W/%D %P:%~]\n"

この場合、次のように表示されます。

フルパスや時間を表示

6.設定を保存する

ログインするたびにこの設定を行うのは面倒なので、本当はホームディレクトリにある.cshrcというファイルを編集するのですが、ファイルの編集方法については別途エントリーしたいと思います。

なお、以前ログインしたときに入力したコマンドはhistoryコマンドで確認できる場合もあります(環境に依存)。

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3