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