web-dev-qa-db-ja.com

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

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サーバーを起動するものはありません

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

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

8
atp03

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

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

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

# 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 =およびコマンドの残りの部分)。

15
Diego Queiroz

fedora 17コマンドで

# chkconfig --add teamcity-server

言います:service teamcity-serverはchkconfigをサポートしていません。

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

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

6
burtsevyg

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

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

Defaults:teamcity !requiretty
2
kupolua