Linux 사용자, 특히 Ubuntu와 같은 최신 배포판을 위한 가장 강력하고 편리한 도구 중 하나는 systemctl 명령. 이 명령줄 유틸리티는 일반적으로 systemd, 시스템 및 서비스 관리자와 상호 작용하는 데 사용됩니다.
명령을 통해 시스템 서비스를 관리하고, 해당 상태를 확인하고, 시작 또는 중지하고, 시스템 시작 시 활성화 및 비활성화할 수 있습니다. 꽤 편리하죠? 그러나 systemctl 명령을 찾을 수 없거나 인식되지 않으면 다음과 같은 문제가 발생하게 됩니다. "sudo:systemctl: 명령을 찾을 수 없습니다" 오류.
이제 "systemctl: 명령을 찾을 수 없음" 오류가 무엇을 의미하는지, 이 오류가 발생하는 다양한 이유 및 이 오류를 해결하는 방법에 대해 이야기해 보겠습니다.
systemctl: 명령을 찾을 수 없음은 무엇을 의미합니까?
간단히 말해서 "systemctl: 명령을 찾을 수 없습니다" 오류는 현재 환경에서 systemctl 명령줄 유틸리티를 사용할 수 없거나 액세스할 수 없음을 의미합니다. 이는 여러 가지 이유 때문일 수 있으며, 모두 시스템 환경이 아니거나 systemd 패키지가 시스템에 설치되지 않은 환경으로 인해 발생합니다.
기본적으로 systemd 패키지가 설치되지 않았거나 Linux 배포판 또는 버전이 systemd를 사용하지 않습니다. 오히려 init.d와 같은 오래된 서비스 관리 시스템을 사용합니다. 또 다른 가능성은 PATH 환경 변수에 systemctl이 있는 디렉토리가 포함되어 있지 않아 쉘이 이를 찾을 수 없다는 것입니다.
이제 시스템에 어떤 문제가 있어 "systemctl: 명령을 찾을 수 없음" 오류가 발생하는지 알았으니 문제가 있는 위치를 확인하고 해결하는 방법을 살펴보겠습니다.
systemctl: 명령을 찾을 수 없음 오류 수정
다음 단계에서는 시스템에 systemd가 설치되어 있고 systemctl을 사용하는지 여부를 확인하고 systemctl의 경로를 확인합니다. 문제를 확인한 후 오류를 수정하기 위해 필요한 조치를 취할 것입니다.
1. 시스템이 systemd를 사용하는지 확인
Ubuntu systemctl은 systemd 패키지가 설치된 경우에만 사용할 수 있으므로 먼저 다음 명령을 실행하여 시스템이 systemd를 사용해야 하는지 확인합니다.
ps -p 1 -o comm=
또는 다음 명령을 사용하여 systemd 버전을 확인할 수 있습니다.
systemd --version
출력이 systemd인 경우 systemd는 초기화 시스템이며 Ubuntu systemctl이 설치되어 있어야 합니다. 그러나 출력이 init 또는 다른 프로세스 관리자인 경우 이는 시스템이 대체 초기화 시스템을 사용하고 있음을 의미하며 systemd로 마이그레이션하지 않으면 systemctl이 작동하지 않습니다.
Upstart 또는 SysVinit와 같은 이전 초기화 시스템이 있고 systemctl을 사용하기 위해 systemd로 전환하려는 경우 다음 단계를 따르세요.
1. 다음 명령을 사용하여 systemd를 설치하여 systemctl을 설치합니다.
sudo apt install systemd-sysv
2. 다음 명령을 실행하여 시스템을 재부팅합니다.
sudo reboot
3. 현재 시스템이 systemd를 사용하고 있는지 확인합니다.
ps -p 1 -o comm=
이제 출력이 시스템화되어야 합니다.
2. systemd가 올바르게 설치되었는지 확인
일반적인 상황에서 systemd가 설치되어 init 시스템으로 실행 중이면 systemctl 명령이 올바르게 작동해야 합니다. 그렇지 않은 경우 systemd 패키지가 없거나 잘못 설치되었음을 의미합니다.
Docker 컨테이너 또는 클라우드 인스턴스와 같은 최소 버전의 Ubuntu를 사용하는 경우 systemd가 기본적으로 설치되지 않았을 수 있습니다. systemd 설치를 통해 systemctl을 설치하려면 다음 명령을 실행하십시오.
sudo apt update sudo apt install systemd
설치가 완료되면 systemctl 명령을 사용할 수 있는지 확인하세요.
3. systemctl의 PATH 확인
systemctl을 찾을 수 없음 오류의 일반적인 문제 중 하나는 systemctl을 설치할 수 있지만 시스템의 PATH에 없다는 것입니다. /bin, /usr/bin 또는 /usr/local/bin과 같은 일반적인 디렉토리에 시스템 바이너리가 있는지 확인하려면 다음 명령을 사용할 수 있습니다.
which systemctl
PATH에 나열된 디렉터리 중 하나에서 systemctl이 발견되면 다음과 같은 출력이 표시됩니다.
/usr/bin/systemctl
PATH의 어떤 디렉터리에서도 systemctl을 찾을 수 없으면 which 명령은 아무것도 반환하지 않습니다.
그러나 systemctl이 디렉터리에 있더라도 여전히 작동하지 않을 수 있습니다. 이는 systemctl이 PATH에 포함되지 않은 디렉터리에 있을 수 있기 때문입니다. 이 상황에서는 다음 명령을 사용하여 systemctl이 위치한 디렉터리가 시스템의 일부인지 확인해야 합니다.
echo $PATH
출력은 다음과 같아야 합니다.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
이제 해야 할 일은 systemctl이 있는 디렉터리( which 명령에서 가져온 디렉터리)가 echo $PATH 명령의 출력에 나열된 디렉터리에 포함되어 있는지 확인하는 것뿐입니다.
systemctl의 디렉터리가 echo $PATH의 출력에 포함되지 않은 경우 해당 디렉터리를 PATH 변수에 추가해야 합니다. 이렇게 하려면 다음 명령을 실행해야 합니다.
을 위한 Bash 쉘 사용자, 텍스트 편집기에서 ~/.bashrc 파일을 엽니다.
nano ~/.bashrc
파일 끝에 다음 줄을 추가합니다.
export PATH=$PATH:/usr/bin
/usr/bin은 이 예에서 systemctl이 위치한 일반적인 디렉터리입니다.
이제 CTRL + X를 누르고 Y를 눌러 확인하고 Enter를 눌러 파일을 저장하고 닫습니다.
을 위한 Zsh 사용자, 텍스트 편집기에서 ~/.zshrc 파일을 엽니다.
nano ~/.zshrc
파일 끝에 다음 줄을 추가합니다.
export PATH=$PATH:/usr/bin
/usr/bin은 이 예에서 systemctl이 위치한 일반적인 디렉터리입니다.
이제 CTRL + X를 누르고 Y를 눌러 확인하고 Enter를 눌러 파일을 저장하고 닫습니다.
위 단계를 완료한 후 echo $PATH 명령을 사용하여 systemctl의 디렉터리가 PATH에 추가되었는지 확인하세요. 이제 "systemctl: 명령을 찾을 수 없음" 오류가 발생하지 않고 systemctl을 실행할 수 있습니다.
4. 시스템 재설치
이전 수정 사항이 작동하지 않고 여전히 명령을 찾을 수 없음 오류가 발생하는 경우 systemd를 완전히 다시 설치하면 문제가 해결될 수 있습니다. 이렇게 하려면 다음 명령을 실행하세요.
sudo apt purge systemd sudo apt install systemd
그런 다음 다음 명령을 사용하여 시스템을 재부팅하십시오.
sudo reboot
systemctl이 작동하는지 확인하세요.
5. systemd가 올바르게 구성되었는지 확인
때로는 문제가 systemd의 잘못 구성된 설치만큼 간단하여 "systemctl: 명령을 찾을 수 없음" 오류가 발생할 수 있습니다. 이 문제를 해결하기 위해 해야 할 일은 다음 명령을 실행하는 것뿐입니다. 그러면 작업이 완료됩니다.
sudo dpkg-reconfigure systemd
6. 오래된 Linux용 Windows 하위 시스템(WSL)
만약 당신이 Ubuntu를 사용하고 있다면 WSL(Linux용 Windows 하위 시스템) WSL 1과 같은 이전 버전의 WSL은 기본적으로 systemctl을 지원하지 않으므로 이전 수정 사항 중 어떤 것을 사용하더라도 systemctl을 실행할 수 없습니다.
systemctl의 기능을 활용하려면 systemd를 더 잘 지원하는 WSL 2로 업그레이드해야 합니다. WSL을 사용하고 있는지 확실하지 않은 경우 다음 명령을 사용하여 확인할 수 있습니다.
uname -a
출력에 WSL이 언급되어 있으면 "systemctl: 명령을 찾을 수 없음" 오류가 표시되는 것입니다.
7. systemctl의 대안으로 sudo 서비스 사용
시스템이 systemd를 사용하지 않아 "systemctl: 명령을 찾을 수 없음" 오류가 발생하는 경우 sudo service 명령을 사용하여 서비스를 관리할 수 있습니다. 이 명령은 SysVinit 또는 Upstart와 같은 이전 init 시스템에서 작동합니다. 이는 systemd 대신 init 스크립트를 사용하는 Ubuntu 시스템에 유용합니다.
예를 들어 서비스를 시작하려면 다음을 실행합니다.
sudo service <service_name> start
최종 생각
systemd 및 해당 systemctl 명령줄 유틸리티는 SysVinit 및 Upstart와 같은 대부분의 다른 이전 init 시스템을 대체했습니다. systemd는 모놀리식 디자인과 Unix 이외의 철학으로 인해 모든 사람의 init 시스템 차 한잔이 아닐 수 있지만 systemd는 여전히 일반적으로 널리 사용되는 선택으로 간주됩니다. 따라서 systemd의 명령줄 유틸리티를 사용할 수 없으면 기능이 심각하게 제한되므로 systemctl 명령을 사용할 수 없음 오류를 해결할 수 있기를 바랍니다.
FAQ
systemctl이란 무엇이며 systemctl: 명령을 찾을 수 없음의 의미는 무엇입니까?
systemctl은 Ubuntu와 같이 systemd를 실행하는 Linux 시스템에서 서비스를 관리하는 데 사용되는 명령줄 도구입니다. "systemctl: 명령을 찾을 수 없음" 오류는 도구를 사용할 수 없거나 액세스할 수 없을 때 발생합니다. 일반적으로 시스템이 systemd를 사용하지 않거나 systemd 패키지가 설치되지 않았기 때문입니다.
모든 버전의 Ubuntu에서 systemctl을 사용할 수 있습니까?
아니요, 일부 Ubuntu 버전에서는 systemctl을 사용할 수 없습니다. systemctl은 대부분의 최신 Ubuntu 버전(15.04 이후)의 기본값인 systemd init 시스템의 일부입니다. 이전 버전이나 특정 최소 설치에서는 SysVinit 또는 Upstart와 같은 대체 초기화 시스템을 대신 사용할 수 있습니다.