openSuse Tumbleweed JeOS를 실행하는 rPi3B+ 시작 시 .sh 파일을 실행하려고 합니다. 스크립트는 매우 간단하며 다음과 같습니다.
node /home/user_name/path/to/the/file.js
제가 따라가려고 하는 두 개의 링크는 다음과 같습니다.
https://forums.opensuse.org/showthread.php/428743-How-to-run-script-at-startup https://www.suse.com/c/easy-running-scripts-boot-and-shutdown/ https://doc.opensuse.org/documentation/leap/startup/html/book.opensuse.startup/cha.adm.shell.html
이 문제를 어떻게 해야 할까요?
편집: 나는 또한 이것을 따라해 보았지만 운이 없었습니다.https://stackoverflow.com/questions/12973777/how-to-run-a-shell-script-at-startup#12973826
내 startServer
스크립트는 /etc/init.d
다음과 같습니다
#!/bin/sh
# ScriptName=startServer
node /home/user-name/server.js &
답변1
/etc/init.d/after.local
이 파일을 생성하고 내부에서 호출하면 script.sh
루트로 실행됩니다.
su -c '/path/yourscript.sh' username
그렇지 않으면 다음을 통해 호출할 수 있습니다.사용자 이름유효한 사용자 계정입니다.
시스템이 완전히 시작된 후존재 하는 경우 /etc/init.d/after.local
그 안에 있는 모든 항목이 실행됩니다. 보안이 염려된다면 chmod 600 /etc/init.d/after.local
이렇게 할 수 있습니다.chown root.root /etc/init.d/after.local
/etc/init.d의 StartServer 스크립트는 다음과 같습니다.
/etc/init.d/StartServer.sh
그것은 포함한다
#!/bin/sh
# ScriptName=startServer
node /home/user-name/server.js &
작성 /etc/init.d/after.local
및 내용이 간단합니다.
/etc/init.d/StartServer.sh
/etc/init.d/after.local
시스템이 완전히 부팅되면 마지막 단계(이것은 수세 사항임)에서 파일이 존재하는 경우 실행을 시도합니다.- 수동으로 만들어서
/etc/init.d/after.local
넣으시면/etc/init.d/StartServer.sh
됩니다. - StartServer.sh 스크립트는 시스템이 완전히 부팅된 후에 실행됩니다.
답변2
openSUSE, Leap, Tumbleweed는 systemd
모두 오래 전에 이 방식으로 전환했습니다. 밑에는 아무것도 없어야 합니다 /etc/init.d
.
모든 서비스는 아래에 있는 systemd
시작 템플릿 과 함께 제공되어야 합니다(그렇지 않은 경우 아래에서 쉽게 직접 만들 수 있습니다).*.service
/usr/lib/systemd/system
*myserver*.service
/etc/systemd/system
해당 .service 파일에 다음 줄을 추가하세요.
ExecStartPost=/usr/bin/sh -c "node /home/user-name/server.js &"
ExecStart=
서비스를 시작하는 줄 뒤에. 또한 해당 항목을 통해 server.js를 중지하는 것도 고려해 보세요 ExecStopPre=
.