Apache2.0.63+ActivePerl5.8.8.822を自宅サーバ(Windows XP Pro SP3)にて運営しています。
自宅サーバ内に、外部ウェブサイトのデータを取得するPerlスクリプトrecord.plを置き、
これを一定間隔で自動実行させたいと考えています。

そこで、record.plまたはそのショートカットをWindowsのタスクに登録してタイマー起動させてみました。
確かに一定間隔で自動実行されますが、実行の際に毎回必ずコマンド画面が立ち上がって来るので、これは嬉しくありません。

コマンド画面が立ち上がらない方法として、record.plをApacheのCGIとして実行することを考えました。
自宅サーバ自身からApacheに対してhttpリクエストを定期的に送る方法ということで、色々調べてみると、
以下のコマンドでtelnetを使ってhttpリクエストが送れるということまではわかりましたが、
--------------------------------------------------------
Microsoft Telnet> set local_echo(Enter)
Microsoft Telnet> set codeset Japanese EUC(Enter)
Microsoft Telnet> open 127.0.0.1 80(Enter)
GET /currency/record.pl HTTP/1.1(Enter)
HOST: 127.0.0.1 80(Enter)
(Enter)
--------------------------------------------------------
これをどうすれば自動実行できるのかがわかりません。

telnet以外にhttpリクエストを送る方法があるのなら、それでも構いませんし、
上記2つの方法以外でrecord.plを一定間隔で自動実行できるなら、それでも構いません。

コマンド画面が立ち上がらずに、自宅サーバのみでrecord.plを定期的に自動実行できる方法があれば教えてください。

よろしくお願いします。

<record.plのパス>
内部パス:D:/cgi-bin/currency/record.pl
URL(仮):http://xxx.ddo.jp/currency/record.pl (ScriptAlias使用)

このQ&Aに関連する最新のQ&A

A 回答 (7件)

>Admin権限


の場合はデフォルトでfullコントロールになっていると思います

新規作成のAdmin権限のアカウントでログオンしてrecord.plが実行できるか確認して実行できれば↓を参照してみてください

http://pasofaq.jp/windows/admintools/0x80070005. …

この回答への補足

ありがとうございます。

Admin権限の新規アカウントでログオンし、ファイルの関連付けを変更してから、実行できるかどうか確認してみました。

record.pl自体は、ダブルクリックでも、ファイルを指定して実行からでも、コマンドラインからでも、実行できます。
しかし、登録したタスクに関しては、「ログオンしている場合に実行」にチェックが入っていると手動でもタイマーでも実行できますが、チェックを外してパスワード設定にすると、例によって設定エラーとなり、手動で実行しても“開始できません”となり実行されません。
もちろんパスワードは何回も確認しました。

試しにメインアカウントに戻って、メインアカウントで同じタスク内容を作成してみました。
「ログオンしている場合に実行」にチェックを入れると何も問題ありませんが、パスワード設定にすると上記と同じように設定エラーも出ますし、手動実行もできません。

つまり、どちらのAdmin権限アカウントに関しても、パスワード設定ではタスクは実行不能のようです。

補足日時:2009/05/22 00:45
    • good
    • 0
この回答へのお礼

メインアカウントでもタスクが実行できないということより、問題は一気に解決しました。

新規作成のAdmin権限アカウントだけでなく、メインアカウントにもログオンのためのパスワードを設定していませんでした。
サーバ使用ということで、(再)起動の手間を省くためにパスワードは省略していました。
新規作成のAdmin権限アカウントにパスワードを設定したら、例のエラーは出なくなり、バックグラウンドでタスクが実行されるようになりました。

prumさん、何度もお付き合い頂き、ありがとうございました。
本来の目的は、これで完全に達成されました。
改めてお礼を申し上げます。

お礼日時:2009/05/22 22:12

>record.plまたはそのショートカット


record.plのショートカットではなくて
record.plの起動ショートカットをタスクに登録すればと思います
起動ショートカットの作成は
ショートカットの作成またはショートカットのプロパティで
perl D:/cgi-bin/currency/record.pl 

>拡張子の件に関して
record.pl を起動する「バッチファイル」record.cmdを
タスクに登録するのでもいいかと
record.pl 起動コマンドは
perl D:/cgi-bin/currency/record.pl
    • good
    • 0
この回答へのお礼

拡張子に関してもアドバイス頂き、ありがとうございます。

起動ショートカットなるものがあることなど知りませんでした。
メインアカウントではpl拡張子はPerl Command Line Interpreterとして認識されていますが、それ以外のアカウントでは単なるテキストファイルとしてしか認識されていません。
ファイルの関連付けの問題であるような気がします。

とにかく、起動ショートカットやバッチファイルの作成方法は了解しました。
下のアクセス許可さえクリアできれば、起動ショートカットやバッチファイルは問題なく動作するものと思われます。

お礼日時:2009/05/22 00:16

>はじめにメインアカウントとGuestアカウントの両方にログオンしておかないといけないということですね



タスクの登録を管理者のアカウント(Admini権限)でパスワードありにすれば
バックグラウンドのアカウントはログオンしていなくても
タスクは実行されていますのでお試し下さい。

この回答への補足

prumさん、ありがとうございます。

Admin権限のアカウントを新規作成し、タスク登録でパスワードを設定、最後に適用ボタンを押すと、“要求された操作を実行するアクセス許可がありません”と出てエラーとなってしまいました。
前回prumさんのおっしゃっていたアクセス権の設定が必要になるようです。

これはどこでどうやって設定すればいいのでしょう?

ちなみに、Perlのパスは以下の通りです。
C:/Perl/bin/perl.exe

宜しくお願いします。

補足日時:2009/05/21 23:07
    • good
    • 0

>そのアカウントの権限は、どのレベル(グループ)に設定すればいいのでしょう?



私の環境ではAdmin権限のログインで
Guestアカウントのタスクは完全にバッククラウンドで起動できています(コマンド画面は表示されません)

ただしGuestアカウントにファイルのアクセスや実行の権限が必要でしょうが
    • good
    • 0
この回答へのお礼

権限に関する説明、ありがとうございます。
昨夜、ずっと試していたので返事が遅くなりました。

prumさんのおっしゃる通り、Guestアカウントでもタスクはバックグランド実行されることを確認しました。

ただ、これをするためには、はじめにメインアカウントとGuestアカウントの両方にログオンしておかないといけないということですね。
メインアカウントは当然としても、もう一つのアカウントにもログオンしっ放しというのはセキュリティ面で不安が残りますが・・・
とりあえずは実現できて良かったと思っています。

Guestアカウントに関しては、ファイルのアクセス権を何ら設定することなしに、record.plはタイマー実行されたことを付け加えておきます。
ただ、ファイル名がrecord.plだとメモ帳で開いて終わるだけで、肝心のスクリプトは実行されませんでした。実行されるにはファイル名をrecord.cgiと変更する必要がありました。

的確なアドバイスを頂き、ありがとうございました。

また、MOMON12345さん、Tinteさんにもお礼申し上げます。
今回はprumさんの方法が自分の理想に最も近かったので、こちらを採用させて頂きますが、お二方の方法も、何らかの場面で役に立つときが来ると思っています。

皆さんのアドバイスに感謝します。

問題は解決しましたが、Guestアカウントのログオンしっ放しと、拡張子の件に関して、何かアドバイスなり、注意点なり、コメントなりが頂けたらと思いますので、もう暫くはこの質問を締め切らずに置いておきたいと思います。もし何かありましたら宜しくお願いします。
そして土曜か日曜あたりに締め切りろうと思っています。

お礼日時:2009/05/21 21:00

>実行の際に毎回必ずコマンド画面が立ち上がって来る



タスクをログオンしているアカウントと別のアカウントで登録すれば、
コマンド画面が表示されることは無くなると思います。

この回答への補足

アドバイスありがとうございます。

一つ質問です。
新たなアカウントを作成する場合。
そのアカウントの権限は、どのレベル(グループ)に設定すればいいのでしょう?
現在のログオンアカウントはAdmin権限です。

よろしくお願いします。

補足日時:2009/05/19 23:15
    • good
    • 0

Winサーバーにはあまり詳しくないのですが、Cygwinのcronで一定期間のスクリプトの実行はできると思います。

PerlとCygwinはわりとメジャーなペアだと思いますよ。
具体的なインストールの方法や使い方はわからないのですが、たぶんCygwinで検索すると山ほど情報があると思います。
cronという実行シェル(だったような…)に実行させるスクリプトのパスと時間を書き込んで放っておくだけでよかったはずです。
具体的なことがわからなくてすんません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

以前telnetのことを調べていたときに、Cygwinに関するページも参照した記憶があります。
その時は、インストールと設定が物凄く面倒だなという印象があり、結局Cygwinという選択肢は見送ってしまいました。
今回、比較的簡単に実現できる方法が見つからなければ、Cygwinを導入することも考えてみます。

なにぶん急いでいるわけではないので、結果をご報告するまでに、ちょっと時間が掛かるかもしれませんが、その点はご了承ください。

とにかく、ご回答ありがとうございました。

お礼日時:2009/05/19 00:25

Windows版は触ったことがないので外していたらごめんなさいですが、Perlの中で(1時間ごとに実行なら) sleep(3600) なんてのはダメですかね。


timeでも良いですが、とにかく起動しっぱなしでsleepさせておく方法。
unixならこれでお休みしてくれますが…
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

record.plのスクリプト全体を、sleepを入れてループで回し続けるということですね。
ただ、Windowsではrecord.plの初回の起動のときにコマンド画面が立ち上がり、sleep中はコマンド画面が立ち上がりっぱなしになります。
途中でコマンド画面を閉じると、スクリプト自体も終了してしまうので、やはりコマンド画面という難点が残ってしまいます。
ループ実行中はコマンド画面を最小化しておくという手もあるのですが、なるべくコマンド画面が立ち上がらずにという方法を考えていますので、申し訳ないですが、これは参考意見とさせて頂きます。

負荷の点も心配だったのですが、これを実際に試してみると、スクリプトを起動しっぱなしでも、sleep中は負荷がまったく掛かっていないという発見がありました。
今後何らかの機会に使わせてもらいたいと思います。

ご回答、ありがとうございました。

お礼日時:2009/05/19 00:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q時間間隔の計算方法

時間間隔の計算方法

VB.NET2005で開発をしてます。

アプリ起動後、指定時間から分間隔で処理をしようと思います。
例)20分間隔
10時10分に起動すれば
10時20分に処理
10時40分に処理
11時00分に処理



としたいのですが
10時10分に起動すれば
10時30分に処理
10時50分に処理


と起動した時間からしか時間間隔がとれません。
コード
'現在時刻
Dim nowtime As DateTime = System.DateTime.Now
'処理間隔時
exetime = 20
Label1.Text=nowtime.AddMinutes(exetime).ToShortTimeString '次回時間表示

System.DateTime.Now で現在時刻を取得してそれに20分をたしてます。


時間の指定方法を教えてください。
よろしくお願いします。

Aベストアンサー

'現在時刻
Dim nowtime As DateTime = System.DateTime.Now
'処理間隔時
exetime = 20
' 所得時間を20分ごとで正規化
Dim m as Integer = ( 20 * ( nowtime \ 20 + 1 ) mod 60 )
' m=0の場合 1時間進める
dim h as Integer = nowtime.hour + iif( m = 0, 1, 0 )
' 新しい時間を設定
nowtime = new DateTime( nowtime.year, nowtime.month, nowtime.day, h, m, 0 )
'Label1.Text=nowtime.AddMinutes(exetime).ToShortTimeString '次回時間表示
Label1.Text=nowtime..ToShortTimeString

QVistaの「管理者として実行」をコマンドラインから実行するには、どうすればいいのでしょう・・・

Windows Vistaからセキュリティ強化のために追加された「管理者として実行」機能を、画面操作でなく、スクリプトなどのプログラムから実行するにはどうすればよいのでしょうか?

ソフトウェア配布システムを利用して、ソフトウェアを展開する予定があります。
Windows Vistaクライアントにインストールするには、setup.exe上で右クリックして「管理者として実行」を行います。
しかし、配布システムでVistaクライアントにソフトウェアを配布するためには、配布時に処理されるスクリプト内で「管理者として実行」を実行させる必要があります。

色々、調査しているのですが、スクリプト内で「管理者として実行」を行う方法がどうしても見つかりません。
コマンドプロンプト、WSHなど方法は問わないので、ご存知の方がいましたらご教授お願いします。

Aベストアンサー

VBSで

参考URL:http://kandk.cafe.coocan.jp/nucleus/index.php?itemid=639&catid=3

Q授乳時間の間隔について(新生児)

生後11日の赤ちゃんがいます。
生後7日目から完母でやっています。
入院中からおっぱいがパンパンに張って痛かったのですが入院中はミルクでした。
授乳間隔の間隔は3時間を守るように言われてます。
生後7日目から母乳での授乳が軌道に乗り、3時間間隔で授乳すると張りは少し緩和されましたが
3時間間隔で母乳を吸ってもらわないと張って痛くなります。
赤ちゃんはおっぱいが欲しくて泣くことがありません。
大抵、眠っているのですが、3時間間隔であげないとおっぱいが痛いのでおむつを変えたりして起こして飲んでもらってます。
それか少し、目が覚めて手をチュパチュパしゃぶったりするのがおっぱいが欲しい合図みたいです。
泣いて欲しがらないのでそのままにしておくとどんどん授乳時間の間隔があいていってしまいます。
このまま起こしたりして3時間の授乳間隔を守るべきでしょうか?
昼夜問わずなので少ししんどくなってきました。
いつになったら授乳時間の間隔は4、5時間にしてもいいのでしょうか。
アドバイスをお願いします。

Aベストアンサー

私は出産後1週間は病院にいましたからまじめに3時間おきの授乳をしていましたけれど、退院後はルーズでした。気づいたら4・5時間の間隔はあたりまえでしたし。。。

質問者さんは張りがあるようですから、そういう時は絞っておくといいと思います。冷凍母乳というのもできますから、(そういう容器も売っています)しておくと、自分の体がきついときに子どもに冷凍母乳を哺乳瓶でパパや祖父母に上げてもらうこともできます。
夜も結構私は寝てましたよ。子どもが起きて泣いたら授乳、という感じでした。

今、出産時より体重はどうですか?
少しずつでも増えていれば大丈夫。もう少し肩の力を抜いて、子育てしてください。ママの体も大事です。

ちなみにこんなにルーズな私ですが、3歳になった息子はしっかり成長していますし、体も大きいですよ。

QDOSコマンドで cmd /c rd /s /q c: の意味は?

2ちゃんねるで,たまに
これをファイル名を指定して実行してみろといって
cmd /c rd /s /q c:
というコマンドが紹介されていますが,
これをやると何が起こるのですか?

Aベストアンサー

絶対に実行してはダメですね。
Cドライブのデータを全て削除するコマンドです。

CMD /C ○○ ・・・ ○○のコマンドを実行する

RD /S /Q △△ ・・・ ディレクトリを削除する
          /Sでその場所配下の全てのファイルを削除
          /Qで削除のメッセージを表示しない

Qタミフルの服用間隔時間について教えてください

小3の子供がインフルエンザA型になり、一回目の服用時間が
13時30分前くらいでした。
今日は二回飲ませてくださいと、先生から言われ、8時間後に
飲ませてくださいと言われたのですが
普通は12時間、間隔をあけなければいけないと聞いたのですが
8時間間隔で飲ませても本当に大丈夫なのかと思い、質問させて
頂きました。
前に、中学生がタミフルで亡くなった際、服用間隔が12時間より
短く、8時間程度で飲ませたから、副作用が起きたのではないか?
と聞いたので、心配です。
アドバイスのほど、宜しくお願い致します。

Aベストアンサー

私は大人ですが、去年と今年インフルエンザにかかり、いずれも朝・夕食後の服用でした。つまり12時間は空けていたことになります。お医者さんの説明では不安になる副作用があるということでしたのであくまで私個人の考えですが、12時間空ける方が安心かな と思います。ポカリ飲んで背中を温めると良いですよ。
ご参考まで。

Qchkdskを実行しましたが,結果に「/f」を実行してくださいと返され

chkdskを実行しましたが,結果に「/f」を実行してくださいと返されました。この操作方法を教えてください。
chkdskをしたのは,パーティーションを変えようとしたらセクター数エラーがでたためです。

Aベストアンサー

おはよう。スタートから、すべてのプログラムコマンドプロンプトを起動し、以下のようにCHKDSKコマンドを入力します。対象ドライブが、「C」ドライブの場合
1)chkdsk /f C: 「chkdsk スペース/ f スペース ドライブ文字」
C:\documents and setttings\ユーザ―名>chkdsk /f c:

参考URL:http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/chkdsk.shtml

Q場所打杭コンクリート許容打重ね時間間隔について

コンクリート許容打重ね時間間隔について、コンクリート標準仕様書では外気温が25℃を超える場合 2.0時間、25℃以下の場合 2.5時間となっています。場所打杭コンクリート打設(水中)に当たり、生コン車の到着遅れ等の対策を検討する場合、時間的要件として、このコンクリート許容打重ね時間間隔を目安にすればいいのか、御教授をお願いします

Aベストアンサー

コンクリートの打ち継ぎを急ぐのは硬化の際にレイタンスと呼ばれる不純物が表面に浮いて来るので、それが間に挟まったまま固まるとその部分が弱点になるからなのです。そしてレイタンスは空気中であろうと水中であろうと生じて来ます。ただ、時間が空いた場合にはレイタンスを取り去ってやれば打ち継ぐことは可能なのですよ。ですから空気中と同じ時間以内なら何もせずに打ち継げばいいし、時間が経過したときはレイタンスを除去すればいいのです。

Qhttp://oshiete.goo.ne.jp/qa/5317545

http://oshiete.goo.ne.jp/qa/5317545.html
>スリープ後電源が入らない。
>自作デスクトップPC。OSはVista Ultimate。順調に約一ヵ月半稼働中。スリープ状態で電源SWを押しても戻らなくなった。
>強制終了後、起動すると一瞬電源が入り二三秒で電源が落ち又二三秒経過するとひとりでに電源が入り又二三秒で落ちるの繰り返しです。

上記質問が過去にありましたが、まったく同じ状態になってしまいました。
私の場合は自作PCを3年ほど使用しています。スリープを最近使い始め、
一昨日スリープをしたらフリーズしてしまい、強制終了後、電源を投入したら
勝手にon/offを繰り返してしまいます。
現在何とか電源が入って質問できていますが、どうしたらよいでしょうか?
皆様よろしくお願いいたします。

Aベストアンサー

直リンクはしてはいけないので、キーワード「[Vista] スリープからの復帰に関するトラブルの解決法(2007/07更新)」でgoogle検索。

topのページの手順ではどうでしょう。

Q結晶中における電子の衝突時間間隔について

ドゥルーデモデルの衝突時間間隔についての質問です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ドゥルーデモデルでは時間間隔dtの間に、電子1個が衝突にあう確率はdt/τで与えられる。
このとき以下の2つが成り立つ。

(a)いかなる瞬間においても、前の衝突からの経過時間あるいは次の衝突までの時間の、全電子にわたる平均はτである。

(b)電子1個が2回の連続した衝突をする時の、衝突の時間間隔の平均はτである。


このとき、(a)は、いかなる瞬間においても、最後の衝突と次の衝突との間の時間Tの全電子にわたる平均は2τであることを意味する。
なぜこの結果が(b)の結果と矛盾しないのかを説明せよ。
(アシュクロフト・マーミン固体物理の基礎 1章演習問題)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

数式を用いた解答は手元にあるのですが、この"何故矛盾しないのか?"の直感的なイメージがつかめません。矛盾するように見えてしまいます。
この(a)と(b)のニュアンスの違いと両者の無矛盾性をどうイメージしたらよいかについて、どなたか分かる方ご教示お願いします。
(できれば、数式をつかったらそうなるという以外の回答・アドバイスをよろしくお願いします。)

ドゥルーデモデルの衝突時間間隔についての質問です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ドゥルーデモデルでは時間間隔dtの間に、電子1個が衝突にあう確率はdt/τで与えられる。
このとき以下の2つが成り立つ。

(a)いかなる瞬間においても、前の衝突からの経過時間あるいは次の衝突までの時間の、全電子にわたる平均はτである。

(b)電子1個が2回の連続した衝突をする時の、衝突の時間間隔の平均はτである。


このとき、(a)は、いかなる瞬間...続きを読む

Aベストアンサー

たくさんの人を用意してそれぞれの人にサイコロを持たせます。
サイコロは、1~6の目が1/6の確率で出るとすれば、サイコロを振って出る目の平均は7/2です。

で、それぞれの人に以下の事をさせます。
(1)サイコロを振る
(2)サイコロを振った結果、
    1の目が出た→1秒間待つ→サイコロを振る。
    2の目が出た→2秒間待つ→サイコロを振る。
    ・・・
    6の目が出た→6秒間待つ→サイコロを振る。
(3) (2)を繰り返す。

そうすると、「サイコロの目の平均」は時間とともに変化するでしょうが、十分時間が経てば、この平均はある値に落ち着くでしょう。
1の目が出たらすぐにサイコロを振りなおすのに対し、6の目が出たらしばらくそのまま置いておくのですから、全体としては、より大きい目が出ているサイコロが多くなるでしょう。故に、(具体的な値は計算しませんが)この意味の平均は7/2よりも大きくなりますよね。

同じ「サイコロの目の平均」ではありますが、
前者の"平均"=7/2
後者の"平均">7/2
と値が違います。が、これは矛盾ではありませんね?


前者の「平均」は、(b)が言う「衝突の時間間隔の平均」=τ
後者の「平均」は、(a)が言う「最後の衝突と次の衝突との間の時間Tの全電子にわたる平均」=2τ
に対応します。

たくさんの人を用意してそれぞれの人にサイコロを持たせます。
サイコロは、1~6の目が1/6の確率で出るとすれば、サイコロを振って出る目の平均は7/2です。

で、それぞれの人に以下の事をさせます。
(1)サイコロを振る
(2)サイコロを振った結果、
    1の目が出た→1秒間待つ→サイコロを振る。
    2の目が出た→2秒間待つ→サイコロを振る。
    ・・・
    6の目が出た→6秒間待つ→サイコロを振る。
(3) (2)を繰り返す。

そうすると、「サイコロの目の平均」は時間とともに変...続きを読む

Qコマンドプロンプトでの実行

Win98で作成したバッチファイルをWinXPとWin2000の
コマンドプロンプトで起動しようとしても動きません。
メッセージが
「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」
がでてきます。

Win98では動いていました。

Aベストアンサー

"CHOISE"コマンドは、MS-DOS 6.2以降とWindows 95/98/Meにしかない外部コマンドですので、ANo.#6の方の回答にあるように、

Win98から"CHOISE.EXE"(多分、"C:\WINDOWS"フォルダか"C:\WINDOWS\system"フォルダにあると思います。)を2000の"C:\WINNT\system32"(XPの場合には、"C:\WINDOWS\system32")フォルダへコピーしてください。


人気Q&Aランキング