OpenSuse Tumbleweed:起動時にbashスクリプトを実行する方法は?

OpenSuse Tumbleweed:起動時にbashスクリプトを実行する方法は?

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
  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=

関連情報