CentOSのシステム起動時にスクリプトを自動的に実行する方法


8

TeamCity ib CentOS 6.2 Minimalをインストールしました。システムの起動時に自動的にスクリプトを実行しようとすることに行き詰まっています。

/opt/TeamCity/bin/teamcity-server.sh start

私はグーグルでいろいろ試してみましたが、すべて失敗するようです。ほとんどのメソッドは、rc.localファイルの1つに起動スクリプトを追加することを示しています。

/etc/rc.d/rc.local
/etc/rc.local

そしてrc.localの内容には次の行が含まれています:

/opt/TeamCity/bin/teamcity-server.sh start

teamcityサーバーを起動するものはありません

スクリプトを手動で実行しても問題はありません。

単純なようですが、シェルスクリプトを自動実行するにはどうすればよいですか?


1
「どれも機能しない」という意味を説明する必要があります。それがなければ、誰もが推測しているからです。たぶん、あなたが何をしたのか、どのような出力や失敗のメッセージやイベントが発生したのかを詳しく説明してください。
EightBitTony

それはそれを置くのに適切な場所なので、何かが/etc/rc.d/rc.localエントリまたはスクリプト自体と調和していないようです。スクリプトの内容とrc.localを投稿できますか?また、手動で実行するとteamcity-server.shシェルスクリプトが実行されますか?
クインマーフィー

はい、teamcity-serverは手動で正常に動作します。しかし、サーバーを再起動するたびにこれを行うのは現実的ではありません...
atp03

rc.localを介さずに手動で実行すると、環境に違いが生じます。あなたの道は何ですか?他の環境変数はありますか?
cjc

@cjc 'PATH'の意味がわからない-ただし、/ etc / rc.d / rc.localを手動で実行すると、teamcityサーバーも正常に起動します。これはまだ違いがありますか?
atp03

回答:


15

teamcity開始スクリプトがLSB準拠のinitスクリプトである場合(つまり、startstopおよびその他の引数を提供する場合)、スクリプトを/etc/init.dフォルダーにコピーして(rootとして)実行するだけです。

# chkconfig --add <script_name>
# chkconfig <script_name> on

ファイルのシンボリックリンクも問題ないはずです。(rootとして)試してください:

# ln -s /opt/TeamCity/bin/teamcity-server.sh /etc/init.d/teamcity-server
# chkconfig --add teamcity-server
# chkconfig teamcity-server on

初期化時に開始されないが、問題なく手動で開始する場合は、以下を確認する必要があります。

  1. 権限(プログラムをrootとして実行できない可能性があります。rootとしてログオンして実行してみてください)、および;
  2. あなたのPATH(おそらくスクリプトは何かが必要ですが、それがどこにあるのかわかりません)

PATHの内容を印刷するには、次のコマンドを実行します。

echo $PATH

スクリプトが起動しない理由がPATHであるかどうかを確認するには、次のことを試してください。

$ cd /
$ PATH= /opt/TeamCity/bin/teamcity-server.sh

このコマンドは、PATHを一時的にクリアして、コマンドを実行します。コマンド必要PATH上のいくつかの具体的な情報なら、それは失敗します(上記のように正確に実行するように注意してください、THERE ISとの間のスペースPATHは=と、コマンドの残り)。


6

Fedora 17コマンドで

# chkconfig --add teamcity-server

言う:サービスteamcity-serverはchkconfigをサポートしていないので、次のようなヘッダーを追加する必要があります。

#! /bin/bash
# chkconfig: - 10 90

最初のコマンドを実行した後にのみ。


2
スクリプトが次の場所にあることを確認してください/etc/init.d/:-)
Bart De Vos

2

スクリプトを手動で実行すると、正しく動作します。ただし、自動的に実行すると機能しません。

犯人を見つけました:TeamCityはユーザーの下で実行されていますteamcity/etc/sudoersファイルに存在している必要があり、次のvisudoような行を使用して追加する必要があります。

Defaults:teamcity !requiretty
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.