Dừng chương trình đang chạy khi khởi động trong Linux


29

Làm cách nào để dừng chương trình đang chạy khi khởi động trong Linux. Tôi muốn xóa một số ứng dụng khỏi khởi động để cho phép chúng được quản lý bởi supervisordvd apache2


Đó chính xác là lý do tại sao tôi không gắn thẻ nó ... Tôi đang tìm kiếm tất cả các biến thể khi tôi làm việc với khá nhiều phân phối khác nhau.
Frozenkys

Câu trả lời:


29

Tùy thuộc vào bản phân phối của bạn, hãy sử dụng công cụ chkconfig hoặc update-rc.d để bật / tắt dịch vụ hệ thống.

Trên hệ thống kiểu redhat / suse / mandrake:

sudo chkconfig apache2 off 

Trên Debian:

sudo update-rc.d -f apache2 remove

Kiểm tra trang người đàn ông của họ để biết thêm.


Tại sao bạn cần -f (tôi cho rằng đó là lực lượng) trên các bản phát hành dựa trên Debian?
Frozenkys

2
Có hai bộ tập tin đang chơi ở đây. Bạn đã có tập lệnh init thực tế trong /etc/init.d/ và bạn có các liên kết đến nó trong thư mục runlevel /etc/rcrunlevel.d/. Những kẻ này trỏ đến tập lệnh trong /etc/init.d/ Nếu bạn không sử dụng -f update -rd.d sẽ không UNLESS tập lệnh trong /etc/init.d/ đã bị xóa. Nếu bạn sử dụng -f update-rc.d sẽ xóa chính xác các tệp liên kết bất kể tập lệnh /etc/init.d/ có bị xóa hay không.
jacksonh

Ah, điều đó rất có ý nghĩa, tôi đã quên rằng các tập lệnh runlevel chỉ là các liên kết đến các tập lệnh init. Cảm ơn đã giải thích thêm.
Frozenkys

6

Nếu bạn đang làm việc với một hệ thống Ubuntu hiện đại và một vài phân phối khác, bạn có thể phải đối phó với sự kết hợp của các tập lệnh init truyền thống và tập lệnh khởi động. Quản lý các tập lệnh init được bao phủ bởi các câu trả lời khác. Sau đây là một cách để ngăn chặn dịch vụ mới bắt đầu khởi động:

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

Vấn đề với phương pháp này là nó không cho phép bạn bắt đầu dịch vụ bằng cách sử dụng:

# service start servicename

Một cách khác để làm điều này là mở servicename.conftệp trong trình chỉnh sửa yêu thích của bạn và nhận xét bất kỳ dòng nào bắt đầu bằng:

start on

Đó là, thay đổi điều này thành

#start on ...

trong đó "..." là bất cứ điều gì sau khi "bắt đầu" trước đó. Theo cách này, khi bạn muốn kích hoạt lại nó, bạn không cần phải nhớ các tham số "bắt đầu" là gì.

Cuối cùng, nếu bạn có phiên bản mới bắt đầu, bạn chỉ cần thêm từ "thủ công" vào cuối tệp cấu hình. Bạn có thể làm điều này trực tiếp từ vỏ:

# echo "manual" >> /etc/init/servicename.conf

Điều này sẽ khiến cho những người mới bắt đầu bỏ qua bất kỳ cụm từ "bắt đầu" nào trước đó trong tệp.


2

Trên các hệ thống gần đây của Fedora và RHEL

systemctl disable httpd.service

sẽ vô hiệu hóa dịch vụ httpd


Cảm ơn! Tôi đã thử nhiều phương pháp, nhưng systmctllệnh này hoạt động tốt.
yêu.by.Jesus

1

Để liệt kê tất cả các dịch vụ khởi động

    systemctl

Để ngăn chặn một dịch vụ chạy khi khởi động

    sudo systemctl disable servicename

Chẳng hạn, nếu chúng ta cần ngừng chạy máy chủ ssh khi khởi động

    sudo systemctl disable sshd.service

Chúng tôi có thể kích hoạt lại điều này bằng cách sử dụng

    sudo systemctl enable sshd.service

Hầu như mọi bản phân phối linux đều sử dụng systemd cho các dịch vụ khởi động bootstrapping. Vì vậy, các lệnh trên làm việc cho hầu hết các distro.


Chào mừng bạn đến với U & L, và cảm ơn bạn đã đóng góp! Tôi muốn chỉ ra rằng câu hỏi này đã khoảng tám tuổi, vì vậy câu trả lời được chấp nhận là đúng thời điểm. Sử dụng systemctl có thể đúng bây giờ , nhưng nó đúng cho một câu hỏi khác .
Jeff Schaller

@Prince cảm ơn đã giải thích chi tiết. Nó giúp tôi hiểu cách khởi động khởi động trong Xubfox của tôi.
yêu.by.Jesus

0

Slackware và Arch linux có các phương thức dừng / khởi động quá trình tương tự khi khởi động, khác với các ví dụ kiểu Ubuntu và Redhat được đưa ra ở trên.

Trong cả Slackware và Arch linux, các tập lệnh sh tồn tại trong thư mục /etc/rc.d, thường là một tập lệnh cho mỗi daemon hoặc một tập lệnh cho mỗi hệ thống con.

Ví dụ, Slackware khởi động máy chủ web Apache bằng một tập lệnh /etc/rc.d/rc.httpd, được gọi vào thời điểm thích hợp trong quá trình khởi động hệ thống với một đối số là "bắt đầu". Arch linux có các tập lệnh được đặt tên khác nhau, nhưng cùng một thứ diễn ra.

Để giữ một số quá trình bắt đầu trong khi khởi động hệ thống, trên Slackware, bạn chỉ cần tạo tập lệnh thích hợp trong /etc/rc.d không thể thực thi được. Để ngăn Apache bắt đầu ở lần khởi động tiếp theo:

chmod -x /etc/rc.d/rc.httpd

Để ngăn chặn một Apache đã bắt đầu khi khởi động: /etc/rc.d/rc.httpd stop Bạn sẽ cần phải root.

Arch phức tạp hơn một chút. Tệp /etc/rc.conf, tập lệnh shell, có một mảng DAEMONS. Để ngăn Apache bắt đầu khi khởi động, bạn sẽ thay đổi dòng này trong /etc/rc.conf:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

Đến dòng này:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

Để ngăn chặn một apache đã thực thi, bạn sẽ thực thi /etc/rc.d/httpd stopvới quyền root.


0

Trên Ubuntu 10.04, bạn có thể điều khiển một số chương trình khởi động từ GUI.

SystemPreferencesStartup Applications

Tùy chọn ứng dụng khởi động


1
Hình ảnh gốc không còn nữa.
tshepang

-1

1) nhấn superkey trên bàn phím của bạn 2) tìm kiếm 'Ứng dụng khởi động' 3) chọn chương trình bạn muốn tắt 4) nhấn like vào câu trả lời này nếu worx.

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.