Linux メモ: 2008年4月アーカイブ

最近、火星の荒涼とした砂漠を延々と
長時間チェックする事に飽き飽きしているので

(いつもの事やん。w)

ホームページの一部を
SSIとかPerl使って自動生成させて遊んでます。

先日、ブログのRSSを取り込んで、ホームページ上に
最新投稿のタイトルを自動的に表示できるようになりました。
cron使って定期的にスクリプトを廻しているので、
反映されるまで数時間かかるのですが、

cronの設定に手こずってしまいました。
どうがんばっても

: not found

とか

No such file or directory

の文字が...。
シェル上から直接実行すると問題なく実行されるのですが、
cron上で実行させるとエラーが返ってきます。

おかしいなあとおもったら、bashのパスが間違ってました。
さくらインターネットで使えるシェルのパス一覧 /etc/shellの内容

cat /etc/shells

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/bash
/usr/local/bin/zsh
/usr/local/bin/rzsh

普通にこんな風に書いてました。

#!/bin/bash

わ~、やってもた。
しかもさくらの標準シェルってbashじゃないし...。

echo $SHELL
/bin/csh

ひぇ~。なんか違うなあとは薄々感じていたのですが。(笑


さらにシェルスクリプト(*.sh)の改行コードを変更しないまま、
Windows標準の(CR+LF)で
アップしていたのでまったく動作しなかっりと
気づく迄散々時間がかかりました。
今日の今日迄、アスキーコードで転送なんて全然意識してなかったです。
○| ̄|_

VMPlayer上のサーバーでスクリプトをテストする際には、必ず変更しているのですが、
油断していると、Windows上でソースをいじっている内に改行コードがwindows標準の(CR+LF)にうっかり
戻ってしまいます。

Windows上でffftpとか使ってアップロードしている場合は、
保存するスクリプトの改行コードをあらかじめUnix標準の「LF」へ変更しておくか、

ffftpの[オプション]-[環境設定]から
[転送1]タブをクリック

ファイル名で切替え(デフォルト)を選択

アスキーモードのファイル名に
アップするスクリプトの拡張子(例えば*.sh)を登録しておくと確実です。

ffftps.jpg

気づくのに2日かかりました。○| ̄|_

シェル上で直接実行すると問題なく実行するのに
cron上でシェルスクリプトを実行すると、

: not found

とか

No such file or directory


といった、"postmaster"宛エラーメールが返ってくる場合は、
アスキーモード転送(改行コード)が適切かどうか確認してみましょう。


ちなみにさくらインターネットでcronを使う際のデフォルトの作業ディレクトリは、

/home/user/
(userの部分はご利用のアカウント名)
デス。

cronでシェルスクリプトを廻す際は、
あらかじめ作業ディレクトリを「cd」コマンドを使って、
スクリプトを配置しているディレクトリに
移動する記述をしておくとソース上の相対パスコードも実行できます。

crontabに長~いパスを記述するより、
シェルスクリプトファイルをcronで呼び出して、
必要なcgiを順次シェルスクリプト上で実行しておく方が
便利で使いやすいですよね。

ちなみに当ブログ、火星ネタを中心に
メインサイトである「Mars de Subetta++」の宣伝を
目的に展開しているのですが、
火星ネタでの検索エンジンからの訪問者、限りなくゼロです。
検索エンジン経由によるアクセスって、数本しかないPCネタの記事だったり。
○| ̄|_

宣伝になってないなあ。(w

では、また。


「Mars de Subetta」火星文明探索ホームページ

検索

キボウのカケラ

世界天文年 IYA 2009

最近のトラックバック

このアーカイブについて

このページには、2008年4月以降に書かれたブログ記事のうちLinux メモカテゴリに属しているものが含まれています。

前のアーカイブはLinux メモ: 2008年3月です。

次のアーカイブはLinux メモ: 2008年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2009年5月: 月別アーカイブ

ウェブページ

Powered by Movable Type 4.1