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

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

ただいまの
回答率

90.53%

  • CentOS

    3086questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • cron

    210questions

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

centos7にてcrontabを編集後、シェルが実行されない

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 11K+

senaha

score 11

前提・実現したいこと

環境:centos7.0
任意の時間にシェルを実行したい。

発生している問題・エラーメッセージ

cronにて実行したいシェルがあるのですが、設定後にその時間を過ぎても実行されません。
エラーメッセージが表示されるわけではないのですが/var/logに以下のログが記載されます。

Feb 16 15:18:01 ** **[**]: (*system*) RELOAD (/etc/crontab)

crontabの設定内容は以下の通りです。

18 15 * * *  root /opt/backup/backup.sh

OSの再起動を実施しても状況が変わらないのですが、
どういったことが考えられるでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

CentOS7はデフォルトでcronie-anacronがインストールされますが、
cronie-noanacronへの入れ替えは実施済みでしょうか?

# yum install cronie-noanacron
# yum remove cronie-anacron

デフォルトでインストールされているcronie-anacronの場合、
期待されているようなジャストタイムでのジョブ実行は出来ませんので、
cronie-noanacronをインストールしてみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/16 17:12 編集

    ご回答ありがとうございます。
    入れ替え後、再度試したところ、実行されるようになりました!

    ただ、このジョブが動くのはジャストタイムである必要は無い為、
    出来ればcronie-anacronの環境で起動させたいと思っています。
    入れ直した後にanacrontabへ以下のように設定を行えば24時間中の誤差1分程度で実行されるようになるのでしょうか?

    ```

    # /etc/anacrontab: configuration file for anacron

    # See anacron(8) and anacrontab(5) for details.

    SHELL=/bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    # the maximal random delay added to the base delay of the jobs
    #RANDOM_DELAY=45
    RANDOM_DELAY=1
    # the jobs will be started during the following hours only
    #START_HOURS_RANGE=3-22
    START_HOURS_RANGE=0-24

    #period in days delay in minutes job-identifier command
    1 5 cron.daily nice run-parts /etc/cron.daily
    7 25 cron.weekly nice run-parts /etc/cron.weekly
    @monthly 45 cron.monthly nice run-parts /etc/cron.monthly


    ```
    追加の質問になってしまい恐縮ですが、ご教示の程よろしくお願いいたします。

    キャンセル

  • 2017/02/16 17:24 編集

    若干異なります。
    cron.dailyについて回答いたします。
    ```
    1 5 cron.daily nice run-parts /etc/cron.daily
    ```
    上記の左から、
    1→何日おきに実行するか
    5→実行までの待ち時間(分)
    となります。

    ですので、0時にサーバが起動しており、ジョブを実行できる状況の場合、
    0:01にanacron が起動し(anacron は毎時1分に起動します。)
    0:06~0:07の間にジョブが実行されるということになると存じます。
    (0時を例に取りましたが、他の時間でも同様です。)

    キャンセル

  • 2017/02/17 18:11

    /etc/cron.d/ の下にファイルを作成すれば、遅延なしで実行されませんでしょうか?

    キャンセル

  • 2017/02/20 11:17

    TaichiYanagiya さま
    お返事が遅くなりました。すみません。

    本題ですが、ご提示頂いた内容でも問題ないかと存じます。

    RHEL6でも結局は、/etc/cron.d/0hourlyをcronが実行し、
    anacronコマンドが実行されるという流れの認識です。

    キャンセル

+1

さらっとドキュメントを見ました。
初めからだとこんな感じだと思います。

全部rootユーザーで

インストール
# yum -y install cronie

実行シェルを作る
# vi /opt/backup/backup.sh

権限追加
# chmod +x /opt/backup/backup.sh

crontabに追加
# vi /etc/crontab

確認、スタート、自動化
# systemctl status crond.service
# systemctl start crond.service
# systemctl enable crond.service

第21章 システムタスクの自動化
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Automating_System_Tasks.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

18 15 * * *  root /opt/backup/backup.sh 1>/tmp/backup.log 2>/tmp/backup.error.log


とか、まずはログをちゃんと出してみてはいかがでしょうか。
あと、

sudo sh /opt/backup/backup.sh


とか、直接実行した場合は正しく動く事は確認できているのでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/16 16:33

    ご回答ありがとうございます。
    ログ出力ですが、起動すらできていないで、指定したフォルダにログが作成できませんでした。
    なお、手動での実行は正常に動作することを確認しています。

    キャンセル

同じタグがついた質問を見る

  • CentOS

    3086questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • cron

    210questions

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