100:Guide: Using and Understanding OpenIM Utility Functions

This document provides an overview of the four utility functions designed for managing processes and services. These functions can check the status of services based on ports and process names, as well as stop services based on the same criteria.

Table of Contents

1. Checking the Status of Services by Ports

Function: openim::util::check_ports

This function checks the status of services running on specified ports.

Usage:

openim::util::check_ports <port1> <port2> ...

Design:

  • The function iterates through each provided port.
  • It uses the lsof command to identify if there is a service running on the specified port.
  • If a service is running, it logs the command, PID, and start time of the service.
  • If a service is not running, it logs that the port is not started.
  • If any service is not running, the function returns a status of 1.

Example:

openim::util::check_ports 8080 8081 8082

2. Checking the Status of Services by Process Names

Function: openim::util::check_process_names

This function checks the status of services based on their process names.

Usage:

openim::util::check_process_names <process_name1> <process_name2> ...

Design:

  • The function uses pgrep to find process IDs associated with the given process names.
  • If processes are found, it logs the command, PID, associated port, and start time.
  • If no processes are found for a name, it logs that the process is not started.
  • If any process is not running, the function returns a status of 1.

Example:

openim::util::check_process_names nginx mysql redis

3. Stopping Services by Ports

Function: openim::util::stop_services_on_ports

This function attempts to stop services running on the specified ports.

Usage:

bashCopy code
openim::util::stop_services_on_ports <port1> <port2> ...

Design:

  • The function uses the lsof command to identify services running on the specified ports.
  • If a service is running on a port, it tries to terminate the associated process using the kill command.
  • It logs successful terminations and any failures.
  • If any service couldn't be stopped, the function returns a status of 1.

Example:

openim::util::stop_services_on_ports 8080 8081 8082

4. Stopping Services by Process Names

Function: openim::util::stop_services_with_name

This function attempts to stop services based on their process names.

Usage:

openim::util::stop_services_with_name <process_name1> <process_name2> ...

Design:

  • The function uses pgrep to identify processes associated with the specified names.
  • If processes are found, it tries to terminate them using the kill command.
  • It logs successful terminations and any failures.
  • If any service couldn't be stopped, the function returns a status of 1.

Example:

openim::util::stop_services_with_name nginx apache