Pemula tidak melihat skrip baru saya

27

Saya telah menambahkan skrip baru untuk /etc/init/dipanggil minecraft.confyang berisi skrip:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

Ketika saya mencoba, start minecraftsaya mendapatkan kesalahan:start: Unknown job: minecraft

Saya sudah mencoba menjalankan initctl listdan pekerjaan minecraft saya tidak terdaftar. Saya sudah mencoba berlari initctl reload-configurationdan tidak ada bedanya.

Pekerjaan lain didaftar oleh initctl listwork fine dengan start, stop dan restart.

Mengapa tidak akan mulai melihat skrip baru saya?

Jasarien
sumber
Ini mungkin pertanyaan yang bodoh tapi ... bukankah skripmu ada /etc/init.d/?
Wolfer
@Sekarang terima kasih, tapi saya sudah membaca itu dan saya masih punya masalah.
Jasarien
@Wolfer sesuai dengan panduan memulai pemula, dikatakan "Setelah bahagia, letakkan file di /etc/initdan sekarang Anda siap untuk reboot dan gunakan pemula."
Jasarien
Saya mencoba mereproduksi masalah tetapi tidak berhasil. Saya menyalin kode yang Anda tempel ke /etc/init/minecraft.conf dan dikeluarkan sudo start minecrafttanpa masalah. Ini konten file log. ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedBisakah Anda memberikan detail lebih lanjut tentang versi Ubuntu yang Anda gunakan dan informasi bermanfaat apa pun dari syslog?
Goran Miskovic

Jawaban:

12

Periksa log pemula (ada di /var/log/syslog) saat memuat ulang konfigurasi menggunakan initctl reload-configuration. Jika ada kesalahan sintaks, itu akan muncul di sana. Itulah biasanya mengapa Anda tidak dapat menggunakan konfigurasi pemula baru Anda.

rcomblen
sumber
11

Cara mudah untuk memeriksa sintaks skrip Anda adalah dengan perintah berikut:

init-checkconf -d /etc/init/service_name.conf

Saya telah menemukan bahwa bahkan dengan file Upstart yang valid jika file tersebut tidak ada ketika server di-boot terakhir saya harus me-reboot server agar Upstart untuk melihat file.

Mike Bethany
sumber
9

Saya merasa agak bodoh ... Tapi ini dia:

Saya melewatkan bait "naskah akhir" dari bagian paling akhir naskah pemula ...

post-start script
   echo "minecraft started"

seharusnya

post-start script
   echo "minecraft started"
end script

Saya tidak yakin mengapa itu bekerja untuk @schkovich tanpa end script, meskipun ...

Jasarien
sumber
2
Karena saya menambahkan bait skrip akhir. Kode lengkap bawaan (pikiran). :(
Goran Miskovic
Saya mengalami masalah yang sama tetapi menyebalkan, tidak ada yang muncul di / var / log dan initctl reload-configuration --verbose tidak bersuara.
Neil McGill
4

Dalam kasus saya ini adalah authorbidang kosong , seperti ini:

author ""

Itu bekerja hanya setelah menambahkan sesuatu di kutipan.

# initctl reload-configuration

juga membuang /etc/init/servicename.conf:2: Expected token ke syslog bukannya stdout . Terlalu sibuk untuk mengajukan laporan bug untuk paket yang sekarat.

int_ua
sumber
3

Mungkin tidak berlaku untuk ini secara khusus, tetapi layak disebutkan: Jika Anda mengedit file konfigurasi pemula untuk layanan yang sedang berjalan, menjalankan restartTIDAK memuat ulang konfigurasi. Anda harus menjalankan stopdan startagar perubahan baru berlaku.

http://upstart.ubuntu.com/cookbook/#restart

kristi
sumber