OpenSuse Tumbleweed: 시작 시 bash 스크립트를 실행하는 방법은 무엇입니까?

OpenSuse Tumbleweed: 시작 시 bash 스크립트를 실행하는 방법은 무엇입니까?

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
  1. /etc/init.d/after.local시스템이 완전히 부팅되면 마지막 단계(이것은 수세 사항임)에서 파일이 존재하는 경우 실행을 시도합니다.
  2. 수동으로 만들어서 /etc/init.d/after.local넣으시면 /etc/init.d/StartServer.sh됩니다.
  3. 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=.

관련 정보