我已经创建了脚本来控制Fedora28上git-守护进程的启动、停止等。我现在正在尝试将这些脚本链接到一个systemd服务,这样git-守护进程在重新启动后就可以使用了。
主脚本(gitT)是..。
#!/bin/bash
case "$1" in
'start')
echo "Starting git-daemon"
/home/git/scripts/start.sh >> /home/git/gitT.log
;;
'stop')
echo "Stopping git-daemon"
/home/git/scripts/stop.sh >> /home/git/gitT.log
;;
'restart')
echo "Bouncing git-daemon"
/home/git/scripts/bounce.sh >> /home/git/gitT.log
;;
'status')
echo "Status of git-daemon"
/home/git/scripts/status.sh
;;
*)
echo "`basename $0`: usage: `basename $0` { stop | start | restart | status }"
;;
esac
次要剧本是..。
start.sh
#!/bin/bash
# --------------------------
echo "---------------------"
/usr/bin/git daemon --export-all --enable=receive-pack --verbose --pid-file=/home/git/git-daemon.pid --base-path=/home/git/repos >> /home/git/git-daemon.out 2>> /home/git/git-daemon.err &
echo "---------------------"
echo "STARTED at `date`"
stop.sh
#!/bin/bash
# --------------------------
echo "---------------------"
pkill -F /home/git/git-daemon.pid
echo "---------------------"
echo "STOPPED at `date`"
bounce.sh
#!/bin/bash
# --------------------------
echo "====================="
/home/git/scripts/stop.sh
echo "====================="
sleep 5
echo "====================="
/home/git/scripts/start.sh
echo "====================="
echo "BOUNCED"
和status.sh
#!/bin/bash
# --------------------------
echo "====================="
ps -x --forest
echo "====================="
最后,我创建了一个服务文件(git-daemon.service).
[Unit]
Description=Git Daemon
Documentation=man:git-daemon(1)
ConditionPathExists=/home/git/repos
[Service]
Type=oneshot
ExecStart=/bin/bash /home/git/gitT start
ExecStop=/bin/bash /home/git/gitT stop
RemainAfterExit=yes
User=git
Group=git
[Install]
WantedBy=multi-user.target
然后我用这些命令设置它..。
cp /home/git/git-daemon.service /etc/systemd/system
systemctl enable git-daemon.service
现在,如果我以git用户的身份运行gitT start
,一切都会好起来。但是我把systemctl start git-daemon
作为根运行,这是错误.
fatal: base-path '/home/git/repos' does not exist or is not a directory
发布于 2018-05-21 20:16:16
您已经创建了一个比调试更加复杂的系统,然后需要在不必要的shell脚本中复制大量的systemd
功能。systemd
内置了启动、停止和重新启动服务、提供它们的状态和处理它们的输出的工具。
通过消除这一层的复杂性,您将消除bug可能存在的一个重要的表面积,并将更接近于解决您的问题。
如果您的系统还没有发布git-daemon
,我建议使用已经在网上发布的一个现有模板来管理systemd。
https://unix.stackexchange.com/questions/444731
复制相似问题