• 締切済み

cronで複数実行される

いつもお世話になっています。 Solaris2.6ですが、cron実行でバックアップやらログローテートやら行っていたのですが、 先日、以下のことをやってしまい、二重実行されるようになってしまいました。 ・通常、rootでのcron実行 ・間違えて、一般ユーザのcronにrootとまったく同じものを書き込んでしまった。 ・一回検証で実行して気付き、一般ユーザのcronを削除(crontab -r)した。 これで、再度検証したときに問題なく動作していたようだったので(/var/cron/logを確認していないのがまずい・・・)、そのままにしておいたのですが、 その後、常にスクリプトが二回ずつ実行されるようになってしまいました。 何度もcrontabを確認し、しまいにはcronデーモンを再起動したのですが、今度は4つ同時に実行するようになってしまい、 さらに、cronデーモンを起動しなおしたら8つになってしまいました。 きちんと、killしているのですが、どうしてか分からず、どうしようもなくなっています。 再起動以外に何か解決方法はないでしょうか。 よろしくお願いいたします。

みんなの回答

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

今、手元にSolaris9しかないのですが、 各ユーザ毎のcrontabの設定は /var/spool/cron/crontabs/ユーザ名 というテキストファイルに記述されています。 直接エディタで修正したり、削除してもよいです。 Sol2.6は違うディレクトリかもしれませんが、似たような仕組みだと 思います。 確認してみてください。 また、psコマンドでcronプロセスが複数動いていたら、killコマンドで どちらかを終了させてください。

RiseiT
質問者

お礼

大変遅くなり申し訳ありませんが、回答ありがとうございました。 xjdさんからいただいた方法は試していたのですが、それでも正常に戻らなかったのです。 結局、数日後、何もしていないのですが、正常に戻っていました。 はっきりいって訳がわからなく、私も勉強不足です。 どうもありがとうございました。

関連するQ&A

  • cronが実行されない

    環境:Vine Linux 2.6CR 現在、毎朝4時に、自分で作成したシェルをcrontabで登録して実行させているのですが、cronが動いてくれません。 psで、crondの実行は確認できています。 それと、cronの登録方法は、crontab -eで登録し、シェルは、/etc/cron.dailyに格納しています。 パスも登録しているのですが、実行してくれません。 どこがおかしいのでしょうか? アドバイスをお願いいたします。

  • PHPからcronを編集したい

    ブラウザから時間を指定してリクエストを投げると下記PHPを実行するプログラムがあります。 shell_exec("echo {$pass} | sudo -S sh -c 'cat {$root_dir}/craw/crontab.txt > /var/spool/cron/crontabs/{$cron_user}'"); shell_exec("echo {$pass} | sudo -S chown {$cron_user}:crontab /var/spool/cron/crontabs/{$cron_user}"); shell_exec("echo {$pass} | sudo -S chmod 600 /var/spool/cron/crontabs/{$cron_user}"); 実行はちゃんと行われて、/var/spool/cron/crontabs/userの中身もちゃんと期待したとおりに変更されています。 しかし、いくら待っても登録したjobが実行されることはありません。(/var/log/syslogを見ても実行された形跡はありません) shell_exec("echo {$cron_pass} | sudo service cron restart"); を付け加えてみても結果は同じでした。 crontab -eで編集→保存とするとちゃんと反映されるようです。 どのようにすればPHPからcronを登録できるでしょうか。 よろしくお願い致します。

  • cronについて教えてください

    こんばんは。 Redhat Linuxを使用しております。 今回Cronで不要ファイルの削除を設定したいのですが、 その方法でわからない点があります。 「/etc/cron.monthly、cron.weekly、cron.daily、cron.hourly」 などの配下にシェルを置き、「/etc/crontab」ファイルの記載から これらシェルを呼び出すと思っています。 で「/var/spool/cron/user」ファイルなるものがありますが、 これの使用用途が分からず・・。 「/var/spool/cron/user」は必須の設定項目でしょうか?。 すみませんがアドバイスお願いします。

  • cronが急に動かなくなった

    こんにちわ。RedHat7.0なのですが、昨日まで快適に動いていた cronが突然動かなくなりました。 というのは、var/log/cronに何も吐かれなくなりました。 実際にcrontabに何か設定しても実行されません。 crondは起動していることを確認しました。 考えられる原因としては昨日システム日付を何度も変えた 事くらいでしょうか・・・。 今は正しい日付に戻してあるのですが、その作業をした 昨日の夕方からlogには何も吐かれなくなったので怪しいですよね。 解決策などアドバイスをいただけると嬉しいです。 宜しくお願いいたします。

  • cronでシェルスクリプトが実行されない

    Linuxでファイルのバックアップを取るため backup.shというシェルスクリプトを組み、コマンドから実行する場合問題ないことを 確認しています。ところがcronに設定し自動実行すると内容が実行されておりません。 /var/log/cronを確認したところ時間通り実行されているというログは残っています。 /var/spool/cron/にrootというファイルを作成し 00 23 * * * /BACKUP/backup.shを実行させたいのです。 なぜ、手動の場合は問題がないのにcronで設定すると問題が生じるのでしょう? もし、お分かりの方は教えてください。 OSはRed Hat Linux release 8.0 (Psyche)です。

  • cron で rsync が実行できない

    サーバ2台を使い rsync にて 同期をとっているのですが、 cron を使って自動化しようとしたところ ツマづいてしまいました。 rsync -au -e ssh {from} {to} 手動にて上記実行するとコピー実行できるのですが * * * * * rsync -au -e ssh {from} {to} >> err と crontab を設定したところ コピーが出来ていません。 /var/log/cron をみると1分置きに (root) CMD (rsync -au -e ssh {from} {to} >>err) とあり実行はされているようです err を確認しましたが特にエラー記述もありませんでした。 どういった箇所を調べればよいか助言いただけると助かります。 よろしくお願いします。

  • cronの挙動について

    cronの挙動について教えてください。 現在user「AAA」のcronにシェルスクリプトを登録しています。 コンソールから登録してあるスクリプトが正常に起動できることは確認できております。 しかしcron経由でコマンドが実行できない状態(/var/log/cronにコマンドを実行した履歴は残っています)でした。 色々試したところ、スクリプトの先頭で.bashrc(user「AAA」のもの)をsourceコマンドで実行するようにしたところ、cronからも起動できるようになりました。 (.bashrcには、スクリプト実行に必要な環境変数やパスの設定がされています) そこで質問なのですが、 (1) cronでコマンドを実行する場合、.bashrcは明示的に実行しなければいけないのでしょうか。 cronで実行される場合、ログインした状態と同じ環境で実行されるとばかり思っていたため、見落としていたのですが・・・。 以上、よろしくお願いいたします。

  • cronによるgriveの実行について

    Ubuntu13.10 64bitを使用しています。 cronを用いて定期的にgriveコマンドを実行し、GoogleDriveのフォルダを同期させようと考えています。 crontabには以下のように記述しました。 */15 * * * * /foo/bar/bin/grive.sh また、/foo/bar/bin/grive.shは以下のようになっています。 #!/bin/sh cd /foo/bar/googledrive/ grive しかし、同期を行ってくれていないようです。 /var/log/syslogを確認しましたが、以下のようなログが残っているので、一応実行されているとは思うのですが… Jan 21 10:15:01 bar CRON[28561]: (bar) CMD (/foo/bar/bin/grive.sh) Jan 21 10:15:01 bar CRON[28560]: (CRON) info (No MTA installed, discarding output) 直に端末から「/foo/bar/bin/grive.sh」と打った時には正常に実行されることを確認済みです。 なお、/foo/bar/bin/にはパスを通してあります。 また、/foo/bar/bin/grive.shの中身を以下のように置き換えた場合は実行されて、ディレクトリも生成されました。 #!/bin/sh mkdir ~/testdir どうすれば、cronでgriveを実行できるようになるのでしょうか。 回答よろしくお願いいたします。

  • cronが動かない

    cron初心者なのでお願いいたします。 fedora5で以下のようなCronを動かそうとしています。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin HOME=/htdocs/program 45 18 * * * perl U9901.pl rootで作成し、/var/spool/cronのrootの実行権限は755になっています。 しかし実行されません。 編集後、crondは再起動しています。 どのような原因が考えられますでしょうか? 過去ログも見たのですが、それらしいものが無かったので質問させてください。 お願いします。

  • cronでpg_dumpの実行

    こんにちわ。 Linuxでcronを設定しPHPからexecで「pg_dump」を実行しようとしています。 エラーになり実行ができません。 設定は /var/spool/cron ディレクトリに 『crontab -e -u postgres』でコマンドを実行し SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO='' HOME=/ 08 19 * * * postgres /usr/bin/php /home/var/b_dump.php とcrontabに記載しています。 コマンドの実行はrootユーザで 権限は777 にしています。 メールを届くようにしているのですが、届くメールは 『postgres does not know where to find the server configuration file. You must specify the --config-file or -D invocation option or set the PGDATA environment variable.』 と届きます。 googleで検索したのですが、解決方法がわかりません…。 読みにくい文章で申し訳ないのですが、解決方法のご教授を お願いします。