Applies To

Linux Admins managing Zend Server through SystemCTL and not through ZendCTL

Overview

Starting, Stopping, Restarting and checking Status of Zend Server Services on Linux should normally be done by ZendCTL, under /usr/local/zend/bin/zendctl.sh.

Reference for ZendCTL command: https://help.zend.com/zend/current/content/linux_mac__package_setup_and_control_scripts.htm

However, some admins prefer to be using SystemCTL for managing Zend Server service, but it misses the Clean Semaphores script, which runs as soon as Zend Server is stopped.

Requirements

SystemD version should supersede 231, so CentOS 7 will not apply here.

  1. Verify systemd --version > 231

Note: When called the Clean Semaphores script from the SystemD service hook, below SystemD version 231, you will get a permission error because of insufficient privileges for user zend:

ipcrm: permission denied for id (xxxxx)

Recipe for Clean Semaphores pass through SystemD service hook

  1. Edit /usr/lib/systemd/system/zend-server.service
  2. UnComment the ExecStopPost line, then add a plus sign (+) before the path to the Clean Semaphores script call:
    1. ExecStopPost=+/usr/local/zend/bin/clean_semaphores.sh
  3. Save and reload SystemD:
    1. systemctl daemon-reload

Result

Once the above line is in place, you can either use ZendCTL or SystemCTL to manage Zend Server service, without losing the Semaphore cleanup script flow.