0

私はLinuxに本当に慣れていないので、これが初歩的なものであるとお詫びしますが、Googleが明確でない例を見つけてしまい、混乱しています。(質問はCentOs 6を実行しているサーバーに関連しています)

私の質問は次のとおりです。

  1. cronジョブで実行できるように.shファイルを保存する必要があるデフォルトのディレクトリがわかりません。
  2. 以下の.shファイルのコードの構文とシーケンスは正しいですか?

TSQLとその問題をテストしました。

#! SQL="DELETE FROM messages WHERE date < DATE_SUB(CURDATE(), INTERVAL 7 DAY)"

MYSQL_USER="root"
MYSQL_PASS="xxxxxx"
MYSQL_DB="mydb"

毎日それを行うには、cronにこれが含まれている必要があることを理解しています。

0 0 * * *

しかし、私はそれをすべてまとめる方法について少し不安を感じているので、物事を台無しにしないでください。完全な例または説明または参照リンクをいただければ幸いです。

4

1 に答える 1

1

cron次の場合、スクリプトはどのディレクトリにある場合でも実行されると思います。

  • ファイルには、cronとして実行されるユーザーの実行権限があります(通常root、ジョブがシステム全体のcrontabで構成されている場合)
  • このcron行は、スクリプトへのフルパスを指定します

したがって、スクリプトが/opt/script.shの場合、これをcronで指定します。

0 0 * * * /opt/script.sh

毎日12:00amにscript.shを実行します。

これがシステム全体のcrontab(/ etc / crontab)である場合は、コマンドを実行するためのユーザー名も含める必要があることに注意してください。

0 0 * * * username /opt/script.sh

また、作業時に確認する必要がcronあるのは、スクリプトから外部コマンドを呼び出すときにフルパスを使用するか、PATH変数を(スクリプト自体またはcrontabファイルのいずれかで)設定することです。通常、cronジョブが実行される環境はかなり制限されているため、これが必要になります。

もう1つ覚えておくべきことは、cronジョブによって出力が生成された場合、この出力はcronを実行しているユーザーにメールで送信されるということです。したがって、スクリプトからフィードバックを得るには、メールメッセージが人間によって読み取られるメールボックスに送信されるようにシステムを設定するか、スクリプトがすべての出力をログファイルまたはsyslogに送信する必要があります。

于 2013-01-24T14:37:04.267 に答える