시작시“rc.local”을 실행하려면 어떻게해야합니까?


75

시스템을 시작할 때 실행할 스크립트가 있습니다. "rc.local"에 넣었지만 작동하지 않습니다. 시작시 실행되도록하려면 어떻게해야합니까?


1
xsetwacom 명령은 어디에 있습니까? /etc/rc.local은 시작할 때 매우 간단한 PATH로 실행됩니다. 터미널에 로그인 한 PATH와 다를 수 있습니다. 터미널에 다음을 입력하십시오. -p xsetwacom을 입력 한 다음 /etc/rc.local의 "xsetwacom"명령을 "type -p"에 의해 리턴 된 전체 경로로 바꾸십시오. xsetwacom이 작동하기 전에 수동 초기화를 수행해야합니까?
waltinator

3
시작 관리자로 systemd 를 사용 하여 rc.local 호환성이 실행 중인지 확인하십시오.systemctl status rc-local.service
rubo77

waltinator의 의견은 내 문제였습니다. 최소한의 경로 때문에 실행하려는 스크립트를 실행하는 방법을 몰랐습니다. / sbin에 : /etc/rc.local에를 runninig시 내 우분투 14.04 시스템에로드 경로는 다음이었다는 / usr / sbin에 / 빈 :는 / usr / 빈은 ... 당신은 넣어 당신을 확인할 수 있습니다 echo $PATH > /home/rc_local_path당신의 /로 etc / rc.local을 시작한 다음 시작시 파일을 실행 한 후 파일을 확인하십시오.
RaisinBranCrunch

스크립트를 계속 실행 해야하는 경우 파일 에서 데몬으로 시작해야rc.local 합니다.
totymedli

서버 시작 중에 실행 sudo systemctl enable rc-local.service되도록하기 위해 사용/etc/rc.local
William

답변:


56

스크립트를 수동으로 실행할 수 있습니까? 그렇지 않은 경우 해당 스크립트에 문제가있는 것입니다. 그렇지 않으면 rc.local을 더 살펴보십시오. 해당 스크립트를 루트로 실행해야하는 경우 sudo를 사용하여 수동으로 실행해야합니다.

/etc/rc.local이 실행 가능한지 그리고 호출하는 스크립트도 실행 가능한지 확인하십시오.

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local

rc.local에 shebang 행이 있는지 확인하십시오 (기본값).

$ head -n1 /etc/rc.local
#!/bin/sh -e

예, 스크립트를 수동으로 실행할 수 있습니다. /etc/rc.local이 실행 가능한지 어떻게 확인할 수 있습니까? 무엇을 입력해야합니까? "$ ls -l /etc/rc.local -rwxr-xr-x 1"입니까? 감사!
pedroo

@ pedroo : 터미널에 표시된 내용 을 정확하게 복사했습니다 (따라서 프롬프트, 입력 및 출력이 모두 표시됩니다). 명령은 "ls -l /etc/rc.local"이며 실행 가능하면 해당 X가 출력됩니다.

3
"ls -l /etc/rc.local"을 시도했지만 실행 파일이지만 시작시 실행할 수 없습니다 ... 어떤 생각입니까?
pedroo

1
@ pedroo : X 서버가 실행 중이어야하며 rc.local이 실행될 때 발생하지 않습니다. rc.local에서 실행하면 아무것도하지 않고 종료됩니다 (syslog 또는 다른 곳에 메시지를 넣기를 바랍니다). xsetwacom 명령을 ~ / .xinitrc 또는 / etc / X / xinit / xinitrc에 대신 넣어야합니다.

1
@pedroo : rc.local에는 다른 시간에 실행되도록되어있는 명령이 포함되어 있습니다. 새 파일을 생성하고 ~ / bin 에 넣고 실행 가능 (nautilus의 chmod 또는 속성)으로 표시하고 첫 번째 줄을 "#! / bin / bash"로 만든 다음 명령을 나중에 줄에 넣을 수 있습니다.

53

제 경우에는 지침 중 완벽한 솔루션이 없었습니다. 당신이 나만큼 운이 없다면,이 자세한 것을 시도하십시오

  1. 모든 실행 코드를 foo.sh와 같은 임의의 이름을 가진 별도의 텍스트 파일에 넣고 임의의 위치에 저장하십시오.
  2. 더하다

    #!/bin/sh

    코드의 첫 줄로.

  3. foo.sh를 실행 해보십시오.

    sudo foo.sh

    전혀 오류가 없는지 확인하십시오.

  4. sh 명령 뒤에 /etc/rc.local 스크립트에 작성된 스크립트의 전체 경로와 이름을 제공하십시오.

    sh '/path/to/your/script/foo.sh'
  5. 위의 줄을 마지막 코드 줄 앞에 두어야합니다.

    exit 0

    /etc/rc.local 스크립트 끝에서.

  6. /etc/rc.local의 첫 줄을 확인하십시오

    #!/bin/sh -e
  7. /etc/rc.local이 아직 실행 가능하지 않은 경우 실행 가능하게 만드십시오.

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
  8. 실행하여 모든 것이 잘 작동하는지 확인하십시오.

    sudo /etc/init.d/rc.local start
  9. 시스템을 다시 시작하십시오.

6
스크립트가 시작 환경에서 실행되는지 확인하는 단계 # 8이 핵심이었습니다. 내 경우에는 명령에 대한 전체 경로를 제공해야합니다.
Peter Gluck

대단한 걸음을 내딛는 현 단계와 단계는 센 토스에서 작동하지만 sudo /etc/rc.local start처음 실행됩니다.
A1Gard

감사합니다.이 분류는 실제로 저에게 도움이되었으며 위의 8 단계가 저에게도 중요했습니다! 그렇지 않으면 +1을 리디렉션하지 않습니다 (참고로, bitnami 클라우드 서버에서 실행되는 노드 앱 은 연속 실행을 위해 영원히 사용함 ).
fidev

8 단계는 좋은 팁이지만 7 단계는 고정 된 것으로 생각합니다. 터널을 열기 위해 cron을 사용하여 스크립트를 실행하려고했지만 무작위로 실패했습니다
SeanClt

28

최신 우분투 버전 systemd이 사용 /etc/rc.local되며 기본적으로 항상로드되지는 않습니다.

호환성 서비스가로드되어 있는지 확인

systemctl status rc-local.service

스크린 샷

활성화 된 (종료 된) 설정 이 들어 있으면 설정이 정상으로 보이고 /etc/rc.local파일에 다른 오류가 있을 수 있습니다 (예 : 실패한 명령 일 수 있음).


4
RC-local.service이 활성화되지 않은 경우, 설명이 게시물 확인 Systemd와 /etc/rc.local에 사용하는 방법
yaitloutou

3

두 가지 제안.

  1. 대상 스크립트 파일도 실행 가능으로 표시되어 있는지 확인하십시오.
  2. 대상 스크립트가 sudo 명령을 실행 중입니까? 그렇다면 sudo 비밀번호를 제공 할 수 있습니다.

내 잘못이야. 한 번만 확인하십시오. 수정 enzotib 주셔서 감사합니다 :)


8
rc.local루트로 실행되므로 암호가 필요하지 않습니다.
enzotib 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.