Unix tools introduced. Today: date

The unix tool date can be used to print the current date. It also can be used to calculate time spans or to reformat time strings.

Examples:
1. Print the current date in a conventional form

date +"%d. %B %Y"

2. Use certain locale. Find supported list in /usr/share/i18n/SUPPORTED

LANG=de_DE.UTF-8 date +"%d. %B %Y"

3. Print an arbitrary (but valid) timestring in a conventional form

date -d 2003-11-22 +"%d. %B %Y"

4. Print the current date as seconds since 1970 (unix epoche)

date +%s

5. Calculate the difference of two dates in days. Explanation can be found here.

A="2002-10-20"
B="2003-11-22"
echo $(( ($(date -d $B +%s) - $(date -d $A +%s)) / 86400 )) days

6. Print seconds after 1970 (unix epoche) in a conventional form.

TZ=UTC LANG=en_EN.UTF-8  date -d@0 +"%H:%M:%S %d. %B %Y"

Note: if TZ=UTC is left out, date will add or subtract an offset in accordance to systems timezone.

7. Find timezone offset

OFF_1=$(date -d '1 Jan' +%z)
OFF_7=$(date -d '1 Jul' +%z)
echo $OFF_1 $OFF_7

 

Kubernetes, Docker, vSphere und Co.

Software Development Process

Als Entwickler sucht man möglichst einfache Wege, seine Software zu veröffentlichen und zu installieren. Idealerweise kann die Installation und Veröffentlichung der Software in den normalen Entwicklungsprozess integriert werden, so dass nach erfolgreichem Durchlaufen der Testprozeduren ein fertiges Paket zur Installation bereit liegt.

Serverless

Der Entwickler übernimmt dabei die Verantwortung seine Software als lauffähiges Paket bereit zu stellen. Damit dies gelingen kann, müssen Kenntnisse über die siginifikanten Eigenschaften der Zielplattform bekannt sein. Je weniger solcher Eigenschaften der Entwickler beim Paketieren berücksichtigen muss, desto besser.

Aus ihrer Tätigkeit heraus, haben Entwickler nur über einige Aspekte Ihrer Software überhaupt Kenntnisse. Idealerweise reichen diese natürlichen Kenntnisse aus, um ein lauffähiges Paket für die Zielplattform zu erzeugen.

zum Beispiel:

  • benötigte Bibliotheken
  • benötigte Systempfade
  • benötigte Drittdienste
  • benötigte Ports

Infrastructure as a Service

Dabei sind eine Vielzahl von Aspekten, die im Entwicklungsprozess keine Rolle spielen, für den erfolgreichen Betrieb der Software von höchster Wichtigkeit.

zum Beispiel:

  • benötigte  Systemgröße – CPUs, RAM, Storage
  • benötigte Instanzen – Loadbalancing
  • Sicherheitsaspekte – Netzkonfiguration, DNS, SSL
  • Caching
  • Systembenutzer/Gruppen
  • Start/Stop Skripte
  • Monitoring

Über diese Aspekte können Entwickler oft nur wenig sagen. Eine aus Entwicklersicht ideale Umgebung, würde sich einfach den Erfordernissen der Software anpassen, bzw. mit einigen Handgriffen leicht anzupassen sein.

Eine solche Umgebung bereit zu stellen, ist die Triebfeder hinter Technologien wie Docker, Kubernetes, und/oderVMWare.  Durch den Einsatz dieser Technologien sollen alle Aspekte des Softwarebetriebs erfolgreich verwaltet werden können, über die Entwickler typischerweise keine Kenntnisse haben.

Quellen

  1. Kubernetes Introduction for VMware Users – Part 1: The Theory
  2. Containers and Kubernetes: The Time Is Now
  3. https://www.infoworld.com/article/3268073/kubernetes/what-is-kubernetes-container-orchestration-explained.html

 

Unix tools introduced. Today: yes

The unix tool yes provides one simple yet very useful functionality. It repeatedly  prints ‘yes’ (or any other string) to the console.

This can be used to automatically answer questions in scripted environments.

Example:

yes|sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm