Bagaimana cara mendiagnosis kesalahan pemula?

8

Saya memiliki file conf pemula di / etc / init yang dimulai dengan baik jika saya memulainya secara manual seperti ini:

sudo initctl start myconf

Jika saya menjalankannya tanpa perintah sudo saya mendapatkan error name = (unset) error, yang disebabkan oleh hak pengguna, tetapi itu seharusnya tidak menjadi masalah ketika pekerjaan diinisialisasi pada boot sistem ketika Upstart tendangan tepat? (karena itu semua dijalankan oleh root).

Isi skrip adalah:

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

... di mana server_init.sh menjalankan server berbasis skrip python. Ketika saya memeriksa status skrip tepat setelah saya masuk ke shell, ia mengatakan berhenti / menunggu. Saya juga mencoba file conf dengan "start on net-device-up" tetapi tidak ada perubahan. Apakah ada cara untuk melihat log sistem pemula atau sesuatu yang serupa yang dapat membantu saya men-debug masalah.

Terima kasih

U2ros
sumber
Kadang-kadang jika Anda memiliki chdirdalam skrip pemula Anda dan direktori itu tidak ada, log tidak akan ditulis dan Anda akan mendapatkan pesan samar:start: Job failed to start
knownasilya

Jawaban:

13

Mencoba:

/var/log/upstart/JOBNAME.log

Anda mungkin ingin mempertimbangkan untuk mengonversikannya ke tugas saat Anda debug.

mulai spasial-mulai

tugas

exec /spatial/server_init.sh

lalu dari konsol:

initctl memancarkan start-spasial
initctl status start-spasial
ppetraki
sumber
Juga akan mencobanya, terima kasih. Saya berasumsi ini benar-benar menampilkan masalah khusus pemula; apakah itu termasuk kesalahan sintaksis dalam file conf juga?
U2ros
Di sinilah stdout / err redirect jadi sebaiknya verbose.
ppetraki
1

Oke, menemukan satu cara, tetapi itu hanya berfungsi jika kesalahan terjadi dalam program yang sedang dieksekusi oleh skrip (dan jika program itu tentu saja mengembalikan pesan kesalahan), bukan Memulai itu sendiri, tetapi itulah yang saya butuhkan dalam kasus ini. Apa yang saya lakukan adalah mengarahkan output program ke file log seperti ini:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

Adapun yang lain saya tahu Anda dapat meningkatkan verbositas pemula jadi jika saya akan membutuhkannya, saya akan mulai dari sana.

U2ros
sumber
0
  1. Periksa apakah ada direktori pemula: / var / log / pemula (jika tidak maka buat direktori)
  2. Periksa versi pemula Anda dengan: versi initctl atau pemula-kebijakan apt-cache

    Untuk semua versi Upstart sebelum v1.4, nilai default untuk konsol adalah tidak ada konsol . Mulai dari 1.4, nilai default adalah log konsol .

  3. Tambahkan log konsol ke Anda pemula (sebelum fase skrip)
  4. Log Anda akan berada di: /var/log/upstart/"upstart-JOBNAME".log

Contoh:

log konsol

naskah

exec /spatial/server_init.sh

akhiri skrip

Log konsol - Menghubungkan input standar ke / dev / null. Output standar dan kesalahan standar terhubung ke salah satu ujung pseudo-terminal sehingga setiap output pekerjaan secara otomatis dicatat ke dalam direktori / var / log / pemula / untuk Pekerjaan Sistem dan $ XDG_CACHE_HOME / pemula, (atau $ HOME /. cache / pemula / jika $ XDG_CACHE_HOME tidak disetel) untuk Pekerjaan Sesi.

Konsol tidak ada - Menghubungkan input standar pekerjaan, output standar dan deskriptor file kesalahan standar ke / dev / null.

Untuk info lebih lanjut tentang konsol, lihat tautan di bawah ini:

http://upstart.ubuntu.com/cookbook/#console-log

zachlaniado
sumber