Introduction to Systemd, how to start using systemd in RHEL 7 or Centos 7 ?

With introduction or RHEL7 or CentOS 7, we have a new concept introduced known as systemd.

Personally i don’t liked the new concept as its a little bit complex to understand at first.

However once you understand its versatile functions, you will start loving this utility.

1. View systemd or systemctl version

$ systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

 


2. Analyze Boot process
a. Get boot time

$ systemd-analyze 
Startup finished in 1.826s (kernel) + 2.866s (initrd) + 59.178s (userspace) = 1min 3.871s

 

b. Get time taken by each services during boot.

$ systemd-analyze blame 
         41.618s kdump.service
         21.120s network-libvirt-restart.service
          7.470s ossec-hids.service
          7.095s NetworkManager-wait-online.service
          6.032s network.service
          5.731s hp-ams.service
          1.897s tuned.service
          1.682s postfix.service
          1.002s plymouth-quit-wait.service
           932ms snmpd.service
           927ms dev-mapper-vg01\x2droot.device
           886ms openvswitch.service
           886ms lvm2-monitor.service
           786ms libvirtd.service
           751ms sssd.service
           736ms polkit.service
           721ms plymouth-quit.service
           650ms var-lib-nfs-rpc_pipefs.mount
           629ms iptables.service
           621ms microcode.service
           612ms netcf-transaction.service
           597ms sysstat.service
           587ms gssproxy.service
           580ms ntpd.service
           541ms systemd-machined.service
           419ms boot.mount
           360ms ngs.mount
           301ms NetworkManager.service
           280ms var.mount
           273ms lvm2-pvscan@8:3.service
           145ms dev-mapper-vg01\x2dswap.swap
           143ms ksm.service
           127ms rhel-dmesg.service
           126ms systemd-vconsole-setup.service
           121ms rpc-statd-notify.service
           117ms ip6tables.service
           109ms xinetd.service
           109ms systemd-tmpfiles-setup-dev.service
           108ms lldpd.service
           107ms iscsi-shutdown.service
           102ms systemd-udevd.service
            95ms systemd-user-sessions.service
            87ms rhel-loadmodules.service
            83ms systemd-random-seed.service
            81ms systemd-udev-trigger.service
            75ms systemd-tmpfiles-setup.service
            72ms boot-efi.mount
            70ms rhel-import-state.service
            69ms systemd-journal-flush.service
            64ms kmod-static-nodes.service

 

c. Time taken during boot by different units.

$ systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

multi-user.target @24.916s
└─ossec-hids.service @17.444s +7.470s
  └─network-online.target @17.414s
    └─network.target @17.345s
      └─NetworkManager.service @3.038s +301ms
        └─netcf-transaction.service @2.236s +612ms
          └─basic.target @2.229s
            └─sockets.target @2.229s
              └─virtlogd-admin.socket @20.048s
                └─sysinit.target @2.227s
                  └─systemd-update-utmp.service @2.184s +42ms
                    └─systemd-tmpfiles-setup.service @2.107s +75ms
                      └─rhel-import-state.service @2.036s +70ms
                        └─local-fs.target @2.027s
                          └─ngs.mount @1.696s +360ms
                            └─dev-mapper-vg01\x2dngs.device @1.695s

 


3. Analyze critical chain for a particular service.

$ systemd-analyze critical-chain crond.service
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

crond.service @18.298s
└─systemd-user-sessions.service @17.562s +95ms
  └─remote-fs.target @17.558s
    └─remote-fs-pre.target @17.558s
      └─iscsi-shutdown.service @17.448s +107ms
        └─network.target @17.345s
          └─NetworkManager.service @3.038s +301ms
            └─netcf-transaction.service @2.236s +612ms
              └─basic.target @2.229s
                └─sockets.target @2.229s
                  └─virtlogd-admin.socket @20.048s
                    └─sysinit.target @2.227s
                      └─systemd-update-utmp.service @2.184s +42ms
                        └─systemd-tmpfiles-setup.service @2.107s +75ms
                          └─rhel-import-state.service @2.036s +70ms
                            └─local-fs.target @2.027s
                              └─ngs.mount @1.696s +360ms
                                └─dev-mapper-vg01\x2dngs.device @1.695s

 


4. List dependencies
a. Of complete system

$ systemctl list-dependencies 
default.target
● ├─brandbot.path
● ├─crond.service
● ├─dbus.service
● ├─epic.service
● ├─hp-ams.service
● ├─httpd.service
● ├─irqbalance.service
● ├─kdump.service
● ├─ksm.service
● ├─ksmtuned.service
● ├─libvirtd.service
● ├─lldpd.service
● ├─mdmonitor.service
● ├─netcf-transaction.service

 

b. Of a particular service

$ systemctl list-dependencies crond.service
crond.service
● ├─system.slice
● └─basic.target
●   ├─ip6tables.service
●   ├─iptables.service
●   ├─microcode.service
●   ├─rhel-dmesg.service
●   ├─selinux-policy-migrate-local-changes@targeted.service
●   ├─paths.target
●   ├─slices.target
●   │ ├─-.slice
●   │ └─system.slice
●   ├─sockets.target
●   │ ├─dbus.socket
●   │ ├─dm-event.socket
●   │ ├─iscsid.socket
●   │ ├─iscsiuio.socket
●   │ ├─rpcbind.socket
●   │ ├─systemd-initctl.socket
●   │ ├─systemd-journald.socket
●   │ ├─systemd-shutdownd.socket
●   │ ├─systemd-udevd-control.socket
●   │ ├─systemd-udevd-kernel.socket
●   │ └─virtlogd.socket
●   ├─sysinit.target
●   │ ├─dev-hugepages.mount
●   │ ├─dev-mqueue.mount
●   │ ├─iscsi.service
●   │ ├─kmod-static-nodes.service
●   │ ├─lvm2-lvmetad.socket

 


5. Get Service Details

$ systemctl show crond
Type=simple
Restart=no
NotifyAccess=none
RestartUSec=100ms
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
WatchdogUSec=0
WatchdogTimestamp=Thu 2019-02-14 06:42:43 GMT
WatchdogTimestampMonotonic=22991309
StartLimitInterval=10000000
StartLimitBurst=5
StartLimitAction=none
FailureAction=none
PermissionsStartOnly=no

The units required by a particular service and vice versa.
$ systemctl show crond | grep -i requires
Requires=basic.target
$ systemctl show crond | grep -i wants
Wants=system.slice
$ 

 


6. Log Analysis

a. View all

bash-4.2# journalctl 
-- Logs begin at Thu 2019-02-14 06:42:22 GMT, end at Thu 2019-03-07 20:06:45 GMT. --
Feb 14 06:42:22 ngelinux systemd-journal[277]: Runtime journal is using 8.0M (max allowed 3.1G, trying to leave 4.0G free of 31.3G available → cur
Feb 14 06:42:22 ngelinux kernel: Initializing cgroup subsys cpuset
Feb 14 06:42:22 ngelinux kernel: Initializing cgroup subsys cpu
Feb 14 06:42:22 ngelinux kernel: Initializing cgroup subsys cpuacct
Feb 14 06:42:22 ngelinux kernel: Linux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@x86-ol7-builder-03.us.oracle.com) (gcc version 4.8.5 20150623 
Feb 14 06:42:22 ngelinux kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-957.1.3.el7.x86_64 root=/dev/mapper/vg01-root ro rd.lvm.lv=vg01/swap con
Feb 14 06:42:22 ngelinux kernel: e820: BIOS-provided physical RAM map:
Feb 14 06:42:22 ngelinux kernel: BIOS-e820: [mem 0x0000000000000000-0x0000000000092fff] usable
Feb 14 06:42:22 ngelinux kernel: BIOS-e820: [mem 0x0000000000093000-0x0000000000093fff] reserved
Feb 14 06:42:22 ngelinux kernel: BIOS-e820: [mem 0x0000000000094000-0x000000000009ffff] usable

 

b. View logs of a particular service.

bash-4.2# journalctl /sbin/crond
-- No entries --
bash-4.2# 

 

c. View logs of a particular unit.

bash-4.2# journalctl --unit=chronyd
-- No entries --
bash-4.2# 

 

d. Logs since last boot:

bash-4.2# journalctl -b
-- Logs begin at Thu 2019-02-14 06:42:22 GMT, end at Thu 2019-03-07 20:17:51 GMT. --
Feb 14 06:42:22 ngelinux systemd-journal[277]: Runtime journal is using 8.0M (max allowed 3.1G, trying to leave 4.0G free of 31.3G available → cur
Feb 14 06:42:22 ngelinux kernel: Initializing cgroup subsys cpuset
Feb 14 06:42:22 ngelinux kernel: Initializing cgroup subsys cpu
Feb 14 06:42:22 ngelinux kernel: Initializing cgroup subsys cpuacct
Feb 14 06:42:22 ngelinux kernel: Linux version 3.10.0-957.1.3.el7.x86_64 (mockbuild@x86-ol7-builder-03.us.oracle.com) (gcc version 4.8.5 20150623 
Feb 14 06:42:22 ngelinux kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-957.1.3.el7.x86_64 root=/dev/mapper/vg01-root ro rd.lvm.lv=vg01/swap con
Feb 14 06:42:22 ngelinux kernel: e820: BIOS-provided physical RAM map:
Feb 14 06:42:22 ngelinux kernel: BIOS-e820: [mem 0x0000000000000000-0x0000000000092fff] usable
Feb 14 06:42:22 ngelinux kernel: BIOS-e820: [mem 0x0000000000093000-0x0000000000093fff] reserved

 

e. View disk space taken by journal logs.

bash-4.2# journalctl --disk-usage
Archived and active journals take up 200.0M on disk.
bash-4.2# 

 

Tip: View all error messages:
bash-4.2# journalctl -p err
— Logs begin at Thu 2019-02-14 06:42:22 GMT, end at Thu 2019-03-07 20:17:51 GMT. —
Feb 14 06:42:22 ngelinux kernel: [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 38d is 330)
Feb 14 06:42:22 ngelinux kernel: i8042: Can’t read CTR while initializing i8042
Feb 14 06:42:23 ngelinux systemd-udevd[439]: could not find module by name=’ipmi_si’
Feb 14 06:42:23 ngelinux systemd-udevd[439]: could not find module by name=’ipmi_devintf’
Feb 14 06:42:23 ngelinux systemd-udevd[439]: could not find module by name=’ipmi_msghandler’
Feb 14 06:42:26 ngelinux kernel: power_meter ACPI000D:00: Ignoring unsafe software power cap!
Feb 14 06:42:30 ngelinux ntpd_intres[8518]: host name not found: us-east-1.ntp.ngelinux.com
Feb 14 06:42:30 ngelinux ntpd_intres[8518]: host name not found: us-east-2.ntp.ngelinux.com
Feb 14 06:42:30 ngelinux ntpd_intres[8518]: host name not found: us-east-3.ntp.ngelinux.com
Feb 14 06:42:30 ngelinux ntpd_intres[8518]: host name not found: us-east-4.ntp.ngelinux.com
Feb 14 06:42:30 ngelinux ntpd_intres[8518]: host name not found: time.ngelinux.com
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux kernel: hpilo 0000:01:00.2: Open could not dequeue a packet
Feb 14 06:42:43 ngelinux systemd[1]: Failed to start The Apache HTTP Server.
Feb 14 06:42:44 ngelinux systemd[1]: Failed to start The Apache HTTP Server.
Feb 14 06:42:44 ngelinux systemd[1]: Failed to start The Apache HTTP Server.
Feb 14 06:42:44 ngelinux systemd[1]: Failed to start The Apache HTTP Server.
Feb 14 06:42:45 ngelinux systemd[1]: Failed to start The Apache HTTP Server.
Feb 14 06:42:45 ngelinux systemd[1]: Failed to start The Apache HTTP Server.
Feb 14 06:42:53 ngelinux kernel: kvm [11591]: vcpu0 disabled perfctr wrmsr: 0xc2 data 0xffff
Feb 21 06:41:38 ngelinux kernel: kvm [11591]: vcpu0 disabled perfctr wrmsr: 0xc2 data 0xffff
bash-4.2#

Leave a Reply

Your email address will not be published.