Boa*_*rdy 7 startup opensuse init
我目前正在处理一个需要添加的项目,inittab以便程序在启动期间加载。
我试图启动的程序是 ac# mono 应用程序。我已经创建了一个启动脚本,如果启动脚本是手动运行的,程序会正常启动。但是,当我将其放入inittab程序时不会启动。
我已经签入,/var/log/messages但没有说有什么问题,只是说正在重新加载。
以下是我添加到inittab脚本中的内容
bes:2345:respawn:/home/bits/MyProgram/start.myprogram
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助,您可以提供
更新 下面是位于/home/bits/MyProgram 中的启动脚本中的代码。
#!/bin/sh
cd /home/bits/MyProgram
/usr/bin/mono EmailServer.exe "$@"
Run Code Online (Sandbox Code Playgroud)
我还尝试将 > mylog.txt 添加到以 /usr/bin/mono 开头的行尾,例如
/usr/bin/mono EmailServer.exe "$@" > mylog.txt
如果我手动运行启动脚本,即使我不在启动脚本所在的目录中,它也能正常工作,只是当我将它添加到 inittab 并运行 telinit q 时,它永远不会启动并且日志没有写入但是如果我手动启动程序,日志确实会被写入。
感谢您的任何帮助,您可以提供。
把你的程序放在某个地方。
复制并编辑在/etc/init.d/skeleton 中找到的用于初始化作业控制的骨架模板文件。
修改此文件以指示您想要的运行级别...在您的示例中,您需要 2、3、4、5,文件顶部(在注释中)有选项来指示所需的运行级别
将此新文件放在/etc/init.d 中,并为其指定一个描述性名称。(示例中使用了myfancyname)
一种平台不可知的方法来测试这个,或者启用/禁用(如果你使用了骨架文件)
sudo /etc/init.d/myfancyname start
sudo /etc/init.d/myfancyname stop
sudo /etc/init.d/myfancyname restart
Run Code Online (Sandbox Code Playgroud)
有发行版特定的方法来执行这些相同的操作,例如,Debian 使用update-rc.d myfancyname [start|stop|enable|disable...]
修改 inittab通常是一个坏主意,如果你搞砸了,系统将不再启动,然后你就会遇到两个问题。(不需要正则表达式!)
将脚本添加到 /etc/init.d/ 子目录更加标准化,几乎可以用于任何 linux 风格,可能是一些 *nix 的,也可能是一些 bsd 的。
问题很简单,您使用的是 OpenSuse 12.1,它使用 systemd而不是经典的System V 引导系统。
要安装新的服务位置,请在 /etc/systemd/system/myprogname.service 中创建以下文件
[Unit]
Description=My progname service file
[Service]
ExecStart=/home/bits/MyProgram
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
之后运行systemctl daemon-reload并systemctl start myprogname.service
如果你想自动重新启动 MyProgname 你必须添加
Restart=restart-always
Run Code Online (Sandbox Code Playgroud)
到服务部分。
| 归档时间: |
|
| 查看次数: |
6800 次 |
| 最近记录: |