- - PR -
cron.hourly
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-10 11:56
こんにちは
RedHatELを使用しております。 /etc/cron.hourly/下に置きましたスクリプトが実行しないのでお教えください。 @source /etc/cron.hourly/test.shをターミナルで実行するとスクリプトが走りました。 A/etc/crontabを元のまま 01 * * * * root run-parts /etc/cron.hourly としたのですが、01分になってもスクリプトが実行されません。 なお、ls -al /etc/cron.hourly/test.shで、権限は755、グループ・ユーザ:root になっています。 また、ps ax の結果で、crondのSTATはSになっているし、crontabに追記しているスクリプトは正常に実行されているので機能していると考えています。 何がいけないのでしょうか?ご教授お願いいたします。 | ||||||||
|
投稿日時: 2005-06-10 12:09
こんにちは。
1つツッコミです。
run-parts ( /usr/bin/run-parts ) は、source を使ってプログラム実行するわけではないので、それでは確認として不十分ですよ。 単純に /etc/cron.hourly/test/sh とコマンド実行して動作するかどうか、ですね。 | ||||||||
|
投稿日時: 2005-06-10 12:20
LOGはどうでしょうか?
CRONのデーモンが、実行しているのに反映されていないのか、 実行すらされていないのか、どちらでしょうか? まずは、ログを! | ||||||||
|
投稿日時: 2005-06-10 14:32
angelさん、hohojpさん、ありがとうございます。
hohojpさんご指摘のログに関しては、CMD (run-parts /etc/cron.hourly)が存在していました。 angelさんご指摘のrun-pats /etc/cron.hourly/test.sh とコマンド実行したのですが、実行されませんでした。その内容をみると、「: cannot execute binary file」があったので、試しにtest.shの#!/bin/bashの上の行に日本語のコメントを記述を削除してみました。そして、再度、run-pats /etc/cron.hourly/test.sh とコマンド実行した所、スクリプトが走りました。 ![]() この対策で様子を見た(crontabの時刻を待って見た)所、所定の時刻に正常にスクリプトが走りました。 crontabの追加(source)で指定しているスクリプトは#!/bin/bashの上の行に日本語のコメントを記述していても走るのに、run-patsではダメとは不思議ですね。 この解釈でいいんですよね。 [ メッセージ編集済み 編集者: ネ音 編集日時 2005-06-10 14:34 ] | ||||||||
|
投稿日時: 2005-06-10 14:46
run-partsは、ディレクトリを引数として指定するコマンドです。 実行の仕方自体間違えているし、指摘内容を勘違いしてます。
bashのシェルスクリプトなのに、先頭行に#!で始まる行が 無かったから、残りの部分を特定のインタプリタへ引き渡すことが出来ず、 かつ2行目以降が実行形式バイナリファイルでもなかったから、 実行されなかっただけです。 sourceはbashの内部コマンドであり、現在ログインシェルとして実行している bashのシェル環境内で、引数として指定されたスクリプトを実行する、 という役割を持っているから、(現在のログインシェルとして使ってる)bashに スクリプトが渡されて正常に実行された、ってだけです。 シェルスクリプトの1行目の意味と大切さを知って、 コメントの書き方を見直す、ってのが答えです。 [ メッセージ編集済み 編集者: Mattun 編集日時 2005-06-10 14:50 ] | ||||||||
|
投稿日時: 2005-06-10 14:47
こんにちは。
シェルの1行目は、「#!」 で始まる行で、シェルを指定するのがお約束になっています。 そうでない場合は、ログインシェルが使われます。 # 被りました (^^; _________________ 夢から醒めた夢 ★「2005年夏のOFF」やります★ 企画&参加希望へのご投稿お待ちしています! [ メッセージ編集済み 編集者: はゆる 編集日時 2005-06-10 14:49 ] | ||||||||
|
投稿日時: 2005-06-10 15:13
こんにちは。
Mattunさんのご指摘が正しいですね。 シェルスクリプトは“#!”で始めるというお約束については、execve(2)( Linux OS がプログラム実行をするときのシステムコール ) にもありますね。 ※応用すれば、#!/bin/cat で始まるスクリプトも作れますよ…活躍する場面は無いでしょうけど。 追記:スクリプトも含めて、プログラムの基本は Hello, world! ですよね。と言ってみるテスト。
[ メッセージ編集済み 編集者: angel 編集日時 2005-06-10 15:52 ] | ||||||||
|
投稿日時: 2005-06-10 16:01
反省し、感謝し、糧と致します。
ありがとうございました。 |
1