여기의 이전 답변은 모두 완벽 요구 사항을 충족하지만 작업이 완료되는 즉시 시스템 전원을 끌 수도 있습니다.
bash
스크립트를 trap
ped 할 수 있습니다 . 즉, 특정 신호를 가로 채서 필요할 때 특정 작업을 실행할 수 있습니다. EXIT
트랩 될 수있는 신호 중 하나입니다.
당신은 할 수있을 것입니다 :
- 자동화 된 셸 스크립트
trap
를 설정합니다 EXIT
. 즉 자동화 된 작업이 종료됩니다.
- 해당 시스템에서 로그 아웃 할 때마다 전원을 끄는를 의미 하는
trap
로 설정하십시오 .bashrc
EXIT
.
옵션 # 1은 이상적인 검사가 될 수 있습니다. 단, 작업은 임시 검사와 수동 판단이 필요하지 않습니다.
옵션 # 2는 전원을 끄지 않고 터미널을 종료하는 것을 잊어 버린 경우를 다룹니다. 그러나 경고가 있습니다. 동일한 시스템에 여러 개의 터미널이 열려 있고 그 중 하나를 종료해도 여전히 시스템의 전원이 모두 동일하게 꺼집니다. (그것을 피하기 위해 스크립트를 작성할 수는 있지만 솔루션을 복잡하게 만들지는 않습니다.)
cleanup(){
# Do some tasks before terminating
echo oh la la, cleaning is so nice
echo "See you later, world"
sudo poweroff & # finally shutdown
}
trap cleanup EXIT
.bashrc
옵션 # 2 의 끝에 , 옵션 # 1의 스크립트 상단에있을 수 있습니다.
poweroff
스크립트 끝에서 왜 사용하지 않습니까?
set -eo pipefail
스크립트 상단에 사용하는 것을 선호합니다 . 오류가 발생해도 자동으로 실패하지 않습니다. 더 많은 명령 실행을 중지합니다. trap
of of EXIT
signal은 오류로 인해 스크립트가 조기에 종료되는 경우를 포함해야합니다.
그러나 작업의 경우 시스템이 완료되기 전에 시스템이 종료 될 수도 있습니다.
bash
스크립팅을보다 쉽게 디버깅하기 위해 사용 하는 간단한 템플릿이 있습니다. 어쩌면 일부 사용되었을 수 있습니다. 이 요점을 참조하십시오 .
at
(일회성 실행)을 살펴보십시오 .