rc.local - 모든 명령이 실행되는 것은 아닙니다.

rc.local - 모든 명령이 실행되는 것은 아닙니다.

내 rc.local에 다음 줄이 있습니다

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

if [ -f /resize ]
then
if [ -f /resize2 ]
then
sh /resize2
else
sh /resize
fi
fi

/etc/rc --foreground
/sbin/iptables-restore /etc/iptables
mkdir /tmp/cooks
mkdir /tmp/cook
chmod 777 /tmp/cook
chmod 777 /tmp/cooks
mkdir /tmp/xhprof
chmod 777 /tmp/xhprof

exit 0

그러나 시스템 시작 시 nor /tmp/cooks/tmp/cookdir도 생성되지 않습니다. /tmp/xhprof나는 그것을 사용하고 있다Debian GNU/Linux 6.0 squeeze (VPS)

답변1

스크립트는 #!/bin/sh -e. 이 -e옵션은 명령이 0이 아닌 상태를 반환하는 경우 쉘이 종료됨을 의미합니다. 명령 중 하나가 실패했을 수 있습니다. 어쩌면 /resize또는 /resize20이 아닌 값을 반환하거나 어쩌면 /etc/rc또는 을 반환합니다 iptables-restore. Shebang 줄을 다음으로 변경 #!/bin/sh -ex하고 스크립트를 실행하면 실행되는 명령의 추적을 볼 수 있습니다.

명령 중 하나가 성공해야 할 때 0이 아닌 값을 반환하는 경우 이를 수정하세요. 0이 아닌 값을 합법적으로 반환하는 명령 중 하나를 찾으면 || true그 명령 뒤에 추가하십시오. 명령의 반환 상태에 관심이 없다면 해당 명령을 제거하십시오 -e.

관련 정보