/etc/rc.local
시작하는 동안 Tiny Tiny RSS에 대한 업데이트 데몬을 시작 하는 단일 명령이 스크립트 에 있지만 시작하는 동안 스크립트가 실행되지 않습니다. 왜?
전체 /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.
/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet
exit 0
/etc/rc.local
실행 가능합니다 :
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
존재하며 실행 가능합니다.
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27 2012 /etc/init.d/rc.local
/etc/init.d/rc.local
이 런레벨에 대해 시작시 실행됩니다 :
# runlevel
N 2
# ls -l /etc/rc2.d/S99rc.local
lrwxrwxrwx 1 root root 18 Sep 22 2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local
명령 행에서 /etc/rc.local을 수동으로 호출하면 update_daemon이로드됩니다 …
# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
…이 문제가 해결 될 때까지 서버를 다시 시작할 때마다 기억해야합니다.
비슷한 질문이 이미 있지만 지금까지 내 특정 문제에 정보를 적용 할 수 없었습니다.
시작하는 동안 rc.local의 명령이 실행되지 않는 이유는 무엇입니까?
답변
rc.local
명령을 실행하는 동안 오류가 발생하면 스크립트가 종료됩니다 ( -e
플래그를 언급하십시오 #!/bin/sh -e
).
실행시 명령을 실행하려고 할 때 일부 전제 조건이 충족되지 않아 rc.local
명령 실행이 실패 할 수 있습니다.
CPU 관리자를 수동으로 설정하는 동안 동일한 문제가 발생하여에서 실패했습니다 rc.local
. update-rc.d
시작시 명령을 실행 하는 데 사용되는 사용자 지정 해결 방법은 다음과 같습니다 .
- 표제를 사용하여
myscript.sh
디렉토리에 파일 을 작성하십시오/etc/init.d
.#!/bin/sh
- 컨텐츠로 사용자 정의 명령을 넣으십시오.
- 실행 가능하게 만드십시오.
sudo chmod +x /etc/init.d/myscript.sh
- 다양한 런레벨에 대한 스크립트의 심볼릭 링크를 만듭니다.
sudo update-rc.d myscript.sh defaults
또한 /etc/network/if-up.d
스크립트를 확인 하고 네트워킹이 시작될 때 명령을 트리거 할 수 있는지 확인할 수 있습니다.
답변
시작시 rc.local에서 비슷한 문제가 발생했습니다.
sshades는 다음 답변을 제공했습니다.
우분투는 이제 systemd를 사용하고 있으며 rc.local은 기본적으로 “끄기”된 서비스로 간주됩니다. 다음 명령을 입력하고 재부팅하여 rc.local을 “on”으로 설정할 수 있습니다.
sudo systemctl enable rc-local.service
비록 그의 솔루션을 테스트하지는 않았지만 논리적으로 들리며 작동 할 것이라고 생각합니다. 그러나 :
또한 ./.config/autostart-scripts/에 스크립트를 추가하면 트릭을 수행하는 솔루션을 찾았습니다.
답변
시도 sudo sysv-rc-conf
하고 rc.local
활성화 되어 있는지 확인하십시오.
rc.local [ ] [x] [x] [x] [x] [ ] [ ] [ ]
답변
rc.local 스크립트가 실행 가능한지 확인하십시오 :
sudo chmod +x /etc/rc.local
그런 다음 활성화하십시오.
sudo systemctl enable rc-local.service
다음을 실행하여 시스템을 재부팅하거나 수동으로 스크립트를 시작하십시오.
sudo systemctl start rc-local.service
다음을 실행하여 서비스 상태를 표시 할 수 있습니다.
$ sudo systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (running) since Mon 2018-04-02 10:39:44 -03; 1s ago
Process: 2044 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
Main PID: 2049 (svscanboot)
Tasks: 3
Memory: 556.0K
CPU: 10ms
CGroup: /system.slice/rc-local.service
답변
FW 규칙을로드하는 일부 호스팅 서버에서이 문제가 발생했습니다.
이 박스에서 그들은 매우 빠르게 재부트하며, load 문이 문제를 해결하기 전에 rc.local에 “sleep 1″을 넣는 것을 발견했습니다. FW 규칙을로드하기 전에 인터페이스가 정착하는 데 약간의 시간이 걸린 것 같습니다.
답변
rc.local
Windows에서 메모장을 사용하여 한 번 편집 했는데이 문제가 발생하기 시작했습니다.
이 경우 텍스트 편집기를 사용하여 메모장 ++과 같은 EOL 변환을 지원하여 EOL 스타일을 ‘Unix’로 변환하면 해결할 수 있습니다.
:set ff=unix
Vim에서 할 수도 있습니다 .
답변
우분투 lxc 컨테이너에서 rc.local이 완벽하게 올바른 shebang을 가지고 있다면
#!/bin/sh
그것은 실패하지만 shebang을 제거하면 작동합니다.
왜 또는 어떤 쉘을 사용하는지에 대한 결론을 얻지 못했습니다. (다른 우분투 설치에서 적절한 shebang은 문제가되지 않습니다)