Máy chủ Apache khởi động tự động sau khi dừng dịch vụ


7

Điều gì có thể khiến httpd bắt đầu tự động sau khi dừng nó?

Trong một tập lệnh bash, trước tiên tôi cần dừng máy chủ web apache. Đây là kịch bản:

apachectl stop;
while pgrep httpd; do sleep 1; done
echo "[Apache server stopped]"

Khi tôi chạy tập lệnh, nó sẽ in các tiến trình apache đang chạy cho đến khi không có quá trình chạy nào và in [Máy chủ Apache đã dừng]

Sau đó, chạy lệnh pgrep httpdin không có gì, nhưng nếu tôi vào một trang web được lưu trữ bởi máy chủ, sau đó pgrep httpdin một số quy trình httpd.

Đây có phải là cách đúng đắn để ngăn chặn apache? Tại sao nó bắt đầu tự động sau khi chạy apachectl stop? Nếu nó có liên quan đến KeepAliveTime , làm cách nào để buộc các tiến trình con đang chạy dừng lại?

Chỉnh sửa: Điều này cũng đúng cho việc chạy service httpd stophoặc apachectl stopcác lệnh trong dòng lệnh.


2
Bạn có thể có một màn hình dịch vụ đang chạy mà chỉ thấy dịch vụ thoát ra và cố gắng tiếp tục hoạt động.
Bratchley

chỉ để kiểm tra lại một cái gì đó: kiểm tra sự hiện diện của /usr/bin/systemctl, xin vui lòng. Nếu đây là một hệ thống systemd tôi biết chính xác những gì đang xảy ra.
strugee

dịch vụ inetd?
Kiwy

@strugee /usr/bin/systemctlkhông tồn tại.
Omid

@Kiwy inetd không có trong service [TAB]danh sách
Omid

Câu trả lời:


2

upstart, người quản lý dịch vụ, có thể khởi động lại httpd nếu được đặt thành respawn.

apachectl stop dừng quá trình mà không thông báo upstart

Thử:

service httpd stop

Nhân tiện, khi bạn đưa ra bất kỳ stoplệnh nào giống như apache, nó sẽ ngừng chấp nhận các kết nối mới. Các gracefulsbổ sung sẽ cho phép nó để hoàn thành bất kỳ kết nối hiện đang mở.


1
OP đã gắn thẻ "CentOS", nhưng tôi đồng ý rằng một cái gì đó tương tự có lẽ là những gì đang diễn ra. Họ có thể có một số loại màn hình dịch vụ đang chạy.
Bratchley

Bạn có ý nghĩa gì về thẻ centos?
Matt

@mtm Cảm ơn, nhưng như JoelDavis đã đề cập, tôi sử dụng CentOS chứ không phải Ubuntu
Omid

@Omid Centos6? init --help | tail -1
Matt

Đúng. Centos6. init --helpcho thấy rằng nó sử dụng upstart! nhưng stop httpdtrả về lỗi này:stop: Unknown job: httpd
Omid

2

Xác nhận dịch vụ

Trên CentOS 6 tôi sẽ điều tra nếu httpddịch vụ có thể truy cập được.

$ service --status-all |& grep httpd
httpd is stopped

Bạn có thể vô hiệu hóa dịch vụ này bằng cách sử dụng chkconfig:

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

$ sudo chkconfig httpd off

$ chkconfig --list | grep httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

Nhưng nó tiếp tục bắt đầu khi tôi truy cập nó?

Vì bạn đang giao dịch với CentOS 6 nên bạn có thể sử dụng Upstart. Bạn có thể xem nếu httpddịch vụ nằm dưới sự kiểm soát của nó.

$ initctl list

Bạn sẽ thấy nó trong danh sách, tôi không có cấu hình này để hiển thị. Tôi sẽ giả định dựa trên mô tả của bạn về vấn đề mà hệ thống của bạn đã httpdđặt ra như thế này:

httpd stop/waiting

Theo tôi hiểu, điều đó có nghĩa là nếu Upstart thấy dịch vụ đó được truy cập, nó sẽ khởi động lại. Upstart sẽ duy trì một kịch bản phục vụ cho httpddưới /etc/initnếu đây là trường hợp. Bạn sẽ muốn vào bên trong tệp đó và vô hiệu hóa dịch vụ và tải lại cấu hình. Nó có thể có một respawnphần gây ra điều này:

Thí dụ

$ more /etc/init/prefdm.conf 
# prefdm - preferred display manager
#
# Starts gdm/xdm/etc by preference

start on stopped rc RUNLEVEL=5

stop on starting rc RUNLEVEL=[!5]

console output
respawn
respawn limit 10 120
exec /etc/X11/prefdm -nodaemon

Người giới thiệu


0

Hãy tìm nó trong /etc/inittab, có thể là ai đó đưa nó vào hồi sinh.


nội dung của tập tin là:id:3:initdefault:
Omid

Do đó, đó không phải là vấn đề.
periket2000
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.