我在 OpenSuse 12.3 上的 /etc/init.d/skeleton 在哪里?

plu*_*ets 6 opensuse systemd daemon init.d

在全新安装的 OpenSuse 12.3 中,我想“守护”一个程序。而且,在 Internet 上找到的所有示例中,我看到我必须首先创建一个/etc/init.d/myscript基于/etc/init.d/skeleton...

但是我没有/etc/init.d/skeleton……这个文件还有别的地方吗?或者我可能需要安装一些东西?

系统是最新的,我先检查了。

我知道我可以尝试复制另一个现有/etc/init.d脚本并修改它,或者创建一个新脚本,但我会知道我是否做错了,或者在 OpenSuse 上是否有另一种特殊的方法来做到这一点。

小智 4

我不确定/etc/init.d/skeleton文件在哪里消失,但我希望此更改与传统的替换有关SysV init daemonsystemd因为 OpenSUSE 12.systemd与众所周知的 initscripts 完全兼容,但我更喜欢使用systemd启动服务的模型。

在我看来,传统的初始化脚本可能很棘手,有时,它们可能需要更深入的 shell 脚本知识。另一方面,systemd“initscript”或unit服务的配置文件(man systemd.unit)更容易维护,因为它具有与.INI文件类似的简单语法。您可以尝试编写一些单元文件并通过将该文件拖放到/etc/systemd/system目录中来启用它。该目录的优先级高于默认目录/usr/lib/systemd/system。守护进程单元的示例sshd如下:

[Unit]
Description=OpenSSH Daemon
After=syslog.target network.target

[Service]
EnvironmentFile=/etc/sysconfig/ssh
ExecStartPre=/usr/sbin/sshd-gen-keys-start
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

或者您可以坚持使用您所使用的“旧版”启动脚本。但你会失去一些简洁的功能,systemd例如:

  • 更快的启动时间,真正的服务并行启动
  • 自动依赖性处理
  • 监控服务并自动重启崩溃的服务
  • 以及更多

最后,请记住,如果存在与sshd.serviceinitscript ( ) 具有相同基本名称的单元 ( /etc/init.d/sshd),则该 initscript 将被忽略,并且systemd将优先使用该单元。