마치 시작 시 실행되는 것처럼 스크립트를 실행하려면 어떻게 해야 합니까?

마치 시작 시 실행되는 것처럼 스크립트를 실행하려면 어떻게 해야 합니까?

시작 시 실행되는 스크립트가 있는데 로그 파일에 오류가 표시됩니다. 수동으로 실행하면 정상적으로 실행됩니다. 환경이 변경되었을 수도 있습니다.

재부팅하지 않고 시작할 때 이와 같은 스크립트를 실행할 수 있는 방법이 있습니까?

스크립트는 /etc/init.d심볼릭 링크와 함께 위치합니다 /etc/rc5.d/S97mounter.sh.

답변1

루트로 실행할 수 있습니다

env - scriptname

이렇게 하면 스크립트를 실행하기 전에 환경이 지워지지만 환경을 shell지우고 셸을 다음으로 설정 하려면 sh.

env -i /bin/sh -c scriptname

그러면 이는 스크립트를 실행하는 데 사용됩니다 /bin/sh. 그러나 이는 당시 실행되지 않을 수 있는 다른 서비스를 고려하지 않기 때문에 부팅 환경을 완전히 시뮬레이션하지 않습니다.

crontab 환경 시뮬레이션에 대한 비슷한 질문을 발견하고 매우 유용한 솔루션을 게시했습니다.어 허.

이를 사용하면 스크립트에서 실행하고 호스트를 재부팅한 다음 환경 파일을 사용하여 환경을 로드할 수 있습니다.

시작 스크립트의 일부:

env > /var/tmp/bootenv

그런 다음 일반 작업 중에 동일한 부트 환경을 설정하려면 다음을 수행하십시오.

env - `cat /var/tmp/bootenv` /bin/sh -c scriptname

답변2

시작 스크립트가 아닌 사용자 세션을 통해 프로그램이 시작되면 몇 가지 사항이 다를 수 있습니다.

  • 프로그램은 많은 환경 변수( PATH,, HOME... 포함)를 상속받습니다.
  • 프로그램은 터미널을 포함하여 여러 파일 설명자를 상속합니다.
  • 한도는 다를 수 있습니다.

최소 환경에서 프로그램을 실행하고 표준 파일 설명자를 닫으려면 다음과 같은 것을 사용할 수 있습니다.

env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin myprogram </dev/null >/dev/null 2>/dev/null

init시스템이 정의하는 환경 변수를 확인하려면 시스템의 매뉴얼 페이지나 기타 문서를 확인하세요 . 데몬으로 실행하려는 많은 프로그램에는 데몬 PATH이 필요합니다. 위의 값은 PATHDebian의 init 기본값입니다.

답변3

스크립트가 수행하는 작업과 발생하는 오류에 대한 추가 정보가 없으면 정확한 답변을 제공하기 어렵습니다. 이런 식으로 아마도가능한환경을 다시 생성하지만 이는 매우 어려울 수 있으며 파일 시스템을 마운트 해제하거나 바인드 마운트하거나 기타 흥미로운 작업을 수행해야 합니다.

또 다른 옵션은 다음과 같은 것을 사용하여 가상 머신을 만드는 것입니다.가상 상자또는키보드 가상 머신그리고 이를 사용하여 디버깅을 수행하므로 호스트를 재부팅하지 않고도 필요에 따라 가상 머신을 다시 시작할 수 있습니다.

관련 정보