In this article we will learn how to use ‘systemctl’ command, ‘systemctl’ is a new command which is available in the new version of Linux distributions which is used to control the system and services, we will explore some possible ways to use the ‘systemctl’ command in Linux.
We can verify the status of the services using this command. Below is the command to check the service.
# systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-06-02 06:48:58 EDT; 27s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 10011 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─10011 /usr/sbin/httpd -DFOREGROUND ├─10012 /usr/sbin/httpd -DFOREGROUND ├─10013 /usr/sbin/httpd -DFOREGROUND ├─10014 /usr/sbin/httpd -DFOREGROUND ├─10015 /usr/sbin/httpd -DFOREGROUND └─10016 /usr/sbin/httpd -DFOREGROUND Jun 02 06:48:57 centos-linux-1.shared systemd[1]: Starting The Apache HTTP Server... Jun 02 06:48:58 centos-linux-1.shared systemd[1]: Started The Apache HTTP Server.
# systemctl show httpd Type=notify Restart=no NotifyAccess=main RestartUSec=100ms TimeoutStartUSec=1min 30s TimeoutStopUSec=1min 30s WatchdogUSec=0 WatchdogTimestamp=Thu 2016-06-02 06:48:58 EDT WatchdogTimestampMonotonic=2588490928 StartLimitInterval=10000000StartLimitBurst=5 StartLimitAction=none …. . . . . AssertResult=yes ConditionTimestamp=Thu 2016-06-02 06:48:57 EDT ConditionTimestampMonotonic=2587709137 AssertTimestamp=Thu 2016-06-02 06:48:57 ED AssertTimestampMonotonic=2587709138 Transient=no This will display all the status information about http (web servers services) Verifying the Services active or enabled Here we will verify that the servers are active and they are enabled at system startup To verify the services active or not we needed to run the below command # systemctl is-active httpd.service active
# systemctl enable httpd Created symlink from /etc/systemd/system/multi-use.rtarget.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl is-enabled httpd enabled
# systemctl start httpd # systemctl restart httpd
# systemctl list-dependencies httpd httpd.service ├─-.mount ├─system.slice └─basic.target ├─microcode.service ├─rhel-autorelabel-mark.service ├─rhel-autorelabel. service ├─rhel-configure.service ├─rhel-dmesg.service ├─rhel-loadmodules.service ├─paths.target ├─slices.target │ ├─-.slice │ └─system.slice… … . ..
# systemctl list-jobs No jobs running.
# systemctl list-unit files
# systemctl list-unit-files | grep httpd httpd.service enabled
# systemctl list-sockets --show-types LISTEN TYPE UNIT ACTIVATES /dev/log Datagram systemd-journald.socket systemd-j /run/dmeventd-client FIFO dm-event.socket dm-event. /run/dmeventd-server FIFO dm-event.socket dm-event. /run/lvm/lvmetad.socket Stream lvm2-lvmetad.socket lvm2-lvme /run/lvm/lvmpolld.socket Stream lvm2-lvmpolld.socket lvm2-lvmp /run/systemd/initctl/fifo FIFO systemd-initctl.socket systemd-i /run/systemd/journal/socket Datagram systemd-journald.socket systemd-j /run/systemd/journal/stdout Stream systemd-journald.socket systemd-j /run/systemd/shutdownd Datagram systemd-shutdownd.socket systemd-s /run/udev/control SequentialPacket systemd-udevd-control.socket systemd-u /var/run/dbus/system_bus_socket Stream dbus.socket dbus.serv kobject-uevent 1 Netlink systemd-udevd-kernel.socket systemd-u 12 sockets listed. Pass --all to see loaded but inactive sockets, too.
# systemctl set-default multi-user.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target. # systemctl get-default multi-user.target
In some situations, especially in big companies – one of the administrators had stoped the servers and other will start the services, to avoid this type of situations we can mask and unmask the services, if some services are stoped without unmasking we cannot start the services again
# systemctl mask httpd Created symlink from /etc/systemd/system/httpd.service to /dev/null.
# httpd.service Loaded: masked (/dev/null) Active: active (running) since Thu 2016-06-02 07:03:27 EDT; 10min ago Main PID: 10128 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─10128 /usr/sbin/httpd -DFOREGROUND ├─10129 /usr/sbin/httpd -DFOREGROUND ├─10130 /usr/sbin/httpd -DFOREGROUND ├─10131 /usr/sbin/httpd -DFOREGROUND ├─10132 /usr/sbin/httpd -DFOREGROUND └─10133 /usr/sbin/httpd -DFOREGROUND Jun 02 07:03:27 centos-linux-1.shared systemd[1]: Starting The Apache HTTP Server... Jun 02 07:03:27 centos-linux-1.shared systemd[1]: Started The Apache HTTP Server. Jun 02 07:13:47 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Jun 02 07:13:57 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Jun 02 07:14:07 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Jun 02 07:14:17 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Hint: Some lines were ellipsized, use -l to show in full.
# systemctl start httpd Failed to start httpd.service: Unit httpd.service is masked.
# systemctl unmask httpd Removed symlink /etc/systemd/system/httpd.service.
# systemctl start httpd # systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-06-02 07:03:27 EDT; 18min ago Docs: man:httpd(8) man:apachectl(8) Main PID: 10128 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─10128 /usr/sbin/httpd -DFOREGROUND ├─10129 /usr/sbin/httpd -DFOREGROUND ├─10130 /usr/sbin/httpd -DFOREGROUND ├─10131 /usr/sbin/httpd -DFOREGROUND ├─10132 /usr/sbin/httpd -DFOREGROUND └─10133 /usr/sbin/httpd -DFOREGROUND
A snapshot refers to a saved status of the system manager. The Snapshot is useful only to save an restore the units running or stopped.
# systemctl snapshot httpd ht.tpdsnapshot
# systemctl status httpd.snapshot httpd.snapshot Loaded: loaded Active: inactive (dead) Jun 02 07:26:31 centos-linux-1.shared systemd[1]: Created snapshot httpd.snapshot.
# systemctl delete httpd.snapshot # systemctl status httpd.snapshot httpd.snapshot Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) Jun 02 07:26:31 centos-linux-1.shared systemd[1]: Created snapshot httpd.snapshot. Jun 02 07:29:05 centos-linux-1.shared systemd[1]: Removing snapshot httpd.snapshot.
After this article we can now able to control the services in the new or the latest version of Linux, where the ‘systemctl’ is the replacement of service command in the older versions of Linux. Hope this will help in doing your jobs.