Introduction to the Use of System CTL Tools

Keywords: socket Linux DBus RHEL

Systemctl is a system D tool, which is mainly responsible for controlling the system D system and service manager.

Systemd is a collection of system management daemons, tools, and libraries that replace the initial process of System V. Systemd's function is to centrally manage and configure UNIX-like systems.

In the Linux ecosystem, Systemd is deployed in most standard Linux distributions, and only a few have not yet been deployed. Systemd is usually the parent of all other daemons, but not always.

Using System CTL to manage Linux services

The purpose of this paper is to clarify "how to control systems and services" on systems running system D.

Systemd Initial Experience and Systemctl Foundation

1. First check if there is a system installed in your system and determine the version currently installed.

  1. # systemctl --version
  2. systemd 215
  3. +PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR

As is clear from the example above, we installed the 215 version of system D.

2. Check the installation location of binary and library files for system D and system CTL

  1. # whereis systemd
  2. systemd: /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz
  3. # whereis systemctl
  4. systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

3. Check whether system D is running

  1. # ps -eaf | grep [s]ystemd
  2. root 1 0 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
  3. root 444 1 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd-journald
  4. root 469 1 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd-udevd
  5. root 555 1 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd-logind
  6. dbus 556 1 0 16:27 ? 00:00:00 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation

Note: System D runs as a parent process (PID=1). In the ps command output with the (-e) parameter above, select all processes, (-a) select all processes except session lead, and use the (-f) parameter to output the complete format list (i.e. -eaf).

Note also the brackets that follow in the preceding example and the rest of the example. Square bracket expressions are part of grep's character class expressions.

4. Analysis of system D startup process

  1. # systemd-analyze
  2. Startup finished in 487ms (kernel) + 2.776s (initrd) + 20.229s (userspace) = 23.493s

5. Analyse the time spent by each process at startup

  1. # systemd-analyze blame
  2. 8.565s mariadb.service
  3. 7.991s webmin.service
  4. 6.095s postfix.service
  5. 4.311s httpd.service
  6. 3.926s firewalld.service
  7. 3.780s kdump.service
  8. 3.238s tuned.service
  9. 1.712s network.service
  10. 1.394s lvm2-monitor.service
  11. 1.126s systemd-logind.service
  12. ....

6. Analysis of critical chains at startup

  1. # systemd-analyze critical-chain
  2. The time after the unit is active or started is printed after the "@" character.
  3. The time the unit takes to start is printed after the "+" character.
  4. multi-user.target @20.222s
  5. └─mariadb.service @11.657s +8.565s
  6. └─network.target @11.168s
  7. └─network.service @9.456s +1.712s
  8. └─NetworkManager.service @8.858s +596ms
  9. └─firewalld.service @4.931s +3.926s
  10. └─basic.target @4.916s
  11. └─sockets.target @4.916s
  12. └─dbus.socket @4.916s
  13. └─sysinit.target @4.905s
  14. └─systemd-update-utmp.service @4.864s +39ms
  15. └─auditd.service @4.563s +301ms
  16. └─systemd-tmpfiles-setup.service @4.485s +69ms
  17. └─rhel-import-state.service @4.342s +142ms
  18. └─local-fs.target @4.324s
  19. └─boot.mount @4.286s +31ms
  20. └─systemd-fsck@dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d19608096
  21. └─dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.device @4

Important: Systemctl accepts services (. service), mountpoints (. mount), sockets (. socket) and devices (. device) as units.

7. List all available units

  1. # systemctl list-unit-files
  2. UNIT FILE STATE
  3. proc-sys-fs-binfmt_misc.automount static
  4. dev-hugepages.mount static
  5. dev-mqueue.mount static
  6. proc-sys-fs-binfmt_misc.mount static
  7. sys-fs-fuse-connections.mount static
  8. sys-kernel-config.mount static
  9. sys-kernel-debug.mount static
  10. tmp.mount disabled
  11. brandbot.path disabled
  12. .....

8. List all running units

  1. # systemctl list-units
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File Syste
  4. sys-devices-pc...0-1:0:0:0-block-sr0.device loaded active plugged VBOX_CD-ROM
  5. sys-devices-pc...:00:03.0-net-enp0s3.device loaded active plugged PRO/1000 MT Desktop Adapter
  6. sys-devices-pc...00:05.0-sound-card0.device loaded active plugged 82801AA AC'97 Audio Controller
  7. sys-devices-pc...:0:0-block-sda-sda1.device loaded active plugged VBOX_HARDDISK
  8. sys-devices-pc...:0:0-block-sda-sda2.device loaded active plugged LVM PV Qzyo3l-qYaL-uRUa-Cjuk-pljo-qKtX-VgBQ8
  9. sys-devices-pc...0-2:0:0:0-block-sda.device loaded active plugged VBOX_HARDDISK
  10. sys-devices-pl...erial8250-tty-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0
  11. sys-devices-pl...erial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1
  12. sys-devices-pl...erial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2
  13. sys-devices-pl...erial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3
  14. sys-devices-virtual-block-dm\x2d0.device loaded active plugged /sys/devices/virtual/block/dm-0
  15. sys-devices-virtual-block-dm\x2d1.device loaded active plugged /sys/devices/virtual/block/dm-1
  16. sys-module-configfs.device loaded active plugged /sys/module/configfs
  17. ...

9. List all failure units

  1. # systemctl --failed
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. kdump.service loaded failed failed Crash recovery kernel arming
  4. LOAD = Reflects whether the unit definition was properly loaded.
  5. ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
  6. SUB = The low-level unit activation state, values depend on unit type.
  7. 1 loaded units listed. Pass --all to see loaded but inactive units, too.
  8. To show all installed unit files use 'systemctl list-unit-files'.

10. Check whether a unit, such as cron.service, is enabled

  1. # systemctl is-enabled crond.service
  2. enabled

11. Check whether a unit or service is running

  1. # systemctl status firewalld.service
  2. firewalld.service - firewalld - dynamic firewall daemon
  3. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
  4. Active: active (running) since Tue 2015-04-28 16:27:55 IST; 34min ago
  5. Main PID: 549 (firewalld)
  6. CGroup: /system.slice/firewalld.service
  7. └─549 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
  8. Apr 28 16:27:51 tecmint systemd[1]: Starting firewalld - dynamic firewall daemon...
  9. Apr 28 16:27:55 tecmint systemd[1]: Started firewalld - dynamic firewall daemon.

Using System CTL to control and manage services

12. List all services (including enabled and disabled)

  1. # systemctl list-unit-files --type=service
  2. UNIT FILE STATE
  3. arp-ethers.service disabled
  4. auditd.service enabled
  5. autovt@.service disabled
  6. blk-availability.service disabled
  7. brandbot.service static
  8. collectd.service disabled
  9. console-getty.service disabled
  10. console-shell.service disabled
  11. cpupower.service disabled
  12. crond.service enabled
  13. dbus-org.fedoraproject.FirewallD1.service enabled
  14. ....

13. How to start, restart, stop, overload services and check the status of services (such as httpd.service) in Linux

  1. # systemctl start httpd.service
  2. # systemctl restart httpd.service
  3. # systemctl stop httpd.service
  4. # systemctl reload httpd.service
  5. # systemctl status httpd.service
  6. httpd.service - The Apache HTTP Server
  7. Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
  8. Active: active (running) since Tue 2015-04-28 17:21:30 IST; 6s ago
  9. Process: 2876 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  10. Main PID: 2881 (httpd)
  11. Status: "Processing requests..."
  12. CGroup: /system.slice/httpd.service
  13. ├─2881 /usr/sbin/httpd -DFOREGROUND
  14. ├─2884 /usr/sbin/httpd -DFOREGROUND
  15. ├─2885 /usr/sbin/httpd -DFOREGROUND
  16. ├─2886 /usr/sbin/httpd -DFOREGROUND
  17. ├─2887 /usr/sbin/httpd -DFOREGROUND
  18. └─2888 /usr/sbin/httpd -DFOREGROUND
  19. Apr 28 17:21:30 tecmint systemd[1]: Starting The Apache HTTP Server...
  20. Apr 28 17:21:30 tecmint httpd[2881]: AH00558: httpd: Could not reliably determine the server's fully q...ssage
  21. Apr 28 17:21:30 tecmint systemd[1]: Started The Apache HTTP Server.
  22. Hint: Some lines were ellipsized, use -l to show in full.

Note: When we use the start, restart, stop and reload commands of system ctl, we will not get any output from the terminal, only the status command can print out.

14. How to activate the service and enable or disable it at startup (i.e., automatically start the service at system startup)

  1. # systemctl is-active httpd.service
  2. # systemctl enable httpd.service
  3. # systemctl disable httpd.service

15. How to block (make it unable to start) or display services (such as httpd.service)

  1. # systemctl mask httpd.service
  2. ln -s '/dev/null' '/etc/systemd/system/httpd.service'
  3. # systemctl unmask httpd.service
  4. rm '/etc/systemd/system/httpd.service'

16. Kill the service using the system CTL command

  1. # systemctl kill httpd
  2. # systemctl status httpd
  3. httpd.service - The Apache HTTP Server
  4. Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
  5. Active: failed (Result: exit-code) since Tue 2015-04-28 18:01:42 IST; 28min ago
  6. Main PID: 2881 (code=exited, status=0/SUCCESS)
  7. Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
  8. Apr 28 17:37:29 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  9. Apr 28 17:37:29 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  10. Apr 28 17:37:39 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  11. Apr 28 17:37:39 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  12. Apr 28 17:37:49 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  13. Apr 28 17:37:49 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  14. Apr 28 17:37:59 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  15. Apr 28 17:37:59 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  16. Apr 28 18:01:42 tecmint systemd[1]: httpd.service: control process exited, code=exited status=226
  17. Apr 28 18:01:42 tecmint systemd[1]: Unit httpd.service entered failed state.
  18. Hint: Some lines were ellipsized, use -l to show in full.

Using System CTL to control and manage mount points

17. List all system mount points

  1. # systemctl list-unit-files --type=mount
  2. UNIT FILE STATE
  3. dev-hugepages.mount static
  4. dev-mqueue.mount static
  5. proc-sys-fs-binfmt_misc.mount static
  6. sys-fs-fuse-connections.mount static
  7. sys-kernel-config.mount static
  8. sys-kernel-debug.mount static
  9. tmp.mount disabled

18. Mount, unload, reload, overload system mount point and check the status of mount point in system

  1. # systemctl start tmp.mount
  2. # systemctl stop tmp.mount
  3. # systemctl restart tmp.mount
  4. # systemctl reload tmp.mount
  5. # systemctl status tmp.mount
  6. tmp.mount - Temporary Directory
  7. Loaded: loaded (/usr/lib/systemd/system/tmp.mount; disabled)
  8. Active: active (mounted) since Tue 2015-04-28 17:46:06 IST; 2min 48s ago
  9. Where: /tmp
  10. What: tmpfs
  11. Docs: man:hier(7)
  12. http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
  13. Process: 3908 ExecMount=/bin/mount tmpfs /tmp -t tmpfs -o mode=1777,strictatime (code=exited, status=0/SUCCESS)
  14. Apr 28 17:46:06 tecmint systemd[1]: Mounting Temporary Directory...
  15. Apr 28 17:46:06 tecmint systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.
  16. Apr 28 17:46:06 tecmint systemd[1]: Mounted Temporary Directory.

19. Activate, enable, or disable mount points at startup (automatic mount at system startup)

  1. # systemctl is-active tmp.mount
  2. # systemctl enable tmp.mount
  3. # systemctl disable tmp.mount

20. Shield (make it unavailable) or visible mount points in Linux

  1. # systemctl mask tmp.mount
  2. ln -s '/dev/null' '/etc/systemd/system/tmp.mount'
  3. # systemctl unmask tmp.mount
  4. rm '/etc/systemd/system/tmp.mount'

Using System CTL to control and manage socket interfaces

21. List all available system socket interfaces

  1. # systemctl list-unit-files --type=socket
  2. UNIT FILE STATE
  3. dbus.socket static
  4. dm-event.socket enabled
  5. lvm2-lvmetad.socket enabled
  6. rsyncd.socket disabled
  7. sshd.socket disabled
  8. syslog.socket static
  9. systemd-initctl.socket static
  10. systemd-journald.socket static
  11. systemd-shutdownd.socket static
  12. systemd-udevd-control.socket static
  13. systemd-udevd-kernel.socket static
  14. 11 unit files listed.

22. Start, restart, stop, overload the socket interface in Linux and check its status

  1. # systemctl start cups.socket
  2. # systemctl restart cups.socket
  3. # systemctl stop cups.socket
  4. # systemctl reload cups.socket
  5. # systemctl status cups.socket
  6. cups.socket - CUPS Printing Service Sockets
  7. Loaded: loaded (/usr/lib/systemd/system/cups.socket; enabled)
  8. Active: active (listening) since Tue 2015-04-28 18:10:59 IST; 8s ago
  9. Listen: /var/run/cups/cups.sock (Stream)
  10. Apr 28 18:10:59 tecmint systemd[1]: Starting CUPS Printing Service Sockets.
  11. Apr 28 18:10:59 tecmint systemd[1]: Listening on CUPS Printing Service Sockets.

23. Activate the socket interface at startup and enable or disable it (self-startup at system startup)

  1. # systemctl is-active cups.socket
  2. # systemctl enable cups.socket
  3. # systemctl disable cups.socket

24. Shield (make it unable to start) or display socket interface

  1. # systemctl mask cups.socket
  2. ln -s '/dev/null' '/etc/systemd/system/cups.socket'
  3. # systemctl unmask cups.socket
  4. rm '/etc/systemd/system/cups.socket'

CPU utilization of services (allocation)

25. Get the current CPU allocation for a service (such as httpd)

  1. # systemctl show -p CPUShares httpd.service
  2. CPUShares=1024

Note: The default CPU allocation for each service = 1024, you can increase or decrease the CPU allocation for a process.

26. Limit the CPU share of a service (httpd.service) to 2000 CPUShares/

  1. # systemctl set-property httpd.service CPUShares=2000
  2. # systemctl show -p CPUShares httpd.service
  3. CPUShares=2000

Note: When you set CPUShares for a service, you automatically create a directory named after the service name (such as httpd.service), which contains a file named 90-CPUShares.conf, which contains CPUShare restriction information. You can view the file as follows:

  1. # vi /etc/systemd/system/httpd.service.d/90-CPUShares.conf
  2. [Service]
  3. CPUShares=2000

27. Check all configuration details of a service

  1. # systemctl show httpd
  2. Id=httpd.service
  3. Names=httpd.service
  4. Requires=basic.target
  5. Wants=system.slice
  6. WantedBy=multi-user.target
  7. Conflicts=shutdown.target
  8. Before=shutdown.target multi-user.target
  9. After=network.target remote-fs.target nss-lookup.target systemd-journald.socket basic.target system.slice
  10. Description=The Apache HTTP Server
  11. LoadState=loaded
  12. ActiveState=active
  13. SubState=running
  14. FragmentPath=/usr/lib/systemd/system/httpd.service
  15. ....

28. Analyzing the key chains of a service (httpd)

  1. # systemd-analyze critical-chain httpd.service
  2. The time after the unit is active or started is printed after the "@" character.
  3. The time the unit takes to start is printed after the "+" character.
  4. httpd.service +142ms
  5. └─network.target @11.168s
  6. └─network.service @9.456s +1.712s
  7. └─NetworkManager.service @8.858s +596ms
  8. └─firewalld.service @4.931s +3.926s
  9. └─basic.target @4.916s
  10. └─sockets.target @4.916s
  11. └─dbus.socket @4.916s
  12. └─sysinit.target @4.905s
  13. └─systemd-update-utmp.service @4.864s +39ms
  14. └─auditd.service @4.563s +301ms
  15. └─systemd-tmpfiles-setup.service @4.485s +69ms
  16. └─rhel-import-state.service @4.342s +142ms
  17. └─local-fs.target @4.324s
  18. └─boot.mount @4.286s +31ms
  19. └─systemd-fsck@dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.service @4.092s +149ms
  20. └─dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.device @4.092s

29. Get a dependency list for a service (httpd)

  1. # systemctl list-dependencies httpd.service
  2. httpd.service
  3. ├─system.slice
  4. └─basic.target
  5. ├─firewalld.service
  6. ├─microcode.service
  7. ├─rhel-autorelabel-mark.service
  8. ├─rhel-autorelabel.service
  9. ├─rhel-configure.service
  10. ├─rhel-dmesg.service
  11. ├─rhel-loadmodules.service
  12. ├─paths.target
  13. ├─slices.target
  14. ├─-.slice
  15. └─system.slice
  16. ├─sockets.target
  17. ├─dbus.socket
  18. ....

30. List control groups by level

  1. # systemd-cgls
  2. ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
  3. ├─user.slice
  4. └─user-0.slice
  5. └─session-1.scope
  6. ├─2498 sshd: root@pts/0
  7. ├─2500 -bash
  8. ├─4521 systemd-cgls
  9. └─4522 systemd-cgls
  10. └─system.slice
  11. ├─httpd.service
  12. ├─4440 /usr/sbin/httpd -DFOREGROUND
  13. ├─4442 /usr/sbin/httpd -DFOREGROUND
  14. ├─4443 /usr/sbin/httpd -DFOREGROUND
  15. ├─4444 /usr/sbin/httpd -DFOREGROUND
  16. ├─4445 /usr/sbin/httpd -DFOREGROUND
  17. └─4446 /usr/sbin/httpd -DFOREGROUND
  18. ├─polkit.service
  19. └─721 /usr/lib/polkit-1/polkitd --no-debug
  20. ....

31. List control groups by CPU, memory, input and output

  1. # systemd-cgtop
  2. Path Tasks %CPU Memory Input/s Output/s
  3. / 83 1.0 437.8M - -
  4. /system.slice - 0.1 - - -
  5. /system.slice/mariadb.service 2 0.1 - - -
  6. /system.slice/tuned.service 1 0.0 - - -
  7. /system.slice/httpd.service 6 0.0 - - -
  8. /system.slice/NetworkManager.service 1 - - - -
  9. /system.slice/atop.service 1 - - - -
  10. /system.slice/atopacct.service 1 - - - -
  11. /system.slice/auditd.service 1 - - - -
  12. /system.slice/crond.service 1 - - - -
  13. /system.slice/dbus.service 1 - - - -
  14. /system.slice/firewalld.service 1 - - - -
  15. /system.slice/lvm2-lvmetad.service 1 - - - -
  16. /system.slice/polkit.service 1 - - - -
  17. /system.slice/postfix.service 3 - - - -
  18. /system.slice/rsyslog.service 1 - - - -
  19. /system.slice/system-getty.slice/getty@tty1.service 1 - - - -
  20. /system.slice/systemd-journald.service 1 - - - -
  21. /system.slice/systemd-logind.service 1 - - - -
  22. /system.slice/systemd-udevd.service 1 - - - -
  23. /system.slice/webmin.service 1 - - - -
  24. /user.slice/user-0.slice/session-1.scope 3 - - - -

Operational Level of Control System

32. Start-up system rescue mode

  1. # systemctl rescue
  2. Broadcast message from root@tecmint on pts/0 (Wed 2015-04-29 11:31:18 IST):
  3. The system is going down to rescue mode NOW!

33. Enter Emergency Mode

  1. # systemctl emergency
  2. Welcome to emergency mode! After logging in, type "journalctl -xb" to view
  3. system logs, "systemctl reboot" to reboot, "systemctl default" to try again
  4. to boot into default mode.

34. List the current operational levels used

  1. # systemctl get-default
  2. multi-user.target

35. Start-up operation level 5, i.e. graphical mode

  1. # systemctl isolate runlevel5.target
  2. or
  3. # systemctl isolate graphical.target

36. Start Run Level 3, Multiuser Mode (Command Line)

  1. # systemctl isolate runlevel3.target
  2. or
  3. # systemctl isolate multiuser.target

36. Set multiuser mode or graphical mode to default runtime level

  1. # systemctl set-default runlevel3.target
  2. # systemctl set-default runlevel5.target

37. Restart, stop, hang, hibernate or put the system into mixed sleep

  1. # systemctl reboot
  2. # systemctl halt
  3. # systemctl suspend
  4. # systemctl hibernate
  5. # systemctl hybrid-sleep

For those who do not know the operation level, the following is explained.

  • Runlevel 0: Shut down the system
  • Runlevel 1: Rescue? maintenance mode
  • Runlevel 3: Multi-user, Graphic-free System
  • Runlevel 4: Multi-user, Graphic-free System
  • Runlevel 5: Multiuser, Graphical System
  • Runlevel 6: Close and restart the machine

Let's call it a day. Keep in touch and comment. Don't forget to give us some valuable feedback in the comments below. Like us, share with us, seek diffusion.

via: http://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-linux/

Author: Avishek Kumar Translator: GOLinux Proofreading: wxy

This article is composed of LCTT Original translation, Linux China Honorary launch

Compile from: http://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-linux/ Author: Avishek Kumar
Original: LCTT https://linux.cn/article-5926-1.html Translator: GOLinux

This article is originally translated by LCTT. Linux launched in China . Want to join the ranks of translators and make some contributions to open source? Welcome to join LCTT!
Translation work and translation publication are for learning and communication purposes only, and translation work shall comply with these requirements. CC-BY-NC-SA Agreement Provisions If our work encroaches on your rights and interests, please contact us in time.
Welcome to comply. CC-BY-NC-SA Agreement Provisions Reproduced, please mark and retain the original/translation links and author/translator information in the text.  
The article only represents the author's knowledge and opinions. If you have different opinions, please queue downstairs.Make complaints :D 

Posted by Yucky on Fri, 24 May 2019 15:33:34 -0700