# Check Systemd unit ## Introduction This check shows the status of a systemd unit. A unit is everything listed by systemctl command - services, timers, targets, ... ## Requirements * `systemctl` binary ## Syntax ```txt ______________________________________________________________________ CHECK_SYSTEMDUNIT v1.2 (c) Institute for Medical Education - University of Bern Licence: GNU GPL 3 https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_systemdunit.html ______________________________________________________________________ Check a unit using systemctl status. The status is unknown if the command systemctl is not found. The status is critical if the service does not exist or is not running. SYNTAX: check_systemdunit [-h|-l|-s|-r] UNIT OPTIONS: -h this help -l list all units -s list service units -r handle UNIT as a regex and search for a single unit. A uniq regex is needed to match a single unit. The initial idea was to match a servie that has different service names on differen os eg. - apache2 vs httpd - mysld vs mariadb UNIT Name of a unit - see output of 'systemctl' EXAMPLES: check_systemdunit -s list all existing services. For a unit check you need to add the name in the 1st column. check_systemdunit nginx.service show status of nginx webservice check_systemdunit -r "(apache2|httpd)\.service" Detect name of Apache httpd service by given regex and show status of the found service name ``` ## Examples ### List services You maybe want to start to get a list of services to pick an existing one that you wanna check periodically. You can use ``systemctl --no-legend --no-pager --type service`` or ``$ ./check_systemdunit -s`` ```txt List of service units: alsa-restore.service loaded active exited Save/Restore Sound Card State apparmor.service loaded active exited Load AppArmor profiles avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack bluetooth.service loaded active running Bluetooth service clamav-daemon.service loaded active running Clam AntiVirus userspace daemon clamav-freshclam.service loaded active running ClamAV virus database updater colord.service loaded active running Manage, Install and Generate Color Profiles cronie.service loaded active running Periodic Command Scheduler ... ``` ### Check a service To check a single service you need to add the unit name in the 1st column. ``$ ./check_systemdunit nginx`` returns ```txt OK: ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Tue 2023-09-05 08:04:45 CEST; 8h ago Process: 577 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; (code=exited, status=0/SUCCESS) Main PID: 612 (nginx) Tasks: 2 (limit: 18881) Memory: 3.0M CPU: 38ms CGroup: /system.slice/nginx.service ├─612 "nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;" └─613 "nginx: worker process" ... ``` If a service does not exist: ``./check_systemdunit justadummy`` returns ```txt CRITICAL: Unit justadummy.service could not be found. ``` ### Other units With ``$ ./check_systemdunit -l`` you get a grouped list of all unit types. check_systemdunit handles all types - not only services.