CentOS 6 dan pemula

18

CentOS 6 baru hadir dengan Upstart, menggantikan init. Saya mencoba mengonversi file / etc / inittab ke format baru baru. Server khusus ini hanya memiliki 15 atau lebih entri inittab, namun, server lain memiliki> 30. Kami terutama menginginkan bagian 'respawn' dari inittab dan pemula. Namun, saya telah membaca semua dokumentasi pemula yang dapat saya temukan, (yang hampir semuanya berbasis Ubuntu, dan tampaknya pada versi pemula yang lebih baru) dan tidak mendapatkan apa-apa. Saya dapat membuat file config (sebut saja /etc/init/test.conf). File ini berisi ini (catatan, dianonimkan)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

Jika saya menerbitkan suatu initctl reload-configurationpekerjaan diakui. Saya bisa memulainya dengan menelepon initctl start testdan pekerjaan akan dimulai.

Namun, ini tidak akan berfungsi pada reboot, hanya secara manual. Saya telah mencoba mengubah perintah mulai menjadi yang berikut, semua tanpa hasil

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

dan sekitar selusin cara lain yang bisa saya lihat disebutkan dalam contoh berbeda. sepertinya tidak ada yang memulai skrip. (test.conf, seperti semua file lain di folder ini, dimiliki oleh root, dan 644)

Apakah saya melewatkan sesuatu yang sangat jelas?

Brian
sumber

Jawaban:

32

Saya menemukan skrip pemula yang sangat, sangat, sangat membantu bagi orang-orang yang mengalami masalah di masa depan. Masukkan ini ke / etc / init /

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:`date`:"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

Skrip ini pada dasarnya mencatat semua pekerjaan yang memulai atau berhenti. Saya telah menemukan bahwa CentOS 6 tidak 'memancarkan' apapun tentang runlevel. (atau beberapa peristiwa umum lainnya yang pernah saya coba. '). Mencari file log yang menciptakan pekerjaan debug di /tmp/log.file sangat membantu. Dengan mengubah awal skrip saya dari:

start on runlevel [345]

untuk

start on started sshd

semua pekerjaan saya tampaknya mulai dengan benar. Ini adalah rasa sakit di bagian belakang, karena setiap contoh yang saya temukan menggunakan sintaks sebelumnya ..

Brian
sumber
Jika saya dapat memilih itu lebih dari satu kali, saya akan melakukannya.
Peter Mounce
15

Maaf untuk necroposting, tapi saya berhasil menyelesaikan masalah ini dengan menggunakan yang berikut:

start on stopped rc RUNLEVEL=[345]

"stops" bukan salah ketik - rc sepertinya berhenti saat memasuki runlevel.

Leonid99
sumber
2
Terima kasih atas tipnya! Necroposting sangat bagus, jika bermanfaat!
Brian
5

Inilah yang saya lakukan (CentOS 6, Upstart 0.6.5) untuk men-debug masalah respawn. Di terminal yang berbeda, lakukan

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
Mark Lakata
sumber