在多台机器上运行 Fedora 33/34。我成功激活rc-local.service
了它工作正常。我有几个需要运行的其他脚本,/etc/init.d/
并且我创建了与 类似的服务文件rc-local.service
,但我无法启用它,而 rc-local.service 可以毫无问题地启用/禁用/盯着/停止。
我知道,我有一个选项(我目前使用)从rc.local
文件中调用这些脚本,但宁愿将它们作为服务单独调用。所以我的服务文件如下所示:
#cat net-scr1.service
[Unit]
Description=Network check service
ConditionFileIsExecutable=/etc/init.d/net-scr1
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/net-scr1 start
TimeoutSec=3
ExecStop=/etc/init.d/net-scr1 stop
RemainAfterExit=yes
GuessMainPID=no
StandardOutput=tty
[Install]
WantedBy=multi-user.target
systemctl enable net-scr1
Synchronizing state of net-scr1.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable net-scr1
service net-scr1 does not support chkconfig
我将脚本移出init.d
考虑可能 systemd 假设它是一个旧sysv
脚本,但没有改变。我的脚本中应该有什么才能正常工作?
我的脚本看起来像:
#!/bin/bash
[email protected]
[email protected]
dv0=p1p1
ipdv0=`ifconfig $dv0 | grep "inet " | awk '{print $2}'`
if [ "$1" = "stop" ]; then
cat $msg | mail $EMFR -s "$srv-shut_down-ip-$ipdv0" $eml
fi
if [ "$1" = "start" ]; then
cat $msg | mail $EMFR -s "$srv-booted_up-ip-$ipdv0" $eml
fi
我应该包含旧 sysv 系统中的函数还是其他什么?谢谢
看到这个
我找到了解决方案。我在脚本顶部包含以下 3 行:
head /etc/init.d/net-scr1
现在
systemctl enable net-scr1
工作正常