cron.dailyジョブが実行されていません


19

毎日3つのcronジョブを作成して実行しました。

以下はetc / cron.dailyに配置される3つです。

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' me@email.com

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" me@email.com

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' me@email.com

me@email.com ofcourseをメールに置き換えました。

このcronjobを手動で実行すると、正常に動作します ./nameoffile.sh

しかし、毎日実行されるわけではありません。何が原因なのか、どのように確認できますか?


2
cron.daily / weekly / hourly / etcで作成したファイルが実行可能であることを確認してください。chmod+ x /etc/cron.daily/whatever
Turgut Kalfaoglu

回答:


6

通常、cronジョブを実行できない原因となる可能性のある2つの疑いがあります。

1つ目は権限の問題です。つまり、ユーザーはスクリプト/コマンドを実行できますが、ジョブが間違ったユーザーのcronジョブにあるため、cronデーモンは実行できません。たとえば、ユーザーはスクリプトを作成するか、昇格した特権でコマンドを実行します(例:を使用)。sudoテストしたスクリプト/コマンドをcronジョブのリストに追加します(crontab)。その結果、昇格された特権が必要になるため、ユーザーのcronジョブを実行できなくなります。

  • 現在のユーザーのcrontabタイプにcronジョブを配置するには crontab -e
  • ルートのcrontabタイプにcronジョブを配置するには sudo crontab -e

2番目の理由はパスです。スクリプトが確実に実行されるようにするために、ユーザーはcrontabで実行されるスクリプトに完全なパスを追加する必要があります。別の解決策は、crontabファイルの先頭に次の行を追加して、rootユーザーのPATH変数を拡張することです。

PATH=/usr/sbin:/usr/bin:/sbin:/bin

コミュニティwikiが言及しているように

あなたは読むことをお勧めしますコミュニティのwikiを それが上記に関する更なる詳細を提供としてのcronについて。


だから、そこにファイル名を入れるだけですか?
sonicboom

実際には、ルート用の以前のcronジョブはないということで、最初にcronジョブを作成してから、crontabを変更するためにエディターを選択するように求めます。メニューから1つを選択します(1.bin / edなど)。nanoを簡単に選択し、指示に注意を払ってください。
スティーフK

1日1回、午後10時に実行するには、* 22 * * * test> rkhunter.shと入力しますか?
sonicboom

ああすごい!今すぐ試してみてください!
sonicboom

test> rkhunter.shとは何ですか?
sonicboom

75

この応答によると、問題は.sh拡張子にあります。それを削除します(たとえば、ファイル名をrkhunter.shからrkhunterに変更します。

確認するには、次のコマンドを実行します run-parts --test /etc/cron.daily

スクリプト(rkhunter)が結果に含まれている場合、すべてが適切です。run-partsコマンドの詳細については、manページをご覧くださいman run-parts


1
これは私が探していた答えです、さまざまなテストの後、sh拡張子のない別のスクリプトファイルが実行されることに気付きました
アルバート・カタラ

5
@rharrisoが答えで言ったように。「.sh」の問題ではなく「。」の問題ではありません。任意の拡張子を持つファイルは失われます。man run-parts「名前は、ASCIIの大文字と小文字、ASCII数字、ASCIIアンダースコア、およびASCIIマイナスハイフンのみで構成する必要があります」から直接引用するには
北ブラッドリー

10

拡張子を持つファイルは無視されると思います。

実行:

 run-parts --test /etc/cron.daily

スクリプトがリストに表示されない場合は、.sh拡張子を削除してから再試行してください。


10

私のシステムでは、anacronがインストールされていなかったためです。

grep run-parts /etc/crontab

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

そのため、anacronをインストールするか、テスト-x / usr / sbin / anacronを削除します


1
+1 anacronはデフォルトでインストールされていませんか?私はそれを期待していたでしょう。それで解決できると思います。ありがとう。
lepe

案の定、それは...地雷にありませんでしたFFS、私は確かだったのです、スクリプトは前!:数ヶ月を実行していたとしてdpkg --get-selections | grep cron.. <誓う>
Grizly

はい、それは通常起動時にインストールされるパッケージなので、何が起こったのかもわかりません。
ナティム

9
これは本当に正しくありません。anacron必要ではありません。||crontabファイル内のオペレータは、実行コマンドrun-partsにanacronがインストールされていないとき。ときにanacronインストールされている、それはそれらの毎日/毎週/毎月作るrun-partsのコマンドを冗長化。
TalkLittle

それはおそらく、実行部分が機能しなかったからでしょうか?いずれにしても、anacronをインストールすることで修正されました。
ナティム

5

Stefの回答に加えて、実行可能ビットがあることも確認する必要があります。

$ ls -l
-rwxr-xr-x  1 root root   268 Jun  1 08:06 00logwatch
-rwxr-xr-x  1 root root   311 May 22  2012 0anacron
-rwxr-xr-x  1 root root 15007 Jun  6 14:08 apt

を使用して実行できるはずchmod +x filenameです。


4

.sh拡張子を持たないようにファイルの名前を変更します

これが問題であることを確認するには、試してください

sudo run-parts --list /etc/cron.daily 

リストにないことがわかります。だから実行:

mv script.sh script

もう一度リストしてみてください。リストされるはずです。


この問題は、拡張子を持つ実行可能ファイルに影響するようです。「filename.ca」というファイル名があり、「filename」という名前に変更するまでリストに表示されませんでした
kiwicomb123

0

anacronで実行できませんでした。anacronを削除し/etc/crontabて実行するapt remove --purge anacronとすぐに動作します。

2つのスケジューラが必要な理由がわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.