Menjalankan pekerjaan pengguna pemula pada startup

8

Saya menjalankan server Ubuntu 11.04. Saya telah membuat pekerjaan pengguna pemula seperti dijelaskan di sini .

Saya memiliki file berikut di /home/myuser/.init/sensors.conf:

start on started mysql
stop on stopping mysql


chdir /home/myuser/mydir/project
exec /home/myuser/mydir/env/bin/python /home/myuser/mydir/project/manage.py sensors

respawn

respawn limit 10 90

Karena myusersaya dapat memulai, berhenti, dan memuat kembali pekerjaan dengan baik - itu berfungsi dengan baik:

$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting

Masalahnya adalah bahwa pekerjaan tidak dimulai secara otomatis saat boot ketika mysqldimulai. Setelah boot baru, mysqlberjalan tetapi sensorspekerjaan saya tidak.

Apa yang aneh, adalah bahwa meskipun pekerjaan tidak dimulai saat boot, jika saya gunakan sudountuk me mysql- restart itu memang memulai pekerjaan saya. Perintah-perintah berikut dijalankan sejak myuserdari startup baru:

$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229

Dokumentasi untuk pekerjaan pengguna pemula cukup terbatas. Apa teknik yang benar untuk membuat pekerjaan pengguna dimulai secara otomatis saat startup sistem?

Saya tahu saya bisa melempar sesuatu rc.localuntuk memulainya, atau saya bisa memindahkannya sensors.confke /etc/inittetapi saya ingin tahu apakah ada cara untuk melakukannya hanya dengan menggunakan pemula.

dgel
sumber

Jawaban:

8

Masalahnya adalah pekerjaan pengguna tidak dimuat ke Pemula sampai pengguna membuat sesi Pemula dengan menjalankan salah satu initctlperintah.

Saya telah menjelaskannya secara lebih rinci di http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html dan juga menulis pekerjaan pemula yang bekerja di sekitar masalah.

bradley.ayers
sumber
Ada cara lain untuk melakukan ini didokumentasikan di upstart.ubuntu.com/cookbook/... - ia memiliki bug, Anda harus mengubah "mulai session_init" menjadi "mulai session-init".
natevw
-1

Melihat sumber seperti /etc/init/mysql.confdan http://upstart.ubuntu.com/cookbook/#start-on menurut saya Anda harus mengubah start onbaris Anda menjadi seperti ini:

start on (mysql and runlevel [2345])

Saya tidak yakin saya setuju bahwa pemula tidak memiliki dokumentasi, tapi saya kadang-kadang kesulitan memahami dokumen. Saya biasanya hanya melakukan trial and error sampai berfungsi. Solusi di atas mungkin berlebihan sebenarnya ... sesuatu sesederhana ini mungkin cukup:

start on mysql
Carl Zulauf
sumber
Ini bukan karena pemula tidak memiliki dokumentasi secara umum, melainkan karena tidak memiliki banyak dokumentasi tentang pekerjaan pengguna - pekerjaan ditempatkan di /home/$USER/.init (bukan pekerjaan yang ditempatkan di / etc / init).
dgel
Saya mencoba saran Anda tetapi tidak ada perbedaan. Ini bukan masalah dengan start onbaris saya , tapi itu hanya fakta bahwa pemula hanya memuat / etc / init pada startup, tetapi bukan file init pengguna di file$HOME/.init
dgel
Maaf, ketinggalan bahwa ini adalah pekerjaan pengguna dan bukan pekerjaan /etc/init. Anda benar bahwa dokumentasi tampaknya kurang untuk itu dan saya tidak yakin bagaimana memastikan ~/.initskrip dimulai.
Carl Zulauf
Dokumen yang saya temukan menunjukkan bahwa $HOME/.initpekerjaan tidak diaktifkan secara default dan beberapa perubahan /etc/dbus-1/system.d/Upstart.confmungkin diperlukan. upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user
Carl Zulauf