我有一个用 python 编写的应用程序,我在 CentOS 6 上使用过多次,现在正在 CentOS 7 上设置它。我创建了一个包含以下内容的 systemd 服务文件:
#
# Systemd unit file for Application
#
[Unit]
Description=Application Daemon
[Service]
User=svc_app
Group=svc_app
Type=forking
ExecStart=/usr/bin/python /apps/application/run_app.py --daemon --pidfile=/var/run/apps/application.pid
ExecStop=pkill --pidfile /var/run/apps/application.pid
PIDFile=/var/run/apps/application.pid
[Install]
WantedBy=multi-user.target
如果我运行systemctl start application.service
,应用程序就会启动。如果我运行systemctl stop application.service
,应用程序就会停止。如果我运行systemctl status application.service
,我会得到正确的状态。
但是,我遇到了两条令人担忧的日志消息,并且不确定为什么会收到它们。
Jun 10 18:36:43 centos7-test systemd[1]: Starting Application Daemon...
Jun 10 18:36:44 centos7-test systemd[1]: PID file /var/run/apps/application.pid not readable (yet?) after start.
Jun 10 18:36:44 centos7-test systemd[1]: Started Application Daemon.
应用程序启动,但该消息application.pid not readable
让我担心。我应该关心这一点,还是可以忽略它?我的应用程序成功创建了一个 pid 文件,其中包含正在运行的实例的 pid,因此我知道它工作正常。
第二个问题是当我跑步时systemctl stop application.service
。
Jun 10 18:49:33 centos7-test systemd[1]: Stopping Application Daemon...
Jun 10 18:49:43 centos7-test systemd[1]: Stopped Application Daemon.
Jun 10 18:49:43 centos7-test systemd[1]: [/etc/systemd/system/application.service:14] Executable path is not absolute, ignoring: pkill --pidfile /var/run/apps/application.pid
Jun 10 18:49:43 centos7-test systemd[1]: [/etc/systemd/system/application.service:14] Executable path is not absolute, ignoring: pkill --pidfile /var/run/apps/application.pid
Jun 10 18:49:54 centos7-test systemd[1]: [/etc/systemd/system/application.service:14] Executable path is not absolute, ignoring: pkill --pidfile /var/run/apps/application.pid
现在服务死了,pidfile也消失了。所以它就停止了,但这些消息让我担心。发生了什么事,或者我还能在哪里查看?除了 pkill 之外,我还应该使用其他东西来停止我的 python 应用程序吗?在 CentOS 6 上我使用了killproc,但默认情况下在 CentOS 7 中似乎不可用,所以我改用了 pkill。
提前致谢!