Computer >> 컴퓨터 >  >> 체계 >> Linux

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

이 문서에서는 Linux CentOS/RHEL 7/8에서 자동으로 시작되도록 서비스 및 스크립트를 구성하는 방법에 대한 기본 사항을 배웁니다. 특히 systemd 데몬에서 서비스를 추가하거나 시작에서 제거하는 방법을 배우고 Linux에서 부팅할 때 스크립트나 데몬을 시작하는 다른 방법을 고려하십시오.

이 기사는 Linux에서 자동으로 시작된 서비스 또는 스크립트 목록을 빠르게 찾고, 시작할 서비스나 스크립트를 추가하거나, 일부 앱의 자동 시작을 비활성화하는 방법을 가르치는 데 목적이 있습니다.

Systemctl을 사용하여 Linux에서 시스템 서비스 관리

가장 인기 있는 Linux 배포판(CentOS, RHEL, Debian, Fedora 및 Ubuntu)은 systemd를 사용합니다. init.d 대신 시작 데몬 . 시스템 다른 데몬을 시작하고 관리하는 데 사용되는 Linux 서비스 관리자입니다. /etc/systemd/system의 단위 파일을 사용합니다. (init.d /etc/init.d/에서 사용된 스크립트 ). Systemd를 사용하면 OS 부팅 시 서비스 시작을 병렬화할 수 있습니다.

systemd를 관리하려면 systemctl 명령이 사용됩니다.

우선 시스템을 부팅한 후 systemd에서 사용 가능한 장치 목록을 확인합니다. :

systemctl list-units

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

다음 명령을 사용하여 단위 파일 목록을 가져올 수 있습니다.

systemctl list-unit-files

이 명령은 사용 가능한 모든 단위 파일을 표시합니다.

활성 서비스 및 해당 상태 목록을 표시하려면 다음 명령을 실행하십시오.

# systemctl list-units -t service

일부 장치는 시작 후 비활성화될 수 있으므로 —all을 사용하여 전체 목록을 얻을 수 있습니다. 옵션.

# systemctl list-units --all

UNIT LOAD ACTIVE SUB DESCRIPTION
proc-sys-fs-binfmt_misc.automount loaded active waiting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
● exim.service not-found inactive dead exim.service
firewalld.service loaded active running firewalld - dynamic firewall daemon
getty@tty1.service loaded active running Getty on tty1
● iptables.service not-found inactive dead iptables.service
Bring up/down networking
● NetworkManager-wait-online.service not-found inactive dead

목록에서 볼 수 있듯이 디스크에 없는 서비스도 표시됩니다.

또한 다음과 같은 다른 플래그를 사용할 수 있습니다.

  • —상태 — 데몬 상태를 감지하는 데 사용됨:Load, Active, Sub
  • —유형 — 유형별로 단위를 필터링할 수 있습니다.

예:

systemctl list-units --all --state=active —활성 시스템 단위 목록만 표시

systemctl list-units —type=service — 서비스인 단위 목록을 표시합니다.

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

Systemd에서 서비스를 만드는 방법은 무엇입니까?

서비스를 관리하기 위해 systemd는 특별한 구문을 사용합니다. .service를 추가해야 합니다. 서비스 이름 뒤에 예:

# systemctl enable nginx.service – 이 명령은 nginx 웹 서버를 시작에 추가합니다.

이 명령은 systemd의 서비스 명령에 지정된 파일에 대한 심볼릭 링크를 생성합니다. 시작 디렉토리.

# systemctl enable nginx.service

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service
명령의 출력은 서비스 파일에 대한 심볼릭 링크가 생성된 디렉토리를 보여줍니다.

서비스가 시작에 추가되었는지 확인하기 위해 상태를 확인할 수 있습니다.

systemctl status nginx.service

출력에서 다음 줄을 확인하세요.

Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)

활성화됨 값은 이 서비스가 Linux 시작에 추가됨을 의미합니다. 서비스가 자동으로 시작되지 않으면 사용 안 함으로 표시됩니다. 여기.

Systemd에서 서비스를 비활성화하는 방법

서비스 자체는 제거되지 않는 동안 Linux 부팅 시 시작되지 않도록 시작 시 서비스를 제거할 수 있습니다. 서비스 시작을 비활성화하려면 다음 명령을 실행하십시오.

# systemctl disable your_service

예를 들어, nginx 자동 시작을 비활성화하려면:

# systemctl disable nginx.service

Removed symlink /etc/systemd/system/multi-user.target.wants/nginx.service

그렇게 하면 서비스 파일에 대한 심볼릭 링크가 systemd 디렉토리에서 제거됩니다. 서비스가 자동으로 시작되는지 확인할 수 있습니다.

# systemctl is-enabled nginx

Systemd로 장치를 어떻게 마스킹합니까?

비활성화한 후에도 시동에 남아 있고 Linux 재부팅 후에 시작된 일부 사악한 서비스를 발견했습니다. 이 문제를 해결하기 위해 서비스를 마스킹할 수 있습니다.

# systemctl mask nginx.service

그러면 수동으로 또는 OS를 다시 시작한 후에 시작되지 않습니다.

# systemctl mask nginx.service

Created symlink from /etc/systemd/system/nginx.service to /dev/null.

# service nginx restart

Redirecting to /bin/systemctl restart nginx.service
Failed to restart nginx.service: Unit is masked.

다음 명령을 사용하여 서비스 마스크를 해제할 수 있습니다.

# systemctl unmask nginx.service

Removed symlink /etc/systemd/system/nginx.service.

서비스를 마스킹한 후 단위 파일을 확인하면 서비스가 masked로 표시된 것을 볼 수 있습니다. :

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

Rc.local로 스크립트 또는 서비스 실행

Linux 부팅 시 다른 스크립트를 실행하려면 rc.local 자주 사용됩니다.

스크립트 외에 rc.local 사용 systemd를 사용하여 시작된 서비스도 실행할 수 있습니다. . systemd가 있는 경우 rc.local을 사용해야 하는 이유를 모르겠습니다. 하지만 여기에 몇 가지 예가 있습니다.

먼저 /etc/rc.local 실행 가능해야 합니다.

chmod +x /etc/rc.local

Rc.local을 systemd autostart에 추가해야 합니다.

systemctl enable rc-local

그리고 nginx를 시작하는 명령을 추가할 수 있습니다. 웹 서버를 rc.local로 :

service nginx start

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

하지만 rc.local은 거의 사용하지 않습니다. 서비스를 시작합니다. 더 자주 rc.local은 스크립트를 시작하거나 명령을 한 번 실행하는 데 사용됩니다.

예를 들어 /root/test.sh 스크립트를 만들었습니다. 그것은 뭔가를하고 부팅 직후에 실행하고 싶습니다. rc.local 파일에 다음 줄을 추가합니다.

sh /root/test.sh

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

CentOS 7부터 개발자는 rc.local 사용되지 않는 데몬이며 스크립트나 서비스를 시작하는 데 사용하지 않는 것이 좋습니다. 하지만 매우 간단하기 때문에 아직 작동 중일 때 사용합니다.

Systemd로 Linux 서비스를 만드는 방법은 무엇입니까?

자신만의 데몬을 만들고 systemd.를 통해 관리할 수 있습니다.

예를 들어 동일한 스크립트(/root/test.sh ) 시스템이 재부팅될 때마다 새 서비스의 파일을 만드는 것부터 시작하겠습니다.

touch /etc/systemd/system/test-script.service
chmod 664 /etc/systemd/system/test-script.service
nano /etc/systemd/system/test-script.service

파일 내용은 다음과 같습니다.

[Unit]
Description=Template Settings Service
After=network.target
[Service]
Type=oneshot
User=root
ExecStart=/root/test.sh
[Install]
WantedBy=multi-user.target

주요 매개변수는 다음과 같습니다.

User – 데몬이 시작된 사용자 계정

Type=oneshot — systemd는 다른 장치를 계속 진행하기 전에 프로세스가 끝날 때까지 기다려야 합니다.

확인하고 다시 시작하십시오.
# systemctl daemon-reload
# systemctl start test-script.service
# systemctl status test-script.service

● test-script.service - Test
Loaded: loaded (/etc/systemd/system/test-script.service; disabled; vendor preset: disabled)
Active: active (running)

서비스가 제대로 작동하면 시스템 시작에 추가하십시오.

# systemctl enable test-script.service

Created symlink from /etc/systemd/system/multi-user.target.wants/test-script.service to /etc/systemd/system/test-script.service.

따라서 자동 시작하는 스크립트를 추가하고 systemd를 통해 관리할 수 있습니다.

Cron을 사용하여 스크립트를 실행하는 방법

특정 빈도로 스크립트나 명령을 실행하려면 cron을 사용할 수 있습니다. :

crontab -e — cron 작업 테이블을 변경하기 위해 편집기를 엽니다.

여기에 원하는 작업을 추가합니다. 예를 들면 다음과 같습니다.

* * * * * /root/test.sh — 1분에 한 번씩 스크립트를 실행합니다.

감시자를 작성할 수 있습니다. 서비스 상태를 확인하는 스크립트이며 서비스가 실행되고 있지 않으면 스크립트가 서비스를 시작합니다. 일부 프로젝트에서 비슷한 방식을 사용하고 있습니다.

cron의 모든 작업 목록을 표시하려면 다음 명령을 실행하십시오.

# crontab -l

* * * * * /root/test.sh

cron 작업을 순서대로 실행하는 데 사용할 수 있는 시간 값:

  • 분:0-59
  • 시간:0-59
  • 날짜:1-31
  • 월:1-12
  • 요일:0-7(0 또는 7은 일요일)

우리 작업에서 스크립트는 1분에 한 번 실행되므로 *별표*가 있습니다.

cron 중 하나에 스크립트를 배치할 수도 있습니다. 디렉토리:

  • /cron.daily – 스크립트가 하루에 한 번 실행되는 경우
  • /cron.hourly – 스크립트가 한 시간에 한 번 실행되는 경우
  • /cron.monthly — 한 달에 한 번 실행되는 스크립트의 경우
  • /cron.weekly — 스크립트가 일주일에 한 번 실행되는 경우

지정된 디렉토리의 스크립트는 자동 일정에 따라 실행됩니다.

Bash 시작 스크립트:.bashrc

SSH를 시작할 때 몇 가지 작업을 수행하려는 경우 콘솔에서 .bash_profile에 명령이나 스크립트를 추가할 수 있습니다. 또는 .bashrc 파일. 이론적으로 이러한 파일에 작업을 추가할 수 있으며 어떤 경우에도 실행됩니다. 일반적으로 필요한 것은 .bashrc에 추가되고 .bashrc는 .bash_profile에서 시작됩니다.

.bashrc 파일에 nginx 웹 서비스를 다시 시작하는 명령을 추가했습니다.

service nginx restart

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

그런 다음 파일을 저장하고 SSH 세션을 다시 시작했습니다.

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

보시다시피 터미널을 시작할 때 웹 서버도 다시 시작되었습니다. 터미널을 시작할 때 수행할 수 있는 작업은 무엇입니까? 가동 시간과 같은 몇 가지 추가 도구일 수 있습니다. 서버 확인:

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

또는 특정 디렉토리로 이동하여 mc를 시작하려면 ssh 콘솔을 실행할 때 .bashrc에 다음을 추가합니다. :

cd /var/
mc

CentOS/RHEL에서 서비스 및 스크립트 시작을 관리하는 방법은 무엇입니까?

Linux에서 Linux 서비스 또는 스크립트 시작을 관리하는 방법에 대한 이 문서가 도움이 되었기를 바랍니다(이 문서는 CentOS 및 RHEL용으로 작성되었지만 다른 배포판에는 적합함). 이 정보가 Linux 시스템 관리의 기초를 공부하는 사람들에게 유용할 것이라고 확신합니다.