質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

4回答

2907閲覧

Linuxでcrontab自体の自動更新

yahiro2416

総合スコア8

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/03/01 20:12

最近オペレーターとして就職しました。
Linuxの知識が少々ある程度です。

仕事の中で決まった時間内にcrontabの更新を
手動で行う業務があります。

この時間指定の範囲が狭くいつもせわしなく作業しています。

cron内の削除でも追加でも実態はただのテキストファイルの更新なので
事前に対象コマンドを指定しておいて、時間になったら処理する
シェルやスクリプトでどうにかならないでしょうか。

周りはこれでいいと思っているので頼りになりませんでした。

何か一般的な方法があれば教えてください。
質問が抽象的なので、学べば良い方向性などを教えて頂けるだけでも助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2018/03/01 20:24

どうも質問の趣旨がよくわかりません。決められた時間に自動で何か行うからcrontabなので、それに合わせて「手動で」何かするというのが根本的に矛盾しているような。cronで呼び出しているのがシェルスクリプトなら、時間ないだろうが時間外だろうが、そのシェルスクリプトを書き換えればよいことです。
退会済みユーザー

退会済みユーザー

2018/03/01 23:15

なぜ定期的に書き換える必要があるのか?
Zuishin

2018/03/01 23:20

周りがこれでいいと言うからにはそうしなければならない理由もしくはあなたの提案ではうまくいかない理由があるはずです。どうしてそれでいいと言うのかきちんと聞いて問題を把握した後に質問を編集し直してください。
rogueref

2018/03/02 01:20

crontabをcronで更新か。再帰的ですね。。ぱっと思いつくのは、crontabに記述されている数字や文字列が時間やタイミングによって変化するとか。それならば、crontabで起動する対象をシェルスクリプトにしておいて、起動されるシェルスクリプトで変化する数字や文字列を自動的に取得するようにすればいいような気がします。
guest

回答4

0

ベストアンサー

cronの設定自体をいじるのではなく、cronから呼び出されるシェルスクリプトの中で「日程ファイル」みたいのを参照して、処理を実行するかしないか決めるようにすればいいのではないでしょうか。
あなたは毎時間なにか判断して「xx時からyy時までは仕事しない」みたいなのを所定の形式で日程ファイルに書き込むのです。
それにしても省力化のためのcronのはずなのに、それに追われて人間が苦労を強いられているとはね…。

投稿2018/03/02 13:33

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそも、決まった時間にcrontabを書き換える必要があるという運用自体が間違っています。
直すのはそこからですね。

もし、そこまで手を付けられないと言う事であれば、crontab ファイル名で指定したファイル内容で上書きできますので、このコマンドをcrontabに登録すればいいでしょう。あくまで次善(次々善?)の策です。

投稿2018/03/02 04:38

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yahiro2416

2018/03/02 07:51

そこです!もし運用自体が間違ってる場合は、どのような運用が一般的か教えて頂けないでしょうか。 それがなぜ適用できないか現場に聞いてみます。
otn

2018/03/02 08:09

何故書き換える必要があるのかによります。 そもそもそれが不思議なので。 例としては、 「平日に処理を行いたい。土日はcrontabの書き方で除けるが、祝日はその都度手作業でcrontab書き換え」 ⇒ 「平日に必ず処理を行い、処理の先頭で祝日一覧を見て、当日が祝日ならそこで中断」 「毎日必ず処理を行い、処理の先頭で土日祝日かを判断して、当日が休日ならそこで中断」 「crontabを使わず、カレンダー管理機能付きの、ジョブスケジューラを使う」 (参考:ジョブ管理システム https://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%96%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0 ) とか。
yahiro2416

2018/03/02 12:35

そこが伝わらないのが、わたしもちょっと不思議です。 スケジュール自体を変更自体は不思議ではないと感じるのですが。 基本は以下です。 1時間おきに自動実行される処理があるとして。 【特定日時は実行したあとにやめたい】 →特定時間以降の次の処理までに削除する→1時間以内の作業。 【特定日時から実行をはじめたい】 →特定日時の1時間以内に入力をする必要がある→1時間以内の作業 こういう形式です。
otn

2018/03/02 16:38

一般的には先に書いた通りです。 がんばってください。
guest

0

cronの設定ファイル自体実行ユーザーごとにわけられているので
rootのcronか何かで別ユーザーのcronファイルを強制的にechoしたテキストを
リダイレクトして書き換えてもよいかもしれません

投稿2018/03/02 01:56

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

他の方もコメントされているように、そもそも質問自体に?な部分が多いので、
以下は参考程度にしていただければ。

=====
具体的にどのような更新を行っているのかがわからないので、的はずれな回答かもしれませんが、
ansibleという構成管理ツールでcronの変更ができるようです。
https://qiita.com/bmf_san/items/54ed921693a187e012bf

ansibleのplaybookという構成定義ファイルをメンテナンスする必要があるので微妙かもしれませんが、「crontab -e」するよりは多少良くなるかもしれません。

投稿2018/03/01 23:07

編集2018/03/02 05:16
bassbone

総合スコア767

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問