Rewrite devops roadmap

pull/4029/head
Kamran Ahmed 1 year ago
parent bf61697154
commit 311b4683d0
  1. 7
      scripts/roadmap-content.cjs
  2. 3
      scripts/roadmap-dirs.cjs
  3. 0
      src/data/roadmaps/devops/content/101-operating-systems/103-windows.md
  4. 0
      src/data/roadmaps/devops/content/101-operating-systems/index.md
  5. 0
      src/data/roadmaps/devops/content/101-operating-systems/linux/100-ubuntu.md
  6. 0
      src/data/roadmaps/devops/content/101-operating-systems/linux/101-suse-linux.md
  7. 0
      src/data/roadmaps/devops/content/101-operating-systems/linux/102-rhel.md
  8. 1
      src/data/roadmaps/devops/content/101-operating-systems/linux/index.md
  9. 0
      src/data/roadmaps/devops/content/101-operating-systems/unix/100-free-bsd.md
  10. 0
      src/data/roadmaps/devops/content/101-operating-systems/unix/101-open-bsd.md
  11. 0
      src/data/roadmaps/devops/content/101-operating-systems/unix/102-net-bsd.md
  12. 1
      src/data/roadmaps/devops/content/101-operating-systems/unix/index.md
  13. 11
      src/data/roadmaps/devops/content/101-os-concepts/100-networking.md
  14. 9
      src/data/roadmaps/devops/content/101-os-concepts/101-io-management.md
  15. 9
      src/data/roadmaps/devops/content/101-os-concepts/102-virtualization.md
  16. 10
      src/data/roadmaps/devops/content/101-os-concepts/103-memory-storage.md
  17. 7
      src/data/roadmaps/devops/content/101-os-concepts/104-file-system.md
  18. 12
      src/data/roadmaps/devops/content/101-os-concepts/105-sockets.md
  19. 15
      src/data/roadmaps/devops/content/101-os-concepts/106-posix.md
  20. 15
      src/data/roadmaps/devops/content/101-os-concepts/107-processes.md
  21. 11
      src/data/roadmaps/devops/content/101-os-concepts/108-startup-management.md
  22. 11
      src/data/roadmaps/devops/content/101-os-concepts/109-service-management.md
  23. 19
      src/data/roadmaps/devops/content/101-os-concepts/110-threads-concurrency.md
  24. 9
      src/data/roadmaps/devops/content/101-os-concepts/index.md
  25. 0
      src/data/roadmaps/devops/content/102-live-in-terminal/102-editors.md
  26. 37
      src/data/roadmaps/devops/content/102-live-in-terminal/103-process-monitoring.md
  27. 32
      src/data/roadmaps/devops/content/102-live-in-terminal/104-performance-monitoring.md
  28. 74
      src/data/roadmaps/devops/content/102-live-in-terminal/105-networking-tools.md
  29. 80
      src/data/roadmaps/devops/content/102-live-in-terminal/106-text-manipulation.md
  30. 0
      src/data/roadmaps/devops/content/102-live-in-terminal/index.md
  31. 1
      src/data/roadmaps/devops/content/102-live-in-terminal/scripting/100-bash-scripting.md
  32. 1
      src/data/roadmaps/devops/content/102-live-in-terminal/scripting/101-powershell.md
  33. 1
      src/data/roadmaps/devops/content/102-live-in-terminal/scripting/index.md
  34. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/100-screen-multiplexer.md
  35. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/100-terminal-multiplexers.md
  36. 12
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/101-tmux-multiplexer.md
  37. 11
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-ps.md
  38. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/102-top.md
  39. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/103-htop.md
  40. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/104-atop.md
  41. 19
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/104-bash-scripting.md
  42. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/105-lsof.md
  43. 21
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/106-compiling-apps.md
  44. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/106-nmon.md
  45. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/107-iostat.md
  46. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/108-sar.md
  47. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/109-vmstat.md
  48. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/110-traceroute.md
  49. 11
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/111-mtr.md
  50. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/112-ping.md
  51. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/113-nmap.md
  52. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/114-netstat.md
  53. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/116-tcpdump.md
  54. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/118-iptables.md
  55. 13
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/119-dig.md
  56. 13
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/120-awk.md
  57. 13
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/121-sed.md
  58. 13
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/122-grep.md
  59. 13
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/123-sort.md
  60. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/124-cut.md
  61. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/125-uniq.md
  62. 17
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/126-cat.md
  63. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/127-echo.md
  64. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/128-fmt.md
  65. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/129-tr.md
  66. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/130-nl.md
  67. 10
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/131-wc.md
  68. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/134-strace.md
  69. 8
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/135-dtrace.md
  70. 1
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/136-systemtap.md
  71. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/137-uname.md
  72. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/138-df.md
  73. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/139-history.md
  74. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/140-du.md
  75. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/141-scp.md
  76. 9
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/142-ufw.md
  77. 7
      src/data/roadmaps/devops/content/102-managing-servers/index.md
  78. 8
      src/data/roadmaps/devops/content/103-networking-protocols/107-port-forwarding.md
  79. 9
      src/data/roadmaps/devops/content/103-version-control-systems/100-git.md
  80. 8
      src/data/roadmaps/devops/content/103-version-control-systems/index.md
  81. 13
      src/data/roadmaps/devops/content/104-vcs-hosting/100-github.md
  82. 8
      src/data/roadmaps/devops/content/104-vcs-hosting/101-gitlab.md
  83. 14
      src/data/roadmaps/devops/content/104-vcs-hosting/102-bitbucket.md
  84. 10
      src/data/roadmaps/devops/content/104-vcs-hosting/index.md
  85. 11
      src/data/roadmaps/devops/content/105-infrastructure-as-code/100-docker.md
  86. 10
      src/data/roadmaps/devops/content/105-infrastructure-as-code/102-configuration-management/102-salt.md
  87. 15
      src/data/roadmaps/devops/content/105-infrastructure-as-code/104-kubernetes.md
  88. 9
      src/data/roadmaps/devops/content/105-infrastructure-as-code/104-nomad.md
  89. 12
      src/data/roadmaps/devops/content/105-infrastructure-as-code/index.md
  90. 0
      src/data/roadmaps/devops/content/105-setting-up-x/100-reverse-proxy.md
  91. 0
      src/data/roadmaps/devops/content/105-setting-up-x/101-caching-server.md
  92. 0
      src/data/roadmaps/devops/content/105-setting-up-x/102-forward-proxy.md
  93. 0
      src/data/roadmaps/devops/content/105-setting-up-x/103-load-balancer.md
  94. 0
      src/data/roadmaps/devops/content/105-setting-up-x/104-firewall.md
  95. 0
      src/data/roadmaps/devops/content/105-setting-up-x/105-nginx.md
  96. 0
      src/data/roadmaps/devops/content/105-setting-up-x/106-apache.md
  97. 0
      src/data/roadmaps/devops/content/105-setting-up-x/107-tomcat.md
  98. 0
      src/data/roadmaps/devops/content/105-setting-up-x/108-iis.md
  99. 0
      src/data/roadmaps/devops/content/105-setting-up-x/index.md
  100. 0
      src/data/roadmaps/devops/content/107-cloud-providers/100-aws.md
  101. Some files were not shown because too many files have changed in this diff Show More

@ -3,7 +3,6 @@ const path = require('path');
const OPEN_AI_API_KEY = process.env.OPEN_AI_API_KEY; const OPEN_AI_API_KEY = process.env.OPEN_AI_API_KEY;
const ALL_ROADMAPS_DIR = path.join(__dirname, '../src/data/roadmaps'); const ALL_ROADMAPS_DIR = path.join(__dirname, '../src/data/roadmaps');
const ROADMAP_JSON_DIR = path.join(__dirname, '../public/jsons/roadmaps');
const roadmapId = process.argv[2]; const roadmapId = process.argv[2];
@ -139,7 +138,11 @@ async function writeFileForGroup(group, topicUrlToPathMapping) {
async function run() { async function run() {
const topicUrlToPathMapping = getFilesInFolder(ROADMAP_CONTENT_DIR); const topicUrlToPathMapping = getFilesInFolder(ROADMAP_CONTENT_DIR);
const roadmapJson = require(path.join(ROADMAP_JSON_DIR, `${roadmapId}.json`)); const roadmapJson = require(path.join(
ALL_ROADMAPS_DIR,
`${roadmapId}/${roadmapId}`
));
const groups = roadmapJson?.mockup?.controls?.control?.filter( const groups = roadmapJson?.mockup?.controls?.control?.filter(
(control) => (control) =>
control.typeID === '__group__' && control.typeID === '__group__' &&

@ -84,8 +84,9 @@ function prepareDirTree(control, dirTree, dirSortOrders) {
const roadmap = require(path.join( const roadmap = require(path.join(
__dirname, __dirname,
`../public/jsons/roadmaps/${roadmapId}` `../src/data/roadmaps/${roadmapId}/${roadmapId}`
)); ));
const controls = roadmap.mockup.controls.control; const controls = roadmap.mockup.controls.control;
// Prepare the dir tree that we will be creating and also calculate the sort orders // Prepare the dir tree that we will be creating and also calculate the sort orders

@ -1,11 +0,0 @@
# Networking
Computer networking refers to interconnected computing devices that can exchange data and share resources with each other. These networked devices use a system of rules, called communications protocols, to transmit information over physical or wireless technologies.
Begin by studying the [OSI Model](https://en.wikipedia.org/wiki/OSI_model). This model will assist in constructing an understanding of the linked topics, and help you contextualize the items linked to the Networking, Security, and Protocols node. Higher level networking concepts may be implemented and named differently across cloud providers. Don't let this confuse you - the basics of TCP/IP are useful and used in the same ways across all implementations.
Visit the following resources to learn more:
- [What is Computer Networking?](https://aws.amazon.com/what-is/computer-networking/)
- [Full Networking Course](https://youtu.be/IPvYjXCsTg8)
- [OSI Model Explained](https://www.youtube.com/watch?v=dV8mjZd1OtU)

@ -1,9 +0,0 @@
# I/O Management
One of the important jobs of an Operating System is to manage various I/O devices including mouse, keyboards, touchpad, disk drives, display adapters, USB devices, Bit-mapped screens, LED, Analog-to-digital converter, On/off switch, network connections, audio I/O, printers, etc.
Visit the following resources to learn more:
- [Operating System - I/O Hardware](https://www.tutorialspoint.com/operating_system/os_io_hardware.htm)
- [IO Management](https://www.omscs-notes.com/operating-systems/io-management/)
- [Basics of OS (I/O Structure)](https://www.youtube.com/watch?v=F18RiREDkwE)

@ -1,9 +0,0 @@
# Virtualization
Virtualization is the creation of a virtual -- rather than actual -- version of something, such as an operating system (OS), a server, a storage device or network resources. It uses software that simulates hardware functionality to create a virtual system. This practice allows IT organizations to operate multiple operating systems, more than one virtual system and various applications on a single server.
Visit the following resources to learn more:
- [What is Virtualization? and its types?](https://www.techtarget.com/searchitoperations/definition/virtualization)
- [What is Hypervisor and VM?](https://opensource.com/resources/virtualization)
- [Containers vs VM](https://www.atlassian.com/microservices/cloud-computing/containers-vs-vms)

@ -1,10 +0,0 @@
# Memory Management
The term Memory can be defined as a collection of data in a specific format. It is used to store instructions and process data. The memory comprises a large array or group of words or bytes, each with its own location. The primary motive of a computer system is to execute programs. These programs, along with the information they access, should be in the main memory during execution. The CPU fetches instructions from memory according to the value of the program counter.
To achieve a degree of multiprogramming and proper utilization of memory, memory management is important. There are several memory management methods, reflecting various approaches, and the effectiveness of each algorithm depends on the situation.
Visit the following resources to learn more:
- [Demystifying memory management in modern programming languages](https://dev.to/deepu105/demystifying-memory-management-in-modern-programming-languages-ddd)
- [Memory Management in Operating System](https://www.geeksforgeeks.org/memory-management-in-operating-system/)

@ -1,7 +0,0 @@
# File System
A file is a named collection of related information recorded on secondary storage such as magnetic disks, magnetic tapes, and optical disks. Generally, a file is a sequence of bits, bytes, lines, or records whose meaning is defined by the file's creator and user.
Visit the following resources to learn more:
- [Operating System - File System](https://www.tutorialspoint.com/operating_system/os_file_system.htm)

@ -1,12 +0,0 @@
# Sockets
Socket is an endpoint of a two way **communication** link between **two different processes** on the network (same or different machines). The socket mechanism provides a means of inter-process communication (IPC) by establishing named contact points between client and server. It is the combination of IP Address and Port Number.
e.g. `http://192.168.0.1:8080`
Visit the following resources to learn more:
- [What are Sockets?](https://www.geeksforgeeks.org/socket-in-computer-network/)
- [Types of Sockets](https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm)
- [Port vs Socket](https://www.baeldung.com/cs/port-vs-socket)
- [Socket.io Library Bidirectional and low-latency communication for every platform](https://socket.io/)

@ -1,15 +0,0 @@
# POSIX Basics
POSIX (Portable Operating System Interface) is a family of standards for maintaining compatibility between operating systems. It describes utilities, APIs, and services that a compliant OS should provide to software, thus making it easier to port programs from one system to another.
A practical example: in a Unix-like operating system, there are three _standard streams_, `stdin`, `stdout` and `stderr` - they are I/O connections that you will probably come across when using a terminal, as they manage the flow from the **standard input** (stdin), **standard output** (stdout) and **standard error** (stderr).
So, in this case, when we want to interact with any of these streams (through a process, for example), the POSIX operating system API makes it easier - for example, in the `<unistd.h>` C header where the stdin, stderr, and stdout are defined as `STDIN_FILENO`, `STDERR_FILENO` and `STDOUT_FILENO`.
POSIX also adds a standard for exit codes, filesystem semantics, and several other command line utility API conventions.
Visit the following resources to learn more:
- [POSIX standard by IEEE](https://pubs.opengroup.org/onlinepubs/9699919799/)
- [Summary of some POSIX implementations](https://unix.stackexchange.com/a/220877)
- [A guide to POSIX](https://www.baeldung.com/linux/posix)

@ -1,15 +0,0 @@
# Processes
A process means program in execution. It generally takes an input, processes it and gives us the appropriate output. `ps` command can be used in linux to get the list of processes running in foreground. Each process will have a unique identifier called **PID**, which can be used to track it or `kill` it through shell.
**Types of processes:**
- Foreground processes
- Background processes
Visit the following resources to learn more:
- [Intro to Process Management](https://www.geeksforgeeks.org/introduction-of-process-management/)
- [Process Management in Linux](https://www.geeksforgeeks.org/process-management-in-linux/)
- [Process related commands in Linux](https://www.geeksforgeeks.org/processes-in-linuxunix/)
- [Process vs Thread](https://www.geeksforgeeks.org/difference-between-process-and-thread/)

@ -1,11 +0,0 @@
# Startup Management (init.d)
`init.d` is a daemon which is the **first process** (PID = 1) of the Linux system. Then other processes, services, daemons, and threads are started by init. One can write their own scripts in _'/etc/init.d'_ location to start services automatically on system boot. Services can be started and stopped manually by using `service` command.
It has following syntax: `$ service [service_name] [action]` e.g. `$ service ssh start`
Visit the following resources to learn more:
- [Linux Booting Process](https://www.freecodecamp.org/news/the-linux-booting-process-6-steps-described-in-detail/)
- [What is init.d?](https://www.geeksforgeeks.org/what-is-init-d-in-linux-service-management/)
- [What are Daemons in Linux?](https://itsfoss.com/linux-daemons/)

@ -1,11 +0,0 @@
# Service Management (systemd)
`systemd` is a **System** Management **D**aemon which replaces the sysvinit process to become the first process with PID = 1, which gets executed in user space during the Linux start-up process. It is a system that is designed specifically for the Linux kernel. It is now being used as a **replacement of init.d** to overcome shortcomings of it. It uses `systemctl` command to perform related operations.
e.g. `$ systemctl start [service-name]`, `$ systemctl poweroff`
Visit the following resources to learn more:
- [What is systemd? and its commands](https://www.geeksforgeeks.org/linux-systemd-and-its-components/)
- [init.d vs systemd](https://uace.github.io/learning/init-vs-systemd-what-is-an-init-daemon)
- [Why Systemd as a replacement of init.d?](https://www.tecmint.com/systemd-replaces-init-in-linux/)

@ -1,19 +0,0 @@
# Thread in OS
`Thread` is an active entity which executes a **part of a process**. It is a sequential flow of tasks within a process. It is also called lightweight process as they **share common resources**. A process can contain multiple threads. Threads are used to increase the performance of the applications.
Each thread has its own program counter, stack, and set of registers. But the threads of a single process might share the same code and data/file.
**Key Terminologies:**
- `proc`
- `fork`
- `join`
Visit the following resources to learn more:
- [Process Synchronization](https://www.geeksforgeeks.org/introduction-of-process-synchronization/)
- [What is Thread in OS?](https://www.geeksforgeeks.org/thread-in-operating-system/)
- [Process vs Thread & Multi-Threading](https://www.scaler.com/topics/operating-system/threads-in-operating-system/)
- [What Concurrency in OS?](https://www.geeksforgeeks.org/concurrency-in-operating-system/)
- [Threads vs Concurrency](https://medium.com/@azizomarck/how-is-concurrency-different-from-parallelism-334b6d5c869a)
- [How Concurrency is achieved in Threads](https://medium.com/@akhandmishra/operating-system-threads-and-concurrency-aec2036b90f8)

@ -1,9 +0,0 @@
# Operating System
An Operating System is a program that manages a computer’s resources, especially the allocation of those resources among other programs. Typical resources include the central processing unit (CPU), computer memory, file storage, input/output (I/O) devices, and network connections.
Visit the following resources to learn more:
- [What is an operating system?](https://edu.gcfglobal.org/en/computerbasics/understanding-operating-systems/1/)
- [Operating Systems: Crash Course Computer Science #18](https://www.youtube.com/watch?v=26QPDBe-NB8&ab_channel=CrashCourse)
- [Introduction to Operating System](https://www.youtube.com/watch?v=vBURTt97EkA&list=PL9hkZBQk8d1zEGbY7ShWCZ2n1gtxqkRrS&index=1)

@ -0,0 +1,37 @@
# Process Monitoring
A process is an instance of a computer program that is being executed. Each process is identified by a unique number called a process ID (PID). A process is a running program. The operating system tracks processes through the use of process identifiers. A process identifier (PID) is a unique number that identifies a specific process. A PID is automatically assigned to each process when it is created on the system.
There are several linux commands that can be used to monitor processes. The most common ones are:
- `ps` - report a snapshot of the current processes.
- `top` - display Linux processes.
- `htop` - interactive process viewer.
- `atop` - advanced interactive monitor to view the load on a Linux system.
- `lsof` - list open files.
The `ps` utility displays a header line, followed by lines containing information about all of your processes that have controlling terminals.
- [ps Documentation](https://man7.org/linux/man-pages/man1/ps.1.html)
- [ps Cheat Sheet](https://www.sysadmin.md/ps-cheatsheet.html)
- [Linux Crash Course - The ps Command](https://www.youtube.com/watch?v=wYwGNgsfN3I)
The `top` program periodically displays a sorted list of system processes. The default sorting key is pid, but other keys can be used instead. Various output options are available.
- [top Documentation](https://man7.org/linux/man-pages/man1/top.1.html)
- [top Cheat Sheet](https://gist.github.com/ericandrewlewis/4983670c508b2f6b181703df43438c37)
htop is a cross-platform ncurses-based process. It is similar to top, but allows you to scroll vertically and horizontally, and interact using a pointing device (mouse). You can observe all processes running on the system, along with their command line arguments, as well as view them in a tree format, select multiple processes and act on them all at once.
- [htop Documentation](https://www.man7.org/linux/man-pages/man1/htop.1.html)
- [htop Cheat Sheet](https://www.maketecheasier.com/power-user-guide-htop/)
The top program periodically displays a sorted list of system processes. The default sorting key is pid, but other keys can be used instead. Various output options are available.
- [top Documentation](https://man7.org/linux/man-pages/man1/top.1.html)
- [top Cheat Sheet](https://gist.github.com/ericandrewlewis/4983670c508b2f6b181703df43438c37)
Lsof lists on its standard output file information about files opened by processes.
- [lsof Cheat Sheet](https://neverendingsecurity.wordpress.com/2015/04/13/lsof-commands-cheatsheet/)
- [lsof Documentation](https://man7.org/linux/man-pages/man8/lsof.8.html)

@ -0,0 +1,32 @@
# Performance Monitoring
There are many tools available to monitor the performance of your application. Some of the most popular are:
- `nmon` - A system monitor tool for Linux and AIX systems.
- `iostat` - A tool that reports CPU statistics and input/output statistics for devices, partitions and network filesystems.
- `sar` - A system monitor command used to report on various system loads, including CPU activity, memory/paging, device load, network.
- `vmstat` - A tool that reports virtual memory statistics.
Nmon is a fully interactive performance monitoring command-line utility tool for Linux. It is a benchmark tool that displays performance about the cpu, memory, network, disks, file system, nfs, top processes, resources, and power micro-partition.
- [nmon Documentation](https://www.ibm.com/docs/en/aix/7.2?topic=n-nmon-command)
- [nmon Command Guide](https://www.geeksforgeeks.org/linux-nmon/)
The iostat command in Linux is used for monitoring system input/output statistics for devices and partitions. It monitors system input/output by observing the time the devices are active in relation to their average transfer rates. The iostat produce reports may be used to change the system configuration to raised balance the input/output between the physical disks.
- [iostat Documentation](https://man7.org/linux/man-pages/man1/iostat.1.html)
- [iostat Command Guide](https://www.geeksforgeeks.org/iostat-command-in-linux-with-examples/)
Short for **S**ystem **A**ctivity **R**eport, `sar` is a command line tool for Unix and Unix-like operating systems that shows a report of different information about the usage and activity of resources in the operating system.
- [SAR command in Linux to monitor system performance](https://www.geeksforgeeks.org/sar-command-linux-monitor-system-performance/)
- [SAR Man Page](https://man7.org/linux/man-pages/man1/sar.1.html)
- [SAR Man Page 2](https://linux.die.net/man/1/sar)
- [Sar tutorial for beginners](https://linuxhint.com/sar_linux_tutorial/)
Short for **V**irtual **m**emory **stat**istic reporter, `vmstat` is a command line tool for Unix and Unix-like operating systems that reports various information about the operating system such as memory, paging, processes, I/O, CPU and disk usage.
- [vmstat command in Linux with Examples](https://www.geeksforgeeks.org/vmstat-command-in-linux-with-examples/)
- [Linux commands: exploring virtual memory with vmstat](https://www.redhat.com/sysadmin/linux-commands-vmstat)
- [VMstat Man Page](https://man7.org/linux/man-pages/man8/vmstat.8.html)
- [vmstat tutorial](https://phoenixnap.com/kb/vmstat-command)

@ -0,0 +1,74 @@
# Networking Tools
Networking tools are used to troubleshoot network issues. They are also used to monitor network traffic and to test network connectivity. Some of the most common networking tools are:
- `traceroute` - Traces the route taken by packets over an IP network.
- `ping` - sends echo request packets to a host to test the Internet connection.
- `mtr` - Combines the functionality of `traceroute` and `ping` into a single diagnostic tool.
- `nmap` - Scans hosts for open ports.
- `netstat` - Displays network connections, routing tables, interface statistics, masquerade connections, and multicast memberships.
- `ufw` and `firewalld` - Firewall management tools.
- `iptables` and `nftables` - Firewall management tools.
- `tcpdump` - Dumps traffic on a network.
- `dig` - DNS lookup utility.
- `scp` - Secure copy.
`traceroute` command is a command in Linux that prints the route a network packet takes from its source (e.g. your computer) to the destination host (e.g., roadmap.sh). It is quite valuable in investigating slow network connections as it can help us spot the slow leg of the network packet journey through the internet.
- [How to Run Traceroute in Linux](https://linuxhint.com/run_traceroute_linux/)
- [Traceroute command in Linux with examples](https://www.geeksforgeeks.org/traceroute-command-in-linux-with-examples/)
`ping` (**P**acket **In**ternet **G**roper) command is used to check the network connectivity between host and server/host. This command takes as input the IP address or the URL and sends a data packet to the specified address with the message “PING” and get a response from the server/host this time is recorded which is called latency.
- [What is ping command?](https://linuxize.com/post/linux-ping-command/)
- [ping command with examples](https://www.geeksforgeeks.org/ping-command-in-linux-with-examples/)
`mtr` combines the functionality of the traceroute and ping programs in a single network diagnostic tool.
- [Javatpoint: Linux mtr Command](https://www.javatpoint.com/linux-mtr)
- [mtr Linux command](https://www.tutorialspoint.com/unix_commands/mtr.htm)
- [How to traceroute use mtr command in Linux](https://www.devopsroles.com/how-to-traceroute-use-mtr-command-in-linux/)
NMAP stands for Network Mapper and is an open-source tool used to explore and audit the network's security, such as checking firewalls and scanning ports.
- [NMAP Official Manual Book](https://nmap.org/book/man.html)
- [What is Nmap and How to Use it](https://www.freecodecamp.org/news/what-is-nmap-and-how-to-use-it-a-tutorial-for-the-greatest-scanning-tool-of-all-time/)
Netstat is a command line utility to display all the network connections on a system. It displays all the tcp, udp and unix socket connections. Apart from connected sockets it also displays listening sockets that are waiting for incoming connections.
- [netstat command in Linux with Examples](https://www.tutorialspoint.com/unix_commands/netstat.htm)
- [Netstat Tutorial](http://www.c-jump.com/CIS24/Slides/Networking/html_utils/netstat.html)
- [Netstat Commands - Network Administration Tutorial](https://www.youtube.com/watch?v=bxFwpm4IobU)
- [Linux Command Line Tutorial For Beginners - netstat command](https://www.youtube.com/watch?v=zGNcvBaN5wE)
UFW, or _uncomplicated firewall_, is command-line based utility for managing firewall rules in Arch Linux, Debian and Ubuntu. It's aim is to make firewall configuration as simple as possible. It is a frontend for the `iptables` firewalling tool.
- [ufw Documentation](https://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html)
- [Basic Introduction to UFW](https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/)
- [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands)
IPtables is a command-line firewall utility that uses policy chains to allow or block traffic that will be enforced by the linux kernel’s netfilter framework. Iptables packet filtering mechanism is organized into three different kinds of structures: tables, chains and targets.
- [Iptables tutorial](https://www.hostinger.in/tutorials/iptables-tutorial)
- [Beginners to Advanced Guide Iptables](https://erravindrapawadia.medium.com/iptables-tutorial-beginners-to-advanced-guide-to-linux-firewall-839e10501759)
`tcpdump` is a command line tool used for analysing network traffic passing through your system. It can be used to capture and filter packets and display them in a human-readable format. The captured information can be analysed at a later date as well.
- [tcpdump Documentation](https://www.tcpdump.org/manpages/tcpdump.1.html)
- [Basic Introduction to Tcpdump](https://opensource.com/article/18/10/introduction-tcpdump)
- [50 ways to isolate traffic with Tcpdump](https://danielmiessler.com/study/tcpdump/)
- [Interpreting Tcpdump output and data](https://www.youtube.com/watch?v=7bsQP9sKHrs)
`dig` command stands for **D**omain **I**nformation **G**roper. It is used for retrieving information about DNS name servers. It is mostly used by network administrators for verifying and troubleshooting DNS problems and to perform DNS lookups. It replaces older tools such as `nslookup` and the `host`.
- [What is dig command?](https://www.geeksforgeeks.org/dig-command-in-linux-with-examples/)
- [More on dig](https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux/)
- [What is host command?](https://www.geeksforgeeks.org/host-command-in-linux-with-examples/)
- [What is nslookup command?](https://www.geeksforgeeks.org/nslookup-command-in-linux-with-examples/)
- [What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/)
`SCP` is an acronym for Secure Copy Protocol.It is a command line utility that allows the user to securely copy files and directories between two locations usually between unix or linux systems.The protocol ensures the transmission of files is encrypted to prevent anyone with suspicious intentions from getting sensitive information.`SCP` uses encryption over an `SSH` (Secure Shell) connection, this ensures that the data being transferred is protected from suspicious attacks.
- [SCP Linux Command](https://www.freecodecamp.org/news/scp-linux-command-example-how-to-ssh-file-transfer-from-remote-to-local/)
- [10 SCP command examples](https://www.tecmint.com/scp-commands-examples/)
- [SCP command explained](https://phoenixnap.com/kb/linux-scp-command)

@ -0,0 +1,80 @@
# Text Manipulation
Some of the most common commands you will use in the terminal are text manipulation commands. These commands allow you to search, replace, and manipulate text in files and streams. Here are some of the most common commands you will use:
- `awk` - A programming language designed for text processing and typically used as a data extraction and reporting tool.
- `sed` - A stream editor for filtering and transforming text.
- `grep` - A command-line utility for searching plain-text data sets for lines that match a regular expression.
- `sort` - A command-line utility for sorting lines of text files.
- `cut` - A command-line utility for cutting sections from each line of files.
- `uniq` - A command-line utility for reporting or omitting repeated lines.
- `cat` - A command-line utility for concatenating files and printing on the standard output.
- `echo` - A command-line utility for displaying a line of text.
- `fmt` - A command-line utility for simple optimal text formatting.
- `tr` - A command-line utility for translating or deleting characters.
- `nl` - A command-line utility for numbering lines of files.
- `wc` - A command-line utility for printing newline, word, and byte counts for files.
`awk` is a general-purpose scripting language used for manipulating data or text and generating reports in the Linux world. It is mostly used for pattern scanning and processing. It searches one or more files to see if they contain lines that match the specified patterns and then performs the associated actions.
- [What is AWK? How to use it?](https://www.geeksforgeeks.org/awk-command-unixlinux-examples/)
- [How AWK works?](https://linuxize.com/post/awk-command/)
- [Linux Crash Course - awk](https://www.youtube.com/watch?v=oPEnvuj9QrI)
`sed`(**S**tream **Ed**itor) command in UNIX can perform lots of functions on file like searching, finding and replacing, insertion or deletion. By using SED you can edit files even without opening them in editors like [VI Editor](https://www.redhat.com/sysadmin/introduction-vi-editor).
- [What is SED? with examples](https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/)
- [Detailed Manual](https://www.gnu.org/software/sed/manual/sed.html)
- [Linux Crash Course - The sed Command](https://www.youtube.com/watch?v=nXLnx8ncZyE&t=218s)
The `grep` command (**g**lobal search for **r**egular **e**xpression and **p**rint out) searches file(s) for a particular pattern of characters, and displays all lines that contain that pattern. It can be used with other commands like `ps` making it more useful.
- [What is Grep? with examples](https://www.geeksforgeeks.org/grep-command-in-unixlinux/)
- [Detailed Manual](https://www.gnu.org/software/grep/manual/grep.html)
- [Linux Crash Course - The grep Command](https://www.youtube.com/watch?v=Tc_jntovCM0)
`sort` command is used to sort the contents of a file in a particular order. By default, it sorts a file assuming the contents are in ASCII. But it also can also be used to sort numerically by using appropriate options.
- [Sort command with examples](https://www.geeksforgeeks.org/sort-command-linuxunix-examples/)
- [Options](<https://en.wikipedia.org/wiki/Sort_(Unix)>)
- [Linux Tutorials|sort command GeeksforGeeks](https://www.youtube.com/watch?v=fEx5rnbDKO4)
The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output.
- [cut Documentation](https://man7.org/linux/man-pages/man1/cut.1.html)
- [cut Cheat Sheet](https://bencane.com/2012/10/22/cheat-sheet-cutting-text-with-cut/)
The uniq utility reads the specified input_file comparing adjacent lines, and writes a copy of each unique input line to the output_file.
- [uniq Documentation](https://man7.org/linux/man-pages/man1/uniq.1.html)
- [uniq Cheat Sheet](https://www.geeksforgeeks.org/uniq-command-in-linux-with-examples/)
`cat` (concatenate) command is very frequently used in Linux. It reads data from the file and gives its content as output. It helps us to create, view, and concatenate files.
- [Cat Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/)
- [Options](<https://en.wikipedia.org/wiki/Cat_(Unix)>)
- [Linux Tutorials|cat command|GeeksforGeeks](https://www.youtube.com/watch?v=exj5WMUJ11g)
`echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file.
- [Echo command with Examples](https://www.tecmint.com/echo-command-in-linux/)
- [Linux Crash Course - The echo Command](https://www.youtube.com/watch?v=S_ySzMHxMjw)
`fmt` command is for formatting and optimizing contents in text files. It will be really useful when it comes to beautify large text files by setting uniform column width and spaces.
- [Fmt command with Examples](https://www.devopsroles.com/fmt-command-in-linux-with-example/)
The tr utility copies the standard input to the standard output with substitution or deletion of selected characters.
- [tr Documentation](https://linuxcommand.org/lc3_man_pages/tr1.html)
- [tr Cheat Sheet](https://linuxopsys.com/topics/tr-command-in-linux)
The nl utility reads lines from the named file or the standard input if the file argument is omitted, applies a configurable line numbering filter operation and writes the result to the standard output.
- [nl Documentation](https://man7.org/linux/man-pages/man1/nl.1.html)
- [nl Cheat Sheet](https://www.geeksforgeeks.org/nl-command-in-linux-with-examples/)
The wc utility displays the number of lines, words, and bytes contained in each input file, or standard input (if no file is specified) to the standard output.
- [wc Documentation](https://linux.die.net/man/1/wc)
- [wc Cheat Sheet](https://onecompiler.com/cheatsheets/wc)

@ -1,10 +0,0 @@
# Screen
Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and, in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows.
See `man screen` or `screen -h` for further information
Visit the following resources to learn more:
- [Screen Cheat Sheet](https://kapeli.com/cheat_sheets/screen.docset/Contents/Resources/Documents/index)
- [Screen Users Manual](https://www.gnu.org/software/screen/manual/screen.html)

@ -1,8 +0,0 @@
# Terminal multiplexers
Terminal multiplexers are programs that allow us to [multiplex](https://en.wikipedia.org/wiki/Multiplexing) a terminal into several sub-processes or terminals inside a single terminal session, this means that we can have multiple open sessions using a single login session to a local or remote machine.
Visit the following resources to learn more:
- [Terminal Multiplexer](https://en.wikipedia.org/wiki/Terminal_multiplexer)
- [Terminal Multiplexers](https://linuxcommand.org/lc3_adv_termmux.php)

@ -1,12 +0,0 @@
# Tmux
Tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. Tmux may be detached from a screen and continue running in the background, then later reattached.
When tmux is started it creates a new session with a single window and displays it on screen. A status line at the bottom of the screen shows information on the current session and is used to enter interactive commands.
See `man tmux` further information
Visit the following resources to learn more:
- [Tmux Documentation](https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html)
- [Tmux Cheat Sheet](https://tmuxcheatsheet.com/)

@ -1,11 +0,0 @@
# ps - process status
The ps utility displays a header line, followed by lines containing information about all of your processes that have controlling terminals.
See `man ps` further information
Visit the following resources to learn more:
- [ps Documentation](https://man7.org/linux/man-pages/man1/ps.1.html)
- [ps Cheat Sheet](https://www.sysadmin.md/ps-cheatsheet.html)
- [Linux Crash Course - The ps Command](https://www.youtube.com/watch?v=wYwGNgsfN3I)

@ -1,10 +0,0 @@
# top
The top program periodically displays a sorted list of system processes. The default sorting key is pid, but other keys can be used instead. Various output options are available.
See `man top` further information.
Visit the following resources to learn more:
- [top Documentation](https://man7.org/linux/man-pages/man1/top.1.html)
- [top Cheat Sheet](https://gist.github.com/ericandrewlewis/4983670c508b2f6b181703df43438c37)

@ -1,8 +0,0 @@
# htop
htop is a cross-platform ncurses-based process. It is similar to top, but allows you to scroll vertically and horizontally, and interact using a pointing device (mouse). You can observe all processes running on the system, along with their command line arguments, as well as view them in a tree format, select multiple processes and act on them all at once.
Visit the following resources to learn more:
- [htop Documentation](https://www.man7.org/linux/man-pages/man1/htop.1.html)
- [htop Cheat Sheet](https://www.maketecheasier.com/power-user-guide-htop/)

@ -1,8 +0,0 @@
# atop
The program atop is an interactive monitor to view the load on a Linux system. It shows the occupation of the most critical hardware resources (from a performance point of view) on system level, i.e. cpu, memory, disk and network.
Visit the following resources to learn more:
- [atop Documentation](https://linux.die.net/man/1/atop)
- [atop Command Guide](https://www.digitalocean.com/community/tutorials/atop-command-in-linux)

@ -1,19 +0,0 @@
# Bash scripting
Bash is a command-line interface shell program used extensively in Linux and macOS. The name Bash is an acronym for "Bourne Again Shell," developed in 1989 as a successor to the Bourne Shell.
"What's a shell?" you ask? A shell is a computer program that allows you to directly control a computer's operating system (OS) with a graphical user interface (GUI) or command-line interface (CLI).
You actually use GUI shells all the time. For example, Windows 10 is based on the Windows shell that allows you to control your OS with a desktop, taskbar, and menus.
With a CLI shell like Bash, you type commands into the program to directly control your computer's OS. Opening up the terminal on your Mac or command line in Linux will look similar to consoles and integrated development environments (IDEs) for other programming languages such as R, Ruby, or Python. You can type commands directly in the command line or run Bash scripts to perform longer and more complex tasks.
Visit the following resources to learn more:
- [The Shell Scripting Tutorial](https://www.shellscript.sh/)
- [Writing Shell Scripts](https://linuxcommand.org/lc3_writing_shell_scripts.php)
- [Shell Scripting for Beginners](https://www.freecodecamp.org/news/shell-scripting-crash-course-how-to-write-bash-scripts-in-linux/)
- [A guide to Bash](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html)
- [The Bash Hackers Wiki](https://wiki.bash-hackers.org/)
- [Bash Shell Scripting Guide](https://rudrakshi.hashnode.dev/bash-shell-scripting-guide)
- [Codecademy - Learn Bash Scripting](https://www.codecademy.com/learn/bash-scripting)

@ -1,10 +0,0 @@
# lsof
Lsof lists on its standard output file information about files opened by processes.
See `man lsof` or `lsof --help` for further information.
Visit the following resources to learn more:
- [lsof Cheat Sheet](https://neverendingsecurity.wordpress.com/2015/04/13/lsof-commands-cheatsheet/)
- [lsof Documentation](https://man7.org/linux/man-pages/man8/lsof.8.html)

@ -1,21 +0,0 @@
# Compiling Apps
# gcc
The GNU Compiler Collection (GCC) is a compiler system produced by the GNU Project supporting various programming languages also known as GCC. GCC is a key component of the GNU tool chain and the standard compiler for most Unix-like operating systems. Compiler Collection is a set of compilers and development tools available for Linux and an array of other operating systems. It includes support primarily for C and C++. It provides all of the infrastructure for building software in those languages from source code to assembly.
"What is GCC used for?" GCC is a toolchain that compiles code, links it with any library dependencies, converts that code to assembly, and then prepares executable files.It is responsible for the conversion of the “high level” source code in the respective language and ensuring that it is semantically valid, performing well formed optimizations, and converting it to assembly code (which is then handed off to the assembler).
Visit the following resources to learn more:
- [Intro to GCC](https://courses.cs.washington.edu/courses/cse451/99wi/Section/gccintro.html)
- [GCC Linux](https://www.javatpoint.com/gcc-linux)
- [GCC Commands](https://www.geeksforgeeks.org/gcc-command-in-linux-with-examples/)
- [Makefile Tutorial](https://makefiletutorial.com)
- [Documentation for make](https://www.gnu.org/software/make/manual/)
- [Using Make and writing Makefiles](https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html)
- [Sbt Documentation](https://www.scala-sbt.org/1.x/docs/)
- [Sbt By Example](https://www.scala-sbt.org/1.x/docs/sbt-by-example.html)
- [Gradle Tutorial](https://www.tutorialspoint.com/gradle/index.htm)
- [Gradle for absolute beginners](https://tomgregory.com/gradle-tutorial-for-complete-beginners/)
- [Gradle Guides](https://gradle.org/guides/)

@ -1,8 +0,0 @@
# Nmon
Nmon is a fully interactive performance monitoring command-line utility tool for Linux. It is a benchmark tool that displays performance about the cpu, memory, network, disks, file system, nfs, top processes, resources, and power micro-partition.
Visit the following resources to learn more:
- [nmon Documentation](https://www.ibm.com/docs/en/aix/7.2?topic=n-nmon-command)
- [nmon Command Guide](https://www.geeksforgeeks.org/linux-nmon/)

@ -1,8 +0,0 @@
# Iostat
The iostat command in Linux is used for monitoring system input/output statistics for devices and partitions. It monitors system input/output by observing the time the devices are active in relation to their average transfer rates. The iostat produce reports may be used to change the system configuration to raised balance the input/output between the physical disks.
Visit the following resources to learn more:
- [iostat Documentation](https://man7.org/linux/man-pages/man1/iostat.1.html)
- [iostat Command Guide](https://www.geeksforgeeks.org/iostat-command-in-linux-with-examples/)

@ -1,10 +0,0 @@
# Sar
Short for **S**ystem **A**ctivity **R**eport, it is a command line tool for Unix and Unix-like operating systems that shows a report of different information about the usage and activity of resources in the operating system.
Visit the following resources to learn more:
- [SAR command in Linux to monitor system performance](https://www.geeksforgeeks.org/sar-command-linux-monitor-system-performance/)
- [SAR Man Page](https://man7.org/linux/man-pages/man1/sar.1.html)
- [SAR Man Page 2](https://linux.die.net/man/1/sar)
- [Sar tutorial for beginners](https://linuxhint.com/sar_linux_tutorial/)

@ -1,10 +0,0 @@
# Vmstat
Short for **V**irtual **m**emory **stat**istic reporter, it is a command line tool for Unix and Unix-like operating systems that reports various information about the operating system such as memory, paging, processes, I/O, CPU and disk usage.
Visit the following resources to learn more:
- [vmstat command in Linux with Examples](https://www.geeksforgeeks.org/vmstat-command-in-linux-with-examples/)
- [Linux commands: exploring virtual memory with vmstat](https://www.redhat.com/sysadmin/linux-commands-vmstat)
- [VMstat Man Page](https://man7.org/linux/man-pages/man8/vmstat.8.html)
- [vmstat tutorial](https://phoenixnap.com/kb/vmstat-command)

@ -1,10 +0,0 @@
# Traceroute
`traceroute` command is a command in Linux that prints the route a network packet takes from its source (e.g. your computer) to the destination host (e.g., roadmap.sh). It is quite valuable in investigating slow network connections as it can help us spot the slow leg of the network packet journey through the internet.
It has the following syntax: `$ traceroute [OPTIONS] DESTINATION` e.g. `$ traceroute roadmap.sh`
Visit the following resources to learn more:
- [How to Run Traceroute in Linux](https://linuxhint.com/run_traceroute_linux/)
- [Traceroute command in Linux with examples](https://www.geeksforgeeks.org/traceroute-command-in-linux-with-examples/)

@ -1,11 +0,0 @@
# mtr
`mtr` combines the functionality of the traceroute and ping programs in a single network diagnostic tool.
As `mtr` starts, it investigates the network connection between the host `mtr` runs on and `HOSTNAME` by sending packets with purposely low TTLs. It continues sending packets with low TTL, noting the response time of the intervening routers. This allows `mtr` to print the internet route's response percentage and response times to HOSTNAME. A sudden packet loss or response time increase often indicates a bad (or simply overloaded) link.
Visit the following resources to learn more:
- [Javatpoint: Linux mtr Command](https://www.javatpoint.com/linux-mtr)
- [mtr Linux command](https://www.tutorialspoint.com/unix_commands/mtr.htm)
- [How to traceroute use mtr command in Linux](https://www.devopsroles.com/how-to-traceroute-use-mtr-command-in-linux/)

@ -1,10 +0,0 @@
# ping
`ping` (**P**acket **In**ternet **G**roper) command is used to check the network connectivity between host and server/host. This command takes as input the IP address or the URL and sends a data packet to the specified address with the message “PING” and get a response from the server/host this time is recorded which is called latency.
It has the following syntax: `$ ping [OPTIONS] DESTINATION` e.g. `$ ping roadmap.sh`
Visit the following resources to learn more:
- [What is ping command?](https://linuxize.com/post/linux-ping-command/)
- [ping command with examples](https://www.geeksforgeeks.org/ping-command-in-linux-with-examples/)

@ -1,8 +0,0 @@
# NMAP
NMAP stands for Network Mapper and is an open-source tool used to explore and audit the network's security, such as checking firewalls and scanning ports.
Visit the following resources to learn more:
- [NMAP Official Manual Book](https://nmap.org/book/man.html)
- [What is Nmap and How to Use it](https://www.freecodecamp.org/news/what-is-nmap-and-how-to-use-it-a-tutorial-for-the-greatest-scanning-tool-of-all-time/)

@ -1,10 +0,0 @@
# netstat
Netstat is a command line utility to display all the network connections on a system. It displays all the tcp, udp and unix socket connections. Apart from connected sockets it also displays listening sockets that are waiting for incoming connections.
Visit the following resources to learn more:
- [netstat command in Linux with Examples](https://www.tutorialspoint.com/unix_commands/netstat.htm)
- [Netstat Tutorial](http://www.c-jump.com/CIS24/Slides/Networking/html_utils/netstat.html)
- [Netstat Commands - Network Administration Tutorial](https://www.youtube.com/watch?v=bxFwpm4IobU)
- [Linux Command Line Tutorial For Beginners - netstat command](https://www.youtube.com/watch?v=zGNcvBaN5wE)

@ -1,10 +0,0 @@
# Tcpdump
`tcpdump` is a command line tool used for analysing network traffic passing through your system. It can be used to capture and filter packets and display them in a human-readable format. The captured information can be analysed at a later date as well.
Visit the following resources to learn more:
- [tcpdump Documentation](https://www.tcpdump.org/manpages/tcpdump.1.html)
- [Basic Introduction to Tcpdump](https://opensource.com/article/18/10/introduction-tcpdump)
- [50 ways to isolate traffic with Tcpdump](https://danielmiessler.com/study/tcpdump/)
- [Interpreting Tcpdump output and data](https://www.youtube.com/watch?v=7bsQP9sKHrs)

@ -1,8 +0,0 @@
# Iptables
IPtables is a command-line firewall utility that uses policy chains to allow or block traffic that will be enforced by the linux kernel’s netfilter framework. Iptables packet filtering mechanism is organized into three different kinds of structures: tables, chains and targets.
Visit the following resources to learn more:
- [Iptables tutorial](https://www.hostinger.in/tutorials/iptables-tutorial)
- [Beginners to Advanced Guide Iptables](https://erravindrapawadia.medium.com/iptables-tutorial-beginners-to-advanced-guide-to-linux-firewall-839e10501759)

@ -1,13 +0,0 @@
# dig
`dig` command stands for **D**omain **I**nformation **G**roper. It is used for retrieving information about DNS name servers. It is mostly used by network administrators for verifying and troubleshooting DNS problems and to perform DNS lookups. It replaces older tools such as `nslookup` and the `host`.
It has the following syntax: `$ dig [server] [name] [type]` e.g. `$ dig roadmap.sh`
Visit the following resources to learn more:
- [What is dig command?](https://www.geeksforgeeks.org/dig-command-in-linux-with-examples/)
- [More on dig](https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux/)
- [What is host command?](https://www.geeksforgeeks.org/host-command-in-linux-with-examples/)
- [What is nslookup command?](https://www.geeksforgeeks.org/nslookup-command-in-linux-with-examples/)
- [What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/)

@ -1,13 +0,0 @@
# awk
`awk` is a general-purpose scripting language used for manipulating data or text and generating reports in the Linux world. It is mostly used for pattern scanning and processing. It searches one or more files to see if they contain lines that match the specified patterns and then performs the associated actions.
It has the below syntax:
`awk options 'selection_criteria {action}' input-file > output-file` e.g. `$ awk '{print}' file.txt`
Visit the following resources to learn more:
- [What is AWK? How to use it?](https://www.geeksforgeeks.org/awk-command-unixlinux-examples/)
- [How AWK works?](https://linuxize.com/post/awk-command/)
- [Linux Crash Course - awk](https://www.youtube.com/watch?v=oPEnvuj9QrI)

@ -1,13 +0,0 @@
# sed
`sed`(**S**tream **Ed**itor) command in UNIX can perform lots of functions on file like searching, finding and replacing, insertion or deletion. By using SED you can edit files even without opening them in editors like [VI Editor](https://www.redhat.com/sysadmin/introduction-vi-editor).
It has the following syntax:
`$ sed [options].. [script] [input-file]` e.g. `$ sed 's/search-regex/replacement-txt/g' file.txt`
Visit the following resources to learn more:
- [What is SED? with examples](https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/)
- [Detailed Manual](https://www.gnu.org/software/sed/manual/sed.html)
- [Linux Crash Course - The sed Command](https://www.youtube.com/watch?v=nXLnx8ncZyE&t=218s)

@ -1,13 +0,0 @@
# grep
The `grep` command (**g**lobal search for **r**egular **e**xpression and **p**rint out) searches file(s) for a particular pattern of characters, and displays all lines that contain that pattern. It can be used with other commands like `ps` making it more useful.
It has the following syntax:
`$ grep [options] pattern [files]` e.g. `$ grep "search-regex" file-1.txt`
Visit the following resources to learn more:
- [What is Grep? with examples](https://www.geeksforgeeks.org/grep-command-in-unixlinux/)
- [Detailed Manual](https://www.gnu.org/software/grep/manual/grep.html)
- [Linux Crash Course - The grep Command](https://www.youtube.com/watch?v=Tc_jntovCM0)

@ -1,13 +0,0 @@
# sort
`sort` command is used to sort the contents of a file in a particular order. By default, it sorts a file assuming the contents are in ASCII. But it also can also be used to sort numerically by using appropriate options.
It has the following syntax
`$ sort [options].. input-file` e.g. `$ sort file.txt`
Visit the following resources to learn more:
- [Sort command with examples](https://www.geeksforgeeks.org/sort-command-linuxunix-examples/)
- [Options](<https://en.wikipedia.org/wiki/Sort_(Unix)>)
- [Linux Tutorials|sort command GeeksforGeeks](https://www.youtube.com/watch?v=fEx5rnbDKO4)

@ -1,10 +0,0 @@
# cut
The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output.
See `man cut` for further information.
Visit the following resources to learn more:
- [cut Documentation](https://man7.org/linux/man-pages/man1/cut.1.html)
- [cut Cheat Sheet](https://bencane.com/2012/10/22/cheat-sheet-cutting-text-with-cut/)

@ -1,10 +0,0 @@
# uniq
The uniq utility reads the specified input_file comparing adjacent lines, and writes a copy of each unique input line to the output_file.
See `man uniq` for further information.
Visit the following resources to learn more:
- [uniq Documentation](https://man7.org/linux/man-pages/man1/uniq.1.html)
- [uniq Cheat Sheet](https://www.geeksforgeeks.org/uniq-command-in-linux-with-examples/)

@ -1,17 +0,0 @@
# cat
`cat` (concatenate) command is very frequently used in Linux. It reads data from the file and gives its content as output. It helps us to create, view, and concatenate files.
It has the following syntax:
- View : `$ cat [option] [input-file]`
- Create : `$ cat [content] > [new-file]`
- Append : `$ cat [append_content] >> [existing-file]`
e.g. `$ cat file.txt`
Visit the following resources to learn more:
- [Cat Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/)
- [Options](<https://en.wikipedia.org/wiki/Cat_(Unix)>)
- [Linux Tutorials|cat command|GeeksforGeeks](https://www.youtube.com/watch?v=exj5WMUJ11g)

@ -1,10 +0,0 @@
# echo
`echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file.
It has the following syntax: `$ echo [options] [string]` e.g. `$ echo "Hello World!"`
Visit the following resources to learn more:
- [Echo command with Examples](https://www.tecmint.com/echo-command-in-linux/)
- [Linux Crash Course - The echo Command](https://www.youtube.com/watch?v=S_ySzMHxMjw)

@ -1,9 +0,0 @@
# fmt
`fmt` command is for formatting and optimizing contents in text files. It will be really useful when it comes to beautify large text files by setting uniform column width and spaces.
It has the following syntax: `$ fmt [-width] [option] [file]` e.g. `$ fmt file.txt`
Visit the following resources to learn more:
- [Fmt command with Examples](https://www.devopsroles.com/fmt-command-in-linux-with-example/)

@ -1,10 +0,0 @@
# tr
The tr utility copies the standard input to the standard output with substitution or deletion of selected characters.
See `man tr` for further information.
Visit the following resources to learn more:
- [tr Documentation](https://linuxcommand.org/lc3_man_pages/tr1.html)
- [tr Cheat Sheet](https://linuxopsys.com/topics/tr-command-in-linux)

@ -1,10 +0,0 @@
# nl
The nl utility reads lines from the named file or the standard input if the file argument is omitted, applies a configurable line numbering filter operation and writes the result to the standard output.
See `man nl` for further information.
Visit the following resources to learn more:
- [nl Documentation](https://man7.org/linux/man-pages/man1/nl.1.html)
- [nl Cheat Sheet](https://www.geeksforgeeks.org/nl-command-in-linux-with-examples/)

@ -1,10 +0,0 @@
# wc
The wc utility displays the number of lines, words, and bytes contained in each input file, or standard input (if no file is specified) to the standard output.
See `man wc` for further information.
Visit the following resources to learn more:
- [wc Documentation](https://linux.die.net/man/1/wc)
- [wc Cheat Sheet](https://onecompiler.com/cheatsheets/wc)

@ -1,8 +0,0 @@
# strace
`strac` is a useful diagnsotic, debugging tool for unix based operating systems. It traces the system calls and signals a process uses during its lifetime. And usually returns the name of the each system calls , its arguments and what it returned.
Visit the following resources to learn more:
- [Strace Official Website](https://strace.io/)
- [Strace — Linux manual page](https://man7.org/linux/man-pages/man1/strace.1.html)

@ -1,8 +0,0 @@
# DTrace
DTrace is a comprehensive dynamic tracing framework ported from Solaris. DTrace provides a powerful infrastructure that permits administrators, developers, and service personnel to concisely answer arbitrary questions about the behavior of the operating system and user programs.
Visit the following resources to learn more:
- [df manual](https://man7.org/linux/man-pages/man1/dtrace.1.html)
- [Wikipedia - DTrace](https://en.wikipedia.org/wiki/DTrace)

@ -1,9 +0,0 @@
# Uname
Uname is a short form of Unix name and it helps to print the system information for both hardware and software in the current running system.
Visit the following resources to learn more:
- [Uname Command Tutorial](https://www.tutorialspoint.com/unix_commands/uname.htm)
- [Uname Tutorial For Beginners](https://www.howtoforge.com/linux-uname-command/)
- [Uname Command In Linux](https://linuxize.com/post/uname-command-in-linux/)

@ -1,9 +0,0 @@
# df
`df` is a standard Unix command used to display the amount of available disk space for file systems on which the invoking user has appropriate read access. df is typically implemented using the statfs or statvfs system calls.
Visit the following resources to learn more:
- [df manual](https://man7.org/linux/man-pages/man1/df.1.html)
- [Redhat - Check your disk space use with the Linux df command](https://www.redhat.com/sysadmin/Linux-df-command)
- [df command with examples](https://www.geeksforgeeks.org/df-command-linux-examples/)

@ -1,9 +0,0 @@
# history
`history` command is used to view the **previously executed command**. Every command executed is treated as the event and is associated with an event number using which they can be recalled and changed if required. These commands are saved in a history file.
It has the below syntax: `$ history`
Visit the following resources to learn more:
- [What is history command? How to recall previous commands?](https://www.geeksforgeeks.org/history-command-in-linux-with-examples/)

@ -1,9 +0,0 @@
# Du
The `du` utility, short for disk usage, displays the file system block usage for each file argument and for each directory in the file hierarchy rooted in each directory argument. If no file is specified, the block usage of the hierarchy rooted in the current directory is displayed.
Visit the following resources to learn more:
- [du manual](https://man7.org/linux/man-pages/man1/du.1.html)
- [Redhat - du and the options you should be using](https://www.redhat.com/sysadmin/du-command-options)
- [Du command with examples](https://linuxhint.com/linux-du-command-examples/)

@ -1,9 +0,0 @@
# SCP
`SCP` is an acronym for Secure Copy Protocol.It is a command line utility that allows the user to securely copy files and directories between two locations usually between unix or linux systems.The protocol ensures the transmission of files is encrypted to prevent anyone with suspicious intentions from getting sensitive information.`SCP` uses encryption over an `SSH` (Secure Shell) connection, this ensures that the data being transferred is protected from suspicious attacks.
Visit the following resources to learn more:
- [SCP Linux Command](https://www.freecodecamp.org/news/scp-linux-command-example-how-to-ssh-file-transfer-from-remote-to-local/)
- [10 SCP command examples](https://www.tecmint.com/scp-commands-examples/)
- [SCP command explained](https://phoenixnap.com/kb/linux-scp-command)

@ -1,9 +0,0 @@
# UFW
UFW, or _uncomplicated firewall_, is command-line based utility for managing firewall rules in Arch Linux, Debian and Ubuntu. It's aim is to make firewall configuration as simple as possible. It is a frontend for the `iptables` firewalling tool.
Visit the following resources to learn more:
- [ufw Documentation](https://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html)
- [Basic Introduction to UFW](https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/)
- [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands)

@ -1,7 +0,0 @@
# Managing Servers
Server management includes all of the monitoring and maintenance required for servers to operate reliably and at optimal performance levels. Server management also involves the management of hardware, software, security, and backups all in service of keeping the IT environment operational and efficient. The primary goals of an effective server management strategy are to:
- Minimize server slowdowns and downtime while maximizing reliability.
- Build secure server environments.
- Scale servers and related operations to meet the needs of the organization over time.

@ -1,8 +0,0 @@
# Port Forwarding
Port forwarding, sometimes called **port mapping**, allows computers or services in private networks to connect over the internet with other public or private computers or services. Since firewalls exist to keep unwanted visitors out, the visitors you want to get in are going to need a way to do so. Knowing the IP address isn’t enough, Requests need to be directed to the correct port as well.
Visit the following resources to learn more:
- [What is Port Forwarding?](https://learn.g2.com/port-forwarding)
- [Types of Port Forwarding](https://cybernews.com/what-is-vpn/port-forwarding/)

@ -0,0 +1,9 @@
# Git
[Git](https://git-scm.com/) is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Visit the following resources to learn more:
- [Git & GitHub Crash Course For Beginners](https://www.youtube.com/watch?v=SWYqp7iY_Tc)
- [Learn Git with Tutorials, News and Tips - Atlassian](https://www.atlassian.com/git)
- [Git Cheat Sheet](https://cs.fyi/guide/git-cheatsheet)

@ -0,0 +1,8 @@
# Version Control Systems
Version control/source control systems allow developers to track and control changes to code over time. These services often include the ability to make atomic revisions to code, branch/fork off of specific points, and to compare versions of code. They are useful in determining the who, what, when, and why code changes were made.
Visit the following resources to learn more:
- [Git](https://git-scm.com/)
- [What is Version Control?](https://www.atlassian.com/git/tutorials/what-is-version-control)

@ -0,0 +1,13 @@
# GitHub
GitHub is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
Visit the following resources to learn more:
- [GitHub Website](https://github.com)
- [GitHub Documentation](https://docs.github.com/en/get-started/quickstart)
- [How to Use Git in a Professional Dev Team](https://ooloo.io/project/github-flow)
- [What is GitHub?](https://www.youtube.com/watch?v=w3jLJU7DT5E)
- [Git vs. GitHub: Whats the difference?](https://www.youtube.com/watch?v=wpISo9TNjfU)
- [Git and GitHub for Beginners](https://www.youtube.com/watch?v=RGOj5yH7evk)
- [Git and GitHub - CS50 Beyond 2019](https://www.youtube.com/watch?v=eulnSXkhE7I)

@ -0,0 +1,8 @@
# GitLab
GitLab is a provider of internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
Visit the following resources to learn more:
- [GitLab Website](https://gitlab.com/)
- [GitLab Documentation](https://docs.gitlab.com/)

@ -0,0 +1,14 @@
# Bitbucket
Bitbucket is a Git based hosting and source code repository service that is Atlassian's alternative to other products like GitHub, GitLab etc
Bitbucket offers hosting options via Bitbucket Cloud (Atlassian's servers), Bitbucket Server (customer's on-premise) or Bitbucket Data Centre (number of servers in customers on-premise or cloud environment)
Visit the following resources to learn more:
- [Bitbucket Website](https://bitbucket.org/product)
- [A brief overview of Bitbucket](https://bitbucket.org/product/guides/getting-started/overview#a-brief-overview-of-bitbucket)
- [Getting started with Bitbucket](https://bitbucket.org/product/guides/basics/bitbucket-interface)
- [Using Git with Bitbucket Cloud](https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud)
- [Bitbucket tutorial | How to use Bitbucket Cloud](https://www.youtube.com/watch?v=M44nEyd_5To)
- [Bitbucket Tutorial | Bitbucket for Beginners](https://www.youtube.com/watch?v=i5T-DB8tb4A)

@ -0,0 +1,10 @@
# Repo Hosting Services
When working on a team, you often need a remote place to put your code so others can access it, create their own branches, and create or review pull requests. These services often include issue tracking, code review, and continuous integration features. A few popular choices are GitHub, GitLab, BitBucket, and AWS CodeCommit.
Visit the following resources to learn more:
- [GitHub](https://github.com/features/)
- [GitLab](https://about.gitlab.com/)
- [BitBucket](https://bitbucket.org/product/guides/getting-started/overview)
- [How to choose the best source code repository](https://bitbucket.org/product/code-repository)

@ -1,11 +0,0 @@
# Docker
Docker is a software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime. Using Docker, you can quickly deploy and scale applications into any environment and know your code will run.
Visit the following resources to learn more:
- [Docker Website](https://www.docker.com/)
- [Docker Documentation](https://docs.docker.com/)
- [Learn Docker | Boot.dev](https://boot.dev/learn/learn-docker)
- [Docker Tutorial for Beginners](https://www.youtube.com/watch?v=pTFZFxd4hOI)
- [Docker Full Course for Beginners](https://www.youtube.com/watch?v=3c-iBn73dDE)

@ -1,10 +0,0 @@
# Salt
Salt is an open-source event-driven IT automation, remote task execution, and configuration management software service. Built on python, Salt uses simple and human-readable YAML combined with event-driven automation to deploy and configure complex IT systems.
Visit the following resources to learn more:
- [Salt Project Website](https://docs.saltproject.io/en/latest/topics/about_salt_project.html)
- [Official Documentation](https://docs.saltproject.io/en/latest/)
- [Introduction to Salt](https://docs.saltproject.io/en/latest/topics/index.html)
- [Salt Installation](https://docs.saltproject.io/en/latest/topics/installation/index.html#installation)

@ -1,15 +0,0 @@
# Kubernetes
Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources. (similar to the Autopilot and Aquaman systems of Microsoft Azure)
The popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues.
Visit the following resources to learn more:
- [Kubernetes Website](https://kubernetes.io/)
- [Kubernetes Documentation](https://kubernetes.io/docs/home/)
- [Kubernetes Crash Course for Absolute Beginners](https://www.youtube.com/watch?v=s_o8dwzRlu4)
- [Primer: How Kubernetes Came to Be, What It Is, and Why You Should Care](https://thenewstack.io/primer-how-kubernetes-came-to-be-what-it-is-and-why-you-should-care/)
- [Kubernetes: An Overview](https://thenewstack.io/kubernetes-an-overview/)
- [Kubernetes Tutorials by Kubernetes](https://kubernetes.io/docs/tutorials/)
- [Fast Kubernetes course with practical labs](https://github.com/omerbsezer/fast-kubernetes)

@ -1,9 +0,0 @@
# Nomad
[Nomad](https://github.com/hashicorp/nomad) is a simple and flexible scheduler and orchestrator to deploy and manage containers and non-containerized applications across on-prem and clouds at scale. Nomad runs as a single binary with a small resource footprint and supports a wide range of workloads beyond containers, including Windows, Java, VM, Docker, and more.
Visit the following resources to learn more:
- [Nomad Website](https://www.nomadproject.io/)
- [Nomad Documentation](https://www.nomadproject.io/docs)
- [Nomad Tutorials](https://learn.hashicorp.com/nomad)

@ -1,12 +0,0 @@
# Infrastructure as Code
Sometimes referred to as IaC, this section refers to the techniques and tools used to define infrastructure, typically in a markup language like YAML or JSON. Infrastructure as code allows DevOps Engineers to use the same workflows used by software developers to version, roll back, and otherwise manage changes.
The term Infrastructure as Code encompasses everything from bootstrapping to configuration to orchestration, and it is considered a best practice in the industry to manage all infrastructure as code. This technique precipitated the explosion in system complexity seen in modern DevOps organizations.
Visit the following resources to learn more:
- [What is Infrastructure as Code?](https://www.youtube.com/watch?v=zWw2wuiKd5o)
- [What is Infrastructure as Code? Difference of Infrastructure as Code Tools](https://www.youtube.com/watch?v=POPP2WTJ8es)
- [GUIs, CLI, APIs: Learn Basic Terms of Infrastructure-as-Code](https://thenewstack.io/guis-cli-apis-learn-basic-terms-of-infrastructure-as-code/)
- [Understanding Infrastructure as Code (IaC) in less than 10 minutes](https://www.novatec-gmbh.de/en/blog/understanding-infrastructure-as-code-iac-in-less-than-10-minutes/)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save