我需要/etc/init/start_swift.conf
使用以下命令创建一个文件:
description "mount swift drives"
start on runlevel [234]
stop on runlevel [0156]
exec /opt/swift/bin/mount_devices
但问题是我什至没有init目录。我已经投入了,start_swift.conf
但是/etc/init.d/
没用。如何在CentOS7中创建此类新贵文件?
答案1
这个问题有两个答案。
在 CentOS 7 systemd 上,您可以在启动时运行服务或脚本。您将 .service 文件放在 /etc/systemd/system 下,如下所示:
; /etc/systemd/system/swift.service
[Unit]
Description=Swift
[Service]
Type=notify
ExecStart=myscript
[Install]
; Runlevel here:
WantedBy=multi-user.target
但实际上 systemd 可以直接用于安装设备,如果这是您脚本的意图的话。
对于(非 rpm 打包的)服务,您可以将“.mount”文件放在 /etc/systemd/system 下,例如 /etc/systemd/system/var-lib-docker.mount。您可能还想查看 systemd 的自动挂载选项,请参阅参考资料。
为了加载文件,请使用systemd 守护进程重新加载。
; /etc/systemd/system/var-lib-docker.mount
[Unit]
Description="Mount a volume"
Before=network.service
[Mount]
What=/dev/sdb1
Where=/var/lib/docker
;Options=
可以调的地方还有很多,可以参考:
参考 -https://www.freedesktop.org/software/systemd/man/systemd.service.html -https://www.freedesktop.org/software/systemd/man/systemd.mount.html -https://www.freedesktop.org/software/systemd/man/systemd.automount.html
答案2
Centos 使用 systemd,而不是 Upstart。 Systemd 向后兼容 SysV 初始化脚本。根据 LSB 3.1,init 脚本必须具有信息性注释约定,定义脚本何时必须启动/停止以及脚本启动/停止所需的内容。我建议检查这个指导并将您的 upstart 脚本重写为 systemd 单元。