24

UbuntuEC2インスタンスでcronを動作させることができない理由を理解するために2日間を費やしました。ドキュメントを読みました。誰か助けてもらえますか?私が欲しいのは、動作するcronジョブを取得することだけです。

cronをテストするために単純なwgetコマンドを使用しています。これがコマンドラインから手動で機能することを確認しました。

/usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

私のcrontabファイルは次のようになります。

02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

コマンド間に単一のスペースがあり、コマンドの下に空白行があります。また、このコマンドをシステムレベルから実行しようとしましたsudo crontab -e。それでも機能しません。

cronデーモンが実行されています:

ps aux | grep crond                                                                                                                   
ubuntu    2526  0.0  0.1   8096   928 pts/4    S+   10:37   0:00 grep crond

cronジョブが実行されているようです。

$ crontab -l
02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

誰かアドバイスや可能な解決策はありますか?

御時間ありがとうございます。

4

8 に答える 8

42

Cronは、他のLinuxサーバーと同じように、AmazonベースのLinuxサーバーで実行できます。

  1. SSHを使用してコンソールにログインします。
  2. crontab -eコマンドラインで実行します。
  3. これで、現在のユーザー(デフォルトでは、root権限を持つコンソールユーザー)のcrontabのviエディター内にいます。
  4. cronをテストするには、次の行を追加します。* * * * * /usr/bin/uptime > /tmp/uptime
  5. 次に、ファイルを保存してviを終了します(Escキーを押して:wqと入力します)。
  6. 1〜2分後、稼働時間ファイルが/ tmp(cat /tmp/uptime)に作成されたことを確認します。
  7. uptimeコマンドラインでコマンドを入力して、現在のシステムの稼働時間と比較します。

上記のシナリオは、Amazon Linux O / Sがインストールされているサーバーで正常に機能しましたが、他のLinuxボックスでも機能するはずです。これにより、システムのcrontabに触れることなく、現在のユーザーのcrontabが変更され、自分のユーザーで実行しているため、crontabエントリ内のユーザーは必要ありません。より簡単に、そしてより安全に!

于 2013-06-07T14:23:54.983 に答える
26

cronデーモンが実行されていません。実行しているときps aux | grep crond、結果はgrepコマンドのみが実行されていることを示しています。を実行するときは常にこれに注意してくださいps aux | grep blah

このコマンドを実行して、cronサービスのステータスを確認します。

試す:

sudo service crond status

ここでの追加情報:http ://www.cyberciti.biz/faq/howto-linux-unix-start-restart-cron/ 。

于 2012-07-16T08:14:10.430 に答える
13

一部のAWSUbuntuEC2マシンでは、cronジョブを編集したり、を使用して実行したりすることはできませんcrontab -esudo crontab -e何らかの理由で)。私はcronジョブを次の方法で動作させることができました:

  1. touch /home/ubuntu/crontest.logログファイルを作成するには
  2. sudo vim /etc/crontabシステム全体のcrontabを編集します
  3. rootユーザーを使用して、最後から2番目の行に独自のcronジョブを追加します。たとえば* * * * * root date && echo 'It works!'>> /home/ubuntu/crontest.log 2>&1、手順1で作成したログファイルにstdoutとstderrをダンプします。
  4. 1分間待ってcat /home/ubuntu/crontest.logから、cronジョブの出力を確認して動作していることを確認します
于 2019-04-02T16:09:15.870 に答える
3

として実行するユーザーを指定することを忘れないでください。/etc/cron.dやりたいことにちなんで名付けられた新しいファイルをフォルダ内に作成してみてください。getnytimesそのファイルの内容は次のようになります。

02 * * * * root / usr / bin / wget -O / home / ubuntu / backups / testfile http://www.nytimes.com/

于 2012-05-06T16:32:43.680 に答える
2

私の場合、cronジョブは機能していましたが、実行中のスクリプトが失敗しました。失敗の理由は、スクリプト内のインクルード行で絶対パスではなく相対パスを使用したことが原因でした。

于 2016-08-06T08:54:32.057 に答える
1

私にとってのトリックは何でしたか

  1. crontabがアクティブであることを確認してください。
    sudo service crond status
  1. 次のコマンドを実行してcrontabを再起動します。
    sudo service crond restart
  1. 通常どおりcronジョブを再スケジュールします。
    crontab -e
于 2020-12-15T19:07:00.443 に答える
0

ランニング

/usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

エラーが発生します

/home/ubuntu/backups/testfile: No such file or directory

これはあなたの問題ですか?cronは、stderrをstdoutにリダイレクトして、次のようなエラーを確認できる場所にこのエラーを書き込んでいないと思います。

02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/ > /home/ubuntu/error.log 2&>1 
于 2015-08-23T15:21:55.193 に答える
0

cronjobが実行されない理由の1つ:サーバー時間とcronjob時間が同じであることを確認してください。このため、私は多くの時間を無駄にしました。

于 2018-09-10T20:45:43.143 に答える