Come eseguire automaticamente uno script all'avvio del sistema in centos


8

Ho installato con successo TeamCity ib CentOS 6.2 Minimal. Sono bloccato nel tentativo di eseguire automaticamente uno script all'avvio del sistema:

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

Ho cercato su Google e provato vari metodi che sembrano fallire. La maggior parte dei metodi punta ad aggiungere lo script di avvio a uno dei file rc.local:

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

E il contenuto di rc.local contiene la riga:

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

Nessuno dei quali avvierà il server teamcity

Non ci sono problemi se eseguo lo script manualmente.

Sembra semplice, ma come faccio a eseguire uno script di shell per l'esecuzione automatica?


1
Dovrai descrivere cosa intendi con "nessuna delle quali funziona". Perché senza di essa, tutti indovinano. Forse descrivere più dettagliatamente cosa hai fatto e quali messaggi o eventi di output o di errore si sono verificati?
EightBitTony,

quello è il posto giusto per dirlo, quindi sembra che qualcosa non sia kosher con la voce /etc/rc.d/rc.local o con lo script stesso. Sei in grado di pubblicare i contenuti dello script e rc.local? Inoltre, lo script della shell teamcity-server.sh viene eseguito manualmente?
Quinn Murphy,

Sì, il server teamcity funziona correttamente manualmente. Ma non è pratico farlo ogni volta che il server viene riavviato ...
atp03

Far funzionare manualmente ma non attraverso rc.local implica differenze ambientali. Qual è il tuo PERCORSO? Altre variabili env?
cjc,

@cjc Non so cosa intendi per "PERCORSO" - Tuttavia, se eseguo /etc/rc.d/rc.local manualmente, anche il server di teamcity può avviarsi correttamente. Questo fa ancora la differenza?
atp03,

Risposte:


15

Se lo script di avvio di teamcity è uno script di inizializzazione conforme a LSB (ovvero, se fornisce start , stop e altri argomenti ), puoi semplicemente copiare lo script nella /etc/init.dcartella ed eseguirlo (come root):

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

Anche un collegamento simbolico per il file dovrebbe essere OK. Quindi prova (come root):

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

Se non si avvia all'inizializzazione, ma si avvia manualmente senza problemi, è necessario verificare:

  1. permessi (forse il programma non può essere eseguito come root. Provare ad accedere come root ed eseguirlo), e;
  2. il tuo PERCORSO (forse la sceneggiatura ha bisogno di qualcosa ma non sa dove sia).

Per stampare il contenuto del tuo PERCORSO basta eseguire:

echo $PATH

Per verificare se il motivo per cui lo script non si avvia è il PERCORSO, provare:

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

Questo comando cancellerà temporaneamente il PERCORSO ed eseguirà il comando. Se il comando necessita di alcune informazioni specifiche sul PERCORSO, fallirà (fare attenzione a eseguire esattamente come indicato sopra, C'È uno spazio tra il PERCORSO = e il resto del comando).


6

al comando Fedora 17

# chkconfig --add teamcity-server

ad esempio: il servizio teamcity-server non supporta chkconfig è necessario aggiungere un'intestazione come:

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

solo dopo eseguire il primo comando.


2
E assicurati che il tuo copione si trovi in /etc/init.d/:-)
Bart De Vos,

2

Quando lo script viene eseguito manualmente, funziona correttamente. Ma, quando eseguito automaticamente, non funziona.

Ho trovato il colpevole: TeamCity corre sotto l'utente teamcity. Deve essere presente nel /etc/sudoersfile e si dovrebbe aggiungere, usando visudouna riga come questa:

Defaults:teamcity !requiretty
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.