openSuse Tumbleweed JeOSを実行しているrPi3B +の起動時に.shファイルを実行しようとしています。スクリプトは非常にシンプルで、次のようになります。
node /home/user_name/path/to/the/file.js
私がフォローしようとしている2つのリンクは次のとおりです。
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
rootとして実行されます。
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=
。