
perl初心者です。RSSを取得してタイトルや内容をhtmlに吐き出すというプログラムを作成しています。Xサーバーで指定時間に指定コマンド(プログラム)を自動的に実行させるサーバーの機能(cron)といものがあったのでマニュアル
http://www.xserver.ne.jp/man_program_cron.php
を見て自動更新しようと試みているのですがプログラムが実行されません。
hello.cgiというプログラムを実行しようとしているので
マニュアルにある絶対パスの記入例の通り
/home/●●●/▲▲▲/public_html/hello.cgi
とXサーバーのCron設定で記入しています。自動更新の時間になったら「Cron結果の通知アドレス」で設定したメールは届くのですがプログラムは実行されてません。
cronの機能を使う際perlのほうで(ここではhello.cgi)何か記述する必要があるのでしょうか?もしくは何かモジュールとか必要なのでしょうか?
ps. cron以外でもperlのプログラムを自動的に動かす方法があったら教えて下さい。宜しくお願いします。
No.3ベストアンサー
- 回答日時:
質問内容を誤解した回答がされていますが。
※質問者の表現も良くないかも。
サーバスペースをレンタルされている業者『Xサーバー』で設定ページが用意されているcorn機能を使ってますって事ですよね。
※ unix/linuxのcronかどうかは不明
なので、cron使っているとしても設定ページで行なった自動実行の設定は有効に機能するよう提供されているかと思います。
『自動更新の時間になったら「Cron結果の通知アドレス」で設定したメールは届く』という事からもcronへの登録自体は問題なく行なわれており、cronは登録されているプログラムを実行しようと試みていると思われます。
登録時刻に送信され届いたメールに何が起こっているか書かれているかと思いますので、その内容やそれに対する対処法がわからない場合にはそこに書かれている内容を示した方が良さそうに思います。
> hello.cgiというプログラムを実行しようとしているので
cronからではなくそのプログラムを手動で実行した時の動作は確認されているのでしょうか。
※ perl hello.cgiとして実行するのではなく、/home/●●●/▲▲▲/public_html/hello.cgiで手動実行してご確認ください。(動かない場合には実行が許可されてない[chmod +x .../hello.cgiで許可するなど]事やプログラム作成に問題があるなどが考えられます)
※ crontabコマンドは基本的にどのユーザでも使えますよ。ただし、普通は不要なユーザには開放してないので(cron/allowやcron/denyファイルに許可・拒否するユーザを登録して制御する)使えません。
この回答への補足
saijyo_739さんご回答ありがとうございます。
>サーバスペースをレンタルされている業者『Xサーバー』で設定ページが用意されているcorn機能を使ってますって事ですよね。
その通りです。『Xサーバー』でのcorn機能です。
>登録時刻に送信され届いたメールに何が起こっているか書かれているかと思いますの>で、その内容やそれに対する対処法がわからない場合にはそこに書かれている内容を>示した方が良さそうに思います。
送信され届いたメールに書かれていいる内容は以下です。
/home/●●●/▲▲▲/public_html
hello.cgi
今見れば、なぜかpublic_htmlとhello.cgiの間に『/』がないのが気になります。XサーバーのCron設定ではちゃんと
/home/●●●/▲▲▲/public_html/hello.cgi
と『/』は記入しています。届いたメールでは『/』部分が改行されてます。
>cronからではなくそのプログラムを手動で実行した時の動作は確認されているのでしょうか。。
はいwebブラウザでhello.cgiがあるurlを再読み込みするとちゃんと実行されます。
(hello.cgiが実行されれば open(OUT,"> index.html"); により独自ドメインの
トップページのURLにhello.cgiの結果が表示するようにしています。その際現在時刻を取得するようにしていますがwebブラウザでhello.cgiのurlを再読み込みをするとちゃんと現在時刻と取得してますので手動では実行されているようです。)
>※ perl hello.cgiとして実行するのではなく、/ho........................
>※ crontabコマンドは基本的にどのユーザでも使えますよ。ただし、普通................
アドバスありがとうございます。saijyo_739さんの上記の※2点についてまだperlの基礎が分かってない私にとってチンプンカンプンなのですがやはりコマンドとかを学んだほうがいいようですね。
saijyo_739さん問題解決いたしました。いろいろとご教示ありがとうございました。勉強になりました。
hello.cgiの中でファイル出力場所を相対パスにしていたのですが、そこを絶対パスに変更すると無事自動更新出来るようになりました。
カレントディレクトリの設定に相違があったようです。
ご心配おかけしました。ありがとうございます。
No.2
- 回答日時:
テーブルの更新と共に、デーモンの更新をするコマンドを実行しないと。
その前に、それはrootかCGI実行者で行う必要がある。まずコマンドで手動で行ってみてから、CGIでやろうね。
(crontabテーブルはrootでないと更新できなかったけ?)
>ps. cron以外でもperlのプログラム
http://www.google.co.jp/search?hl=ja&q=Linux+%E8 …
この質問者にもいえるが、シェルとかコマンドとか学びましょう。
No.1
- 回答日時:
cgiの1行目に
#!/usr/bin/perl
を記載し、パーミッションに実行権限を付けていますか?
(パーミッション設定が777とか、755とかになってますか?)
こうしないと、実行出来るコマンドとしてスクリプトは認識されません。
上記がよくわからない場合、cronの記載を以下のように変えれば
おそらく動くと思います。
/user/bin/perl /home/●●●/▲▲▲/public_html/hello.cgi
>ps. cron以外でもperlのプログラムを自動的に動かす方法があったら教えて下さい。宜しくお願いします。
1.常駐するスクリプトにして、定期的に実行する
・スクリプトを無限ループにする
・ループの中では
・例えば1分sleepする
・時刻をチェックする
-設定した時刻なら取得スクリプトを実行
2.cgiファイルのようなので、外部からhttpでcgiを叩けるようにし、
外部のプログラムで定期処理する
ま、Cron使うのが一番手っ取り早いですけど。
この回答への補足
noranukoさんご回答ありがとうございます。
早速noranukoさんのご指摘通りすべて試みたのですがプログラムの更新はされません。
指定時間にCron結果の通知メールはちゃんと来るのですが、、、、
cron以外の方法もご教示していただきありがとうございます。なんとかcronでやり遂げたいのですが、どうしても出来ない場合その2つの方法も試みてみます。
noranukoさん問題解決いたしました。いろいろとご教示ありがとうございました。勉強になりました。
hello.cgiの中でファイル出力場所を相対パスにしていたのですが、そこを絶対パスに変更すると無事自動更新出来るようになりました。
カレントディレクトリの設定に相違があったようです。
ご心配おかけしました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlソースコードをコンパイル...
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBAでリンク切れをチェッ...
-
VBAでoutlook365が起動しません。
-
Excel VBAで、ユーザーフォー...
-
「デバイスは PRN を初期化でき...
-
Excel VBA 定義されたプロージ...
-
エクセルVBAでシートモジュール...
-
Oracleのデータベースに接続で...
-
Form間の値の渡し方
-
エクセルVBA クラスモジュール...
-
VBでグローバル変数を宣言するには
-
EXECEL VBA コマンドボタンか...
-
モジュールとクラスの違いって...
-
ブラウザを閉じた時にサブルー...
-
初歩的な質問なのですが、サブ...
-
pythonでファイル移動できません。
-
【vba】フォームに書いてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルに書き込めな...
-
Perlソースコードをコンパイル...
-
UNIX SUN Solarisで時間の演算
-
プロシージャの戻り値を取得す...
-
なぜか実行されません
-
PerlとPHPのサーバーへの負担に...
-
インストールについて(初心者...
-
perlスクリプトをコマンドライ...
-
Perlで環境変数を設定するには
-
Perlを始めたんですが
-
perl/tkを使って作ったGUIを実...
-
Perlでのファイル処理について...
-
以下のperlのプログラムについ...
-
Perlのexitについて
-
プログラミング初心者です。
-
perl2exeでuse encodingが使えない
-
並列処理、fork、threadについて
-
system関数を使用してJava実行...
-
systemの引数の中括弧
-
perlからcを呼び出す
おすすめ情報