Bash Script về khởi nghiệp? (Linux)


12

Có cách nào để tạo / chạy tập lệnh bash khi khởi động lại không (ví dụ như trong Debian / Ubuntu, vì đó là thứ mà 2 hộp của tôi ở nhà có)

Ngoài ra, bất kỳ hướng dẫn đề nghị để làm công việc cron? Tôi hoàn toàn mới đối với họ (nhưng chúng sẽ được sử dụng rất nhiều)

Câu trả lời:


21

Trên Ubuntu / Debian / Centos, bạn có thể thiết lập một công việc định kỳ để chạy @reboot. Điều này chạy một lần khi khởi động hệ thống. Sử dụng crontab -e để chỉnh sửa crontab và thêm một dòng như ví dụ dưới đây, vd

@reboot /path/to/some/script 

Có rất nhiều tài nguyên cho cron nếu bạn tìm chúng. Trang web này có một số ví dụ tốt.


7

Một cách điển hình khác để bắt đầu một cái gì đó khi khởi động trên nhiều nền tảng * nix là (hoặc, tôi nghĩ rằng điều này có thể bắt đầu mất đi sự ưu tiên - xem các lựa chọn thay thế ) để đặt các tập lệnh vào một thư mục, tùy thuộc vào hệ điều hành / phân phối cụ thể, có thể là một cái gì đó giống như /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.d, hoặc tương tự (các bản phân phối khác nhau sử dụng "mức chạy" khác nhau, đó là nơi mà các số đến từ - xem link bên dưới). Thông thường, chúng cũng được liên kết với nhau vào hoặc tại các tệp từ đó /etc/init.d, để thực hiện dễ dàng hơn bằng tay và chúng đưa ra một đối số "bắt đầu" và / hoặc "dừng" trong hầu hết các nền tảng * nix, và cả "trạng thái", "khởi động lại", vv trên nhiều nền tảng linux. Trên các hệ thống như vậy, chúng thường được thực thi bởi init,inittab. Trên các hệ thống * BSD, có một phong cách khác nhau của một khái niệm tương tự và, như được liên kết ở trên, có một loạt các biến thể.

Trong kiểu trên, các tập lệnh trong, ví dụ, /etc/rc2.d(đối với hệ thống có runlevel mặc định là 2) thường bắt đầu bằng chữ cái Shoặc Ksau đó là số có hai chữ số. Các tập lệnh bắt đầu bằng S được chạy theo thứ tự từ điển (thường dịch theo thứ tự số) khi khởi động lên, vào cấp 2, với một đối số là "bắt đầu". Khi tắt, các tập lệnh có tiền tố K cũng chạy tương tự, với đối số là "dừng".

Các tệp trong /etc/init.d(hoặc đôi khi /etc/rc/init.dhoặc các biến thể khác) được đặt tên mà không có tiền tố S và K hoặc số. Thông thường, các tệp trong các thư mục /etc/rc?.d khác nhau liên kết với các tệp thực, thường được tham chiếu qua tiền tố đường dẫn tương đối ../init.d/.

Nhiều tiện ích khác nhau tồn tại trên các hệ thống khác nhau để quản lý các hệ thống này, cũng như bật và tắt mọi thứ, v.v. Trên IRIX (kể từ IRIX 4, ít nhất, nếu bộ nhớ của tôi phục vụ), nó từng là một công cụ được gọi là chkconfig, sẽ không thao tác các liên kết, nhưng sẽ được kiểm tra bởi các tập lệnh để xem liệu chúng có nên chạy hay không. Tôi nghĩ IRIX là hệ điều hành đầu tiên có thứ như thế này. Sau này, trong một số phiên bản RedHat mà tôi từng có, có một công cụ cùng tên, nhưng nó hoạt động hơi khác một chút, thực sự quản lý các liên kết tượng trưng - hãy xem chkconfig(8)những gì tôi nghĩ có thể giống với phiên bản (hoặc rất giống nhau) như tôi đã sử dụng rồi

Trên hệ thống Ubuntu 9.04 mà tôi có quyền truy cập, có vẻ như update-rc.dlà tập lệnh để chạy.

Nếu bạn đang sử dụng hệ thống sử dụng inittab, bạn cũng có thể thêm mọi thứ trực tiếp vào đó - điều này có thể đặc biệt hữu ích cho những thứ bạn muốn chạy không chỉ một lần khi khởi động, mà còn phải chủ động theo dõi ( nếu init) respawnsụp đổ hoặc chấm dứt. Xem đầu ra của man inittab(nếu bạn có) trên hệ thống của bạn để biết thêm thông tin. Và / hoặc man init, v.v ... Có rất nhiều hương vị khác nhau và tôi (hiện tại) không quen thuộc lắm với Debian hoặc Ubuntu, vì vậy tôi không chắc chắn chính xác điều gì sẽ chỉ cho bạn, nhưng hy vọng điều này mang lại cho bạn một số điểm khởi đầu .

phần @reboot trong crontob là mới đối với tôi, nhưng cũng có vẻ như nó có thể là một lựa chọn hữu ích - mặc dù tôi sẽ đề xuất các tập lệnh init là thích hợp hơn cho nhiều thứ. Nhưng hãy xem man 5 crontabđể biết thêm thông tin về những gì bạn có thể đặt trong cấu hình cron của mình và cách nó có thể được yêu cầu để chạy mọi thứ, và khi nào (bao gồm, giả sử phiên bản cron của Vixie / ISC [xem lịch sử cron ] với @reboot).

Tôi hy vọng điều đó hữu ích.

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.