mumumuの日記: ncftp + cron(2) 2
日記 by
mumumu
過去にこんな日記を書いたことがあります。
コマンドラインでは実行できるスクリプトをcron経由でやると
どうしても実行できなかったのです。
今日詳細にログを吐き出させつつ、rootに実行結果をメール
させて中身を見てみたところ、、ncftpputやtarとかのコマンド
がnot foundになっているではないですか。。
つまりPATHが通ってなかったのです、、(´ー`;)(´ー`;)
crontab -eで編集するファイルにPATHを追加してあげたところ
あっさりと解決しました。多分/etc/crontabに素直に書けば、
実行できていたと思われます。(PATHがそこで定義されている為)
cronから実行されるスクリプト自体は、crontab -eを実行した
ユーザの権限で実行されているのですが、何故PATHが通らなく
なるのだろう、、(´ー`;) 謎でありまっす。
----
これで思う存分バックアップがとれるというものです、、(*´~`)
いい加減なことを書いて惑わせてみるテスト (スコア:1)
~/.bashrc で設定しているような特殊な設定は
無効になるかもしれません → [linux.or.jp]
再現してみるテスト (スコア:1)
1 ~/test.shを以下のように書き、実行権限を付加
echo "printing environment valuable..."
echo $SHELL
echo $PATH
2 この日記 [srad.jp]で書いたスクリプトを実行
したユーザのcrontabに以下の記述を追加
*/1 * * * * ~/test.sh >> test.log
3 ~/test.shの実行結果をtail -fで観察
printing environment valuable...
/bin/sh
/bin:/usr/bin
printing environment valuable...
/bin/sh
/bin:/usr/bin
・・・以下繰り返し
----
ということで、/bin/shを起動するのはマニュアル通り
そして、このユーザのPATHをbash上でechoさせると
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/ssh3.8p1/bin:
/usr/X11R6/bin:/usr/local/bin:/usr/local/mysql/bin:
等と言った具合に/etc/profileや~/.bashrcで設定した値が
ごっそり出てきます。よってumqさめの仰る通りのようです。
私はncftpの類を/usr/local/binにインストールしていたので
失敗するのは道理と思われます、、が、/bin/tarまでnot found
になっていたのは何故、、?(´ー`;)
もう一度ログをチェックチェック(*´~`) 勘違いかもしれ
ないっす。
# 無精、短気、傲慢、これ最強