質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

4033閲覧

【CRON】初期設定が上手くいかない原因と対策

T.N.

総合スコア22

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2015/08/18 12:00

PHPを中心にプログラミングを独学しています。

CRONを使いたいのですが、設定段階で躓いてしまい詰んでしまいました。
もし解決策をご存知でしたらお教えいただけませんでしょうか。

■環境
mac OS X Yosemite バージョン 10.10.2
MAMP バージョン 3.0.3

■やりたいこと
cronを使って定期的にプログラムを実行させたい。

■困っていること/現状
以下のページを参考にして進めているのですが、最初の段階( /etc/rc.d/init.d/crond status を入力する段階)から
bash: /etc/rc.d/init.d/crond: No such file or directory という表示が出ました。

【参考にしたページ】
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html

該当するファイルやディレクトリが自分のPC上に存在しないのかと考え、
まずはインストール(crontabs と vixie-cron の2つ)することを試みました。

その方法を調べたところ、macではHomebrewを用いてインストールするのが主流とのことなので、
以下のページを参考にしてHomebrewをインストールしました。

【参考ページ】
http://qiita.com/_daisuke/items/d3b2477d15ed2611a058
※$ brew doctor というコマンドを打ち込んだところ Your system is ready to brew.と表示されたので、正常にインストールできているのではと思っています。

Homebrewインストール後、cronをインストールしようと思い、以下2つのコマンドを入力したところ、エラーが表示されました。
・brew install crontabs
・brew install vixie-cron

エラーの内容は以下のとおりです。

【brew install crontabsに対して】
Error: No available formula for crontabs
==> Searching formulae...
==> Searching taps...

【brew install vixie-cronに対して】
Error: No available formula for vixie-cron
==> Searching formulae...
==> Searching taps...

「利用できるパッケージがない」というエラーのように思えたので、
パッケージ名称が新しくなっていたり、そもそもどこからインストールするのかという記述が不足していたのではと思い、
調べたところGitHub上には crontabという名前が付くプログラムが沢山転がっていることしか分かりませんでした。

また、念のため自分のPC上に既に入っているかもしれないと考え、
ターミナル上で mdfind crontab というコマンドを実行したところ、それっぽいものが以下の3つありました。
/usr/bin/crontab
/usr/share/man/man5/crontab.5
/usr/share/man/man1/crontab.1

mdfind vixie-cronというコマンドの実行結果は、なにもない、といったものでした。

ここまでいじくり回した段階で先に進めなくなってしまい質問しました。
このような状況から cron を使えるようにする手順や上手くいっていない原因をご存知でしたら、
お教えいただけませんでしょうか。どうかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

まずはコマンドラインで

$ crontab -e

を実行してみてください。デフォルトだとvimが起動して設定を入力できるようになるはずです。
ただ、macではpi-chanさんも書かれているようにlaunchdを使う方が良いようです。
ご参考まで。

投稿2015/08/19 02:59

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.N.

2015/08/19 22:54

ご回答いただき、ありがとうございます。 >macではpi-chanさんも書かれているようにlaunchdを使う方が良いようです。 CRONではなくLaunchdを使ってみます!
guest

0

ベストアンサー

Macであれば(OS X は linux系 ではなくBSD UNIX ベースなので)、cron ではなく launchd を使用してください。

Mac OS Xでlaunchdでcronのように定期実行するメモ

投稿2015/08/18 12:10

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.N.

2015/08/19 22:53 編集

※誤って二重投稿してしまったので1つ目の投稿は削除しました。
T.N.

2015/08/19 22:52

ご回答いただき、ありがとうございます。 Launchdを使おうと思い、 色々調べているのですが初歩的な部分が 分かっておらず質問させてください…。 ■質問1 Launchdはオープンソースで提供されているようなのですが、 これはネットからインストールする必要があるものなのでしょうか。 オープンソース = ネットからインストールしてくるもの、という理解なのですが、 インストールできそうなページが見つかりませんでした…。 ■質問2 Launchdは以下のディレクトリに置かれているという解説があったのですが、 これはGUI上で見れるものなのでしょうか。 もしくはターミナル上でのみ確認したり 操作したりできるものなのでしょうか。 【置かれている場所】 /System/Library/LaunchAgents/ /System/Library/LaunchDaemons/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ 初歩的な質問となってしまいますが、どうかご教示いただけますと幸いです。 よろしくお願いします。
pi-chan

2015/08/20 01:44 編集

▪️質問1について Mac(OS X)であれば標準で入っていると思います。 イメージとしては、Windowsのタスクスケジューラのような感じです。 ▪️質問2について 「Launchdは以下のディレクトリに置かれている」という理解は間違っている、というかズレています。 launchd は標準で組み込まれている、アプリ等の起動・停止・管理を行うための仕組みなので、単に利用する立場からするとそれがどこに置かれている(インストールされている)かを意識する必要性はありません。 そうではなくて、cron の場合と同様に「所定の場所」に「スクリプト」を置いて「launchctl」コマンドで登録するだけです。 スクリプトの置き場所が幾つもあるのは、登録したいスクリプト(自動実行の定義)がどういう目的のものなのか、システム全体の管理用なのか、それとも個人ユーザーのための処理なのかなどによって分類するためです。 スクリプト(テキストファイル、お好きなテキストエディターで作成・編集してください)を所定の場所に置き、launchctlコマンド を使って launchd に登録する(スクリプトを認識させる)のは『Terminal から実行』するだけです。 ですから、GUIは存在しません。 これらのことは、すべて先に貼り付けたリンク先のページに、サンプル付きで詳細に説明されていることですので、先を焦らずまずは「全体の説明をよく読む」ことを強くお勧めいたします!!
T.N.

2015/08/22 10:32

ご回答ありがとうございます! ご回答いただいた内容と記事を読み込んで実践したら 無事にプログラムを定期的に実行させることができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問