55153


**質問**  
・このファイルは何をやっているのですか？  
・削除もしくはコメントアウトしても良いですか？  
・実行しないようコメントアウトする場合は、どこをコメントアウトすれば良いですか？

* * *

**質問経緯**  
・cronのログを確認したら、1時間に1回定期的に実行している処理がありました  
・設定した覚えはないため、必要がないのであれば実行しないようにしたい

[code]

    $ sudo less /var/log/cron
    May 22 04:49:02 xxxx CROND[26023]: (root) CMD (run-parts /etc/cron.hourly)
    May 22 04:49:02 xxxx run-parts(/etc/cron.hourly)[26023]: starting 0anacron
    May 22 04:49:02 xxxx run-parts(/etc/cron.hourly)[26032]: finished 0anacron
    May 22 04:49:02 xxxx run-parts(/etc/cron.hourly)[26023]: starting 0yum-hourly.cron
    May 22 04:49:02 xxxx run-parts(/etc/cron.hourly)[26038]: finished 0yum-hourly.cron
    May 22 05:49:03 xxxx CROND[26159]: (root) CMD (run-parts /etc/cron.hourly)
    May 22 05:49:03 xxxx run-parts(/etc/cron.hourly)[26159]: starting 0anacron
    May 22 05:49:04 xxxx run-parts(/etc/cron.hourly)[26168]: finished 0anacron
    May 22 05:49:04 xxxx run-parts(/etc/cron.hourly)[26159]: starting 0yum-hourly.cron
    May 22 05:49:04 xxxx run-parts(/etc/cron.hourly)[26174]: finished 0yum-hourly.cron
    May 22 06:49:03 xxxx CROND[26792]: (root) CMD (run-parts /etc/cron.hourly)
    May 22 06:49:03 xxxx run-parts(/etc/cron.hourly)[26792]: starting 0anacron
    May 22 06:49:03 xxxx run-parts(/etc/cron.hourly)[26801]: finished 0anacron
    May 22 06:49:03 xxxx run-parts(/etc/cron.hourly)[26792]: starting 0yum-hourly.cron
    May 22 06:49:03 xxxx run-parts(/etc/cron.hourly)[26807]: finished 0yum-hourly.cron
    
[/code]

* * *

**試したこと1**  
・呼び出し箇所と思われる箇所を調べましたが、分かりませんでした

[code]

    $ less /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    # MAILTO=root
    
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- 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
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    
[/code]

* * *

**試したこと2**  
・ファイル場所の確認

[code]

    $ ls -l /etc/cron.hourly
    合計 8
    -rwxr-xr-x. 1 root root 392  4月  1  2016 0anacron
    -rwxr-xr-x. 1 root root 362 12月  4  2015 0yum-hourly.cron
    
[/code]

* * *

**試したこと3**  
・ファイル中身の確認

・/etc/cron.hourly/0anacron  
・今日0anacronが実行されたかどうかを確認している？ 1時間おきに？ 何のために？

[code]

    $ less /etc/cron.hourly/0anacron
    #!/bin/sh
    # Check whether 0anacron was run today already
    if test -r /var/spool/anacron/cron.daily; then
        day=`cat /var/spool/anacron/cron.daily`
    fi
    if [ `date +%Y%m%d` = "$day" ]; then
        exit 0;
    fi
    
    # Do not run jobs when on battery power
    if test -x /usr/bin/on_ac_power; then
        /usr/bin/on_ac_power >/dev/null 2>&1
        if test $? -eq 1; then
        exit 0
        fi
    fi
    /usr/sbin/anacron -s
    
[/code]

・/etc/cron.hourly/0yum-hourly.cron  
・「このフラグ」は何を指していますか？

[code]

    $ less /etc/cron.hourly/0yum-hourly.cron 
    #!/bin/bash
    
    # Only run if this flag is set. The flag is created by the yum-cron init
    # script when the service is started -- this allows one to use chkconfig and
    # the standard "service stop|start" commands to enable or disable yum-cron.
    if [[ ! -f /var/lock/subsys/yum-cron ]]; then
      exit 0
    fi
    
    # Action!
    exec /usr/sbin/yum-cron /etc/yum/yum-cron-hourly.conf
    
[/code]

* * *

**試したこと4**  
・rpmコマンドの-fオプションで対象ファイルがどのパッケージに属するものか確認

[code]

    $ rpm -qf /etc/cron.hourly/0anacron 
    cronie-anacron-1.4.11-14.el7_2.1.x86_64
    
    $ rpm -qf /etc/cron.hourly/0yum-hourly.cron 
    yum-3.4.3-132.el7.centos.0.1.noarch
    
[/code]

* * *

**試したこと5**  
・rpmコマンドの-iオプションでパッケージの説明(概要)を確認  
・cronie-anacron

[code]

    $ rpm -qi cronie-anacron
    Name        : cronie-anacron
    Version     : 1.4.11
    Release     : 14.el7_2.1
    Architecture: x86_64
    Install Date: 2016年09月14日 10時19分25秒
    Group       : System Environment/Base
    Size        : 41587
    License     : MIT and BSD and ISC and GPLv2+
    Signature   : RSA/SHA256, 2016年04月01日 05時00分11秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : cronie-1.4.11-14.el7_2.1.src.rpm
    Build Date  : 2016年04月01日 00時09分48秒
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : https://fedorahosted.org/cronie
    Summary     : Utility for running regular jobs
    Description :
    Anacron is part of cronie that is used for running jobs with regular
    periodicity which do not have exact time of day of execution.
    
    The default settings of anacron execute the daily, weekly, and monthly
    jobs, but anacron allows setting arbitrary periodicity of jobs.
    
    Using anacron allows running the periodic jobs even if the system is often
    powered off and it also allows randomizing the time of the job execution
    for better utilization of resources shared among multiple systems.
    
[/code]

・yum

[code]

    $ rpm -qi yum
    Name        : yum
    Version     : 3.4.3
    Release     : 132.el7.centos.0.1
    Architecture: noarch
    Install Date: 2016年09月14日 10時19分11秒
    Group       : System Environment/Base
    Size        : 5761223
    License     : GPLv2+
    Signature   : RSA/SHA256, 2015年12月04日 00時39分58秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : yum-3.4.3-132.el7.centos.0.1.src.rpm
    Build Date  : 2015年12月04日 00時33分42秒
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://yum.baseurl.org/
    Summary     : RPM package installer/updater/manager
    Description :
    Yum is a utility that can check for and automatically download and
    install updated RPM packages. Dependencies are obtained and downloaded
    automatically, prompting the user for permission as necessary.
    
[/code]


CC BY-SA 4.0
2019-05-21T23:05:51.080
55152
2019-05-27T02:37:56.757
7886
question
centos cron
「/etc/cron.hourly/0anacron」と「/etc/cron.hourly/0yum-hourly.cron」について


短い答え  
`anacron` や `yum update` が起動されているログです。標準機能ですし削除しないほうが良いでしょう。

長い答え  
`cron` は「きっちりこの時間に」実処理を起動する daemon です。  
`anacron` とは「だいたいこの時間帯中 (例： 02:00-07:00)
に１回だけ実処理をする」という曖昧な時間指定による定期処理を行うツールです。 `anacron` は `cron`
から定期的に（１時間に１回）起動される、非 daemon です。 `anacron`
は起動されると、指定ジョブの前提条件を満たしているかをチェックし、ジョブを起動したり何もせず終了したりします。

よって `/var/log/cron` にもきっちり１時間に１回 `anacron` が起動されている様子が記録されています。

`cron`
を使うと、サーバが忙しかろうが暇だろうが該当時間になるとジョブが起動されます。つまり下手をこくとジョブが複数重なって超絶重い、というのはよくあります。

`anacron` を使うと指定時間帯内でサーバが忙しくないタイミングに update
の有無を確認するとかが可能となっていて、より柔軟に運用ができるとされています。

あなたが設定した覚えがないのに起動されているのは標準機能だからです。標準機能を停止させたいなら、それによる利害関係を理解したうえで行ってください。

> `/etc/cron.hourly/0yum-hourly.cron` のフラグ

`/var/lock/subsys/yum-cron` というファイルの有無がフラグとなっています。ファイルが無いとき `yum-cron`
は起動されません（つまり定期的な更新チェックを行いません）ファイルがあると定期的更新チェックを行います。

サーバー機を運用していくにあたっては  
勝手にパッケージ更新したりしないほうが良いという意見と  
直ちにセキュリティパッチを当てるべきだろうという意見が分かれるところで  
その辺を設定できるようになっています。


CC BY-SA 4.0
2019-05-22T01:21:14.667
55153
2019-05-22T01:21:14.667
8589
55152
answer


774RR
さんの回答の補足として、従来の`cron`だとタスクを設定した時間にシステム(マシン)が起動していない場合、当然設定したタスクも実行されません。(=システムが24時間稼働しているのが前提)

一方で`anacron`はタスクが実行できなかった場合でも、再実行する仕組みがあります。  
`/etc/cron.hourly/0anacron`で定期的にチェックしているのもこのためでしょう。


CC BY-SA 4.0
2019-05-27T02:37:56.757
55278
2019-05-27T02:37:56.757
3060
55152
answer