잊어 버려 rc.local...

잊어 버려 rc.local...

부팅/부팅 시 쉘 스크립트를 시작하려고 합니다. /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.

/root/ark/startup.sh   #Added 
exit 0

그 자체로 매력처럼 작동하는 스크립트를 실행해야 합니다. (스크린 세션이 시작됩니다...)

이를 달성하기 위해 사용할 수 있는 도움이나 다른 방법이 있습니까?

답변1

잊어 버려 rc.local...

~처럼CentOS 7에 대해 이야기하고 있습니다.:

데비안 8을 사용하고 있습니다. 당신은 체계화했습니다. van Smoorenburg System 5 클론의 /etc/rc.local호환성 메커니즘인 이전 버전과의 호환성 메커니즘이기 때문에 systemd의 이중 이전 버전과의 호환성 메커니즘입니다 .rc

아래 하이퍼링크로 연결된 AskUbuntu 질문의 혼란에서 알 수 있듯이 /etc/rc.local사용 시 상황이 심각하게 잘못될 수 있습니다. 다른 곳에서 사람들은 rc.local부트로더의 같은 위치인 systemd가 실행되는 방식이 익숙한 실행 방식과 다르다는 사실에 놀랐습니다. 다른 사람들은 rc.local이전 작업 방식을 예상하여 구축한 것이 새로운 udev규칙, NetworkManager systemd-logind또는 systemd-resolved다양한 "스위트" 등에 의해 완전히 깨졌다는 사실에 놀랐습니다 .

잊어 버려 rc.local... 이것은 갈 길이 아닙니다. 데비안 8이 있습니다. 따라서 적절한 시스템 서비스 단위를 만들고 이전 버전과의 호환성 수준이 서로 다른 지점에서 시작하지 마십시오. (Ubuntu에서는 3번 제거되었으며 rc이후 System 5 클론은 자체적으로 복제되었습니다.두 배10여 년 전에 신생 기업으로 대체되었고 이후 systemd로 대체되었습니다. )

스크립트를 작성한 다음 systemd 서비스 단위에서 스크립트를 호출하여 startup.shsystemd로 이 프로세스를 시작 하지 마십시오. 이 아이디어는 곧 다음과 같은 결과를 가져올 것입니다.시스템화 된 공포의 집지역. 프로세스 설정 및 실행을 최대한 직접적으로 설명하는 서비스 단위를 만듭니다. 래퍼 셸 스크립트의 제한 사항이 발생하는 경우에만 이 방법을 사용하세요. 래퍼 쉘 스크립트를 확인하십시오적어도exec최종 데몬을 재정의 하는 데 사용됩니다 .

당신은 그 서비스가 무엇인지 말하지 않았습니다. 을 사용한다고 말씀하셨는데 screen, 이것은 가난한 사람의 데몬 감독자로서 악용되는 경우가 많아 악용될 가능성이 높습니다.아니요다음 환경에서 서비스를 실행하는 방법실제서비스 매니저. 거기에서 "방주"라는 단어를 볼 수 있는데, 이 단어는 남용 가능성과 함께 screen두 가지 사실을 떠올리게 합니다.

추가 읽기

답변2

전체 systemd를 사용하는 경우 표준 sysvinit 스크립트는 무시됩니다. sysvinit 스크립트를 사용하려면 systemd-shim을 설치해야 합니다.

관련 정보