コマンドラインからバックアップスクリプトを手動で実行すると、正常に動作します。問題のバックアップは作成されませんでした。 crontabログで午前2時に実行されているバックアップエントリを表示できます/home/sgaddis/copy-production-db.sh
。
Dec 23 01:01:01 mapehr anacron[11921]: Anacron started on 2019-12-23
Dec 23 01:01:01 mapehr anacron[11921]: Normal exit (0 jobs run)
Dec 23 01:01:01 mapehr run-parts(/etc/cron.hourly)[11923]: finished 0anacron
Dec 23 02:00:01 mapehr CROND[14869]: (sgaddis) CMD (sgaddis /bin/bash /home/sgaddis/copy-production-db.sh)
Dec 23 02:01:01 mapehr CROND[14934]: (root) CMD (run-parts /etc/cron.hourly)
Dec 23 02:01:01 mapehr run-parts(/etc/cron.hourly)[14934]: starting 0anacron
Dec 23 02:01:01 mapehr anacron[14943]: Anacron started on 2019-12-23
ところで確認してみると/home/sgaddis/backup
バックアップがなかったんですよ。
私はデフォルト/バックアップフォルダなので、権限の問題ではないはずです。私のアカウントには、スクリプトを手動で実行するのと同じように、バックアップをダンプする権限が必要です。またどこで手がかりを探すべきですか?
私は行きましたhttps://linux4one.com/how-to-set-up-cron-job-on-centos-7/cronjobを作成するときに私が逃したものがあることを確認してください。
サイトを検索しましたが、同様の問題が見つかりませんでした。 cronjob が保留中または実行中ではありません。私が見つけた最も近いもの
https://stackoverflow.com/questions/44723154/using-cronjob-to-automatically-backup-mysql-files,
しかし、前の記事で述べたように、コマンドラインでスクリプトを実行していましたが、うまくいったので、上記の投稿には私の質問に対する答えはありません。
私が投稿したのと同様の問題は発生しません。同様の投稿を知っているなら、私の投稿に非推奨よりも指摘してください。
正確なルートはこれです
0 2 * * * root /bin/bash /home/sgaddis/copy-production-db.sh
==更新==
今日のログファイルのコマンドは次のとおりです。
mapehr CROND[21076]: (sgaddis) CMD (/bin/bash /home/sgaddis/copy-production-db.sh)
今私のユーザーアカウントを使用してクローンの仕事を始めましょう。
私のユーザーアカウントにcronジョブを実行する権限がない可能性があります。
答え1
こんにちは、コミュニティへようこそ!
一見すると、チュートリアルとして使用するページにはを使用するように指示されていますが、後でcrontab -e
cronエントリにユーザー名を入力する必要があることがわかります。このcrontab
ツールを使用すると、ツールを介して呼び出されたcrontabはとにかくユーザーコンテキストで実行されるため、cronエントリにユーザー名は必要ありません。構成に使用された正確な行を指定すると、この問題を正しく修正できます。
しかし、これはcronエントリの問題かもしれません。 cronエントリがある場合は、ユーザー名を削除し、タイミング設定と手動で使用した正確なコマンドのみを次のように指定します。
0 0 * * * your-command /path/to/script.sh
答え2
cronジョブをrootとして実行したいという意見は明らかです。
次の 2 つの方法でこれらのスクリプトをスケジュールできます。
- システムのcrontabに入れます
/etc/crontab
。このcrontabは、質問に示すような追加のユーザーフィールドを含むcrontabファイルです。一部のUnixシステムではこのcrontabを自動的に管理できるため、この方法はお勧めできません。代わりに... - rootユーザーのcrontabにタスクを配置します。権限がある場合は、
sudo crontab -e
一般ユーザーアカウントのコマンドを使用してrootユーザーのcrontabを編集できます。sudo
この crontab は root ユーザーの「個人用 crontab」で、root 権限を必要とするローカル予約タスクを便利に実行できます。
cron でスクリプトを実行する環境は、対話型シェルでスクリプトを実行する環境と異なる場合があります。違いは、現在の作業ディレクトリが何であるか(絶対パスまたは絶対パスからファイルをコピーするスクリプトを作成する)、どの環境変数が設定され、どの値に設定されているか(シェル起動ファイルに設定されている変数は使用できません)。明示的に表示されます)。