Services and Daemons in Cumulus Linux
You manage services using systemd with the systemctl command. You run the systemctl command with any service on the switch to start, stop, restart, reload, enable, disable, reenable, or get the status of the service.
cumulus@switch:~$ sudo systemctl start | stop | restart | status | reload | enable | disable | reenable SERVICENAME.service
For example to restart networking, run the command:
cumulus@switch:~$ sudo systemctl restart networking.service
Add the service name after the systemctl argument.
To show all running services, use the systemctl status command. For example:
cumulus@switch:~$ sudo systemctl status ● switch State: running Jobs: 0 queued Failed: 0 units Since: Thu 2019-01-10 00:19:34 UTC; 23h ago CGroup: / ├─init.scope │ └─1 /sbin/init └─system.slice ├─haveged.service │ └─234 /usr/sbin/haveged --Foreground --verbose=1 -w 1024 ├─sysmonitor.service │ ├─ 658 /bin/bash /usr/lib/cumulus/sysmonitor │ └─26543 sleep 60 ├─systemd-udevd.service │ └─218 /lib/systemd/systemd-udevd ├─system-ntp.slice │ └─ntp@mgmt.service │ └─vrf │ └─mgmt │ └─12108 /usr/sbin/ntpd -n -u ntp:ntp -g ├─cron.service │ └─274 /usr/sbin/cron -f -L 38 ├─system-serial\x2dgetty.slice │ └─serial-getty@ttyS0.service │ └─745 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220 ├─nginx.service │ ├─332 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; │ └─333 nginx: worker process ├─auditd.service │ └─235 /sbin/auditd ├─rasdaemon.service │ └─275 /usr/sbin/rasdaemon -f -r ├─clagd.service │ └─11443 /usr/bin/python /usr/sbin/clagd --daemon 169.254.1.2 peerlink.4094 44:39:39:ff:40:9 --priority 100 --vxlanAnycas ├─switchd.service │ └─430 /usr/sbin/switchd -vx .
systemctl Commands
systemctl has commands that perform a specific operation on a given service:
- status returns the status of the specified service.
- start starts the service.
- stop stops the service.
- restart stops, then starts the service, all the while maintaining state. If there are dependent services or services that mark the restarted service as Required, the other services also restart. For example, running systemctl restart frr.service restarts any of the routing protocol services that you enable and that are running, such as bgpd or ospfd .
- reload reloads the configuration for the service.
- enable enables the service to start when the system boots, but does not start it unless you use the systemctl start SERVICENAME.service command or reboot the switch.
- disable disables the service, but does not stop it unless you use the systemctl stop SERVICENAME.service command or reboot the switch. You can start or stop a disabled service.
- reenable disables, then enables a service. Run this command so that any new Wants or WantedBy lines create the symlinks necessary for ordering. This has no side effects on other services.
You do not need to interact with the services directly using these commands. If a critical service crashes or encounters an error, systemd restarts it automatically. systemd is the caretaker of services in modern Linux systems and responsible for starting all the necessary services at boot time.
Ensure a Service Starts after Multiple Restarts
By default, systemd tries to restart a particular service only a certain number of times within a given interval before the service fails to start. The settings StartLimitInterval (which defaults to 10 seconds) and StartBurstLimit (which defaults to 5 attempts) are in the service script; however, certain services override these defaults, sometimes with much longer times. For example, switchd.service sets StartLimitInterval=10m and StartBurstLimit=3; therefore, if you restart switchd more than three times in ten minutes, it does not start.
When the restart fails for this reason, you see a message similar to the following:
Job for switchd.service failed. See 'systemctl status switchd.service' and 'journalctl -xn' for details.
systemctl status switchd.service shows output similar to:
Active: failed (Result: start-limit) since Thu 2016-04-07 21:55:14 UTC; 15s ago
To clear this error, run systemctl reset-failed switchd.service . If you know you are going to restart frequently (multiple times within the StartLimitInterval), you can run the same command before you issue the restart request. This also applies to stop followed by start.
Keep systemd Services from Hanging after Starting
If you start, restart, or reload a systemd service that you can start from another systemd service, you must use the —no-block option with systemctl .
Identify Active Listener Ports for IPv4 and IPv6
You can identify the active listener ports under both IPv4 and IPv6 using the netstat command:
cumulus@switch:~$ netstat -nlp --inet --inet6 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 444/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 874/sshd tcp6 0 0 . 53 . * LISTEN 444/dnsmasq tcp6 0 0 . 22 . * LISTEN 874/sshd udp 0 0 0.0.0.0:28450 0.0.0.0:* 839/dhclient udp 0 0 0.0.0.0:53 0.0.0.0:* 444/dnsmasq udp 0 0 0.0.0.0:68 0.0.0.0:* 839/dhclient udp 0 0 192.168.0.42:123 0.0.0.0:* 907/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 907/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 907/ntpd udp 0 0 0.0.0.0:4784 0.0.0.0:* 909/ptmd udp 0 0 0.0.0.0:3784 0.0.0.0:* 909/ptmd udp 0 0 0.0.0.0:3785 0.0.0.0:* 909/ptmd udp6 0 0 . 58352 . * 839/dhclient udp6 0 0 . 53 . * 444/dnsmasq udp6 0 0 fe80::a200:ff:fe00::123 . * 907/ntpd udp6 0 0 ::1:123 . * 907/ntpd udp6 0 0 . 123 . * 907/ntpd udp6 0 0 . 4784 . * 909/ptmd udp6 0 0 . 3784 . * 909/ptmd
Identify Active or Stopped Services
To see active or stopped services, run the cl-service-summary command:
cumulus@switch:~$ cl-service-summary Service cron enabled active Service ssh enabled active Service syslog enabled active Service asic-monitor enabled inactive Service clagd enabled inactive Service cumulus-poe inactive Service lldpd enabled active Service mstpd enabled active Service neighmgrd enabled active Service nvued enabled active Service netq-agent enabled active Service ntp enabled active Service ptmd enabled active Service pwmd enabled active Service smond enabled active Service switchd enabled active Service sysmonitor enabled active Service rdnbrd disabled inactive Service frr enabled inactive .
You can also run the systemctl list-unit-files —type service command to list all services on the switch and to see their status:
cumulus@switch:~$ systemctl list-unit-files --type service UNIT FILE STATE aclinit.service enabled acltool.service enabled acpid.service disabled asic-monitor.service enabled auditd.service enabled autovt@.service disabled bmcd.service disabled bootlog.service enabled bootlogd.service masked bootlogs.service masked bootmisc.service masked checkfs.service masked checkroot-bootclean.service masked checkroot.service masked clagd.service enabled console-getty.service disabled console-shell.service disabled container-getty@.service static cron.service enabled cryptdisks-early.service masked cryptdisks.service masked cumulus-aclcheck.service static cumulus-core.service static cumulus-fastfailover.service enabled cumulus-firstboot.service disabled cumulus-platform.service enabled .
Identify Essential Services
To identify which services must run when the switch boots:
cumulus@switch:~$ systemctl list-dependencies --before basic.target
To identify which services you need for networking:
cumulus@switch:~$ systemctl list-dependencies --after network.target ● ├─switchd.service ● ├─wd_keepalive.service ● └─network-pre.target
To identify the services needed for a multi-user environment, run:
cumulus@switch:~$ systemctl list-dependencies --before multi-user.target ● ├─bootlog.service ● ├─systemd-readahead-done.service ● ├─systemd-readahead-done.timer ● ├─systemd-update-utmp-runlevel.service ● └─graphical.target ● └─systemd-update-utmp-runlevel.service
Important Services
The following table lists the most important services in Cumulus Linux.
Service Name | Description | Affects Forwarding? |
---|---|---|
switchd | Hardware abstraction daemon. Synchronizes the kernel with the ASIC. | YES |
sx_sdk | Interfaces with the Spectrum ASIC. Only on Spectrum switches. | YES |
frr | FRR. Handles routing protocols. There are separate processes for each routing protocol, such as bgpd and ospfd . | YES if routing |
clagd | Cumulus link aggregation daemon. Handles MLAG. | YES if using MLAG |
neighmgrd | Keeps neighbor entries refreshed, snoops on ARP and ND packets if ARP suppression is on, and refreshes VRR MAC addresses. | YES |
mstpd | Spanning tree protocol daemon. | YES if using layer 2 |
ptmd | Prescriptive Topology Manager. Verifies cabling based on LLDP output. Also sets up BFD sessions. | YES if using BFD |
nvued | Handles the NVUE object model. | NO |
rsyslog | Handles logging of syslog messages. | NO |
ntp | Network time protocol. | NO |
ledmgrd | LED manager. Reads the state of system LEDs. | NO |
sysmonitor | Watches and logs critical system load (free memory, disk, CPU). | NO |
lldpd | Handles Tx/Rx of LLDP information. | NO |
smond | Reads platform sensors and fan information from pwmd. | NO |
pwmd | Reads and sets fan speeds. | NO |