Cara menjalankan skrip secara otomatis pada startup sistem dalam centos

8

Saya telah berhasil menginstal TeamCity ib CentOS 6.2 Minimal. Saya terjebak mencoba menjalankan skrip secara otomatis pada startup sistem:

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

Saya sudah googled sekitar dan mencoba berbagai metode yang semuanya tampaknya gagal. Sebagian besar metode menunjuk ke menambahkan skrip startup ke salah satu file rc.local:

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

Dan isi dari rc.local berisi baris:

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

Tidak ada yang akan memulai server teamcity

Tidak ada masalah jika saya menjalankan skrip secara manual.

Tampaknya sederhana tetapi bagaimana saya mendapatkan skrip shell untuk dijalankan secara otomatis?

atp03
sumber
1
Anda harus menggambarkan apa yang Anda maksud dengan 'tidak ada yang berhasil'. Karena tanpa itu, semua orang menebak. Mungkin uraikan secara lebih terperinci apa yang telah Anda lakukan dan apa yang terjadi pada pesan atau peristiwa atau peristiwa yang terjadi?
EightBitTony
itu adalah tempat yang tepat untuk meletakkannya, jadi sepertinya ada sesuatu yang tidak halal dengan entri /etc/rc.d/rc.local atau dengan skrip itu sendiri. Apakah Anda dapat memposting konten skrip & rc.local? Juga, apakah skrip shell teamcity-server.sh berjalan ketika Anda melakukannya secara manual?
Quinn Murphy
Ya, teamcity-server berjalan dengan baik secara manual. Tetapi tidak praktis untuk melakukan ini setiap kali server dihidupkan ulang ...
atp03
Menjalankannya secara manual tetapi tidak melalui rc.local menyiratkan perbedaan lingkungan. Apa PATH Anda? Adakah variabel env lainnya?
cjc
@cjc Tidak yakin apa yang Anda maksud dengan 'PATH' - Namun jika saya menjalankan /etc/rc.d/rc.local secara manual, server teamcity juga dapat memulai dengan baik. Apakah ini masih membuat perbedaan?
atp03

Jawaban:

15

Jika skrip start teamcity adalah skrip init yang sesuai dengan LSB (yaitu, jika skrip ini menyediakan start , stop , dan argumen lainnya ), Anda bisa menyalin skrip ke /etc/init.dfolder dan menjalankan (sebagai root):

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

Tautan simbolis untuk file juga harus OK. Jadi coba (sebagai root):

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

Jika tidak dimulai pada inisialisasi, tetapi mulai secara manual tanpa masalah, Anda harus memeriksa:

  1. izin (mungkin program tidak dapat dijalankan sebagai root. Coba untuk masuk sebagai root dan jalankan), dan;
  2. PATH Anda (mungkin skrip membutuhkan sesuatu tetapi tidak tahu di mana itu).

Untuk mencetak konten PATH Anda cukup jalankan:

echo $PATH

Untuk memeriksa apakah alasan skrip tidak dimulai adalah PATH, coba:

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

Perintah ini akan menghapus PATH Anda sementara dan menjalankan perintah. Jika perintah memerlukan beberapa info spesifik pada PATH itu akan gagal (hati-hati untuk menjalankan persis seperti yang dinyatakan di atas, ADA ruang antara PATH = dan sisa perintah).

Diego Queiroz
sumber
6

dalam perintah Fedora 17

# chkconfig --add teamcity-server

katakan: service teamcity-server tidak mendukung chkconfig Anda harus menambahkan header seperti:

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

hanya setelah itu jalankan perintah pertama.

burtsevyg
sumber
2
Dan pastikan skrip Anda berada di /etc/init.d/:-)
Bart De Vos
2

Ketika skrip dijalankan secara manual, skrip ini bekerja dengan benar. Tetapi, ketika dijalankan secara otomatis itu tidak bekerja.

Saya telah menemukan pelakunya: TeamCity berjalan di bawah pengguna teamcity. Itu harus ada dalam /etc/sudoersfile dan Anda harus menambahkan, menggunakan visudobaris seperti ini:

Defaults:teamcity !requiretty
kupolua
sumber