systemctl 控制程序开机自启动

直接使用/etc/init.d/libraryclient start 可以成功启动程序
我在 /etc/systemd/system/ 路径下加入了我的文件,调用启动后查看后台日志发现:程序调用启动后立即调用停止命令,不知道为什么?

system代码:

[Service]
#Type=forking
Type=simple
ExecStart=/etc/init.d/libraryclient start
ExecStop=/etc/init.d/libraryclient stop
ExecReload=/etc/init.d/libraryclient restart
Restart=always

启动脚本代码

set -x
P=8000
worker=2
host="0.0.0.0"
export PATH=$PATH:/usr/local/python3/bin
cd /web/LibraryManClient
echo "$@"
case "$@" in
    start)
        gunicorn -b $host:$P -w $worker LibraryManClient.wsgi:application -D
        ;;
    restart)
        kill -9 `ps aux|grep gunicorn|grep $P|awk '{print $2}'|xargs`
        sleep 1
        gunicorn -b $host:$P -w $worker LibraryManClient.wsgi:application -D
        ;;
    stop)
        kill -9 `ps aux|grep gunicorn|grep $P|awk '{print $2}'|xargs`
        ;;
esac

执行:systemctl start 程序之后
查看:journalctl -f | grep libraryclient

401 15:09:04 localhost.localdomain libraryclient[3247]: + P=8000
401 15:09:04 localhost.localdomain libraryclient[3247]: + worker=2
401 15:09:04 localhost.localdomain libraryclient[3247]: + host=0.0.0.0
401 15:09:04 localhost.localdomain libraryclient[3247]: + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:04 localhost.localdomain libraryclient[3247]: + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:04 localhost.localdomain libraryclient[3247]: + cd /web/LibraryManClient
401 15:09:04 localhost.localdomain libraryclient[3247]: + echo start
401 15:09:04 localhost.localdomain libraryclient[3247]: start
401 15:09:04 localhost.localdomain libraryclient[3247]: + case "$@" in
401 15:09:04 localhost.localdomain libraryclient[3247]: + gunicorn -b 0.0.0.0:8000 -w 2 LibraryManClient.wsgi:application -D
401 15:09:04 localhost.localdomain libraryclient[3251]: + P=8000
401 15:09:04 localhost.localdomain libraryclient[3251]: + worker=2
401 15:09:04 localhost.localdomain libraryclient[3251]: + host=0.0.0.0
401 15:09:04 localhost.localdomain libraryclient[3251]: + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:04 localhost.localdomain libraryclient[3251]: + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:04 localhost.localdomain libraryclient[3251]: + cd /web/LibraryManClient
401 15:09:04 localhost.localdomain libraryclient[3251]: + echo stop
401 15:09:04 localhost.localdomain libraryclient[3251]: stop
401 15:09:04 localhost.localdomain libraryclient[3251]: + case "$@" in
401 15:09:04 localhost.localdomain libraryclient[3251]: ++ ps aux
401 15:09:04 localhost.localdomain libraryclient[3251]: ++ xargs
401 15:09:04 localhost.localdomain libraryclient[3251]: ++ grep gunicorn
401 15:09:04 localhost.localdomain libraryclient[3251]: ++ awk '{print $2}'
401 15:09:04 localhost.localdomain libraryclient[3251]: ++ grep 8000
401 15:09:04 localhost.localdomain libraryclient[3251]: + kill -9 3181 3182 3183 3250
401 15:09:05 localhost.localdomain systemd[1]: libraryclient.service holdoff time over, scheduling restart.
401 15:09:05 localhost.localdomain libraryclient[3260]: + P=8000
401 15:09:05 localhost.localdomain libraryclient[3260]: + worker=2
401 15:09:05 localhost.localdomain libraryclient[3260]: + host=0.0.0.0
401 15:09:05 localhost.localdomain libraryclient[3260]: + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:05 localhost.localdomain libraryclient[3260]: + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:05 localhost.localdomain libraryclient[3260]: + cd /web/LibraryManClient
401 15:09:05 localhost.localdomain libraryclient[3260]: + echo start
401 15:09:05 localhost.localdomain libraryclient[3260]: start
401 15:09:05 localhost.localdomain libraryclient[3260]: + case "$@" in
401 15:09:05 localhost.localdomain libraryclient[3260]: + gunicorn -b 0.0.0.0:8000 -w 2 LibraryManClient.wsgi:application -D
401 15:09:05 localhost.localdomain libraryclient[3264]: + P=8000
401 15:09:05 localhost.localdomain libraryclient[3264]: + worker=2
401 15:09:05 localhost.localdomain libraryclient[3264]: + host=0.0.0.0
401 15:09:05 localhost.localdomain libraryclient[3264]: + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:05 localhost.localdomain libraryclient[3264]: + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/python3/bin
401 15:09:05 localhost.localdomain libraryclient[3264]: + cd /web/LibraryManClient
401 15:09:05 localhost.localdomain libraryclient[3264]: + echo stop
401 15:09:05 localhost.localdomain libraryclient[3264]: stop
401 15:09:05 localhost.localdomain libraryclient[3264]: + case "$@" in
401 15:09:05 localhost.localdomain libraryclient[3264]: ++ ps aux
401 15:09:05 localhost.localdomain libraryclient[3264]: ++ xargs
401 15:09:05 localhost.localdomain libraryclient[3264]: ++ grep gunicorn
401 15:09:05 localhost.localdomain libraryclient[3264]: ++ awk '{print $2}'
401 15:09:05 localhost.localdomain libraryclient[3264]: ++ grep 8000
401 15:09:05 localhost.localdomain libraryclient[3264]: + kill -9 3263
401 15:09:05 localhost.localdomain systemd[1]: libraryclient.service holdoff time over, scheduling restart.

踩坑:
尝试将forking改成默认的simple,没有作用
将system中的文件的 stop和reload 注释掉,journalctl -f | grep libraryclient 没有了stop 但是依然无法启动

希望:
可以使用systemctl start 命令启动服务

使用systemctl ,是systemd的服务
而你写的脚本是基于systemV的,根本不是一回事
你只需要在/etc/systemd/system下建立一个.service文件
内容
[Unit]
Description=这里是描述,随便填

[Service]
Type=simple
ExecStart=这里是你可执行程序的路径

[Install]
WantedBy=multi-user.target