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 它将以 root 身份执行。

su -c '/path/yourscript.sh' username否则你可以通过where调用它用户名是任何有效的用户帐户。

系统完全启动后如果/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. 系统完全启动后,最后一步[这是suse的事情]它将尝试执行该文件(/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=

相关内容