• ベストアンサー

crontabについて

質問があります。 以前質問させていただきましたが、 わからないところがありまして再び質問させていただきます。 毎月1日の0時1分にプログラムを実行したい場合は 1 0 1 * * 実行したいプログラム ということは理解しましたが、 この【実行したプログラム】にはどのような形式で記述すればいいのでしょうか? ちなみに動かすプログラム名はtest.phpです。 【例】1 0 1 * * (php?) /home/httpd/test/test.php それとプログラム事態を10分毎に動作させたい 場合はどのようにcrontabを設定すればいいのでしょうか? 今動作を確認する環境がないので実際に確認とれませんのでご迷惑をおかけしますがお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

crontab (section5) のオンラインマニュアルがありますので、 参考にしてください。 http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html

参考URL:
http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html

その他の回答 (2)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

(補足) いい忘れてました。 あなたが作ったユーザアプリをcrontabで実行するときは、crontabファイルに 直接記述するのではなくて、シェルスクリプトにして実行した方が確実です 10 1 * * * /home/hogehoge/bin/xxxx.sh xxxx.shの中では #!/bin/sh 環境変数の設定 パスの設定 php XXXXXXXX.php みたいな感じです。 (念のため) また、10分ごと(*/10)という記述は、Solarisなどでは文法エラーになりますので。 Linuxで標準のVixie cronなら大丈夫です。

TOKIO2003
質問者

お礼

どうもありがとうございました。

  • nonosuke
  • ベストアンサー率25% (41/162)
回答No.2

> この【実行したプログラム】にはどのような形式で記述すればいいのでしょうか? > ちなみに動かすプログラム名はtest.phpです。 以下のように指定すると思います。 1 0 1 * * php-cli /home/someone/php/kuji.php > それとプログラム事態を10分毎に動作させたい 以下のように指定します。 */10 * * * * php-cli /home/someone/php/kuji.php crontabはLinuxでも使用できます。LinuxならWindowsとのマルチブートも簡単に設定できます。

TOKIO2003
質問者

お礼

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

関連するQ&A

  • PHPで編集したファイルをcrontabに設定する

     PHPで編集したファイルを、crontabに設定しようと、プログラムを製造しています。  しかし、rootユーザーのジョブキューにPHPで編集したファイルの内容が反映できません。  下記URL(niftyホームページ)記載の通り、sudoを使用し、実行時にrootユーザーを指定し、rootユーザーのジョブキューにtext.txtの内容を設定しようとしていますが、反映できません。ちなみに、test、apacheユーザーに対しても試してみましたが反映できませんでした。以下に作業内容を記載しますので、どこがおかしいのか教えていただければありがたいです。 【作業内容】 (1)sudoを設定する。  1)sudoをインストールする。  2)/etc/sudoersを編集する(コマンドvisudoで実施)。   a)ユーザーと、それぞれの実行権限の追加。     root ALL=(ALL) ALL     test test=(root) ALL     apache test=(root) ALL   b)wheel を全てのホストで、全てのユーザーのすべての権限を実行できるように設定     %wheel ALL=(ALL) ALL   c)wheelはパスワードを入力せず、コマンドを実行できるように設定。     %wheel ALL=(ALL) NOPASSWD: ALL (2)sudoコマンドが正常に実行できるか確認する。TeraTermの画面からroot権限でcrontabを実行する。以下は、PHPで編集した、test.txtファイルの内容を、crontabへroot権限で設定しようとしています。  1)ログインユーザーrootで実行する   sudo -u root crontab /var/document/test.txt  2)ログインユーザーtestで実行する   sudo -u root crontab /var/document/test.txt  3)ログインユーザーapacheで実行する   ※ユーザーapahceでログインすることは不可能です(以降省略)。 以上のコマンドそれぞれ実行し、rootユーザーのジョブキューにtest.txtの内容が入ることを確認。 (3)sudoコマンドが正常に実行できるか確認する。TeraTermの画面からtest権限でcrontabを実行する。以下は、PHPで編集した、test.txtファイルの内容を、crontabへtest権限で設定しようとしています。  1)ログインユーザーrootで実行する   sudo -u test crontab /var/document/test.txt  2)ログインユーザーtestで実行する   sudo -u test crontab /var/document/test.txt 以上のコマンドそれぞれ実行し、testユーザーのジョブキューにtest.txtの内容が入ることを確認。 (4)sudoコマンドが正常に実行できるか確認する。TeraTermの画面からapache権限でcrontabを実行する。以下は、PHPで編集した、test.txtファイルの内容を、crontabへapache権限で設定しようとしています。  1)ログインユーザーrootで実行する   sudo -u apahce crontab /var/document/test.txt  2)ログインユーザーtestで実行する   sudo -u apache crontab /var/document/test.txt 以上のコマンドそれぞれ実行し、apacheユーザーのジョブキューにtest.txtの内容が入ることを確認。 (5)(2)で試したコマンドを、PHPプログラムに埋め込み実行する。system()、sell_exec()、exec()でそれぞれ実行しました。  1)system("sudo -u root crontab /var/document/test.txt");  2)sell_exec("sudo -u root crontab /var/document/test.txt");  3)exec("sudo -u root crontab /var/document/test.txt"); 以上の内容をプログラムに記述し、実行しましたが、test.txtの内容をrootのジョブキューに、設定できませんでした。 《確認コマンド》 sudo -u root crontab -l なお、test、apacheユーザーも同様に試してみました。 ※testユーザー権限で実行  1)system("sudo -u test crontab /var/document/test.txt");  2)sell_exec("sudo -u test crontab /var/document/test.txt");  3)exec("sudo -u test crontab /var/document/test.txt"); ※apahceユーザー権限で実行  1)system("sudo -u apache crontab /var/document/test.txt");  2)sell_exec("sudo -u apahce crontab /var/document/test.txt");  3)exec("sudo -u apache crontab /var/document/test.txt");  以上のプログラムを実行後、それぞれのジョブキューを確認しましたが、text.txtの内容をcrontabへ設定できませんでした。 《確認コマンド》 sudo -u test crontab -l sudo -u apache crontab -l  system()、shell_exec()、exec()、それぞれの関数を使用し、管理者権限以外のコマンド(mkdir、cp、mv、rm等)を実行した場合、問題ないので、本問題は実行権限と考えていますが、以上の情報で何がどうおかしいの分かりますでしょうか?お手数をかけますが、ご回答お願いします。 【niftyでの回答】  niftyのサイトに以下のような質問・回答がございますが、本投稿の内容とほぼ同じと認識しています。  但し、niftyの回答をそのまま実行してみましたが、実行できませんでした。環境の違いのせいでしょうか? http://oshiete1.nifty.com/qa7939488.html ※上記設定(/etc/sudoers)は、セキュリティレベルが低いのは十分承知しています。以上の処理が正常に動作確認後、徐々にセキュリティレベルを上げていく予定です。

    • 締切済み
    • PHP
  • Twitterボット crontabについて

    ただ今PHPでテスト用ボットを作成しています。 crontabを使用し1分毎に現時刻をはかせるサンプルを作成しているのですが、うまくいかず困っています。 動作環境はMAMPです。 ターミナルから $ php /Applications/MAMP/htdocs/twitteroauth/app.php で実行するとツイートされるのでphp側のプログラムには問題はないかと存じます。 現在crontabに記載している内容は ***** php /Applications/MAMP/htdocs/twitteroauth/app.php となっています。 ***** /Applications/MAMP/bin/php/php5.3.6/php /Applications/MAMP/htdocs/twitteroauth/app.phpも試してみたのですが、どうにも吐いてくれません。 こちらhttp://okwave.jp/qa/q4388215.htmlも参考にさせていただいたのですが、解決には至れませんでした。 初心者故文中に支離滅裂な個所があるかとは存じますが、合わせてご指導いただければと存じます。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • crontabでPHPスクリプトが実行出来ない

    crontabで毎分PHPのスクリプトを起動する記述をしましたが、すべて下記エラーが出て実行されません。 phpスクリプトの先頭で「#!bin/usr/php」を書く方法と、crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法を試してみましたが両方ともダメでした。 解決索があればご教示下さい。 【エラー内容】 test.php: line 1: ?php: No such file or directory

    • ベストアンサー
    • PHP
  • crontab の書き方について質問です。

    crontab の書き方について質問です。 以下の記述がありました。 0-59/30 * * * * hoge1.sh 3-59/30 * * * * hoge2.sh これって何分毎に実行されるのでしょうか? 意図としては 「30分毎に実行。ただし hoge1.sh と hoge2.sh は実行時間をずらして」 と感じられます。 だとしたら、以下の様に書いた方が分かりやすいですよね。 0,30 * * * * hoge1.sh 3,33 * * * * hoge2.sh 今回の質問は最初に記述したやり方だと「いつ実行されるのか?」が知りたいです。

  • crontabのファイルのパス設定

    MacOSXを使っているUNIX超初心者です。 crontabのファイルのパス設定について質問です。 HDDが2台あって、コンソール上ではそれぞれ、 abcd123456:~ maruchan$ abcd123456:disk2 maruchan$ と表示されます(数字等は実際と変えていて、ユーザ名がmaruchanです)。 いつもは、コンソールからdisk2上のプログラムを直接動作させていまして、 abcd123456:disk2 maruchan$ /volumes/disk2/holder/program と打って、disk2/holder中のprogramを動作、その出力はdisk2/holderの中に書き込まれます。 コンソール上でいちいち打つ代わりに、crontabで行おうとして、disk2上にテキストファイルtest.crontabを作り、 00 12 * * * /volumes/disk2/holder/program と入れまして、下記を打ちました。 abcd123456:disk2 maruchan$ crontab test.crontab プログラムは指定時間に動作したのですが、出力が、 abcd123456:~ maruchan$ の中に書き込まれます。 出力は、disk2/holderに書かれるようにしたいのです。 原因はCronの環境設定が下記のデフォルトのままであることなのですが、test.crontab中にどのように環境設定記述をすれば良いのでしょうか? X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=maruchan> X-Cron-Env: <USER=maruchan> X-Cron-Env: <HOME=/Users/maruchan> なお、 HOME=/volumes/disk2/holder 00 12 * * * /volumes/disk2/holder/program としてみたのですが、変更できませんでした。 どうぞよろしくお願いします。

  • crontab での実行結果が違う

    crontab でのスクリプト実行でほとほと困っています。 以下の処理で、 $test = "FILE"; @orglist = glob("$test*"); ・・・とIE からの実行では通常、配列に "FILE" の付く ファイルが全て格納されることを確認しています。 しかし、まったく同じスクリプトを crontab で 自動実行させてみると、何も配列に入ってこないことが わかりました。 cgi を実行させているマシンは FreeBSD 4.7-STABLE と あります。 何が原因なのでしょうか?

    • ベストアンサー
    • Perl
  • crontabの書式について

    レンタルサーバーで運用しているWebサイトで初めてcronを使うことになり、現在以下のcrontabで正常に動作しているのですが、 このcrontabを「出力はresultに保存(常に上書き)、成功にせよエラーにせよメールは送信しない」という設定に変えるにはどうすればよいでしょうか。 #!/bin/sh cd /virtual/[myID]/cron/ wget http://sample.com/test.php

  • crontab -lの結果取得

    教えて下さい。 <? $lines = shell_exec("crontab -l"); echo $lines; ?> 上記結果でcronのジョブ一覧を取得したかったのですが、期待通りの結果が返ってきませんでした。(何も取得できませんでした。) crontab -l自体は通常のコマンドとして使えているのですが、、 実行ユーザーの問題かと思い、"crontab -u root -l"ともしてみましたが結果は同じでした。 また、パスの問題かと思い、"/usr/bin/crontab -u root -l"ともしてみましたが結果は同じでした。 この場合、どこが問題となっているのでしょうか。 宜しくお願い致します。 FedoraCore9 php-5.2.5-7.fc9.i386 httpd-2.2.9-1.fc9.i386

    • ベストアンサー
    • PHP
  • crontab でスクリプトが動かない

    一応環境ですが、 CentOS5 PostgreSQL8 crontabでDBのバックアップを取ろうと思っていますがうまく動作しません。 以下のスクリプトファイルを作成し、crontabで毎日実行しようと考えています。 /home/hogehoge/Maintenance.sh/pg_dumpall.sh (内容)-------------------------------------------------------- #!/bin/sh cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump -------------------------------------------------------- crontab (内容)-------------------------------------------------- 0 4 * * * /home/hogehoge/Maintenance.sh/pg_dumpall.sh -------------------------------------------------------- しかし、時間になってもpg_dumpall.dump ファイルが作成されません。 crontab自体は動作しています。(ファイル作成だけをしたらちゃんとできてました) 0-59/2 * * * * /bin/date > /home/sweets/Maintenance.sh/hoge pg_dumpall.sh の内容を1行ずつ実行しても正常にできます。 cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump なにかほかにも設定しなくてはいけないことがあるのでしょうか?

  • Fedora11 crontab 設定エラー

    Fedora11「crontab -l」が「コマンドが見つかりません」になる。 (Q1) Fedora11で、cron を利用したく動作テストしています。 crontab は、/etc内にあります。 [root@betasei etc]# ls -l crontab* -rwxrwxrwx. 1 root root 420 2011-05-18 10:36 crontab テスト用スクリプトです。 [root@betasei etc]# cat test.sh echo xxxxxxxx gedit crontab で次のように編集しました。 [root@betasei etc]# cat crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin/:/etc/ MAILTO=root HOME=/ # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR #sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed 1 1 * * * /etc/test.sh 設定確認すると、次のようにエラーになります。 [root@betasei etc]# ./crontab -l ./crontab: line 13: 1: コマンドが見つかりません [root@betasei etc]# 1 1 * * * /etc/test.sh ここのところを ./test.sh にしてみたりしてもダメです。 どうしたらよいのでしょうか。 (Q2) ところで、crontabの編集は、ターミナルやろうとして、 crontab -e と実行すると、viか何かの空白編集画面が出ます。 上記 gedit crontab の画面のように初期値が出ません。 gedit crontabで編集してもよいのですね。 (Q3) /etc/crontab は、テキストファイルですね。 でも、このcrontabは実行ファイルですね。 ./crontab -l どうなってるですか。 初歩的な質問ですみません。

専門家に質問してみよう