如何在CentOS7上使用Upstart脚本?

如何在CentOS7上使用Upstart脚本?

我需要/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 单元。

相关内容