Raspberry Pi가 부팅 될 때 스크립트를 실행하려고합니다. 웹 브라우저를 자동으로 열고 싶습니다.
간단한 해결책을 찾으려고했는데 (예를 들어 "시작"디렉토리 나 비슷한 곳에 스크립트를 놓는 것과 같은) 그와 같은 것은 보이지 않습니다.
Upstart 살펴 보았지만 작동 방식을 파악하기 위해 고심하고 있습니다. 내가 시도한 스크립트는 테스트 할 때 작동하지 않았습니다.
Raspberry Pi가 부팅 될 때 스크립트를 실행하려고합니다. 웹 브라우저를 자동으로 열고 싶습니다.
간단한 해결책을 찾으려고했는데 (예를 들어 "시작"디렉토리 나 비슷한 곳에 스크립트를 놓는 것과 같은) 그와 같은 것은 보이지 않습니다.
Upstart 살펴 보았지만 작동 방식을 파악하기 위해 고심하고 있습니다. 내가 시도한 스크립트는 테스트 할 때 작동하지 않았습니다.
답변:
시작시 Midori를 실행하려면 이 학습서를보십시오 . DIY 솔루션에 대해서는 계속 읽으십시오.
당신은 하단에 스크립트 실행 명령을 추가 할 수있는 .bashrc
것이다 스크립트 때마다 터미널을 열고 (또는 새로운 인스턴스를 실행할 실행 bash
) .
pi
폴더 에 있는지 확인하십시오 .
$ cd ~
파일을 작성하고 파일에서 실행할 스크립트를 작성하십시오.
$ sudo nano superscript
저장하고 종료 : Ctrl+ X, Y,Enter
.bashrc
구성 을 위해 엽니 다 .
.bashrc
스크립트를 실행하기위한 것이 아닙니다 .비 로그인 대화식 쉘이 시작될 때마다 실행되며 쉘을 구성하는 데 사용됩니다.
~/.bashrc: executed by bash(1) for non-login shells
.
$ sudo nano .bashrc
아래로 스크롤하여 행을 추가하십시오. ./superscript
저장하고 종료 : Ctrl+ X, Y,Enter
콘솔로 부팅 할 때 작동 하는 솔루션을 찾고 있다면 이 링크를 살펴보십시오 . 기본 요약 :
시작 스크립트 용 파일을 작성하고 파일에 스크립트를 작성하십시오.
$ sudo nano /etc/init.d/superscript
저장하고 종료 : Ctrl+ X, Y,Enter
스크립트를 실행 가능하게 만드십시오.
$ sudo chmod 755 /etc/init.d/superscript
시작할 때 실행할 스크립트를 등록하십시오.
$ sudo update-rc.d superscript defaults
LXDE 환경으로 부팅 할 때 스크립트를 실행하려면 이 Raspberry Pi 포럼 게시물을 살펴보십시오 .
로 이동 ~/.config/lxsession/LXDE-pi
autostart
해당 폴더 에서 파일을여십시오.
$ sudo nano autostart
@midori
새 줄에 추가하십시오 . 파이썬 스크립트와 같은 것을 실행하려면 @python mypython.py
새 줄에 같은 것을 넣으십시오 . 스크립트 파일을 실행하면 될 것이다 @./superscript
, 그러나 어떤 이유로 스크립트가 무한 루프 (아마도에서 실행 이 이 중지됩니다).
저장하고 종료 : Ctrl+ X, Y,Enter
Raspberry Pi를 LXDE 환경으로 다시 시작하십시오.
$ sudo startx
?
.bashrc
시스템을 부팅 할 때 또는 사용자가 로그인 할 때 새 터미널을 열 때만 읽지 않습니다 (그리고 사용자가 새 터미널을 열 때마다 읽습니다). 나는이 대답은 너무 많은 upvotes을 가지고 있음을 당황 해요 : 첫 번째 부분은 명백히 잘못이다 . 세 번째 부분은 GUI 프로그램을 실행하는 것이 맞습니다.
내가 대부분의 사람들이했던 것을 보았고 (Raspberry Pi 포럼을 보며) 성공을 거 두었던 것은을 사용하고 /etc/rc.local
있습니다.
여기서해야 할 일은 ./myscript
rc.local 텍스트 파일에 있습니다. 파이썬에 있다면을 넣으십시오 python myscript.py
.
이것은 문자 그대로 "일부"시작 디렉토리에 스크립트를 놓는 것과 같은 간단한 해결책 "입니다."-궁금한 사항이있을 때 포럼에서 검색 할 수도 있습니다.이 솔루션은 구글 검색!
python myscript.py
. 당신이 + X를 chmod를하고 추가하려는 경우 #! /bin/python
, 당신은 수행하여 스크립트를 실행할 수있는 $pathtofile/myscript.py
곳 $pathtofile
입니다 .
같은 디렉토리 나 파일의 절대 또는 상대 경로에 있다면.
/etc/rc.local
시스템 서비스 (사용자 인터페이스가없는 프로그램) 만 시작합니다.
crontab은 정의 된 시간에 명령을 실행합니다.
파일을 편집하십시오.
sudo crontab -e
파일에 줄을 추가하십시오 (여기서는 파이썬 스크립트).
@reboot python3 /home/pi/Desktop/exemple.py &
/etc/rc.local
사용자 인터페이스가없는 프로그램 만 시작합니다.
시작하려는 스크립트에 xorg 세션이 필요한 경우 사용중인 데스크탑 환경에 따라 작동하거나 작동하지 않을 수 있는 freedesktop 자동 시작 사양 을 따르십시오 .
또는 https://wiki.archlinux.org/index.php/autostarting에 설명 된대로 특정 데스크탑 환경을 대상으로 지정할 수 있습니다 .
스크립트가 데몬 또는 '서비스'의 설명에 적합하고 시스템이 raspbian 및 가장 현대적인 linuces의 경우와 같이 systemd 를 실행중인 경우 시스템 서비스로 실행되도록 스크립트를 구성 할 수 있습니다. 수명주기 및 실행 환경은 물론 네트워크 시작 및 실행과 같이 스크립트를 다시 시작하기위한 사전 조건이 있습니다. 실패한 경우 서비스 재시작을 구성 할 수도 있습니다 ( Restart=always
예 : 및 재시작 재시작 지연 RestartSec=10
).
시스템 전체에서 사용하려면 다음 /etc/systemd/system
과 vim /etc/systemd/system/autossh.service
같이 아래에 시스템 단위 파일을 작성하십시오 .
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
또한보십시오:
[ unit
] 구성
[ service
] 구성
이제 서비스를 테스트 할 준비가되었습니다.
systemctl start autossh
서비스 상태 확인 :
systemctl status autossh
서비스 중지
systemctl stop autossh
서비스가 예상대로 작동하는지 확인한 후 다음을 사용하여 활성화하십시오.
systemctl enable autossh
참고 : 보안을 위해 스크립트가 실행
systemd
되는 방식과 유사한 제한된 환경에서crontab
스크립트를 실행하므로 기존 시스템 변수에 대해 어떤 가정도하지 마십시오.Environment
스크립트에 특정 변수를 정의해야하는 경우 키를 사용하십시오 .set -x
bash 스크립트 맨 위에 추가 한 다음 실행systemctl status my_service
하면 스크립트가 실패한 이유를 식별하는 데 도움이 될 수 있습니다. tumb의 원칙으로 항상echo
and를 포함하여 모든 것에 절대 경로를cat
사용하거나 $ PATH를 명시 적으로 정의하십시오.
나는 이것이 오래된 질문이지만 일반적으로 자동 시작과 같은 간단한 일을하도록 요청했지만 내 2 센트를 던지고 싶습니다. 이 질문에 대한 모든 답변에서 제안 된 솔루션을 모두 시도했습니다. 그들 중 누구도 나를 위해 일하지 않았습니다. Raspbian과 함께 Raspberry PI Model 2를 사용하고 있습니다.
응용 프로그램을 성공적으로 자동 시작하는 유일한 방법은 다음과 같은 스크립트를 사용하는 것입니다. 잘못된 작업 경로로 시작하는 것과 같은 문제없이 응용 프로그램이 예상대로 시작되었으므로 성공적으로 말합니다.
1. 확장자가 .sh 인 빈 파일을 만들고 원하는 이름을 지정하십시오.
"응용 프로그램 이름"을 방금 만든 스크립트 이름으로 변경 한 것을 제외하고 다음을 정확하게 복사하여 붙여 넣습니다.
#! /bin/sh
### BEGIN INIT INFO
# Provides: noip
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
### END INIT INFO
#change /direct/path/to/your/application to the path your application is in.
cd /direct/path/to/your/application # example cd /home/pi/myprogram/
#change YourProgramExactName to Exact name of your program that you want to auto start
./YourProgramExactName
exit 0
그런 다음 응용 프로그램 폴더 내에 스크립트 파일을 저장하십시오.
그런 다음 /home/pi/.config/autostart
폴더를여십시오. 귀하의 경우에는 다를 수 있습니다. 홈 폴더를 열고 숨겨진 폴더보기를 활성화하십시오. 을 엽니 다 .config/autostart
. 자동 시작 폴더가 표시되지 않으면 .config 폴더 내에 autostart라는 폴더를 만듭니다.
자동 시작 폴더 내에서 다음과 같이 생성 한 스크립트 파일에 대한 바로 가기를 만들어야합니다. 확장명을 가진 빈 파일을 만듭니다 .desktop
.
변경해야합니다 제외하고 복사는 빈 바탕 화면 파일에 다음을 붙여 Comment
, Name
, Exec
, Path
및 Icon
필드의 값입니다.
[Desktop Entry]
Comment=
Exec=/path/to/Your/application/Name-of-the-script-file (.sh)
Icon=/Path/to/Your/application/Icon/IconName
Name=YourApplicationEXACTNAME
Path=/Path/to/Your/Application-ONLY
Type=Application
필요한 모든 필드를 변경 한 후 파일을 저장하고 닫으십시오. 끝났습니다. 그냥 테스트 해보십시오.
/usr/local/bin/ApplicationName
...?
home
경우 (예 : 별도의 장치 인 경우 ) 루트 장치에 의존 하는 스크립트 또는 실행 파일에 문제가 없을 때 시스템이 단일 사용자 /bin/sh
쉘로 장애 복구 ! 요즘은 PID 1이 시작되기 전에 그리고 systemd
둘 다 마운트 하는 방법입니다 .../
/usr
로그인시 자동으로 명령을 시작하려면 명령을 이름이 지정된 파일에 넣으십시오.
.bashrc
사용자 디렉토리 (예 : / home / pi)
.bashrc
스크립트를 실행하기위한 것이 아닙니다 .비 로그인 대화식 쉘이 시작될 때마다 실행되며 쉘을 구성하는 데 사용됩니다.
~/.bashrc: executed by bash(1) for non-login shells
.
예를 들어, 파일에는
chromium-browser --kiosk www.google.com
www.google.com을 가리키는 Chromium을 전체 화면으로 시작하려면
이 솔루션은 정말 잘 작동합니다. 브라우저가로드되면 화면 왼쪽 상단에 작은 버그가 표시되어 일반적인 버그 (다른 사람들이 포럼에서 언급 한 것처럼 보임)이지만 그렇지 않으면 전체 화면 모드는 브라우저 페이지를 제외한 모든 것을 숨 깁니다.
자동 시작 파일을 편집하십시오.
sudo nano /etc/xdg/lxsession/LXDE/autostart
각 줄의 시작 부분에 '#'을 사용하여 모든 것을 주석 처리하고 다음 줄을 추가하십시오.
@xset s off
@xset -dpms
@xset s noblank
@midori -e Fullscreen -a http://google.com
필요한 경우 구성 도구를 사용하여 전원을 켤 때 GUI 자동 실행을 활성화하십시오.
sudo raspi-config
명령 프롬프트로 다시 종료해야하는 경우 CTRL+ ALT+F1
CTRL+ ALT+F2
스크립트를 /etc/profile
파일 맨 아래에 둘 수 있습니다.
다른 옵션은 저에게 효과가 없었지만, 스크립트를 데스크탑에 두었 기 때문일 수 있습니다.
이것이 내가 일반적으로하는 일입니다.
파일을 편집하십시오.
sudo nano .bashrc
.bashrc
스크립트를 실행하기위한 것이 아닙니다 .비 로그인 대화식 쉘이 시작될 때마다 실행되며 쉘을 구성하는 데 사용됩니다.
~/.bashrc: executed by bash(1) for non-login shells
.
파일의 끝으로 가서 다음을 작성하십시오.
sudo python mycode.py
출력을 txt 파일에 저장하려면 3 단계에서 다음과 같이 코드를 편집하십시오.
sudo python mycode.py >> output.py
도움이 되었기를 바랍니다!
.xinitrc
이나.xsession
파일에 항목을 추가해야 합니다.