【发布时间】:2018-04-21 02:38:23
【问题描述】:
所以, 我正在尝试在 Axis 相机上使用 systemd 设置服务(我相信它是 Arch linux 或自定义的非常精简的 Linux 版本)。我的服务设置如下:
myservice.service:
[Unit]
Description=Ping Monitoring Daemon
After=network.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/etc/init.d/listen-start.sh
ExecStop=/etc/init.d/listen-stop.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
这里是listen-start.sh:
#!/bin/sh
echo $(curl http://website.com/logssomethingtoadatabase.php?action=start)
我的 php 脚本:
<?php
echo 'Service Started';
while (true) {
$foo = print_r($_SERVER, true);
$blnStop = false;
if ( $_GET['action'] === 'start') {
mail("test@myemail.com","Debug", "Camera service started with current values:\r\n\r\n" . $foo);
} else {
mail("test@myemail.com","Debug", "Camera service stopped with current values:\r\n\r\n" . $foo);
$blnStop = true;
}
if ( $blnStop ) {
break 2;
}
sleep(60);
}
echo 'Service Stopped';
die();
?>
我遇到的问题是一旦我启动服务,我无法“停止它”,即使在它上面发出“systemctl stop”和“disable”命令后也是如此。我必须重启相机才能让它停止给我发电子邮件。我似乎无法让它“打破”while循环。
这里的目标是每 60 秒调用一次该脚本,这是一项设备监控工作。在这种情况下,我必须使用 systemd,因为这就是相机支持的全部。
附加信息:systemctl start 和 stop 命令成功运行,脚本本身运行良好。
谁能看到我可能遗漏的任何东西?
【问题讨论】: