![한 줄 필요: 이미 실행 중인 경우 httpd를 중지하고 그렇지 않은 경우 httpd를 시작합니다.](https://linux55.com/image/63062/%ED%95%9C%20%EC%A4%84%20%ED%95%84%EC%9A%94%3A%20%EC%9D%B4%EB%AF%B8%20%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20%EA%B2%BD%EC%9A%B0%20httpd%EB%A5%BC%20%EC%A4%91%EC%A7%80%ED%95%98%EA%B3%A0%20%EA%B7%B8%EB%A0%87%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EA%B2%BD%EC%9A%B0%20httpd%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%A9%EB%8B%88%EB%8B%A4..png)
CentOS 7 구성 스크립트의 일부로한 줄다음을 수행합니다. 불행히도 나는 이것을 달성하는 방법을 모릅니다.
- httpd가 실행 중이면 중지하십시오.
- httpd가 실행되고 있지 않으면 httpd가 설치되어 있는지 확인하고 시작하십시오.
- 이상적으로는 결과가 /log/httpd/에 기록됩니다.그리고/&호스트 이름/로그/httpd/
누구든지 도와줄 수 있나요?
답변1
CentOS7에는 거의 대부분의 작업을 수행하는 systemctl이 있습니다. Apache가 표준 패키지를 통해 설치된 경우 즉시 작동합니다.
echo -n $(date +"%s %F %T"): \
if systemctl is-active httpd; then \
systemctl stop httpd && echo "httpd stopped"; \
elif systemctl enable httpd; then \
systemctl start httpd && echo "httpd started"; \
else \
echo "httpd not installed"; false;\
fi 2>&1 || echo "Failure: $?" | \
tee -a /var/log/httpd/status.log /some/other/location/log/httpd/status.log
명확성을 위해 줄로 나누었습니다. 한 줄로 축소하려면 \ 및 개행 문자를 제거하세요. 로깅에 더 많은 세부 정보를 추가할 수 있습니다.
답변2
이것은 내 온라인 메시지입니다:
( if service httpd status; then echo 'stop'; service httpd stop; else echo 'check installed'; if ! rpm -qa | grep -q '^httpd-'; then echo 'install'; yum -y install httpd; fi; echo 'start'; service httpd start; fi ) &> /tmp/temp.log; cat /tmp/temp.log >> /log/httpd/some.log; cat /tmp/temp.log >> /&hostname/log/httpd/another.log; rm /tmp/temp.log