问题描述
我尝试使用 here 给出的示例将 perl 脚本作为守护程序运行:
但是,在尝试启动守护程序时,我收到以下错误: systemd1: myDaemon.service: 启动后无法打开 PID 文件 /run/myDaemon.pid (yet?): Operation not allowed
我发现其他几个人遇到了这个问题,但是建议的修复方法(例如将 pid 位置从 /var/run 更改为 /run)都对我不起作用。有什么建议吗?
这里是/etc/init.d/myDaemon的内容:
#!/bin/bash
#
# myDaemon This starts and stops myDaemon
#
# chkconfig: 2345 12 88
# description: myDaemon is a perl script that does stuff
# processname: myDaemon
# pidfile: /run/myDaemon.pid
### BEGIN INIT INFO
# Provides: $myDaemon
### END INIT INFO
# Source function library.
. /lib/lsb/init-functions
binary="/home/myuser/myDaemon.pl"
[ -x $binary ] || exit 0
RETVAL=0
start() {
echo -n "Starting myDaemon: "
daemon $binary
RETVAL=$?
PID=$!
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/myDaemon
echo $PID > /run/myDaemon.pid
}
stop() {
echo -n "Shutting down myDaemon: "
killproc myDaemon
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/myDaemon
rm -f /run/myDaemon.pid
fi
}
restart() {
echo -n "Restarting myDaemon: "
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status myDaemon
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
;;
esac
exit 0
这里是/home/myUser/myDaemon.pl下perl脚本的相关内容:
#! /usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
# Proc::Daemon
Proc::Daemon::Init;
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 };
while($continue) {
# does stuff
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)