종료 스크립트가 작성된 대로 작동하지 않습니다.

종료 스크립트가 작성된 대로 작동하지 않습니다.

저는 리눅스를 처음 접했습니다. 나는 다음과 같이 컴퓨터를 종료하는 매우 간단한 스크립트를 작성했습니다.

!#/bin/bash
echo "Hello World"
sudo shutdown

이 코드를 실행하면 스크립트가 일정을 제공하지 않더라도 일반적으로 1분 정도 일찍 종료 일정이 시작되지만 시스템을 즉시 종료하고 싶습니다. 이것이 내 스크립트나 Linux의 기능인지, 스크립트가 즉시 종료되도록 수정하려면 어떻게 해야 하는지 알고 싶습니다.

답변1

스크립트에서 해결해야 할 세 가지 문제가 있습니다.

첫 번째는 shebang 줄의 오타입니다. 이러한 줄의 올바른 구문은 #!/path/to/interpreter -옵션 및 인수입니다. 첫 번째 줄의 첫 번째 문자로 시작하고 개행 문자로 끝나야 합니다. bash는 허용되는 스크립팅 셸이므로(이 경우 약간 과잉일 수 있음) 처음 두 문자를 수정한 후에는 허용되지만 유용할 수 있는 몇 가지 옵션이 있습니다. -e오류가 발생하면 종료하면 더 나은 스크립트를 작성하고 -x쉘이 각 단계에서 수행하는 작업을 보여 주지만 이 경우에는 문제를 포착할 수 없습니다.

종료할 때 가장 흔히 저지르는 두 가지 실수는 종료 시간과 종료 유형인데, 두 가지를 모두 해본 것 같습니다. 종료의 주요 기능은 일회성 종료입니다. 절대 시간, 상대 시간, 를 지정하는 세 가지 방법이 있습니다 now. Now 는 별칭으로 +0지금부터 0초를 의미하며 이는 단일 사용자 시스템에서 가장 일반적인 경우입니다. Shutdown의 또 다른 주요 기능은 일시 중지, 전원 끄기, 다시 시작 등 다양한 유형의 종료를 지원한다는 것입니다. 그러나 종료가 자동 전원 관리보다 우선하므로 기본적으로 단일 사용자 모드로 설정됩니다. 과거에는 모든 사용자를 쫓아낸 후 실제로 시스템 전원을 끄기 전에 파일 시스템을 동기화, 마운트 해제 및 확인할 수 있었습니다. 다중 사용자 모드로 다시 전환하기 전에 다른 유지 관리를 수행하는 데에도 유용합니다. 요즘은 거의 사용되지 않지만 여전히 기본 설정입니다. 매뉴얼 페이지에는 종료 유형을 선택하는 방법이 나와 있습니다.

또한 루트 사용자의 경우 sudo가 필요하지 않으므로 루트 사용자의 경우 건너뛰어도 됩니다.

답변2

가장 좋은 방법은 터미널에 명령을 입력하여 명령이 수행하는 작업을 테스트하는 것입니다. 귀하의 경우 다음을 사용하고 싶다고 생각합니다.

shutdown now

관련 정보