Làm cách nào để ngăn dịch vụ Linux tự động khởi động?


8

Gần đây tôi đã chuyển từ Windows sang Linux (xubfox)

Tôi là một nhà phát triển và đã cài đặt mọi thứ tôi cần, LAMP. Trong Windows, tôi thường tắt tất cả các dịch vụ không cần thiết - Tôi không cần dịch vụ Apache hoặc MySQL chạy mọi lúc. Bất cứ khi nào tôi cần MySQL, tôi thường sử dụng:

net start mysql

Làm thế nào để tôi làm điều tương tự trong Linux?

  1. Vô hiệu hóa trình tiện ích không cần thiết từ tự động bắt đầu?
  2. Bắt đầu chúng chỉ khi tôi cần chúng?

3
Tôi nghĩ bạn nên bao gồm phiên bản chính xác của Ubuntu mà bạn đang sử dụng. Các phiên bản Ubuntu mới sử dụng upstart, có gotchas riêng.
vtest

Chỉnh sửa: Tôi đang sử dụng Ubuntu phiên bản 10.04 mới nhất, nhưng id không muốn sử dụng và GUI cho điều này, chỉ từ thiết bị đầu cuối. Có vẻ như @prhq có ​​một cái gì đó trong câu trả lời của anh ấy. Mới bắt đầu là gì?
Aviv

Thuộc về nơi khác, trên Server Fault hoặc Unix. Vẫn hữu ích mặc dù.
ripper234

Câu trả lời:


8

Trong hầu hết các bản phân phối linux, bạn có thể tự khởi động / dừng dịch vụ bằng cách (như root hoặc sử dụng sudo) chạy các lệnh sau:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

Những dịch vụ nào được tự động khởi động được kiểm soát bởi các liên kết tệp trong /etc/rc[runlevel[.d/. Tìm runlevel hiện tại của bạn bằng cách sử dụng lệnh "runlevel" làm root

# runlevel
N 2

Ở đây chỉ ra runlevel 2 Bây giờ bạn chỉ cần xóa các tệp đó trong /etc/rc2.d/ mà bạn không muốn bắt đầu.

Loại bỏ apache và Mysql trên máy tính để bàn thường là ok, nhưng lưu ý loại bỏ các dịch vụ khác.


2
Điều này khá sai lệch, ngay cả khi bạn nói "hầu hết các bản phân phối". Tôi sẽ đủ điều kiện công thức của bạn là distro cụ thể.
vtest

Mà bạn đã có trong tâm trí? Tôi chỉ có thể nghĩ về ArchLinux (nhưng những người dùng đó nên biết họ đang làm gì). Tất nhiên một số distro có các công cụ cụ thể, nhưng kỹ thuật trên cũng hoạt động trên chúng.
hultqvist

Khá kỳ lạ, tôi có thể thấy một tệp có tên S91apache2 trong thư mục /etc/rc2.d, tôi đoán nó bắt đầu apache2 ... nhưng tôi không thể tìm thấy bất kỳ tệp nào liên quan đến MySQL. Tôi có thể tìm hiểu về trình tiện tự khởi động này ở đâu?
Aviv

Sau đó, máy chủ mysql có thể không được cấu hình để khởi động tự động. Trang web này có vẻ như có một lời giải thích tốt: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist

Lưu ý rằng trong * BSD và cây Slackware, thư mục là /etc/rc.d/.
new123456

6

Ubuntu 10.04 nằm giữa một quá trình chuyển đổi giữa hai hệ thống quản lý dịch vụ: SysVinit (hệ thống truyền thống, được sử dụng bởi hầu hết các bản phân phối Linux) và Upstart (một hệ thống mới hơn được thúc đẩy bởi Ubuntu và ngày càng có nhiều bản phân phối hơn).

Các kịch bản quản lý dịch vụ SysVinit nằm trong /etc/init.d. Bạn có thể bắt đầu dịch vụ với /etc/init.d/SERVICENAME start và dừng lại với /etc/init.d/SERVICENAME stop. Dịch vụ có được khởi động tự động khi khởi động hay không tùy thuộc vào sự hiện diện của các liên kết tượng trưng trong /etc/rc?.d Ở đâu ? là một chữ số từ 2 đến 5 (các runlevel ). Cách dễ nhất để ngăn dịch vụ bắt đầu tự động khi khởi động là sử dụng update-rc.d SERVICENAME disable.

Tập tin cấu hình quản lý dịch vụ mới bắt đầu /etc/init. Bạn có thể bắt đầu dịch vụ với start SERVICENAME và dừng lại với stop SERVICENAME. Các tập tin cấu hình /etc/init/SERVICENAME.conf chứa một dòng cho biết khi nào bắt đầu dịch vụ: start on …. Một cách dễ dàng để vô hiệu hóa các dịch vụ này là thay đổi dòng đó thành start on never and (…). Nếu bạn không muốn chỉnh sửa tệp, bạn cũng có thể vô hiệu hóa hoàn toàn dịch vụ mà không gây nhầm lẫn cho hệ thống đóng gói bằng cách đổi tên thành không kết thúc bằng .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

Kể từ Ubuntu 10.04, Apache đi kèm với tập lệnh SysVinit và Mysql đi kèm với tập lệnh Upstart.


Việc chỉnh sửa servicename.conf có thực sự là cách ưa thích không? Đặc biệt là khi các bản cập nhật về mặt lý thuyết có thể cập nhật các tệp cấu hình đó và ghi đè các thay đổi của bạn
Masse

@Masse: Không phải lúc nào cũng là cách ưa thích, nhưng nó có lợi thế là luôn hoạt động. Một số dịch vụ đọc một tập tin trong /etc/default và có một START_FOO tùy chọn mà bạn có thể tắt, nhưng nhiều người sẽ chạy nếu chúng được cài đặt. Các bản cập nhật sẽ không ghi đè lên các thay đổi của bạn mà không cần nhắc vì đây là tất cả các giao dịch.
Gilles

Ồ Đây dường như là một bước lùi lớn.
Masse

@Masse: Conffiles có nghĩa là được chỉnh sửa bởi quản trị viên. Nhưng nếu bạn không muốn làm điều đó, bạn cũng có thể sử dụng dpkg-divert để đổi tên tập tin dịch vụ. Tuy nhiên nếu bạn làm điều đó bạn sẽ không thể bắt đầu dịch vụ một cách rõ ràng.
Gilles

2

Đối với các phiên bản Ubuntu sử dụng systemd (15.04 trở lên), hãy sử dụng:

systemctl disable service

Điều này sẽ làm công việc. Nó sẽ vô hiệu hóa dịch vụ và sẽ không khởi động lại sau khi khởi động lại. Để tạm thời kích hoạt khởi đầu dịch vụ. không phải cho phép .

Để tìm tên dịch vụ sử dụng

service --status-all

Các lệnh khác là:

systemctl start service - Sử dụng nó để bắt đầu một dịch vụ. Không tồn tại sau khi khởi động lại

systemctl stop service - Sử dụng nó để dừng một dịch vụ. Không tồn tại sau khi khởi động lại

systemctl restart service - Sử dụng nó để khởi động lại một dịch vụ

systemctl status service - Hiển thị trạng thái của một dịch vụ. Cho biết liệu một dịch vụ hiện đang chạy.

systemctl enable service - Bật dịch vụ, bật lại lần tiếp theo hoặc vào sự kiện bắt đầu tiếp theo. Nó vẫn tồn tại sau khi khởi động lại.

systemctl disable service - Tắt dịch vụ trong lần khởi động lại tiếp theo hoặc vào sự kiện dừng tiếp theo. Nó vẫn tồn tại sau khi khởi động lại.

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.