web-dev-qa-db-ja.com

プログラムが常に実行されているが、rootアクセスがないことを確認するにはどうすればよいですか?

現在、プログラムを常に実行する必要がありますが、サーバーを再起動すると、プログラムを手動で実行する必要があります。そして時々それが起こるとき私は利用できない。

ルートアクセス権がなく、管理者がプログラムをインストールしたくないため、サーバーの起動時に通常の構成を使用してプログラムを再起動することはできません。

4
Aragorn

私はこれを 同様の質問 に投稿しました


cronデーモンがある場合、事前定義されたcronタイムフックの1つは@rebootであり、これはシステムの起動時に自然に実行されます。 crontab -eを実行してcrontabファイルを編集し、次の行を追加します。

@reboot /your/command/here

これはすべてのcronデーモンに対して定義されているわけではないため、特定のデーモンで機能するかどうかを確認する必要があります。

4
Michael Mrozek

より一般的な解決策は、プログラムが数分ごとに実行されているかどうかを確認するcronジョブを設定することです。通常のユーザーとしてdircproxyを実行すると、crontabエントリは次のようになります。

*/10 * * * * /path/to/dircproxy_cron.sh

3
grendel

これは一般的な質問に対する答えではありませんが、おそらく言及する必要があります。

UnixおよびUnixライクなシステムは、マルチユーザーオペレーティングシステムであるため、マルチユーザー環境でよく使用されます。このため、このようなシステムの管理者は、システムのすべてのユーザーの不安定性や不安定性につながる可能性があるため、不明なサービスやソフトウェアのインストールをためらうことがよくあります。したがって、最初のステップは

  1. 管理者がサービスのインストールを望まない理由を特定します。
  2. 管理者の懸念に対処する何らかの方法でタスクを実行できるかどうかを検討してください。
  3. そうでない場合は、管理者の懸念が有効かどうかを判断します。つまり、「これにより不安定性や他のユーザーが発生する可能性がありますか?」、「これが他のユーザーのパフォーマンスに影響を与える可能性がありますか?」、「他のユーザーがセキュリティの脆弱性にさらされる可能性がありますか?」
  4. これらすべての答えが「いいえ」の場合は、管理者の許可なしにこれを行うと問題が発生する可能性があるかどうかを自問してください。
  5. そうでない場合、またはリスクを受け入れる意思がある場合は、上記の方法のいずれかを試してください。
1
Steven D

さらに信頼性の高い解決策は、 Monitgod のような監視ツールを使用することです。このツールは、プロセスが停止していることを自動的に検出し、再起動中に発生したかどうかに関係なく再起動します。

それはやり過ぎだと思うかもしれませんが、実際にはMonitの構成は次のように単純です。

check process foo with pidfile /var/run/foo.pid
  start program  "foo_start"
  stop program  "foo_stop"
  if 5 restarts within 5 cycles then timeout

もちろん、管理者が監視ツールをインストールしてくれることを前提としているため、鶏が先か卵が先かという問題になる可能性があります:)

0
Adam Byrtek

私はお勧めします http://supervisord.org/ それはあなたのプロセスを監督し、あなたのためにそれを再起動し、多くの設定を持っており、通常のユーザーとして実行されるべきです。

0
rkthkr