公司产品想兼容systemd,花了一天时间研究下systemd.
RHEL 7.0 支持systemd.
Ubuntu 14.10 支持systemd.
Fedora 15 支持systemd.
Systemd最终代替现在使用SysV init程序。现在公司的产品开机自动启动,想兼容两种方式,我的想法是先判断系统是否支持Systemd,如果支持则使用systemd方式,不然则使用init方式。
如何判断系统支持systemd?
1. 判断目录结构
不准确,不建议采用。
2. 判断命令执行结果
Systemctl >/dev/null 2>&1
Echo $?
传统的SysVinit初始化脚本,通常情况下在/etc/rc.d/init.d/
、
/etc/init.d/
目录下。
Systemd所有可用的单元文件存放在/usr/lib/systemd/system/
和/etc/systemd/system/
目录(后者优先级更高)。
关于systemd的使用可参考:
https://wiki.archlinux.org/index.php/systemd_(简体中文)
关于Ubuntu使用systemd可参考:
https://wiki.ubuntu.com/systemd
Sample
/usr/lib/systemd/system/testdaemon.service
[Unit]
Description=test
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/home/fedora/test.sh start
ExecStop=/home/fedora/test.sh stop
[Install]
WantedBy=multi-user.target
systemctl enable testdaemon.service
test.sh
#!/bin/sh
echo $? >> /home/fedora/log.txt
echo `date` >> /home/fedora/log.txt