rc.local에서 시작 시 sh 스크립트를 실행할 수 없습니다.

rc.local에서 시작 시 sh 스크립트를 실행할 수 없습니다.

이것은 내 /etc/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.

sh /home/ubuntu/Desktop/camset.sh
exit 0

/etc에 CD를 넣고 /home/ubuntu/Desktop/camset.sh를 실행하면 스크립트가 제대로 실행됩니다. 이 스크립트는 v4l2-ctl만 사용하여 카메라 필터를 설정합니다. 스크립트가 실행 중일 때 카메라가 아직 연결/설정되지 않았을 수 있습니까? 또한 chmod를 사용하여 스크립트를 실행 가능하게 만들었습니다.

업데이트: 이것은 내 새로운 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.

/usr/bin/screen -dmS autostart bash -c '/home/ubuntu/Desktop/camset.sh'
deflog on
logfile /tmp/screenlog_$USER_.%H.%n.%Y%m%d-%0c:%s.%t.log
exit 0

tmp/ 디렉토리에 있는 유일한 파일은 다음과 같습니다: config-err-sHJlFD unity_support_test.0

답변1

여러 가지 이유가 있을 수 있으며 우리는 귀하의 스크립트가 무엇을 하는지 알 수 없습니다. 내가 해야 할 일은 무슨 일이 일어나고 있는지 이해하기 위해 로깅을 추가하는 것뿐입니다.

예를 참조하세요:rc.local의 로그 파일은 어디에 있습니까?

(내가 선호하는) 또 다른 방법은 다음을 사용하는 것입니다.화면 명령자체 터미널 세션에서 프로세스를 시작합니다.

전제 조건:

apt-get install screen

그런 다음 local.rc 파일에 이와 같은 내용을 추가할 수 있습니다.

/usr/bin/screen -dmS autostart bash -c '/home/ubuntu/Desktop/camset.sh'

화면 콘솔 로그를 유지하려면 다음과 같이 /root/.screenrc 파일도 생성하십시오.

deflog on
logfile /tmp/screenlog_$USER_.%H.%n.%Y%m%d-%0c:%s.%t.log

재시작 후 로그 파일을 확인할 수 있습니다(이 예에서는 /tmp에 저장되어 있음).

PS: 스크립트가 반환되지 않으면 스크립트 뒤에 앰퍼샌드(&)를 추가해야 할 수 있습니다. 이로 인해 컴퓨터가 부팅되지 않을 수 있습니다.

rc.local은 루트로 실행됩니다.

관련 정보