Perlスクリプトを一定間隔で自動実行こんにちはゲストさん。SP3)にて運営しています。自宅サーバ内に、外部ウェブサイトのデータを取得するPerlスクリプトrecord.plを置き、これを一定間隔で自動実行させたいと考えています。そこで、record.plまたはそのショートカットをWindowsのタスクに登録してタイマー起動させてみました。確かに一定間隔で自動実行されますが、実行の際に毎回必ずコマンド画面が立ち上がって来るので、これは嬉しくありません。コマンド画面が立ち上がらない方法として、record.plをApacheのCGIとして実行することを考えました。80(Enter)(Enter)--------------------------------------------------------これをどうすれば自動実行できるのかがわかりません。上記2つの方法以外でrecord.plを一定間隔で自動実行できるなら、それでも構いません。コマンド画面が立ち上がらずに、自宅サーバのみでrecord.plを定期的に自動実行できる方法があれば教えてください。00:00:04補足ありがとうございます。Admin権限の新規アカウントでログオンし、ファイルの関連付けを変更してから、実行できるかどうか確認してみました。record.pl自体は、ダブルクリックでも、ファイルを指定して実行からでも、コマンドラインからでも、実行できます。登録したタスクに関しては、「ログオンしている場合に実行」にチェックが入っていると手動でもタイマーでも実行できますが、チェックを外してパスワード設定にすると、例によって設定エラーとなり、手動で実行しても“開始できません”となり実行されません。パスワードは何回も確認しました。試しにメインアカウントに戻って、メインアカウントで同じタスク内容を作成してみました。「ログオンしている場合に実行」にチェックを入れると何も問題ありませんが、パスワード設定にすると上記と同じように設定エラーも出ますし、手動実行もできません。どちらのAdmin権限アカウントに関しても、パスワード設定ではタスクは実行不能のようです。00:45:15お礼メインアカウントでもタスクが実行できないということより、問題は一気に解決しました。新規作成のAdmin権限アカウントだけでなく、メインアカウントにもログオンのためのパスワードを設定していませんでした。サーバ使用ということで、(再)起動の手間を省くためにパスワードは省略していました。新規作成のAdmin権限アカウントにパスワードを設定したら、例のエラーは出なくなり、バックグラウンドでタスクが実行されるようになりました。prumさん、何度もお付き合い頂き、ありがとうございました。本来の目的は、これで完全に達成されました。拡張子に関してもアドバイス頂き、ありがとうございます。起動ショートカットなるものがあることなど知りませんでした。Interpreterとして認識されていますが、それ以外のアカウントでは単なるテキストファイルとしてしか認識されていません。ファイルの関連付けの問題であるような気がします。起動ショートカットやバッチファイルの作成方法は了解しました。下のアクセス許可さえクリアできれば、起動ショートカットやバッチファイルは問題なく動作するものと思われます。(1)通報するANo.5prum>はじめにメインアカウントとGuestアカウントの両方にログオンしておかないといけないということですねタスクの登録を管理者のアカウント(Admini権限)でパスワードありにすればバックグラウンドのアカウントはログオンしていなくてもタスクは実行されていますのでお試し下さい。22:21:18補足prumさん、ありがとうございます。Admin権限のアカウントを新規作成し、タスク登録でパスワードを設定、最後に適用ボタンを押すと、“要求された操作を実行するアクセス許可がありません”と出てエラーとなってしまいました。前回prumさんのおっしゃっていたアクセス権の設定が必要になるようです。これはどこでどうやって設定すればいいのでしょう?ちなみに、Perlのパスは以下の通りです。C:/Perl/bin/perl.exe宜しくお願いします。権限に関する説明、ありがとうございます。昨夜、ずっと試していたので返事が遅くなりました。prumさんのおっしゃる通り、Guestアカウントでもタスクはバックグランド実行されることを確認しました。これをするためには、はじめにメインアカウントとGuestアカウントの両方にログオンしておかないといけないということですね。メインアカウントは当然としても、もう一つのアカウントにもログオンしっ放しというのはセキュリティ面で不安が残りますが・・・とりあえずは実現できて良かったと思っています。Guestアカウントに関しては、ファイルのアクセス権を何ら設定することなしに、record.plはタイマー実行されたことを付け加えておきます。ファイル名がrecord.plだとメモ帳で開いて終わるだけで、肝心のスクリプトは実行されませんでした。実行されるにはファイル名をrecord.cgiと変更する必要がありました。的確なアドバイスを頂き、ありがとうございました。MOMON12345さん、Tinteさんにもお礼申し上げます。今回はprumさんの方法が自分の理想に最も近かったので、こちらを採用させて頂きますが、お二方の方法も、何らかの場面で役に立つときが来ると思っています。皆さんのアドバイスに感謝します。問題は解決しましたが、Guestアカウントのログオンしっ放しと、拡張子の件に関して、何かアドバイスなり、注意点なり、コメントなりが頂けたらと思いますので、もう暫くはこの質問を締め切らずに置いておきたいと思います。何かありましたら宜しくお願いします。土曜か日曜あたりに締め切りろうと思っています。(1)通報するANo.3prum>実行の際に毎回必ずコマンド画面が立ち上がって来るタスクをログオンしているアカウントと別のアカウントで登録すれば、コマンド画面が表示されることは無くなると思います。07:19:55補足アドバイスありがとうございます。新たなアカウントを作成する場合。そのアカウントの権限は、どのレベル(グループ)に設定すればいいのでしょう?現在のログオンアカウントはAdmin権限です。(1)通報するANo.2TinteWinサーバーにはあまり詳しくないのですが、Cygwinのcronで一定期間のスクリプトの実行はできると思います。PerlとCygwinはわりとメジャーなペアだと思いますよ。具体的なインストールの方法や使い方はわからないのですが、たぶんCygwinで検索すると山ほど情報があると思います。cronという実行シェル(だったような...)に実行させるスクリプトのパスと時間を書き込んで放っておくだけでよかったはずです。具体的なことがわからなくてすんません。23:14:12お礼アドバイスありがとうございます。以前telnetのことを調べていたときに、Cygwinに関するページも参照した記憶があります。実現できる方法が見つからなければ、Cygwinを導入することも考えてみます。なにぶん急いでいるわけではないので、結果をご報告するまでに、ちょっと時間が掛かるかもしれませんが、その点はご了承ください。ご回答ありがとうございました。なんてのはダメですかね。timeでも良いですが、とにかく起動しっぱなしでsleepさせておく方法。23:04:15お礼アドバイスありがとうございます。record.plのスクリプト全体を、sleepを入れてループで回し続けるということですね。Windowsではrecord.plの初回の起動のときにコマンド画面が立ち上がり、sleep中はコマンド画面が立ち上がりっぱなしになります。途中でコマンド画面を閉じると、スクリプト自体も終了してしまうので、やはりコマンド画面という難点が残ってしまいます。ループ実行中はコマンド画面を最小化しておくという手もあるのですが、なるべくコマンド画面が立ち上がらずにという方法を考えていますので、申し訳ないですが、これは参考意見とさせて頂きます。負荷の点も心配だったのですが、これを実際に試してみると、スクリプトを起動しっぱなしでも、sleep中は負荷がまったく掛かっていないという発見がありました。今後何らかの機会に使わせてもらいたいと思います。ご回答、ありがとうございました。素人の質問で恐縮です。Perlの勉強を始めようと思っています、初心者です。以下の環境で開発をしています。現在Windows上にて、Perlの開発をしております。Reserved.掲載情報の著作権は提供元企業等に帰属します。