- Processes, file system and permissions
- Understand processes, signals (SIGTERM, SIGKILL), file descriptors, users and groups, chmod/chown and capabilities. Inspect resources with ps, top, ss, lsof, df, du and read system logs with journalctl. Containers reuse exactly these primitives through namespaces and cgroups.
- systemd and service management
- Write unit files, understand restart policies, unit dependencies and how systemd limits resources through cgroups. Read state with systemctl status and debug a service that will not start using journalctl -u.
- Safe shell scripting
- Use set -euo pipefail, quote variables properly, use trap for cleanup and lint scripts with ShellCheck. Know when to stop writing Bash and switch to Python or Go once the logic gets complex.
- DNS and HTTP
- Understand A, AAAA, CNAME, TXT and MX records, TTLs and the resolution process, and debug with dig. Know how HTTP/1.1, HTTP/2 and HTTP/3 differ, along with the headers that matter for caching, proxies and CORS.
- TLS and certificates
- Understand the TLS handshake, certificate chains, SNI, mTLS and the certificate lifecycle with ACME (Let's Encrypt). Use openssl s_client to check for expired certificates or broken chains, a very common deploy failure.
- Load balancing and reverse proxies
- Distinguish layer 4 from layer 7 load balancers, round robin and least connections, health checks and connection draining. Practice with Nginx, HAProxy or Caddy to see how timeouts, keep-alive and X-Forwarded-* headers behave.