Linux에서 일시 중단 및 재개 시 스크립트 및 명령을 실행하는 방법

일시 중단 전(또는 재개 후) Linux에서 일시 중단 및 재개 시 스크립트와 명령을 실행하는 가장 좋은 방법은 systemd init 시스템을 사용하는 것입니다. 이는 init 시스템이 커널 및 전원 시스템과 직접 상호 작용하기 때문입니다. 이 도구로 작업하는 방법을 배우면 모든 사용자가 Linux 운영 체제를 많이 제어할 수 있습니다.

PC에서 init 시스템을 어지럽히는 것은 자신이 무엇을 하고 있는지 모르는 경우 위험할 수 있음을 이해하십시오. 발생할 수 있는 사고를 피하기 위해 이 튜토리얼의 지침을 최대한 가깝게 따르십시오.

모든 최신 Linux 배포가 systemd init 시스템을 지원하는 것은 아닙니다. 일부는 upstart 또는 완전히 다른 것을 사용합니다. 이 자습서에서는 가장 일반적인 시작 시스템인 systemd에 초점을 맞춥니다. 이 기사에서 다루는 내용이 실행되지 않는 작업에서 이 작업을 수행하려는 경우 운영 체제 설명서에서 지침을 살펴보십시오.

참고: 데비안 사용자는 usr/lib/systemd/system-sleep의 모든 인스턴스를 /lib/systemd/system-sleep/로 교체해야 합니다.

일시 중단 전에 명령 실행

일시 중지하기 전에 스크립트를 실행하려면 /usr/lib/systemd/system-sleep/ 디렉토리에 bash 스크립트 파일을 배치하십시오. 스크립트 자체는 무엇이든 할 수 있지만 준수해야 하는 특정 구문이 있습니다. 터미널 창을 열어 시작합니다. sudo -s를 사용하여 루트 쉘을 얻습니다.

다음으로 system-sleep 디렉토리 내부의 nano 텍스트 편집기를 실행하십시오:

nano /usr/lib/systemd/system-sleep/pre-suspend.sh

스크립트 시작 부분에 shebang을 추가합니다. 이것을 추가하는 것이 중요하며, 이것이 없으면 인터프리터는 코드와 명령을 올바르게 읽을 수 없습니다.

#!/bin/bash/

스크립트의 다음 부분은 “if”입니다. 이것은 전원 제어 시스템에 시스템이 일시 중단을 위해 다운될 “경우”에 어떤 일이 발생해야 한다고 알려줍니다. 아래 코드를 붙여넣습니다.

if [ "${1}" == "pre" ]; then
sh /path/to/script/to/run.sh

시스템이 일시 중단되기 직전에 Linux PC(또는 서버)에서 실행하려는 스크립트의 sh /path/to/script/to/run.sh를 변경합니다. “if” 바로 뒤에 오는 줄이 sh /path/to/script/to/run.sh일 필요는 없다는 점을 명심하십시오. 이를 사용하여 다양한 명령을 실행할 수도 있습니다. bash가 이를 명령으로 인식할 수 있는 한 실행됩니다.

  Tiger를 사용하여 Linux에서 루트킷을 확인하는 방법

“before suspend” 스크립트의 마지막 부분은 “else if” 부분을 추가하는 것입니다. 스크립트의 이 부분은 수정할 필요가 없습니다. 이 예에서 우리는 시스템이 다시 깨어날 때가 아니라 시스템이 다운되기 전에 무언가를 하는 것에 대해 걱정하고 있기 때문입니다.

elif [ "${1}" == "post" ]; then
# nothing goes here
fi

파일에 모든 것이 추가되면 Ctrl + O를 눌러 nano를 저장합니다.

재개 후 명령 실행

재개 후 명령을 실행하는 것은 일시 중단 전에 무언가를 실행하는 것과 매우 유사합니다. 유일한 차이점은 스크립트의 “if” 부분 뒤에 명령을 추가하는 대신 “elif” 줄 다음에 가장 중요한 코드 부분을 추가한다는 것입니다.

이력서 작성 후 스크립트를 작성하려면 먼저 shebang을 첫 번째 줄로 추가하십시오.

#!bin/bash

다음 줄에 스크립트의 “if” 부분을 추가합니다.

if [ "${1}" == "pre" ]; then
# nothing goes here

해당 코드 비트를 bash 스크립트에 붙여넣고 아래로 이동하여 “else if” 섹션을 붙여넣습니다.

elif [ "${1}" == "post" ]; then
sh /path/to/script/to/run.sh
fi

다시 한 번, “elif” 줄 아래에 아무 것도 쓰지 않아도 됩니다. 일반적인 명령 작업인 한 systemd 및 bash가 실행합니다.

시작 및 재개 시 명령 실행

두 개의 반대 명령을 실행하려면; 일시 중단 전에 하나, 재개할 때 하나가 가능합니다. 그것은 단지 스크립트를 사용자 정의하고 ‘if’ 줄과 “elseif” 줄 아래에 줄을 추가하는 것을 의미합니다.

평소와 같이 통역사를 위한 스크립트에 shebang을 게시하는 것으로 시작하십시오.

#!/bin/bash

그런 다음 코드의 if 섹션을 붙여넣습니다.

if [ "${1}" == "pre" ]; then
# replace with command

if 아래에서 “# replace with command”를 시스템이 다운되기 직전에 실행하려는 명령으로 바꾸십시오. 그런 다음 “elif” 섹션으로 이동하여 동일한 작업을 수행합니다.

elif [ "${1}" == "post" ]; then
#  replace with command
fi

Ctrl + O로 파일을 저장하고,

권한 업데이트 및 스크립트 사용

필요한 모든 명령은 스크립트 파일 내부에 있지만 실행하기 전에 권한을 업데이트해야 합니다. 터미널을 열고 su 또는 sudo -s로 루트를 얻습니다. 그런 다음 다음을 수행합니다.

chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh

이제부터는 일시 중단하거나 재개할 때마다 스크립트 내부의 사용자 지정 명령이 실행되어야 합니다.

  헤드폰과 이어버드는 언제 청력을 손상시킬 수 있습니까?

참고: systemd system-sleep에 대한 질문이 있습니까? man systemd-suspend.service로 매뉴얼을 확인하십시오.