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