Chạy khởi động công việc người dùng khi khởi động


8

Tôi đang chạy máy chủ Ubuntu 11.04. Tôi đã tạo một công việc người dùng Upstart như được mô tả ở đây .

Tôi có các tập tin sau tại /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

Khi myusertôi có thể bắt đầu, dừng và tải lại công việc tốt - nó hoạt động hoàn hảo:

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

Vấn đề là công việc không tự động mysqlbắt đầu khi khởi động . Sau khi khởi động mới, mysqlđang chạy nhưng sensorscông việc của tôi thì không.

Điều kỳ lạ là mặc dù công việc không bắt đầu khởi động, nhưng nếu tôi sử dụng sudođể khởi động lại mysqlthì nó thực sự bắt đầu công việc của tôi. Các lệnh sau được chạy như myusertừ một khởi động mới:

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

Các tài liệu cho công việc người dùng Upstart là khá hạn chế. Kỹ thuật chính xác để có một công việc người dùng bắt đầu tự động khi khởi động hệ thống là gì?

Tôi biết tôi chỉ có thể ném thứ gì đó vào rc.localđể khởi động nó, hoặc tôi có thể chuyển sensors.confsang /etc/initnhưng tôi tò mò liệu có cách nào để làm điều đó chỉ bằng Upstart.

Câu trả lời:


8

Vấn đề là công việc của người dùng không được tải vào Upstart cho đến khi người dùng tạo phiên Upstart bằng cách chạy một trong các initctllệnh.

Tôi đã mô tả chi tiết hơn tại http://bradleyayers.blogspot.com.au/2012/04/eneac-upstart-user-jobs-to-start-at.html và cũng đã viết một công việc mới bắt đầu hoạt động xung quanh vấn đề.


Có một cách khác để làm điều này được ghi nhận tại upstart.ubfox.com/cookbook/, - nó có một lỗi, tuy nhiên, bạn cần thay đổi "start session_init" thành "start session-init".
natevw

-1

Nhìn vào các nguồn như /etc/init/mysql.confhttp://upstart.ubfox.com/cookbook/#start-on đối với tôi, bạn nên thay đổi start ondòng của mình thành một cái gì đó như thế này:

start on (mysql and runlevel [2345])

Tôi không chắc chắn rằng tôi đồng ý rằng những người mới bắt đầu thiếu tài liệu, nhưng tôi chắc chắn đôi khi gặp khó khăn trong việc hiểu các tài liệu. Tôi thường chỉ làm thử và lỗi cho đến khi nó hoạt động. Giải pháp ở trên có thể là quá mức thực sự ... một cái gì đó đơn giản như thế này có thể là đủ:

start on mysql

Nói chung, không phải là không có tài liệu nói chung, nó không có nhiều tài liệu liên quan đến công việc của người dùng - công việc được đặt trong /home/$USER/.init (không phải công việc được đặt trong / etc / init).
dgel

Tôi đã thử đề xuất của bạn nhưng không có sự khác biệt. Đó không phải là vấn đề với start ondòng của tôi , nhưng thực tế là chỉ mới bắt đầu tải / etc / init khi khởi động, chứ không phải các tệp init của người dùng trong$HOME/.init
dgel

Xin lỗi, đã bỏ lỡ rằng đây là một công việc người dùng và không phải là một công việc trong /etc/init. Bạn đúng là tài liệu dường như thiếu cho điều đó và tôi không chắc làm thế nào để đảm bảo ~/.initcác tập lệnh được bắt đầu.
Carl Zulauf

Các tài liệu tôi có thể tìm thấy cho biết các $HOME/.initcông việc không được bật theo mặc định và một số thay đổi /etc/dbus-1/system.d/Upstart.confcó thể được yêu cầu. upstart.ubfox.com/cookbook/#run-a-job-as-a-different-user
Carl Zulauf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.