カレッヂ |
質問者 やまさん
投稿日 2/24(土) 02:04:48
最近携帯電話へメールすることが増えてきて 困っているのが、パソコンへのメールはいつでも送れますが (パソコンへも本当は常識的な時間に送信するべきでしょうが・・・) 携帯電話は受信者が電源を入れてると夜中でも着信音がなって 受信者に迷惑がかかってしまうので、あらかじめ 作成したメールを指定した時間に送る(夜メールを作って昼に送信する) ようなものは無いのでしょうか、どなたか教えて下さい |
回答者 まさ
[削除]
投稿日 2/24(土) 19:36:21
これにはcron(クーロン)が使えると思います。 cronとは、指定した日時、曜日に特定のプログラムを起動するUNIXのデーモンです。 Windowsにもタスクスケジューラ(名前ははっきりわかりません)か何かが付いていますよね。 あれのUNIX版だと思って頂ければいいでしょう。 しかし日本のプロバイダーの多くはcronを使えません。アメリカのレンタルサーバーなら 使えるところも多いのですが。 まず最初に、cronのデーモン「crond」が起動されているかを調べます。 shellで入って、 % ps ax|grep cron 123 ? S 0:00 crond 12345 pts/0 S 0:00 grep cron これでcrondと出てくれば使えます。 出れこなければ、管理者にcronを使いたい旨の連絡をすれば入れてくれるかもしれません。 cronはcrontabと言う設定ファイルを使いますが、詳しくは man 5 crontab を見てください。 cronが使えるのであれば、また教えて下さい。設定方法も教えます。 |
質問者 やまさん
[削除]
投稿日 2/26(月) 09:37:07
丁寧な回答ありがとうございます。 基礎的なことかもしれませんが shellにはいってという意味が分からないのです ただ、自分のサーバーはドットCOMのアメリカの レンタルサーバーのはずなので、是非トライしてみようと 思っていますので、申し訳ありませんが、教えてくれますでしょうか よろしくおねがいします。m(__)m |
回答者 まさ
[削除]
投稿日 2/26(月) 18:20:35
アメリカのサーバーなら使えるかもしれませんね。 shellと言うのは、telnetの事です。 アメリカのサーバーなら恐らくtelnetも使えると思います。 telnetでログインしてUNIXのshellに入って下さい。 そして上記のコマンドを実行して使えるか確認してみて下さい。 |
質問者 やまさん
[削除]
投稿日 3/2(金) 22:26:46
やっとログイン出来入力しましたが command not found とばかり出てしまいます これはだめって言うことでしょうか がんばってやってみたのですがとほほ・・(TT) いろいろありがとうございました。 でも今回TELNETの勉強になりました。 |
回答者 まさ
[削除]
投稿日 3/3(土) 21:10:14
もしかして頭に%付けていませんか? わたしが書いた頭の%はshellのプロンプトです。 UNIXは(DOSでもそうですが)プロンプトを好きなようにカスタマイズすることができます。 ですから一般的な環境を表すのに%を使うのは流儀です。 実際に入力するのはそれ以降です。 |
質問者 やまさん
[削除]
投稿日 3/4(日) 00:30:08
本当にご親切にありがとうございます。 まずman 5 crontab といれるとこんな風に出ました CRONTAB(5) CRONTAB(5) NAME crontab - tables for driving cron DESCRIPTION A crontab file contains instructions to the cron(8) daemon of the general form: ``run this command at this time on this date''. Each user has their own crontab, and com- mands in any given crontab will be executed as the user who owns the crontab. Uucp and News will usually have their own crontabs, eliminating the need for explicitly running su(1) as part of a cron command. Blank lines and leading spaces and tabs are ignored. Lines whose first non-space character is a pound-sign (#) are comments, and are ignored. Note that comments are not allowed on the same line as cron commands, since they will be taken to be part of the command. Similarly, comments are not allowed on the same line as environment variable ps ax|grep cron 123 ? S 0:00 crond 12345 pts/0 S 0:00 grep cron といれると ps ax|grep cron 886 ? S 0:00 perl /usr/cbin/crond_check 14027 ? S 0:00 /usr/sbin/crond 18036 p0 S 0:00 grep cron ninja:/usr/home/q-car$ 123 ? S 0:00 crond bash: 123: command not found ninja:/usr/home/q-car$ 12345 pts/0 S 0:00 grep cron bash: 12345: command not found と出ます。 果たしてOKなのでしょうか、簡単にできるかなと思っていましたが すごく難しそうです。でもせっかくやり始めたのでがんばってやろうと思います のでよろしくお願いします。 |
回答者 まさ
[削除]
投稿日 3/4(日) 19:58:47
cronが使えるようですね。 それでは設定してみましょう。 設定はcrontabで行います。 ここにいつ何時に何を実行するか記述します。 crontabにはいろいろなオプションスイッチがありますがここでは省略します。 現在のcron設定を編集する。設定内容がない場合は新規作成する。これは以下を実行します。 % crontab -e crontab の中身は以下のような書式です。 * * * * * [コマンド] 意味は省略します。 例えば毎日朝4時30分に、あるCGIを実行したければ 30 4 * * * /usr/local/bin/perl /foo/public_html/cgi-bin/foo.cgi これで4:30にfoo.cgiが実行されます。perlとfoo.cgiは絶対パスで記述して下さい。 同じく13:15に実行したければ、 15 13 * * * /usr/local/bin/perl /foo/public_html/cgi-bin/foo.cgi です。最初が分、次が時間です。次が日、月、週を表します。 |
質問者 やまさん
[削除]
投稿日 3/9(金) 02:21:10
いつも親切にありがとうございます。 この設定は、shellで入って設定するのでしょうか まず最初に基礎的なことだと思うのですが 15 13 * * * /usr/local/bin/perl /foo/public_html/cgi-bin/foo.cgi としたこの文はどこに置くのでしょうか/usr/local/bin/perl これはよく cgiの頭に付けています。 基本的な考えとしてfoo.cgiと言うメールを送るcgiを作って サーバーに置いておいて、それを上記パスで実行するということで良いのでしょうか あと絶対パスはいわゆる自分がいつもftpでアップロードしているディレクトリ (foo.cgiを置く場所)でいいのでしょうか 最後に15 13 * * *の所で15 13 10 3 *なら3月10日の15時30分 となるのだと思うのですが最後の週になるところは年間通しての週(年52週) で書くのでしょうかそれとも書かなくてもいいのでしょうか、または3月の1週目と考える のがいいのでしょうか・・・。 なんかちんぷんかんぷんな無いようですが少しつかめてきました、これに懲りず また教えて下さい。m(__)m よろしくお願いします。 |
回答者 まさ
[削除]
投稿日 3/9(金) 18:09:54
> いつも親切にありがとうございます。 > この設定は、shellで入って設定するのでしょうか そうです。shellで作業を行います。 > まず最初に基礎的なことだと思うのですが > 15 13 * * * /usr/local/bin/perl /foo/public_html/cgi-bin/foo.cgi > としたこの文はどこに置くのでしょうか/usr/local/bin/perl これはよく > cgiの頭に付けています。 > 基本的な考えとしてfoo.cgiと言うメールを送るcgiを作って > サーバーに置いておいて、それを上記パスで実行するということで良いのでしょうか これはshell上で % crontab -e とすればエディターが立ち上がるのでそこに直接 15 13 * * * /usr/local/bin/perl /foo/public_html/cgi-bin/foo.cgi と打ち込みます。 crontabが存在すれば既にあるものが出てきます。なければ自動的に新規作成されます。 この例ではおっしゃるように指定された時間にfoo.cgiがperlスクリプトとして実行されます。 それがメールを送るものなら自動的にメールを送ることなります。 > あと絶対パスはいわゆる自分がいつもftpでアップロードしているディレクトリ > (foo.cgiを置く場所)でいいのでしょうか これはそのプロバイダーによりますので一概には言えませんが、大体そうですね。 > 最後に15 13 * * *の所で15 13 10 3 *なら3月10日の15時30分 > となるのだと思うのですが最後の週になるところは年間通しての週(年52週) > で書くのでしょうかそれとも書かなくてもいいのでしょうか、または3月の1週目と考える > のがいいのでしょうか・・・。 最後の週は0〜7の数字で表します。 0が日曜日、1が月曜日……、7がまた日曜日です。 ですから3月10日と限定してしまうと週は書かなくてもいいです。 これは普通一週間のある曜日だけ実行させたい場合に使います。 例えば * * * * 1 [コマンド] と書けば毎週月曜日に実行します。 最後にcrontabの例です。 #0分ごとに実行する 0 * * * * [コマンド] #5分おきに実行する */5 * * * * [コマンド] #1日1回,0時0分に実行する 0 0 * * * [コマンド] #0時から23時までの2時間おきに,毎23分ごとに実行する 23 * 0-23/2 * * [コマンド] #1月と12月それぞれの1〜20日,23時0分に実行する * 23 1-20 1,12 * [コマンド] #月曜日から土曜日まで1分おきに実行する */1 * * * 0-6 [コマンド] ちなみに#で始まるものはコメントとして扱われます。 |
質問者 やまさん
[削除]
投稿日 3/15(木) 02:02:35
いつもいつもお世話になっています。 いろいろトライしていますが crontab ーeと打つと画面に~記号が縦にずらりと並び 一番最後に"/tmp/crontab.20315" 1 line, 1 char と言う文字が反転状態で書かれていてなにも打てなくなります。 いろいろやっているうちに -l をつけるとリストが出てくることが分かり no corntab何とかとでて、なにも設定されていませんよ・・・みたいな メッセージが出てくるので、入力は間違っていないはずですが もしかしたらこれがエディットの画面なのでしょうか? ただいま同時進行でメールを送るcgiを作っています。 こちらはうまくできつつあるので、だんだん詰めの作業になってきているのかなと 思っていますが、はたしてこれでよいのでしょうか、手間をかけてしまいますが また教えて下さい。 |
回答者 まさ
[削除]
投稿日 3/15(木) 08:43:28
>crontab ーeと打つと画面に~記号が縦にずらりと並び >一番最後に"/tmp/crontab.20315" 1 line, 1 char そのエディターはviですね。viはUNIXではEmacsと並んでメジャーなエディターです。 しかし慣れないと文字を入力することすらできません。メニューもツールバーも何もないです からね。しかしこれを使いこなすと既存のエディターには戻れないほどいい使用感があります。 わたしも慣れるまでは1ヶ月ほどかかりました。まあ、viのことについはここまでにしといて。 一番最後の行に表示されている/tmp/crontab.20315これがcrontabのファイル本体です。 ここでは気にしなくてもいいです。 viでは何もしなければ、それはコマンド入力状態です。文字入力状態ではないです。 1行何か既に入っているようなのでそれは削除しましょう。 カーソルが1行目に来ていると思いますので、「dd」と打ちます。そうするとその行が消えます。 次に入力モードに切り替えます。これには「i」を打ち込みます。何も変化はないですが、これで viはユーザーがタイプしたもの全て画面に表示されます。 cronのコマンドを打ち込んで下さい。決して間違えないで下さい。viの編集はややこしいので ここではしません。もし間違えたらエスケープを押して、「dd」と打って「i」と打ってもう 一度最初からやり直して下さい。 入力が終わったら、保存しましょう。説明はしませんが次を行って下さい。 エスケープを押す。「:wq」と打つ。 これでviが終了し、crontabが出来ました。 あとはそのperlスクリプトを指定した場所に置けば、自動的にメールを送ります。 |
回答者 まさ
[削除]
投稿日 3/16(金) 21:11:25
補足しますが、現在すでにcrontabが設定されていてそれを編集するのが嫌ならばいっそ crontabを削除して新規に作成するほうがいいと思います。 % crontab -l これで現在のcronの設定が見れますので、必要ないなら % crontab -r これで削除して下さい。そして % crontab -e で新規に作成するほうが楽ですね。 |
質問者 やまさん
[削除]
投稿日 3/24(土) 02:29:31
少々間が空いてしまいましたが、CGIがうまくできず、とりあえず 自分のアドレスに送るような簡単な物を作ってやってみました。 なんと動いたんです・・・当たり前なのかもしれませんがうれしいですね 後は一括送信のできるCGIをきっちりと完成させないといけないのですが サーバー管理者からあまり負荷のかかる物は勘弁を・・・ということなので 少々頭を悩ませています。が何とかなると思ってます。 長々とお付き合い下さいまして本当に本当にありがとうございました コンピュターはこれからもっともっと進化して便利になって行くのでしょうが 便利になればなるほど、こういったプログラムという物は難しくなるんでしょう・・ 今回、何回知恵熱出そうに(出た)なったことか・・・でもやりがいは有りますね 自分の仕事はこういったPCとは全く関係のない仕事をしていますが、PCを 生かして仕事をやっていく上で自分でできるならやってみようと日夜格闘しています どこのどなたか分からないのに、いろいろ親切にしていただきまして本当に感謝しています ありがとうございました。 岡山市在住 山本 久司 |
回答者 クロックメール
[削除]
投稿日 4/12(金) 13:12:56
こんにちは。 こういうサービスを用意してあるのでよかったら使ってみてください。 http://clockmail.ath.cx/ 非常にシンプルで保証もありませんが、 意外と便利です。 失礼します。 |
返信(回答)する
Web裏技 |