Làm cách nào để cài đặt tập lệnh init.d?


71

Tôi đang cố gắng cài đặt một tập lệnh init.d, để chạy cần tây để lên lịch các tác vụ. Đây là các bước tôi làm theo:

  • sao chép tập tin celeryd và dán nó vào thư mục /etc/init.d/
  • đã tạo một tệp cấu hình celeryd trong thư mục / etc / default /

Bây giờ khi tôi cố gắng khởi động nó sudo /etc/init.d/celeryd start, nó sẽ báo lỗisudo: /etc/init.d/celeryd: command not found

Tôi googled về cách cài đặt init.d, tôi đã nhận được câu hỏi SO này .

nó nói để phát hành uname -avà khi tôi nhận được điều này:

Linux capsonesystem8-desktop 3.2.0-43-generic-pae 
#68-Ubuntu SMP Wed May 15 03:55:10 UTC     
2013 i686 i686 i386 GNU/Linux

và nó cũng cho biết sử dụng các tiện ích như insservđể kích hoạt tập lệnh init.d nên đã thử:

insserv /etc/init.d/celeryd nhưng nó ném lỗi insserv: command not found

Vì vậy, tôi đã cố gắng để cài đặt insserv sudo apt-get install insserv . nhưng nó nói cài đặt ổn định:

insserv is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 222 not upgraded.

Vậy làm thế nào để cài đặt init.d script ?? Bất kỳ trợ giúp sẽ được đánh giá cao.

cập nhật1:

khi tôi cố gắng:

$ sh -x /etc/init.d/celeryd start

nó tiết lộ một số errors. có thể đó là lý do tại sao dịch vụ sẽ không bắt đầu.

cập nhật2:

Tôi đã xóa tất cả các lỗi khi tôi chạy $ sh -x /etc/init.d/celeryd startnhưng vẫn sudo /etc/init.d/celeryd startném command not foundlỗi


Bây giờ tôi không có thời gian cho câu trả lời, nhưng, nếu bạn muốn nó chạy như một phần của khởi động, thì tôi nghĩ bạn phải thêm liên kết đến tập lệnh của mình trong các thư mục runlevel khác nhau để Linux sẽ xử lý bắt đầu và dừng nó cho bạn. (/etc/rc[0-6[.d) Quá trình này đang dần được thay thế bằng một phương pháp mới hơn (tôi nghĩ nó được gọi là mới bắt đầu.), nhưng tôi hoàn toàn không xem xét điều đó. Các liên kết trong bài viết của bạn giải quyết một số điều này.
Joe

Câu trả lời:


55

celerydKịch bản của bạn có thể không được thực thi, đó là lý do tại sao sudo /etc/init.d/celerydtrở lại command not found. Vì vậy, trước tiên bạn cần phải thực hiện nó.

Để làm như vậy, hãy chạy các lệnh sau:

sudo chmod 755 /etc/init.d/celeryd
sudo chown root:root /etc/init.d/celeryd

Dòng đầu tiên thay đổi quyền thành -rwxr-xr-xvà dòng thứ hai đảm bảo rằng chủ sở hữu và chủ sở hữu nhóm của tệp là root.

Một khi điều này được thực hiện, tôi giả sử bạn sẽ cần phải sử dụng sudo /etc/init.d/celeryd startđể bắt đầu daemon.


70

Khi bạn sao chép tập lệnh vào vị trí, đừng quên làm cho tập lệnh thực thi và được sở hữu bởi root:

sudo chmod +x /etc/init.d/celeryd
sudo chown root:root /etc/init.d/celeryd

Khi bạn đã cài đặt xong, bạn có thể đặt nó để bắt đầu tự động khi khởi động với:

sudo update-rc.d celeryd defaults
sudo update-rc.d celeryd enable

Đây sẽ được coi là câu trả lời tốt nhất, nguyên nhân của việc chỉ ra update-rc.d.
MAChitgarha

3

Nếu bạn gặp command not foundlỗi khi chạy insserv, bạn có thể sửa lỗi bằng cách chạy lệnh sau:

sudo ln -s /usr/lib/insserv/insserv /sbin/insserv

Sau đó xem insserv -hhoặc man insservđể được giúp đỡ.

Ngoài ra, bạn có thể thử với:

sudo update-rc.d celeryd defaults

Nguồn: https://askubfox.com/a/334043/147044


1

Đây là chuỗi lệnh để tự khởi động trình nền của bạn khi khởi động:

sudo cd /etc/init.d
sudo chown root:root celeryd
sudo chmod 755 celeryd
sudo ln -s /usr/lib/insserv/insserv /sbin/insserv
sudo insserv celeryd
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.