Làm cách nào để tự khởi động chương trình nền bởi người dùng không root?


14

Là người dùng không root, tôi muốn chạy một công việc nền khi hệ thống khởi động. Đó là một loại dịch vụ không yêu cầu quyền root. Có cách nào để làm điều đó?

Một cách là đưa sudo -u user commandvào rc.local, nhưng chỉnh sửa rc.localđòi hỏi quyền root.

Một cách khác là khởi chạy nó từ cronmỗi phút và kiểm tra bất kỳ trường hợp đang chạy nào, nhưng trước hết, nó đánh thức hệ thống một cách không cần thiết và thứ hai, có thể có điều kiện chạy đua trong việc kiểm tra các phiên bản đang chạy.

Cách thứ ba là chạy nó vào ~/.bash_profile, nhưng tôi muốn bắt đầu mà không cần đăng nhập người dùng.

Câu trả lời:


16

Bạn có thể sử dụng cron nếu phiên bản của bạn có @reboottính năng này. Từ người đàn ông 5 crontab :

Thay vì năm trường đầu tiên, một trong tám chuỗi đặc biệt có thể xuất hiện:

  string         meaning
  ------         -------
  @reboot        Run once, at startup.
  …

Bạn có thể chỉnh sửa crontab cục bộ người dùng bằng lệnh crontab -emà không có quyền root. Sau đó thêm dòng sau:

@reboot /usr/local/bin/some-command

Bây giờ lệnh của bạn sẽ được chạy một lần khi khởi động.


Có phải là bất thường crontab -eđể tạo tập tin cron dưới /tmp?
Tinh tinh hiếu chiến

@Elliott Điều đó phụ thuộc vào trình soạn thảo của bạn. Cuối cùng, tập tin sẽ kết thúc /var/spool/cron/crontabs.
Marco
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.