diff --git a/src/data/roadmaps/linux/content/disks-filesystems/adding-disks.md b/src/data/roadmaps/linux/content/adding-disks@4xBaZPk0eSsWG1vK3e2yW.md similarity index 60% rename from src/data/roadmaps/linux/content/disks-filesystems/adding-disks.md rename to src/data/roadmaps/linux/content/adding-disks@4xBaZPk0eSsWG1vK3e2yW.md index 5dbab646b..a0196559c 100644 --- a/src/data/roadmaps/linux/content/disks-filesystems/adding-disks.md +++ b/src/data/roadmaps/linux/content/adding-disks@4xBaZPk0eSsWG1vK3e2yW.md @@ -1,8 +1,6 @@ # Adding Disks -In Linux, hard disks and portable drives are managed and controlled through a series of directories and files, commonly referred to as the Linux Filesystem. When you add new disks in Linux, you need to prepare them before they can be used. - -The process involves creating partitions on the disk, creating filesystem on the partitions, and then mounting the filesystems to directories in your system’s directory tree. This becomes important especially when working with multiple disk drives or large data storage units in order to create a seamless user experience. +Adding disks in Linux involves partitioning, creating filesystems, and mounting. Use `lsblk` to list devices, `fdisk /dev/sdX` to create partitions, `mkfs.ext4 /dev/sdX1` to create filesystems, and `mount /dev/sdX1 /mount/point` to mount. This process prepares new storage devices for seamless integration into the Linux filesystem hierarchy. The following are common commands to manage disks: diff --git a/src/data/roadmaps/linux/content/archiving-and-compressing@iD073xTmpzvQFfXwcwXcY.md b/src/data/roadmaps/linux/content/archiving-and-compressing@iD073xTmpzvQFfXwcwXcY.md new file mode 100644 index 000000000..b6f60dbfd --- /dev/null +++ b/src/data/roadmaps/linux/content/archiving-and-compressing@iD073xTmpzvQFfXwcwXcY.md @@ -0,0 +1,7 @@ +# Archiving and Compressing + +Linux archiving combines multiple files into single archives using `tar`, while compression reduces file sizes with `gzip` and `bzip2`. Use `tar cvf` to create archives, `tar xvf` to extract, and `tar cvzf` for gzip-compressed archives. These separate processes are often combined for efficient backup and distribution, with `tar.gz` and `tar.bz2` being common formats. + +Learn more from the following resources: + +- [@article@Linux File Packaging and Compression](https://labex.io/tutorials/linux-file-packaging-and-compression-385413) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/working-with-files/archiving.md b/src/data/roadmaps/linux/content/archiving@iD073xTmpzvQFfXwcwXcY.md similarity index 100% rename from src/data/roadmaps/linux/content/working-with-files/archiving.md rename to src/data/roadmaps/linux/content/archiving@iD073xTmpzvQFfXwcwXcY.md diff --git a/src/data/roadmaps/linux/content/auth-logs@WwybfdKuP9ogCGpT7d3NU.md b/src/data/roadmaps/linux/content/auth-logs@WwybfdKuP9ogCGpT7d3NU.md new file mode 100644 index 000000000..3e7fd5b26 --- /dev/null +++ b/src/data/roadmaps/linux/content/auth-logs@WwybfdKuP9ogCGpT7d3NU.md @@ -0,0 +1,3 @@ +# Authentication Logs + +Authentication logs record system login events, password changes, and sudo commands, located in `/var/log/auth.log` (Debian) or `/var/log/secure` (Red Hat/CentOS). Essential for monitoring server security, detecting brute force attacks and unauthorized access attempts. Use `tail /var/log/auth.log` to view recent entries. Regular analysis ensures server security and data integrity. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/authentication-logs@WwybfdKuP9ogCGpT7d3NU.md b/src/data/roadmaps/linux/content/authentication-logs@WwybfdKuP9ogCGpT7d3NU.md new file mode 100644 index 000000000..eb5ef074e --- /dev/null +++ b/src/data/roadmaps/linux/content/authentication-logs@WwybfdKuP9ogCGpT7d3NU.md @@ -0,0 +1,11 @@ +# Authentication Logs + +Authentication logs in Linux record all auth-related events like logins, password changes, and sudo commands. Located at `/var/log/auth.log` (Debian) or `/var/log/secure` (RHEL/CentOS), these logs help detect brute force attacks and unauthorized access attempts. Use `tail /var/log/auth.log` to view recent entries. Regular log analysis is essential for server security monitoring. + +Here is an example of how you can use the `tail` command to view the last few entries of the authentication log: + +```bash +tail /var/log/auth.log +``` + +Get yourself familiar with reading and understanding auth logs, as it's one essential way to keep your server secure. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/server-review/available-mem.md b/src/data/roadmaps/linux/content/available-mem@tx0nh6cbBjVxwNlyrBNYm.md similarity index 54% rename from src/data/roadmaps/linux/content/server-review/available-mem.md rename to src/data/roadmaps/linux/content/available-mem@tx0nh6cbBjVxwNlyrBNYm.md index e21f83f5d..c5af59809 100644 --- a/src/data/roadmaps/linux/content/server-review/available-mem.md +++ b/src/data/roadmaps/linux/content/available-mem@tx0nh6cbBjVxwNlyrBNYm.md @@ -1,6 +1,6 @@ -# Evaluating Available Memory +# Available Memory -When running several applications in a Linux environment, constant tracking of system health is crucial for smooth operations. Evaluating available memory as part of a server review is a common practice for system administrators. This involves using various command-line tools provided by Linux, such as `free`, `vmstat`, and `top`. These can assist in monitoring memory usage and performance metrics, ensuring systems are not overloaded, and adequate resources are available for important applications. +Evaluating available memory is crucial for Linux system health monitoring. Use command-line tools like `free`, `vmstat`, and `top` to track memory usage and performance metrics. The `free -h` command shows total, used, free, shared, buffer/cache, and available memory in human-readable format. Essential for maintaining optimal server performance and troubleshooting resource issues. The `free` command, for instance, gives a summary of the overall memory usage including total used and free memory, swap memory and buffer/cache memory. Here's an example: diff --git a/src/data/roadmaps/linux/content/available-memory--disk@tx0nh6cbBjVxwNlyrBNYm.md b/src/data/roadmaps/linux/content/available-memory--disk@tx0nh6cbBjVxwNlyrBNYm.md new file mode 100644 index 000000000..a141dd49a --- /dev/null +++ b/src/data/roadmaps/linux/content/available-memory--disk@tx0nh6cbBjVxwNlyrBNYm.md @@ -0,0 +1,14 @@ +# Available Memory and Disk + +Linux provides tools like `free`, `vmstat`, and `top` to monitor system memory usage and performance. The `free -h` command shows total, used, free, shared, buffer/cache, and available memory in human-readable format. Regular memory monitoring helps maintain optimal server performance, prevent overload, and troubleshoot resource issues effectively. + +The `free` command, for instance, gives a summary of the overall memory usage including total used and free memory, swap memory and buffer/cache memory. Here's an example: + +```bash +$ free -h + total used free shared buff/cache available +Mem: 15Gi 10Gi 256Mi 690Mi 5.3Gi 4.2Gi +Swap: 8.0Gi 1.3Gi 6.7Gi +``` + +In this output, the '-h' option is used to present the results in a human-readable format. Understanding the state of memory usage in your Linux server can help maintain optimal server performance and troubleshoot any potential issues. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/awk@QTmECqpRVMjNgQU70uCF8.md b/src/data/roadmaps/linux/content/awk@QTmECqpRVMjNgQU70uCF8.md new file mode 100644 index 000000000..390df1b02 --- /dev/null +++ b/src/data/roadmaps/linux/content/awk@QTmECqpRVMjNgQU70uCF8.md @@ -0,0 +1,11 @@ +# AWK + +AWK is a powerful text-processing language for Unix-like systems, named after its creators Aho, Weinberger, and Kernighan. It reads files line by line, identifies patterns, and executes actions on matches. Commonly used in bash scripts for sorting, filtering, and report generation. Example: `awk '{print $1,$2}' filename` prints first two fields of each line. + +Visit the following resources to learn more: + +- [@article@IBM.com: Awk by Example](https://developer.ibm.com/tutorials/l-awk1/) +- [@article@Linux Handbook: Awk](https://linuxhandbook.com/awk-command-tutorial/) +- [@video@YouTube](https://www.youtube.com/watch?v=9YOZmI-zWok) +- [@feed@Explore top posts about Bash](https://app.daily.dev/tags/bash?ref=roadmapsh) +- [@article@Linux awk Command: Text Processing](https://labex.io/tutorials/linux-linux-awk-command-text-processing-388493) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/background--foreground-processes@mUKoiGUTpIaUgQNF3BND_.md b/src/data/roadmaps/linux/content/background--foreground-processes@mUKoiGUTpIaUgQNF3BND_.md new file mode 100644 index 000000000..0f6ee67f6 --- /dev/null +++ b/src/data/roadmaps/linux/content/background--foreground-processes@mUKoiGUTpIaUgQNF3BND_.md @@ -0,0 +1,24 @@ +# Background and Foreground Processes + +Linux processes run in foreground (fg) taking direct user input or background (bg) running independently. Start background processes with `command &` or use `Ctrl+Z` then `bg` to pause and resume in background. Use `fg` to bring background processes to foreground. These job control commands enable managing multiple tasks from a single terminal efficiently. + +Here's how you can send a running process to background: + +```bash +command & +``` + +Or if a process is already running: + +```bash +CTRL + Z # This will pause the process +bg # This resumes the paused process in the background +``` + +And to bring it back to the foreground: + +```bash +fg +``` + +These commands, `bg` and `fg` are part of job control in Unix-like operating systems, which lets you manage multiple tasks simultaneously from a single terminal. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/backup-tools.md b/src/data/roadmaps/linux/content/backup-tools.md deleted file mode 100644 index 1a2758c18..000000000 --- a/src/data/roadmaps/linux/content/backup-tools.md +++ /dev/null @@ -1,13 +0,0 @@ -# Linux Backup Tools - -In the world of Linux, there are a wide array of utilities and tools available for creating and managing backups of your important data. Backups are crucial to ensure the preservation and safety of data in the event of hardware failure, accidental deletion, or data corruption. Therefore, understanding how to leverage Linux backup tools is an essential skill for any system administrator or user. - -Some of the popular and powerful backup tools in Linux include `rsync`, `tar`, `dump`, `restore`, and various GUI based tools such as `Deja Dup` and `Back In Time`. These tools provide various features such as incremental backups, automation, scheduling, and encryption support. - -For instance, a basic usage of `rsync` can be shown below: - -```bash -rsync -avz /source/directory/ /destination/directory -``` - -This command would create a backup by synchronizing the source directory with the destination directory. The options are as follows: `-a` (archive mode), `-v` (verbose), and `-z` (compress data). \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/navigation-basics/basic-commands.md b/src/data/roadmaps/linux/content/basic-commands@qLeEEwBvlGt1fP5Qcreah.md similarity index 93% rename from src/data/roadmaps/linux/content/navigation-basics/basic-commands.md rename to src/data/roadmaps/linux/content/basic-commands@qLeEEwBvlGt1fP5Qcreah.md index 30c6c9851..380a1a5af 100644 --- a/src/data/roadmaps/linux/content/navigation-basics/basic-commands.md +++ b/src/data/roadmaps/linux/content/basic-commands@qLeEEwBvlGt1fP5Qcreah.md @@ -20,4 +20,4 @@ In this brief introduction, we will discuss and explore these basic commands and Learn more from the following resources: -- [@article@Linux pwd Command: Directory Displaying](https://labex.io/tutorials/linux-file-and-directory-operations-17997) \ No newline at end of file +- [@article@Linux pwd Command: Directory Displaying](https://labex.io/tutorials/linux-file-and-directory-operations-17997) diff --git a/src/data/roadmaps/linux/content/bg-fg-processes@mUKoiGUTpIaUgQNF3BND_.md b/src/data/roadmaps/linux/content/bg-fg-processes@mUKoiGUTpIaUgQNF3BND_.md new file mode 100644 index 000000000..e4fa46c68 --- /dev/null +++ b/src/data/roadmaps/linux/content/bg-fg-processes@mUKoiGUTpIaUgQNF3BND_.md @@ -0,0 +1,3 @@ +# Background and Foreground Processes + +Linux processes run in foreground (taking direct user input) or background (running independently). Send processes to background with `&` or `bg` command. Bring to foreground with `fg`. Use Ctrl+Z to pause, then `bg` to resume in background. Part of job control for managing multiple tasks simultaneously from single terminal. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/boot-loaders@o5lSQFW-V_PqndGqo1mp3.md b/src/data/roadmaps/linux/content/boot-loaders@o5lSQFW-V_PqndGqo1mp3.md new file mode 100644 index 000000000..c5b034e4a --- /dev/null +++ b/src/data/roadmaps/linux/content/boot-loaders@o5lSQFW-V_PqndGqo1mp3.md @@ -0,0 +1,16 @@ +# Boot Loaders + +Boot loaders load the OS kernel into memory when systems start. Common Linux boot loaders include GRUB (modern, feature-rich with graphical interface) and LILO (older, broader hardware support). Boot loaders initialize hardware, load drivers, start schedulers, and execute init processes. Use `sudo update-grub` to update GRUB configuration. Enable multi-OS booting on single machines. + +```bash +# This command updates the GRUB bootloader +sudo update-grub +``` + +Irrespective of the type of Boot Loader used, understanding and configuring them properly is essential for maintaining an efficient, stable and secure operating system. Boot loaders also allow users to switch between different operating systems on the same machine, if required. + +Visit the following resources to learn more: +- [@article@comprehensive documentation of Bootloader - archlinux wiki](https://wiki.archlinux.org/title/Arch_boot_process#Boot_loader) +- [@article@What Is GRUB Bootloader in Linux?](https://phoenixnap.com/kb/what-is-grub) +- [@official@The GNU GRUB website](https://www.gnu.org/software/grub/) + diff --git a/src/data/roadmaps/linux/content/booting-linux/boot-loaders.md b/src/data/roadmaps/linux/content/booting-linux/boot-loaders.md deleted file mode 100644 index 543dd8625..000000000 --- a/src/data/roadmaps/linux/content/booting-linux/boot-loaders.md +++ /dev/null @@ -1,18 +0,0 @@ -# Boot Loaders - -Boot Loaders play an integral role in booting up any Linux-based system. When the system is switched on, it's the Boot Loader that takes charge and loads the kernel of the OS into the system’s memory. The kernel then initializes the hardware components and loads necessary drivers, after which it starts the scheduler and executes the init process. - -Typically, the two most commonly used boot loaders in Linux are LILO (Linux Loader) and GRUB (GRand Unified Bootloader). GRUB sets the standard for modern day Linux booting, providing rich features like a graphical interface, scripting, and debugging capabilities. LILO, on the other hand, is older and does not have as many features, but runs on a broader range of hardware platforms. - -```bash -# This command updates the GRUB bootloader -sudo update-grub -``` - -Irrespective of the type of Boot Loader used, understanding and configuring them properly is essential for maintaining an efficient, stable and secure operating system. Boot loaders also allow users to switch between different operating systems on the same machine, if required. - -Visit the following resources to learn more: -- [@article@comprehensive documentation of Bootloader - archlinux wiki](https://wiki.archlinux.org/title/Arch_boot_process#Boot_loader) -- [@article@What Is GRUB Bootloader in Linux?](https://phoenixnap.com/kb/what-is-grub) -- [@official@The GNU GRUB website](https://www.gnu.org/software/grub/) - diff --git a/src/data/roadmaps/linux/content/booting-linux/index.md b/src/data/roadmaps/linux/content/booting-linux/index.md deleted file mode 100644 index bb4f6b671..000000000 --- a/src/data/roadmaps/linux/content/booting-linux/index.md +++ /dev/null @@ -1,18 +0,0 @@ -# Booting Linux - -Booting Linux refers to the process that the Linux operating system undergoes when a computer system is powered on. When you switch on your device, the system bootloader is loaded into the main memory from a fixed location to start the main operating system. - -The whole process involves several stages including POST (Power-On Self Test), MBR (Master Boot Record), GRUB (GRand Unified Bootloader), Kernel, Init process, and finally the GUI or command line interface where users interact. - -During this process, vital system checks are executed, hardware is detected, appropriate drivers are loaded, filesystems are mounted, necessary system processes are started, and finally, the user is presented with a login prompt. - -Here is an example of the GRUB configuration file `/etc/default/grub` which is used to configure the GRUB bootloader options: - -```bash -GRUB_DEFAULT=0 -GRUB_TIMEOUT=5 -GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` -GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" -GRUB_CMDLINE_LINUX="" -``` -This is a basic introduction to booting Linux. However, the specifics may vary depending on the Linux distribution and the specific configurations of your system. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/booting-linux@DQEa8LrJ9TVW4ULBE4aHJ.md b/src/data/roadmaps/linux/content/booting-linux@DQEa8LrJ9TVW4ULBE4aHJ.md new file mode 100644 index 000000000..22d7fa012 --- /dev/null +++ b/src/data/roadmaps/linux/content/booting-linux@DQEa8LrJ9TVW4ULBE4aHJ.md @@ -0,0 +1,14 @@ +# Booting Linux + +Linux booting involves several stages: POST, MBR, GRUB, Kernel, Init, and GUI/CLI. The bootloader loads the kernel into memory, which detects hardware, loads drivers, mounts filesystems, starts system processes, and presents login prompts. GRUB configuration is managed through `/etc/default/grub` with settings like timeout and default boot options. + +Here is an example of the GRUB configuration file `/etc/default/grub` which is used to configure the GRUB bootloader options: + +```bash +GRUB_DEFAULT=0 +GRUB_TIMEOUT=5 +GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` +GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" +GRUB_CMDLINE_LINUX="" +``` +This is a basic introduction to booting Linux. However, the specifics may vary depending on the Linux distribution and the specific configurations of your system. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/cgroups@23lsrUw8ux6ZP9JlDNNu2.md b/src/data/roadmaps/linux/content/cgroups@23lsrUw8ux6ZP9JlDNNu2.md new file mode 100644 index 000000000..a366e91b3 --- /dev/null +++ b/src/data/roadmaps/linux/content/cgroups@23lsrUw8ux6ZP9JlDNNu2.md @@ -0,0 +1,18 @@ +# Cgroups + +Cgroups (control groups) are a Linux kernel feature that organizes processes into hierarchical groups and limits their resource usage (CPU, memory, disk I/O). Essential for containerization, cgroups prevent containers from monopolizing host resources, ensuring system stability and performance. Use `cgcreate` to create groups, assign processes, and set resource limits effectively. + +Here's an example of how you might create a new cgroup for a container: + +```bash +# Create a new cgroup for a container; +sudo cgcreate -g cpu:/my_new_container + +# Assign the current shell's process to the new cgroup; +echo $$ | sudo tee /sys/fs/cgroup/cpu/my_new_container/tasks + +# Limit the CPU usage of the cgroup to 20%; +echo 200000 | sudo tee /sys/fs/cgroup/cpu/my_new_container/cpu.cfs_quota_us +``` + +In this snippet, we are using `cgcreate` to create a new cgroup, then adding the current process to it, and finally setting a CPU limit. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/service-management/check-logs.md b/src/data/roadmaps/linux/content/check-logs@DuEfJNrm4Jfmp8-8Pggrf.md similarity index 74% rename from src/data/roadmaps/linux/content/service-management/check-logs.md rename to src/data/roadmaps/linux/content/check-logs@DuEfJNrm4Jfmp8-8Pggrf.md index 9aec76c6e..9bc5b4c37 100644 --- a/src/data/roadmaps/linux/content/service-management/check-logs.md +++ b/src/data/roadmaps/linux/content/check-logs@DuEfJNrm4Jfmp8-8Pggrf.md @@ -1,5 +1,7 @@ # Checking Logs +Linux system logs provide chronological records of events for debugging and troubleshooting, stored in `/var/log` directory. Use `dmesg` for kernel messages and `journalctl` for systemd logs. `journalctl -u service_name` shows logs for specific services. Essential skill for system administration, monitoring, and effective troubleshooting in Linux environments. + Checking Logs Under Service Management in Linux plays a vital role in systems administration and troubleshooting procedures. Logs are fundamental for an in-depth understanding of what's going on inside a Linux system. These records provide a chronological record of events related to your system for use in debugging and troubleshooting problems. Several essential logs generated by system processes, users and administrator actions can be found in `/var/log` directory. Logs can be accessed and viewed using several commands. For example, the `dmesg` command can be used to display the kernel ring buffer. Most system logs are managed by `systemd` and can be checked using the command `journalctl`. @@ -10,7 +12,7 @@ journalctl This command will show the entire system log from the boot to the moment you're calling the journal. -To display logs for a specific service, the `-u` option can be used followed by the service’s name. +To display logs for a specific service, the `-u` option can be used followed by the service's name. ```shell journalctl -u service_name diff --git a/src/data/roadmaps/linux/content/service-management/start-stop-service.md b/src/data/roadmaps/linux/content/checking-service-logs@FStz-bftQBK0M6zz2Bxl4.md similarity index 50% rename from src/data/roadmaps/linux/content/service-management/start-stop-service.md rename to src/data/roadmaps/linux/content/checking-service-logs@FStz-bftQBK0M6zz2Bxl4.md index 0c5dae0aa..ea942746f 100644 --- a/src/data/roadmaps/linux/content/service-management/start-stop-service.md +++ b/src/data/roadmaps/linux/content/checking-service-logs@FStz-bftQBK0M6zz2Bxl4.md @@ -1,8 +1,6 @@ -# Start Stop Service +# Starting and Stopping Services -In Linux, Service Management refers to controlling and managing system services, such as firewall, network, database, and other essential services. This play a critical role in the system's functionality and stability. - -One of the fundamental parts of service management in Linux is starting and stopping service. System administrators often need to start, stop, or restart services after an update or configuration changes. In Linux, this can be done using the `systemctl` command. +Linux service management involves controlling system services like databases, web servers, and network services. Use `systemctl start service_name` to start services, `systemctl stop service_name` to stop them, and `systemctl restart service_name` to restart. These commands require root permissions via sudo and are essential for system administration and configuration management. Here is a simple example: diff --git a/src/data/roadmaps/linux/content/checking-service-status@xk5Xgi797HlVjdZJRfwX1.md b/src/data/roadmaps/linux/content/checking-service-status@xk5Xgi797HlVjdZJRfwX1.md new file mode 100644 index 000000000..6fdd11ef4 --- /dev/null +++ b/src/data/roadmaps/linux/content/checking-service-status@xk5Xgi797HlVjdZJRfwX1.md @@ -0,0 +1,3 @@ +# Checking Service Status + +Checking service status in Linux helps monitor system health and troubleshoot issues. Use `systemctl status service_name` to view detailed service information including active state, process ID, and recent log entries. Commands like `systemctl is-active` and `systemctl is-enabled` provide quick status checks. Service status monitoring is crucial for maintaining system reliability and performance. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/shell-basics/command-help.md b/src/data/roadmaps/linux/content/command-help@KaMSsQnJzNqGHg0Oia4uy.md similarity index 100% rename from src/data/roadmaps/linux/content/shell-basics/command-help.md rename to src/data/roadmaps/linux/content/command-help@KaMSsQnJzNqGHg0Oia4uy.md diff --git a/src/data/roadmaps/linux/content/shell-basics/command-path.md b/src/data/roadmaps/linux/content/command-path@moGMHNR58wFlzhS7je1wc.md similarity index 100% rename from src/data/roadmaps/linux/content/shell-basics/command-path.md rename to src/data/roadmaps/linux/content/command-path@moGMHNR58wFlzhS7je1wc.md diff --git a/src/data/roadmaps/linux/content/conditionals@rQxfp7UWqN72iqewZhOdc.md b/src/data/roadmaps/linux/content/conditionals@rQxfp7UWqN72iqewZhOdc.md new file mode 100644 index 000000000..0d135d72c --- /dev/null +++ b/src/data/roadmaps/linux/content/conditionals@rQxfp7UWqN72iqewZhOdc.md @@ -0,0 +1,23 @@ +# Conditionals + +Shell conditionals allow scripts to make decisions based on conditions using `if`, `elif`, and `else` statements. These control process flow by evaluating string variables, arithmetic tests, or process status. Conditions are checked sequentially - if true, the corresponding code block executes; otherwise, it moves to the next condition until finding a match or reaching `else`. + +Here's a simple illustration of how they work: + +```bash +#!/bin/sh +a=10 +b=20 + +if [ $a -lt 20 ] +then + echo "a is less than b" +elif [ $a -gt 20 ] +then + echo "a is greater than b" +else + echo "a is equal to b" +fi +``` + +In the above script, the condition inside the `if` statement is being checked. If the condition is `true`, then the code block inside the `if` statement gets executed, otherwise, it moves to the `elif` condition and so on. If none of those conditions is satisfied, then the code block inside the `else` statement will be executed. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/container-runtime@bVCwRoFsYb3HD8X4xuKOo.md b/src/data/roadmaps/linux/content/container-runtime@bVCwRoFsYb3HD8X4xuKOo.md new file mode 100644 index 000000000..8994597f2 --- /dev/null +++ b/src/data/roadmaps/linux/content/container-runtime@bVCwRoFsYb3HD8X4xuKOo.md @@ -0,0 +1,3 @@ +# Container Runtime + +Container runtime is software responsible for running containers in Linux, providing image transport, storage, execution, and network interactions. Popular options include Docker (comprehensive ecosystem), Containerd (lightweight standalone), and CRI-O (Kubernetes-optimized). Each runtime offers specific features and benefits for different use cases in containerized application deployment and management. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/containerization/cgroups.md b/src/data/roadmaps/linux/content/containerization/cgroups.md deleted file mode 100644 index f2daf8023..000000000 --- a/src/data/roadmaps/linux/content/containerization/cgroups.md +++ /dev/null @@ -1,20 +0,0 @@ -# Cgroups - -Cgroups, short for control groups, is a Linux kernel feature which allows processes to be organized into hierarchical groups. Its crucial role in containerization, is its ability to limit, account and isolate the resource usage (CPU, memory, disk I/O, etc.) of these process groups. - -In the context of containerization, where lightweight isolated environments are running on the same host machine, cgroups become paramount for efficient resource management. By using cgroups, one can ensure that each container doesn't monopolize host resources, leading to improved overall system stability and performance. - -Here's an example of how you might create a new cgroup for a container: - -```bash -# Create a new cgroup for a container; -sudo cgcreate -g cpu:/my_new_container - -# Assign the current shell's process to the new cgroup; -echo $$ | sudo tee /sys/fs/cgroup/cpu/my_new_container/tasks - -# Limit the CPU usage of the cgroup to 20%; -echo 200000 | sudo tee /sys/fs/cgroup/cpu/my_new_container/cpu.cfs_quota_us -``` - -In this snippet, we are using `cgcreate` to create a new cgroup, then adding the current process to it, and finally setting a CPU limit. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/containerization/container-runtime.md b/src/data/roadmaps/linux/content/containerization/container-runtime.md deleted file mode 100644 index f0ad1fa7c..000000000 --- a/src/data/roadmaps/linux/content/containerization/container-runtime.md +++ /dev/null @@ -1,11 +0,0 @@ -# Container Runtime - -Container runtime in Linux refers to the software that is responsible for running containers. Each container runtime provides specific features and benefits, with common capabilities including image transport and storage, container execution and supervision, low-level network and volume interactions, and more. - -Under Linux, popular container runtime options include: - -- Docker: Docker is probably the most common container runtime, featuring an excellent ecosystem and superb community support. -- Containerd: Originally developed as a high-level container runtime layer to be used in Docker, Containerd is now often used as a standalone runtime. -- CRI-O: A lightweight container runtime specifically optimized for Kubernetes. - -In containerization, understanding the role of container runtime is integral as it helps in better designing and running your containerized applications. This further ensures reliability and efficient use of resources. Each container runtime can be suited for different use cases so it's best to understand their pros and cons to use them effectively. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/containerization/docker.md b/src/data/roadmaps/linux/content/containerization/docker.md deleted file mode 100644 index 9c0ce348e..000000000 --- a/src/data/roadmaps/linux/content/containerization/docker.md +++ /dev/null @@ -1,17 +0,0 @@ -# Docker Under Containerization - -Docker is a widely-used open-source platform that utilizes OS-level virtualization, typically referred to as "containerization", to develop, ship, and run applications effectively. Docker and containerization, especially within the Linux ecosystem, have revolutionized software development workflows by providing lightweight and isolated operational environments, known as containers, for applications and their dependencies. Docker allows development teams to package an application with all the parts it needs, such as libraries and other dependencies, and deploy it as a single package. - -In Linux, each Docker container interacts directly with the Linux kernel. Due to the clever use of Linux Kernel features like namespaces and cgroups, these containers provide isolated spaces to run processes while sharing the same OS, leading to less overhead than traditional virtual machines. - -Here's a basic example of running an application (for example, hello-world) with Docker on Linux: - -```bash -# Pull the Docker image from Docker Hub -sudo docker pull hello-world - -# Run the Docker container -sudo docker run hello-world -``` - -The above commands allow you to download a Docker image and run it on your Linux system, providing the foundation for deploying containers in development, testing, and production environments. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/containerization/index.md b/src/data/roadmaps/linux/content/containerization/index.md deleted file mode 100644 index f4a4525e7..000000000 --- a/src/data/roadmaps/linux/content/containerization/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# Containerization - -Containerization is a virtualization method that involves encapsulating an application in a container with its own isolated operating environment. This advanced method allows apps to run reliably and quickly when moved from one computing environment to another. In Linux, this technology can be utilized using various open-source platforms like Docker and Kubernetes. - -Containers are often compared with virtual machines (VMs). However, unlike VMs which need an entire operating system to run an application, a container shares the host system’s user space. That’s why they are lightweight and faster. - -In Linux, Docker is a popular tool used for containerization. Below is a basic example of how you would run a container in Docker: - -```bash -docker run -it ubuntu bash -``` - -This command pulls the Ubuntu image from Docker Hub and runs it as a container on your system, providing you with an interactive terminal (`-it`) inside the container. This is just a simple use case, and Docker can be used for managing complex applications involving many containers. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/containerization/ulimits.md b/src/data/roadmaps/linux/content/containerization/ulimits.md deleted file mode 100644 index 0b0ebb29b..000000000 --- a/src/data/roadmaps/linux/content/containerization/ulimits.md +++ /dev/null @@ -1,17 +0,0 @@ -# Understanding Ulimits - -Linux-based containerization technology such as Docker utilizes 'ulimits' as one of the security features to control the resource consumption for each running container. Ulimits (user limits) are a feature of the Linux kernel that restricts the resources that any single user can consume. These resources include open file handles, locked-in physical memory, and others. - -Used effectively, ulimits can prevent a rogue or errant process in a particular container from exhausting the server's resources and creating a denial-of-service situation for other containers or processes. - -In a containerized environment, it is crucial to skillfully manage these resource limits to ensure optimal performance and security of all containers. - -```bash -# To see current ulimits: -ulimit -a - -# To set a specific ulimit (soft limit), for example file handles: -ulimit -n 1024 -``` - -Properly configuring and understanding ulimits – especially in containerized environments – is an essential part of system administration in Linux. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/containerization@3OpGaQhyNtk1n1MLp-tlb.md b/src/data/roadmaps/linux/content/containerization@3OpGaQhyNtk1n1MLp-tlb.md new file mode 100644 index 000000000..df6d6dc18 --- /dev/null +++ b/src/data/roadmaps/linux/content/containerization@3OpGaQhyNtk1n1MLp-tlb.md @@ -0,0 +1,3 @@ +# Containerization + +Containerization is a virtualization method that encapsulates applications in containers with isolated operating environments, enabling reliable deployment across computing environments. Unlike VMs requiring full operating systems, containers share the host system's user space, making them lightweight and faster. Docker is a popular Linux containerization tool for managing complex applications. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/copying-and-renaming@abKO6KuuIfl9ruVxBw6t_.md b/src/data/roadmaps/linux/content/copying-and-renaming@abKO6KuuIfl9ruVxBw6t_.md new file mode 100644 index 000000000..7a8d656e4 --- /dev/null +++ b/src/data/roadmaps/linux/content/copying-and-renaming@abKO6KuuIfl9ruVxBw6t_.md @@ -0,0 +1,8 @@ +# Copying and Renaming Files + +Essential Linux file operations use `cp` to copy files and `mv` to move/rename them. The `cp` command copies files from source to destination, while `mv` moves or renames files/directories. Both commands use the syntax `command source destination`. These case-sensitive commands are fundamental for daily file management tasks in Linux systems. + +Learn more from the following resources: + +- [@article@Linux cp Command: File Copying](https://labex.io/tutorials/linux-linux-cp-command-file-copying-209744) +- [@article@Linux mv Command: File Moving and Renaming](https://labex.io/tutorials/linux-linux-mv-command-file-moving-and-renaming-209743) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/working-with-files/copying-renaming.md b/src/data/roadmaps/linux/content/copying-renaming@abKO6KuuIfl9ruVxBw6t_.md similarity index 100% rename from src/data/roadmaps/linux/content/working-with-files/copying-renaming.md rename to src/data/roadmaps/linux/content/copying-renaming@abKO6KuuIfl9ruVxBw6t_.md diff --git a/src/data/roadmaps/linux/content/create--delete--update@R9TZfkgVUQNLnMpDhovJa.md b/src/data/roadmaps/linux/content/create--delete--update@R9TZfkgVUQNLnMpDhovJa.md new file mode 100644 index 000000000..0e29f6c15 --- /dev/null +++ b/src/data/roadmaps/linux/content/create--delete--update@R9TZfkgVUQNLnMpDhovJa.md @@ -0,0 +1,8 @@ +# Creating, Updating, and Deleting Users + +Linux user management involves creating, updating, and deleting user accounts for system security and resource management. Use `useradd` or `adduser` to create users, `usermod` to update user details like home directory or shell, and `userdel` to delete users. Effective user management maintains system security and organization in multi-user environments. + +Learn more from the following resources: + +- [@article@How to create, update, and delete users account on Linux](https://linuxconfig.org/how-to-create-modify-and-delete-users-account-on-linux) +- [@article@How to manage users in Linux](https://www.freecodecamp.org/news/how-to-manage-users-in-linux/) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/create-update@R9TZfkgVUQNLnMpDhovJa.md b/src/data/roadmaps/linux/content/create-update@R9TZfkgVUQNLnMpDhovJa.md new file mode 100644 index 000000000..68042d33e --- /dev/null +++ b/src/data/roadmaps/linux/content/create-update@R9TZfkgVUQNLnMpDhovJa.md @@ -0,0 +1,8 @@ +# Create, Update, and Delete Users + +Linux user management involves creating, updating, and deleting user accounts for system security and resource utilization. Key commands: `useradd`/`adduser` (create users), `usermod` (update user details like home directory/shell), `userdel` (delete users). Essential for maintaining secure, organized multi-user system environments and efficient resource allocation. + +Learn more from the following resources: + +- [@article@How to create, update, and delete users account on Linux](https://linuxconfig.org/how-to-create-modify-and-delete-users-account-on-linux) +- [@article@How to manage users in Linux](https://www.freecodecamp.org/news/how-to-manage-users-in-linux/) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/creating--deleting-files--dirs@9oo2fxTM2_p0VYPBroqxa.md b/src/data/roadmaps/linux/content/creating--deleting-files--dirs@9oo2fxTM2_p0VYPBroqxa.md new file mode 100644 index 000000000..4b85d3d46 --- /dev/null +++ b/src/data/roadmaps/linux/content/creating--deleting-files--dirs@9oo2fxTM2_p0VYPBroqxa.md @@ -0,0 +1,40 @@ +# Creating Files + +Creating files in Linux is about making new blank or filled files on your computer. You can use commands like `touch` to create an empty file, `echo` to make a file with some text inside, or `cat` to type directly into a new file. These commands help you set up and save your documents or data. + +Here's an example of file creation with the `touch` command: + +```bash +touch newfile.txt +``` + +and with `cat` command: + +```bash +cat > newfile.txt +``` + +Both these commands create a new "newfile.txt" if it does not already exist. + +# Deleting Files + +Deleting files in Linux means getting rid of unwanted or unnecessary files from your computer. You use the `rm` command to delete a file, and it's permanent, so be careful. You can also use `rm -i` (interactive) to ask for confirmation before deleting, which helps prevent accidental loss of important files. + +```bash +# Deletes the file named example.txt +rm example.txt +``` + +```bash +# Ask for confirmation +rm -i [filename] +``` + +```bash +# Removes an empty directory +rmdir [directory] +``` + +Learn more from the following resources: + +- [@article@Linux rm Command: File Removing](https://labex.io/tutorials/linux-linux-rm-command-file-removing-209741) diff --git a/src/data/roadmaps/linux/content/navigation-basics/creating-files.md b/src/data/roadmaps/linux/content/creating-files@9oo2fxTM2_p0VYPBroqxa.md similarity index 100% rename from src/data/roadmaps/linux/content/navigation-basics/creating-files.md rename to src/data/roadmaps/linux/content/creating-files@9oo2fxTM2_p0VYPBroqxa.md diff --git a/src/data/roadmaps/linux/content/creating-new-services@34UUrc8Yjc_8lvTL8itc3.md b/src/data/roadmaps/linux/content/creating-new-services@34UUrc8Yjc_8lvTL8itc3.md new file mode 100644 index 000000000..a8dcf65ac --- /dev/null +++ b/src/data/roadmaps/linux/content/creating-new-services@34UUrc8Yjc_8lvTL8itc3.md @@ -0,0 +1,3 @@ +# Creating New Services + +Creating custom services in Linux involves writing systemd service unit files that define how processes should start, stop, and restart. Service files are placed in `/etc/systemd/system/` and contain sections like [Unit], [Service], and [Install]. Use `systemctl enable` to enable services at boot and `systemctl start` to run them. Custom services allow automation of background processes. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/service-management/creating-services.md b/src/data/roadmaps/linux/content/creating-services@xk5Xgi797HlVjdZJRfwX1.md similarity index 78% rename from src/data/roadmaps/linux/content/service-management/creating-services.md rename to src/data/roadmaps/linux/content/creating-services@xk5Xgi797HlVjdZJRfwX1.md index a8f2bca24..ede530045 100644 --- a/src/data/roadmaps/linux/content/service-management/creating-services.md +++ b/src/data/roadmaps/linux/content/creating-services@xk5Xgi797HlVjdZJRfwX1.md @@ -1,5 +1,7 @@ # Creating Services +Creating Linux services involves setting up background applications using systemd service files. Services run continuously performing essential tasks like web servers, databases, and mail servers. Create `.service` files in `/etc/systemd/system/` with Unit, Service, and Install sections. Control services using `systemctl` commands. Best practice: avoid running services as root for security. + In Linux, service management refers to starting, stopping, enabling, and managing software services. Understanding how to control services is crucial for controlling a Linux server or desktop. Typically, a service is an application that runs in the background waiting to be used, or carrying out essential tasks. Common kinds of services include web servers, database servers, and mail servers. diff --git a/src/data/roadmaps/linux/content/text-processing/cut.md b/src/data/roadmaps/linux/content/cut@Z5Mf_e5G24IkmxEHgYBe2.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/cut.md rename to src/data/roadmaps/linux/content/cut@Z5Mf_e5G24IkmxEHgYBe2.md diff --git a/src/data/roadmaps/linux/content/debugging@rOGnHbGIr3xPCFdpkqoeK.md b/src/data/roadmaps/linux/content/debugging@rOGnHbGIr3xPCFdpkqoeK.md new file mode 100644 index 000000000..409c8c43d --- /dev/null +++ b/src/data/roadmaps/linux/content/debugging@rOGnHbGIr3xPCFdpkqoeK.md @@ -0,0 +1,6 @@ +# Debugging + +Shell script debugging in Linux uses tools like bash's `-x` option for execution traces, `trap`, `set` commands, and external tools like `shellcheck`. Use `#!/bin/bash -x` in scripts or `bash -x script.sh` from command line for tracing. These debugging options help detect, trace, and fix errors to make scripts more efficient and error-proof. + +Visit the following sources to learn more: +- [@official@Official Bashdb Documentation](https://bashdb.readthedocs.io/en/latest/) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/networking/dhcp.md b/src/data/roadmaps/linux/content/dhcp@X6Jw95kbyPgsDNRhvkQP9.md similarity index 69% rename from src/data/roadmaps/linux/content/networking/dhcp.md rename to src/data/roadmaps/linux/content/dhcp@X6Jw95kbyPgsDNRhvkQP9.md index cbc67475e..571b92830 100644 --- a/src/data/roadmaps/linux/content/networking/dhcp.md +++ b/src/data/roadmaps/linux/content/dhcp@X6Jw95kbyPgsDNRhvkQP9.md @@ -1,6 +1,6 @@ -# DHCP +# DHCP -The Dynamic Host Configuration Protocol (DHCP) is a critical component of any network. In Linux networking, it is used for allocating IP addresses dynamically within a network. +Dynamic Host Configuration Protocol (DHCP) automatically allocates IP addresses and network configuration to clients within a network. DHCP servers manage IP distribution ensuring unique addresses for each client machine. In Linux, install with `sudo apt-get install isc-dhcp-server` and configure via `/etc/dhcp/dhcpd.conf`. DHCP servers should have static IPs for effective management. The DHCP server effectively manages the IP addresses and information related to them, making sure that each client machine gets a unique IP and all the correct network information. diff --git a/src/data/roadmaps/linux/content/navigation-basics/directory-hierarchy.md b/src/data/roadmaps/linux/content/directory-hierarchy-overview@3fzuXKH7az_LVnmnoXB1p.md similarity index 100% rename from src/data/roadmaps/linux/content/navigation-basics/directory-hierarchy.md rename to src/data/roadmaps/linux/content/directory-hierarchy-overview@3fzuXKH7az_LVnmnoXB1p.md diff --git a/src/data/roadmaps/linux/content/directory-hierarchy@3fzuXKH7az_LVnmnoXB1p.md b/src/data/roadmaps/linux/content/directory-hierarchy@3fzuXKH7az_LVnmnoXB1p.md new file mode 100644 index 000000000..b88cbcd46 --- /dev/null +++ b/src/data/roadmaps/linux/content/directory-hierarchy@3fzuXKH7az_LVnmnoXB1p.md @@ -0,0 +1,19 @@ +# Understanding Directory Hierarchy + +In Linux, understanding the directory hierarchy is crucial for efficient navigation and file management. A Linux system's directory structure, also known as the Filesystem Hierarchy Standard (FHS), is a defined tree structure that helps to prevent files from being scattered all over the system and instead organise them in a logical and easy-to-navigate manner. + +- `/`: Root directory, the top level of the file system. +- `/home`: User home directories. +- `/bin`: Essential binary executables. +- `/sbin`: System administration binaries. +- `/etc`: Configuration files. +- `/var`: Variable data (logs, spool files). +- `/usr`: User programs and data. +- `/lib`: Shared libraries. +- `/tmp`: Temporary files. +- `/opt`: Third-party applications. + +Visit the following resources to learn more: + +- [@article@Overview of File System Hierarchy Standard (FHS)](https://access.redhat.com/documentation/ru-ru/red_hat_enterprise_linux/4/html/reference_guide/s1-filesystem-fhs#s3-filesystem-usr). +- [@video@The Linux File System explained in 1,233 seconds](https://youtu.be/A3G-3hp88mo?si=sTJTSzubdb0Vizjr) diff --git a/src/data/roadmaps/linux/content/disks-and-filesystems@Fn_uYKigJRgb7r_iYGVBr.md b/src/data/roadmaps/linux/content/disks-and-filesystems@Fn_uYKigJRgb7r_iYGVBr.md new file mode 100644 index 000000000..40aea9181 --- /dev/null +++ b/src/data/roadmaps/linux/content/disks-and-filesystems@Fn_uYKigJRgb7r_iYGVBr.md @@ -0,0 +1,11 @@ +# Disks and Filesystems + +Linux supports various filesystems like EXT4, FAT32, NTFS, and Btrfs for organizing data on storage devices. Each filesystem has specific advantages - EXT4 for Linux systems, FAT32 for compatibility across operating systems. The `df -T` command displays mounted filesystems with their types, sizes, and available space information. + +Here's an example of how to display the type of filesystems of your mounted devices with the "df" command in Linux: + +```bash +df -T +``` + +The output shows the names of your disks, their filesystem types, and other additional information such as total space, used space, and available space on the disks. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/disks-filesystems/index.md b/src/data/roadmaps/linux/content/disks-filesystems/index.md deleted file mode 100644 index 32ec5c8f4..000000000 --- a/src/data/roadmaps/linux/content/disks-filesystems/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# Linux Disks Filesystems - -Linux uses a variety of filesystems to allow us to store and retrieve data from the hardware of a computer system such as disks. The filesystem defines how data is organized, stored, and retrieved on these storage devices. Examples of popular Linux filesystems include EXT4, FAT32, NTFS, and Btrfs. - -Each filesystem has its own advantages, disadvantages, and use cases. For example, EXT4 is typically used for Linux system volumes due to its robustness and compatibility with Linux, while FAT32 may be used for removable media like USB drives for its compatibility with almost all operating systems. - -Here's an example of how to display the type of filesystems of your mounted devices with the "df" command in Linux: - -```bash -df -T -``` - -The output shows the names of your disks, their filesystem types, and other additional information such as total space, used space, and available space on the disks. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/disks-filesystems/inodes.md b/src/data/roadmaps/linux/content/disks-filesystems/inodes.md deleted file mode 100644 index 3a554406f..000000000 --- a/src/data/roadmaps/linux/content/disks-filesystems/inodes.md +++ /dev/null @@ -1,18 +0,0 @@ -# Inodes - -In a Linux filesystem, an inode (index node) is a core concept that represents a filesystem object such as a file or a directory. More specifically, an inode is a data structure that stores critical information about a file except its name and actual data. This information includes the file's size, owner, access permissions, access times, and more. - -Every file or directory in a Linux filesystem has a unique inode, and each inode is identified by an inode number within its own filesystem. This inode number provides a way of tracking each file, acting as a unique identifier for the Linux operating system. - -Whenever a file is created in Linux, it is automatically assigned an inode that stores its metadata. The structure and storage of inodes are handled by the filesystem, which means the kind and amount of metadata in an inode can differ between filesystems. - -Although you would not interact with inodes directly in everyday usage, understanding inodes can be very helpful when dealing with advanced file operations, such as creating links or recovering deleted files. - -```bash -# Retrieve the inode of a file -ls -i filename -``` - -Learn more from the following resources: - -- [@article@Introduction to Inodes](https://linuxjourney.com/lesson/inodes) diff --git a/src/data/roadmaps/linux/content/disks-filesystems/lvm.md b/src/data/roadmaps/linux/content/disks-filesystems/lvm.md deleted file mode 100644 index 4603b8bcd..000000000 --- a/src/data/roadmaps/linux/content/disks-filesystems/lvm.md +++ /dev/null @@ -1,22 +0,0 @@ -# Linux Logical Volume Manager (LVM) - -The Linux Logical Volume Manager (LVM) is a device mapper framework that provides logical volume management for the Linux kernel. It was created to ease disk management, allowing for the use of abstracted storage devices, known as logical volumes, instead of using physical storage devices directly. - -LVM is extremely flexible, and features include resizing volumes, mirroring volumes across multiple physical disks, and moving volumes between disks without needing to power down. - -LVM works on 3 levels: Physical Volumes (PVs), Volume Groups (VGs), and Logical Volumes (LVs). - -- PVs are the actual disks or partitions. -- VGs combine PVs into a single storage pool. -- LVs carve out portions from the VG to be used by the system. - -To create an LVM, you need to follow these steps in Linux: - -```bash -pvcreate /dev/sdb1 -vgcreate my-vg /dev/sdb1 -lvcreate -L 10G my-vg -n my-lv -``` -In the above commands, we create a physical volume on `/dev/sdb1`, then create a volume group named `my-vg`. Finally, we carve out a 10GB logical volume from the volume group and name it `my-lv`. - -These features, collectively, provide great ease in managing storage systems especially for large enterprise class systems where a large array of disks are typically used. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/disks-filesystems/mounts.md b/src/data/roadmaps/linux/content/disks-filesystems/mounts.md deleted file mode 100644 index 39a5d2185..000000000 --- a/src/data/roadmaps/linux/content/disks-filesystems/mounts.md +++ /dev/null @@ -1,22 +0,0 @@ -# Mounts - -In Linux environments, a very crucial concept related to disk management is the "mounting" of filesystems. Fundamentally, mounting in Linux refers to the process that allows the operating system to access data stored on underlying storage devices, such as hard drives or SSDs. This process attaches a filesystem (available on some storage medium) to a specific directory (also known as a mount point) in the Linux directory tree. - -The beauty of this approach lies in the unified and seamless manner in which Linux treats all files, irrespective of whether they reside on a local disk, network location, or any other kind of storage device. - -The `mount` command in Linux is used for mounting filesystems. When a specific filesystem is 'mounted' at a particular directory, the system can begin reading data from the device and interpreting it according to the filesystem's rules. - -It's worth noting that Linux has a special directory, `/mnt`, that is conventionally used as a temporary mount point for manual mounting and unmounting operations. - -```sh -mount /dev/sdb1 /mnt -``` - -The above command will mount the filesystem (assuming it's a valid one) on the second partition of a second hard drive at the `/mnt` directory. After the partition is mounted, you can access the files using the `/mnt` directory. - -Understanding and managing mounts is crucial for effective Linux disk and filesystem management. - -Visit the following resources to learn more: -- [@article@Mounting, unmounting and the /mnt directory - The Linux Documentation Project](https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/mnt.html) -- [@article@Linux `mount` command with Examples](https://phoenixnap.com/kb/linux-mount-command) -- [@official@The `mount` command manual page](https://man7.org/linux/man-pages/man8/mount.8.html) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/disks-filesystems@Fn_uYKigJRgb7r_iYGVBr.md b/src/data/roadmaps/linux/content/disks-filesystems@Fn_uYKigJRgb7r_iYGVBr.md new file mode 100644 index 000000000..47feaf47c --- /dev/null +++ b/src/data/roadmaps/linux/content/disks-filesystems@Fn_uYKigJRgb7r_iYGVBr.md @@ -0,0 +1,11 @@ +# Disks and Filesystems + +Linux uses various filesystems to organize, store, and retrieve data from storage devices. Popular filesystems include EXT4 (robust for Linux volumes), FAT32 (compatible with all OS for removable media), NTFS, and Btrfs. Each has specific advantages and use cases. Use `df -T` command to display filesystem types, disk space usage, and mounted device information. + +Here's an example of how to display the type of filesystems of your mounted devices with the "df" command in Linux: + +```bash +df -T +``` + +The output shows the names of your disks, their filesystem types, and other additional information such as total space, used space, and available space on the disks. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/dns-resolution@f5oQYhmjNM2_FD7Qe1zGK.md b/src/data/roadmaps/linux/content/dns-resolution@f5oQYhmjNM2_FD7Qe1zGK.md new file mode 100644 index 000000000..407671444 --- /dev/null +++ b/src/data/roadmaps/linux/content/dns-resolution@f5oQYhmjNM2_FD7Qe1zGK.md @@ -0,0 +1,17 @@ +# DNS Resolution + +DNS (Domain Name System) converts hostnames to IP addresses, enabling users to access websites without remembering numeric addresses. Linux systems use `/etc/resolv.conf` to configure DNS resolution. Applications consult the DNS resolver, which communicates with DNS servers for address translation. Use `nslookup` or `dig` commands to query DNS and troubleshoot network connectivity issues. + +Below command is used to query DNS and fetch IP addresses: + +```bash +nslookup www.example.com +``` + +Or using dig command: + +```bash +dig www.example.com +``` + +Getting a good understanding of the DNS resolution process provides a solid base for tasks like network troubleshooting and web server setup on a Linux system. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/docker@MfengY3ouz6sSOx3PXYf8.md b/src/data/roadmaps/linux/content/docker@MfengY3ouz6sSOx3PXYf8.md new file mode 100644 index 000000000..1815e811c --- /dev/null +++ b/src/data/roadmaps/linux/content/docker@MfengY3ouz6sSOx3PXYf8.md @@ -0,0 +1,15 @@ +# Docker + +Docker is an open-source containerization platform that uses OS-level virtualization to package applications with dependencies into lightweight containers. In Linux, Docker containers share the kernel and use features like namespaces and cgroups for isolation. This provides less overhead than traditional VMs while enabling consistent deployment across environments. + +Here's a basic example of running an application (for example, hello-world) with Docker on Linux: + +```bash +# Pull the Docker image from Docker Hub +sudo docker pull hello-world + +# Run the Docker container +sudo docker run hello-world +``` + +The above commands allow you to download a Docker image and run it on your Linux system, providing the foundation for deploying containers in development, testing, and production environments. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/editing-files/index.md b/src/data/roadmaps/linux/content/editing-files@HGmeYvRf7_XusZl_K4x9k.md similarity index 100% rename from src/data/roadmaps/linux/content/editing-files/index.md rename to src/data/roadmaps/linux/content/editing-files@HGmeYvRf7_XusZl_K4x9k.md diff --git a/src/data/roadmaps/linux/content/shell-basics/environment-variables.md b/src/data/roadmaps/linux/content/environment-variables@zwXEmpPYjA7_msS43z7I0.md similarity index 100% rename from src/data/roadmaps/linux/content/shell-basics/environment-variables.md rename to src/data/roadmaps/linux/content/environment-variables@zwXEmpPYjA7_msS43z7I0.md diff --git a/src/data/roadmaps/linux/content/ethernet--arprarp@4ees23q281J1DPVAc7iXd.md b/src/data/roadmaps/linux/content/ethernet--arprarp@4ees23q281J1DPVAc7iXd.md new file mode 100644 index 000000000..3c536376b --- /dev/null +++ b/src/data/roadmaps/linux/content/ethernet--arprarp@4ees23q281J1DPVAc7iXd.md @@ -0,0 +1,8 @@ +# Ethernet, ARP, and RARP + +Key networking protocols in Linux include Ethernet (LAN communication standard), ARP (Address Resolution Protocol - converts IP to MAC addresses), and RARP (Reverse ARP - converts MAC to IP addresses). These protocols enable local network communication and address resolution, essential for network troubleshooting and management in Linux systems. + +Visit the following resources to learn more: + +- [@video@ARP Explained - Address Resolution Protocol](https://www.youtube.com/watch?v=cn8Zxh9bPio) +- [@video@What is Ethernet?](https://www.youtube.com/watch?v=HLziLmaYsO0) diff --git a/src/data/roadmaps/linux/content/ethernet-arp-rarp@4ees23q281J1DPVAc7iXd.md b/src/data/roadmaps/linux/content/ethernet-arp-rarp@4ees23q281J1DPVAc7iXd.md new file mode 100644 index 000000000..93003c910 --- /dev/null +++ b/src/data/roadmaps/linux/content/ethernet-arp-rarp@4ees23q281J1DPVAc7iXd.md @@ -0,0 +1,8 @@ +# Ethernet, ARP and RARP + +Three crucial Linux networking components: Ethernet enables LAN device communication, ARP (Address Resolution Protocol) translates IP addresses to MAC addresses for direct network communication, and RARP (Reverse ARP) converts MAC addresses to IP addresses when devices know their MAC but need their IP. Essential for diagnosing and managing Linux networking issues. + +Visit the following resources to learn more: + +- [@video@ARP Explained - Address Resolution Protocol](https://www.youtube.com/watch?v=cn8Zxh9bPio) +- [@video@What is Ethernet?](https://www.youtube.com/watch?v=HLziLmaYsO0) diff --git a/src/data/roadmaps/linux/content/expand@TZuDVFS7DZFBgaSYYXoGe.md b/src/data/roadmaps/linux/content/expand@TZuDVFS7DZFBgaSYYXoGe.md new file mode 100644 index 000000000..fea9e714d --- /dev/null +++ b/src/data/roadmaps/linux/content/expand@TZuDVFS7DZFBgaSYYXoGe.md @@ -0,0 +1,3 @@ +# Expand + +The `expand` command converts tabs to spaces in text files, useful for consistent formatting across different systems and editors. Default conversion is 8 spaces per tab. Use `expand filename` for basic conversion or `expand -t 4 filename` to specify 4 spaces per tab. Essential for maintaining code readability and consistent indentation in shell scripts. diff --git a/src/data/roadmaps/linux/content/file-permissions@TnrT-cqMA8urew9nLv0Ns.md b/src/data/roadmaps/linux/content/file-permissions@TnrT-cqMA8urew9nLv0Ns.md new file mode 100644 index 000000000..14fa8bcfc --- /dev/null +++ b/src/data/roadmaps/linux/content/file-permissions@TnrT-cqMA8urew9nLv0Ns.md @@ -0,0 +1,19 @@ +# File Permissions + +Linux file permissions control who can read (r), write (w), or execute (x) files and directories. Permissions are set for owner, group, and others using octal notation or symbolic format. The format `-rwxr--r--` shows file type and permissions. Use `chmod` to change permissions, `chown` for ownership, and `chgrp` for group ownership. Proper permissions ensure system security. + +Let's have a look at an example: + +```bash +-rwxr--r-- 1 root root 4096 Jan 1 12:00 filename +``` + +From the above example, the first character `-` indicates if it is a regular file(`-`) or directory(`d`). The following group of three characters(`rwx`) represents the permissions for the file owner. The next three characters(`r--`) represent permissions for the group and the last set of three characters(`r--`) represents permissions for others. + +The `r` indicates that the file can be read, `w` indicates that the file can be written to, and `x` indicates that the file can be executed. + +Learn more from the following resources: + +- [@article@Linux File Permissions](https://linuxhandbook.com/linux-file-permissions/) +- [@video@Linux File Permissions in 5 Minutes](https://www.youtube.com/watch?v=LnKoncbQBsM) +- [@article@Linux Permissions of Files](https://labex.io/tutorials/linux-permissions-of-files-270252) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/file-transfer@tVrbVcNEfc11FbEUoO2Dk.md b/src/data/roadmaps/linux/content/file-transfer@tVrbVcNEfc11FbEUoO2Dk.md new file mode 100644 index 000000000..b4f12c6ea --- /dev/null +++ b/src/data/roadmaps/linux/content/file-transfer@tVrbVcNEfc11FbEUoO2Dk.md @@ -0,0 +1,11 @@ +# File Transfer + +Linux file transfer involves copying or moving files between systems over networks. Command-line tools support protocols like FTP, HTTP, SCP, SFTP, and NFS. Common commands include `scp`, `rsync`, and `wget`. Example: `scp /local/file username@remote:/destination` copies files to remote systems. These tools make network file sharing streamlined, easier, and more secure. + +For instance, when transferring a file from a local machine to a remote server, the `scp` command can be utilized as follows: +```bash +scp /path/to/local/file username@remote:/path/to/destination +``` +This command would copy the file to the designated remote system. + +Understanding and efficiently using these tools can make the task of file sharing over networks streamlined, easier, and more secure. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/disks-filesystems/filesystems.md b/src/data/roadmaps/linux/content/filesystems@LFPhSHOhUqM98fUxMjQUw.md similarity index 69% rename from src/data/roadmaps/linux/content/disks-filesystems/filesystems.md rename to src/data/roadmaps/linux/content/filesystems@LFPhSHOhUqM98fUxMjQUw.md index e55c8eaca..86de62cf9 100644 --- a/src/data/roadmaps/linux/content/disks-filesystems/filesystems.md +++ b/src/data/roadmaps/linux/content/filesystems@LFPhSHOhUqM98fUxMjQUw.md @@ -1,6 +1,6 @@ # Filesystems -Linux operating system provides multiple ways to handle the data storage through the concept of filesystems under disks. Filesystems, in essence, is the way how files are stored and organized on the storage disk. It's a critical component of the system as it ensures the integrity, reliability and efficient access to the data. +Filesystems define how files are stored and organized on Linux storage disks, ensuring data integrity, reliability, and efficient access. Linux supports various types like EXT4, XFS, BTRFS with different performance and recovery capabilities. All files start from root directory '/'. Use `df -T` to display filesystem types and disk usage status. Essential for Linux administration tasks. A disk installed in a Linux system can be divided into multiple partitions, each with its own filesystem. Linux supports various types of filesystems, such as EXT4, XFS, BTRFS, etc. Each one of them has their own advantages regarding performance, data integrity and recovery options. diff --git a/src/data/roadmaps/linux/content/finding--installing-packages@Z23eJZjmWoeXQuezR9AhG.md b/src/data/roadmaps/linux/content/finding--installing-packages@Z23eJZjmWoeXQuezR9AhG.md new file mode 100644 index 000000000..29641e0b2 --- /dev/null +++ b/src/data/roadmaps/linux/content/finding--installing-packages@Z23eJZjmWoeXQuezR9AhG.md @@ -0,0 +1,19 @@ +# Finding and Installing Packages + +Linux package managers like `apt`, `yum`, and `dnf` automate software installation, updates, and removal. Use `apt-get update && apt-get install package-name` on Debian/Ubuntu systems or `dnf install package-name` on Fedora/CentOS. Package management eliminates manual compilation from source code and requires appropriate permissions (usually root access). + +For example, on a Debian-based system like Ubuntu you would use `apt` or `apt-get` to install a new package like so: + +``` +sudo apt-get update +sudo apt-get install package-name +``` + +While in a Fedora or CentOS you would use `dnf` or `yum`: + +``` +sudo dnf update +sudo dnf install package-name +``` + +Note that you should replace `package-name` with the name of the package you want to install. Remember that you will need appropriate permissions (often root) to install packages in a Linux system. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/package-management/finding-installing-packages.md b/src/data/roadmaps/linux/content/finding-installing-packages@Z23eJZjmWoeXQuezR9AhG.md similarity index 66% rename from src/data/roadmaps/linux/content/package-management/finding-installing-packages.md rename to src/data/roadmaps/linux/content/finding-installing-packages@Z23eJZjmWoeXQuezR9AhG.md index c39f0f7f7..ac53c171a 100644 --- a/src/data/roadmaps/linux/content/package-management/finding-installing-packages.md +++ b/src/data/roadmaps/linux/content/finding-installing-packages@Z23eJZjmWoeXQuezR9AhG.md @@ -1,6 +1,6 @@ # Finding and Installing Packages -The ability to efficiently find and install software packages is a fundamental skill when working with Linux based systems. Linux package management tools such as `apt`, `yum`, or `dnf` are used to automate the process of installing, upgrading, configuring, and removing software packages in a consistent manner. +Linux package managers like `apt`, `yum`, and `dnf` automate software installation, upgrading, configuring, and removal. Debian-based systems: `sudo apt-get update && sudo apt-get install package-name`. Fedora/CentOS: `sudo dnf update && sudo dnf install package-name`. Package management eliminates manual compilation from source code. Root permissions required for installation. It's important to understand how package management works in Linux, because it significantly simplifies the process of software management, eliminating the need to manually download, compile, and install software from source code. diff --git a/src/data/roadmaps/linux/content/text-processing/grep.md b/src/data/roadmaps/linux/content/grep@umlhxidsvtZG9k40Ca0Ac.md similarity index 74% rename from src/data/roadmaps/linux/content/text-processing/grep.md rename to src/data/roadmaps/linux/content/grep@umlhxidsvtZG9k40Ca0Ac.md index cf107ff40..129ca7d16 100644 --- a/src/data/roadmaps/linux/content/text-processing/grep.md +++ b/src/data/roadmaps/linux/content/grep@umlhxidsvtZG9k40Ca0Ac.md @@ -1,6 +1,6 @@ -# GREP in Text Processing +# GREP -GREP (Global Regular Expression Print) is considered a significant tool in text processing area on Unix-like operating systems including Linux. It is a powerful utility that searches and filters text matching a given pattern. When it identifies a line that matches the pattern, it prints the line to the screen, offering an effective and a codified way to find text within files. +GREP (Global Regular Expression Print) is a powerful text search utility that finds and filters text matching specific patterns in files. It searches line by line and prints matching lines to the screen. Essential for shell scripts and command-line operations. Example: `grep "pattern" fileName` searches for specified patterns. Alternative: `ripgrep` offers enhanced performance and features. An essential part of many shell scripts, bash commands, and command-line operations, GREP is a versatile tool that comes pre-installed with every Linux distribution. It embodies three main parts - format, action and regex. Over the years, it had been effectively utilized in multiple programming languages and data science applications. diff --git a/src/data/roadmaps/linux/content/text-processing/head.md b/src/data/roadmaps/linux/content/head@6xdkFk_GT93MigeTSSGCp.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/head.md rename to src/data/roadmaps/linux/content/head@6xdkFk_GT93MigeTSSGCp.md diff --git a/src/data/roadmaps/linux/content/troubleshooting/icmp.md b/src/data/roadmaps/linux/content/icmp@Ymf3u_sG1dyt8ZR_LbwqJ.md similarity index 54% rename from src/data/roadmaps/linux/content/troubleshooting/icmp.md rename to src/data/roadmaps/linux/content/icmp@Ymf3u_sG1dyt8ZR_LbwqJ.md index 28836b57e..e6830a7da 100644 --- a/src/data/roadmaps/linux/content/troubleshooting/icmp.md +++ b/src/data/roadmaps/linux/content/icmp@Ymf3u_sG1dyt8ZR_LbwqJ.md @@ -1,6 +1,6 @@ # ICMP -Internet Control Message Protocol (ICMP) is a supportive protocol used primarily by network devices to communicate updates or error information to other devices. When troubleshooting network issues in a Linux environment, ICMP forms a crucial aspect. It can be utilized to send error messages indicating, for example, that a requested service is not available or that a host or router could not be reached. ICMP can also be used to relay query messages. +Internet Control Message Protocol (ICMP) is a supportive protocol used by network devices to communicate error messages and operational information. Essential for Linux network troubleshooting, ICMP enables tools like `ping` and `traceroute` to diagnose network connectivity and routing issues. Use `ping www.google.com` to send ICMP echo requests and test network reachability effectively. In Linux systems, common command-line tools related to ICMP include `ping` and `traceroute`, both used to diagnose the state of the network and often part of troubleshooting efforts. diff --git a/src/data/roadmaps/linux/content/index.md b/src/data/roadmaps/linux/content/index.md deleted file mode 100644 index 4e768b56d..000000000 --- a/src/data/roadmaps/linux/content/index.md +++ /dev/null @@ -1 +0,0 @@ -# \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/inodes@AwQJYL60NNbA5_z7iLcM7.md b/src/data/roadmaps/linux/content/inodes@AwQJYL60NNbA5_z7iLcM7.md new file mode 100644 index 000000000..b5f68b5d7 --- /dev/null +++ b/src/data/roadmaps/linux/content/inodes@AwQJYL60NNbA5_z7iLcM7.md @@ -0,0 +1,12 @@ +# Inodes + +An inode (index node) is a data structure in Linux filesystems that stores metadata about files and directories except their names and actual data. Contains file size, owner, permissions, timestamps, and more. Each file has a unique inode number for identification. Understanding inodes helps with advanced operations like linking and file recovery. Use `ls -i filename` to view inode numbers. + +```bash +# Retrieve the inode of a file +ls -i filename +``` + +Learn more from the following resources: + +- [@article@Introduction to Inodes](https://linuxjourney.com/lesson/inodes) diff --git a/src/data/roadmaps/linux/content/install--remove--upgrade-packages@xEHiB-egkkcBuZmgMoqHT.md b/src/data/roadmaps/linux/content/install--remove--upgrade-packages@xEHiB-egkkcBuZmgMoqHT.md new file mode 100644 index 000000000..66f741ae1 --- /dev/null +++ b/src/data/roadmaps/linux/content/install--remove--upgrade-packages@xEHiB-egkkcBuZmgMoqHT.md @@ -0,0 +1,11 @@ +# Installing, Removing, and Upgrading Packages + +Package management in Linux involves installing, removing, and upgrading software using distribution-specific tools. Use `apt` for Debian/Ubuntu, `yum`/`dnf` for Fedora/RHEL/CentOS, and `zypper` for SUSE. Common operations include `install package-name`, `remove package-name`, and `upgrade` commands. Each package manager has specific syntax but similar functionality for software lifecycle management. + +A typical package management task such as installing a new package using `apt` would involve executing a command like: + +```bash +sudo apt-get install packagename +``` + +However, the exact command varies depending on the package manager in use. Similarly, removing and upgrading packages also utilize command-line instructions specific to each package manager. Detailed understanding of these tasks is crucial for effective Linux system administration. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/package-management/install-remove-ugprade-packages.md b/src/data/roadmaps/linux/content/install-remove-ugprade-packages@xEHiB-egkkcBuZmgMoqHT.md similarity index 71% rename from src/data/roadmaps/linux/content/package-management/install-remove-ugprade-packages.md rename to src/data/roadmaps/linux/content/install-remove-ugprade-packages@xEHiB-egkkcBuZmgMoqHT.md index f82428806..f5ea8ba47 100644 --- a/src/data/roadmaps/linux/content/package-management/install-remove-ugprade-packages.md +++ b/src/data/roadmaps/linux/content/install-remove-ugprade-packages@xEHiB-egkkcBuZmgMoqHT.md @@ -1,4 +1,6 @@ -# Installation, Removal, and Upgrade of Packages +# Install, Remove, and Upgrade Packages + +Linux package management handles installing, removing, and upgrading pre-compiled software modules. Different distributions use specific package managers: `apt` (Debian/Ubuntu), `yum`/`dnf` (Fedora/RHEL/CentOS), `zypper` (SUSE). Example installation: `sudo apt-get install packagename`. Each manager has specific commands for removal and upgrades. Critical skill for effective Linux system administration. Managing packages in a Linux system is one of the critical tasks that every Linux user and system administrator must be familiar with. Packages in Linux are pre-compiled software modules that include executables and files required to run and use the software. Linux distributions use different package managers such as `apt` for Debian/Ubuntu based distributions, `yum` and `dnf` for Fedora/RHEL/CentOS, and `zypper` for SUSE. diff --git a/src/data/roadmaps/linux/content/networking/ip-routing.md b/src/data/roadmaps/linux/content/ip-routing@D0yUzzaJsfhtdBWMtquAj.md similarity index 52% rename from src/data/roadmaps/linux/content/networking/ip-routing.md rename to src/data/roadmaps/linux/content/ip-routing@D0yUzzaJsfhtdBWMtquAj.md index b35af6d3a..f618d2152 100644 --- a/src/data/roadmaps/linux/content/networking/ip-routing.md +++ b/src/data/roadmaps/linux/content/ip-routing@D0yUzzaJsfhtdBWMtquAj.md @@ -1,6 +1,6 @@ -# IP Routing +# IP Routing -IP Routing in Linux refers to the process of setting up routing tables and configuring network routes for networking interfaces within the Linux operating system. It is the kernel’s responsibility to handle this task which involves the selection of pathways for sending network packets across to their intended destinations on a network. +IP routing in Linux involves configuring routing tables and network routes for packet forwarding across networks. The kernel handles route selection to send packets to their destinations. Use the `ip` command (replacing deprecated `ifconfig`) for network configuration. Example: `ip route show` displays all kernel-known routes for network troubleshooting and management. This task is carried out using various command-line tools and the networking configuration files. The principle command-line tool for network configuration in Linux used to be `ifconfig`, but it has now been mostly replaced by the `ip` command. diff --git a/src/data/roadmaps/linux/content/text-processing/join.md b/src/data/roadmaps/linux/content/join@vfcCS1GoyKpU1rQaE8I5r.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/join.md rename to src/data/roadmaps/linux/content/join@vfcCS1GoyKpU1rQaE8I5r.md diff --git a/src/data/roadmaps/linux/content/process-management/kill-processes.md b/src/data/roadmaps/linux/content/kill-processes@0FLUI9r7znMqi6YKReLzD.md similarity index 60% rename from src/data/roadmaps/linux/content/process-management/kill-processes.md rename to src/data/roadmaps/linux/content/kill-processes@0FLUI9r7znMqi6YKReLzD.md index 3763aac21..fbcb87132 100644 --- a/src/data/roadmaps/linux/content/process-management/kill-processes.md +++ b/src/data/roadmaps/linux/content/kill-processes@0FLUI9r7znMqi6YKReLzD.md @@ -1,6 +1,6 @@ # Kill Processes -On any Linux system, whether you're on a server or a desktop system, processes are consistently running. Sometimes, these processes may not behave as expected due to certain reasons like system bugs, unexpected system behavior, or accidental initiation and may require termination. This is where the concept of killing processes in Linux comes to picture under the area of process management. +The `kill` command terminates processes manually by sending specific signals to Process IDs (PIDs). Used when processes behave unexpectedly due to system bugs or accidental initiation. Syntax: `kill [signal or option] PID(s)`. Essential for Linux process management, allowing administrators to stop, pause, or terminate problematic processes and maintain system stability. 'Kill' in Linux is a built-in command that is used to terminate processes manually. You can use the `kill` command to send a specific signal to a process. When we use the `kill` command, we basically request a process to stop, pause, or terminate. diff --git a/src/data/roadmaps/linux/content/killing-processes@0FLUI9r7znMqi6YKReLzD.md b/src/data/roadmaps/linux/content/killing-processes@0FLUI9r7znMqi6YKReLzD.md new file mode 100644 index 000000000..11076a74c --- /dev/null +++ b/src/data/roadmaps/linux/content/killing-processes@0FLUI9r7znMqi6YKReLzD.md @@ -0,0 +1,13 @@ +# Killing Processes + +The `kill` command terminates processes in Linux by sending signals to specific Process IDs (PIDs). Use `kill [signal] PID` to terminate processes manually. Different signals provide various termination methods - SIGTERM for graceful shutdown, SIGKILL for forced termination. Process termination is essential for managing unresponsive or unwanted processes. + +'Kill' in Linux is a built-in command that is used to terminate processes manually. You can use the `kill` command to send a specific signal to a process. When we use the `kill` command, we basically request a process to stop, pause, or terminate. + +Here's a basic illustration on how to use the `kill` command in Linux: + +```bash +kill [signal or option] PID(s) +``` + +In practice, you would identify the Process ID (PID) of the process you want to terminate and replace PID(s) in the above command. The signal or option part is optional, but very powerful allowing for specific termination actions. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/listing--finding-processes@lf3_CRyOI2ZXGzz5ff451.md b/src/data/roadmaps/linux/content/listing--finding-processes@lf3_CRyOI2ZXGzz5ff451.md new file mode 100644 index 000000000..e9caeab52 --- /dev/null +++ b/src/data/roadmaps/linux/content/listing--finding-processes@lf3_CRyOI2ZXGzz5ff451.md @@ -0,0 +1,25 @@ +# Listing and Finding Processes + +Linux provides several tools to list and monitor running processes. The `/proc` filesystem contains process information accessible via PID directories. Commands like `ps -ef` show process snapshots, while `top` and `htop` provide real-time process monitoring. Use `cat /proc/{PID}/status` to view specific process details. These tools are essential for system monitoring and troubleshooting. + +```bash +# list all running processes +ps -ef + +# display ongoing list of running processes +top + +# alternatively, for a more user-friendly interface +htop +``` +Exploring the proc directory (`/proc`), we dive even deeper, enabling us to view the system's kernel parameters and each process's specific system details. + +```bash +# view specifics of a particular PID +cat /proc/{PID}/status +``` +In short, 'Finding and Listing Processes (proc)' in Linux is not just a core aspect of process management, but also a necessary skill for enhancing system performance and resolution of issues. + +Visit the following resources to learn more: + +- [@article@The /proc File System](https://www.kernel.org/doc/html/latest/filesystems/proc.html) diff --git a/src/data/roadmaps/linux/content/process-management/listing-finding-proc.md b/src/data/roadmaps/linux/content/listing-finding-proc@lf3_CRyOI2ZXGzz5ff451.md similarity index 100% rename from src/data/roadmaps/linux/content/process-management/listing-finding-proc.md rename to src/data/roadmaps/linux/content/listing-finding-proc@lf3_CRyOI2ZXGzz5ff451.md diff --git a/src/data/roadmaps/linux/content/listing-installed-packages@48wAoAAlCNt3j5mBpKTWC.md b/src/data/roadmaps/linux/content/listing-installed-packages@48wAoAAlCNt3j5mBpKTWC.md new file mode 100644 index 000000000..61dd94d23 --- /dev/null +++ b/src/data/roadmaps/linux/content/listing-installed-packages@48wAoAAlCNt3j5mBpKTWC.md @@ -0,0 +1,17 @@ +# Listing Installed Packages + +Linux distributions use different package managers: `apt` (Debian-based), `dnf` (Fedora), `zypper` (OpenSUSE), `pacman` (Arch). Listing installed packages helps with auditing software and deployment automation. Commands: `sudo apt list --installed` for apt systems, `dnf list installed` for dnf systems. Each distribution has its own syntax for this command. + +Below is the command for listing installed packages in an `apt` package manager: + +```shell +sudo apt list --installed +``` + +For `dnf` package manager, you would use: + +```shell +dnf list installed +``` + +Remember, different distributions will have their own syntax for this command. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/literals@-pW7R76yNIeGf7TQoX4QL.md b/src/data/roadmaps/linux/content/literals@-pW7R76yNIeGf7TQoX4QL.md new file mode 100644 index 000000000..996aeb0ae --- /dev/null +++ b/src/data/roadmaps/linux/content/literals@-pW7R76yNIeGf7TQoX4QL.md @@ -0,0 +1,17 @@ +# Literals + +Shell literals are fixed values in source code including string literals (enclosed in quotes), numeric literals (sequences of digits), and boolean literals (1=true, 0=false). String examples: 'Hello, world!' or "Hello, world!". Numeric examples: 25, 100, 1234. Understanding literals is fundamental for shell scripting readability and functionality in Linux programming. + +```bash +#!/bin/bash +# Example of literals in shell script + +StringLiteral="This is a string literal" +NumericLiteral=125 +echo $StringLiteral +echo $NumericLiteral +``` + +In this example, `StringLiteral` and `NumericLiteral` are literals and `echo` is used to print them. + +Always remember, a good understanding of literals is fundamental when it comes to shell scripting in Linux. diff --git a/src/data/roadmaps/linux/content/booting-linux/logs.md b/src/data/roadmaps/linux/content/logs@ru7mpLQZKE1QxAdiA1sS3.md similarity index 73% rename from src/data/roadmaps/linux/content/booting-linux/logs.md rename to src/data/roadmaps/linux/content/logs@ru7mpLQZKE1QxAdiA1sS3.md index 54a3b801f..6cb5ad18b 100644 --- a/src/data/roadmaps/linux/content/booting-linux/logs.md +++ b/src/data/roadmaps/linux/content/logs@ru7mpLQZKE1QxAdiA1sS3.md @@ -1,6 +1,6 @@ -# Introduction to Logs +# System Logs -Linux, much like other operating systems, maintains logs to help administrators understand what is happening on the system. These logs document everything, including users' activities, system errors, and kernel messages. A particularly important time for insightful log messages is during the system boot process, when key system components are loaded and initialized. +Linux maintains logs documenting system activities, errors, and kernel messages. Boot logs record all operations during system startup for troubleshooting. Use `dmesg` to view kernel ring buffer messages in real-time, or access logs in `/var/log`. Systemd uses `journalctl` for logging. Log levels range from emergency (system unusable) to debug messages. The "logs under booting" in Linux refers to the messages and information that are generated during the boot process. These logs record all operations and events that take place while the system is booting, which might assist in diagnosing a system issue or understanding system behavior. diff --git a/src/data/roadmaps/linux/content/shell-programming/loops.md b/src/data/roadmaps/linux/content/loops@WJT-yrMq8cEI87RHWA2jY.md similarity index 64% rename from src/data/roadmaps/linux/content/shell-programming/loops.md rename to src/data/roadmaps/linux/content/loops@WJT-yrMq8cEI87RHWA2jY.md index ff8531fa3..fd445465c 100644 --- a/src/data/roadmaps/linux/content/shell-programming/loops.md +++ b/src/data/roadmaps/linux/content/loops@WJT-yrMq8cEI87RHWA2jY.md @@ -1,6 +1,6 @@ # Loops -Loops in shell programming are a fundamental concept that allows a certain block of code to be executed over and over again based on a given condition. They are crucial for automating repetitive tasks, thus making the coding process more efficient and less error-prone. +Shell loops automate repetitive tasks by executing code blocks based on conditions. Three types exist: `for` (iterates over item lists), `while` (executes while condition is true), and `until` (runs until condition becomes true). Example: `for i in 1 2 3; do echo "$i"; done` outputs each number. Loops enhance script efficiency and enable effective automation. In Linux, shell scripts commonly use three types of loops - for, while, and until. diff --git a/src/data/roadmaps/linux/content/lvm@I3LNa1cM_zRkBy8wKdz3g.md b/src/data/roadmaps/linux/content/lvm@I3LNa1cM_zRkBy8wKdz3g.md new file mode 100644 index 000000000..f2c897944 --- /dev/null +++ b/src/data/roadmaps/linux/content/lvm@I3LNa1cM_zRkBy8wKdz3g.md @@ -0,0 +1,14 @@ +# LVM (Logical Volume Manager) + +LVM provides logical volume management through device mapper framework, offering flexible disk management with resizing, mirroring, and moving capabilities. Three levels: Physical Volumes (PVs - actual disks), Volume Groups (VGs - storage pools), and Logical Volumes (LVs - carved portions). Create with `pvcreate`, `vgcreate`, and `lvcreate` commands. Essential for enterprise storage systems. + +To create an LVM, you need to follow these steps in Linux: + +```bash +pvcreate /dev/sdb1 +vgcreate my-vg /dev/sdb1 +lvcreate -L 10G my-vg -n my-lv +``` +In the above commands, we create a physical volume on `/dev/sdb1`, then create a volume group named `my-vg`. Finally, we carve out a 10GB logical volume from the volume group and name it `my-lv`. + +These features, collectively, provide great ease in managing storage systems especially for large enterprise class systems where a large array of disks are typically used. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/managing-permissions@L6RMExeqi9501y-eCHDt1.md b/src/data/roadmaps/linux/content/managing-permissions@L6RMExeqi9501y-eCHDt1.md new file mode 100644 index 000000000..ab3a86db4 --- /dev/null +++ b/src/data/roadmaps/linux/content/managing-permissions@L6RMExeqi9501y-eCHDt1.md @@ -0,0 +1,8 @@ +# Managing Permissions + +Linux file permissions control access to files and directories using read, write, and execute rights for user, group, and others. Use `chmod` to change permissions, `chown` to change ownership, and `chgrp` to change group ownership. Proper permission management is essential for system security and prevents unauthorized access to sensitive files and directories. + +Learn more from the following resources: + +- [@article@Linux file permissions explained](https://www.redhat.com/sysadmin/linux-file-permissions-explained) +- [@video@Linux file permissions in 5 minutes](https://www.youtube.com/watch?v=LnKoncbQBsM) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/mounts@zmb5lK_EGMAChPoPvP9E0.md b/src/data/roadmaps/linux/content/mounts@zmb5lK_EGMAChPoPvP9E0.md new file mode 100644 index 000000000..8d87262fe --- /dev/null +++ b/src/data/roadmaps/linux/content/mounts@zmb5lK_EGMAChPoPvP9E0.md @@ -0,0 +1,8 @@ +# Mounts + +Mounting in Linux attaches filesystems to specific directories (mount points) in the directory tree, allowing the OS to access data on storage devices. The `mount` command performs this operation. Example: `mount /dev/sdb1 /mnt` mounts second partition to `/mnt` directory. The `/mnt` directory is conventionally used for temporary mounting operations. Essential for Linux disk and filesystem management. + +Visit the following resources to learn more: +- [@article@Mounting, unmounting and the /mnt directory - The Linux Documentation Project](https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/mnt.html) +- [@article@Linux `mount` command with Examples](https://phoenixnap.com/kb/linux-mount-command) +- [@official@The `mount` command manual page](https://man7.org/linux/man-pages/man8/mount.8.html) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/moving-files--directories@q-Ky0ietZGpyUcBQfh-BJ.md b/src/data/roadmaps/linux/content/moving-files--directories@q-Ky0ietZGpyUcBQfh-BJ.md new file mode 100644 index 000000000..7c7e1fc84 --- /dev/null +++ b/src/data/roadmaps/linux/content/moving-files--directories@q-Ky0ietZGpyUcBQfh-BJ.md @@ -0,0 +1,7 @@ +# Moving Files and Directories + +The `mv` command moves files and directories between locations and can also rename them. Use syntax `mv [options] source destination` where source is the file/directory to move and destination is the target location. This versatile command is essential for file organization and management in Linux systems. + +Learn more from the following resources: + +- [@article@Linux mv Command: File Moving and Renaming](https://labex.io/tutorials/linux-linux-mv-command-file-moving-and-renaming-209743) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/navigation-basics/moving-files.md b/src/data/roadmaps/linux/content/moving-files@q-Ky0ietZGpyUcBQfh-BJ.md similarity index 98% rename from src/data/roadmaps/linux/content/navigation-basics/moving-files.md rename to src/data/roadmaps/linux/content/moving-files@q-Ky0ietZGpyUcBQfh-BJ.md index f391c6d79..1843f5e5f 100644 --- a/src/data/roadmaps/linux/content/navigation-basics/moving-files.md +++ b/src/data/roadmaps/linux/content/moving-files@q-Ky0ietZGpyUcBQfh-BJ.md @@ -14,4 +14,4 @@ The `mv` command is widely used because of its simplicity and versatility. Wheth Learn more from the following resources: -- [@article@Linux mv Command: File Moving and Renaming](https://labex.io/tutorials/linux-linux-mv-command-file-moving-and-renaming-209743) \ No newline at end of file +- [@article@Linux mv Command: File Moving and Renaming](https://labex.io/tutorials/linux-linux-mv-command-file-moving-and-renaming-209743) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/editing-files/nano.md b/src/data/roadmaps/linux/content/nano@yqRwmcZThjQuqh2ao0dWK.md similarity index 100% rename from src/data/roadmaps/linux/content/editing-files/nano.md rename to src/data/roadmaps/linux/content/nano@yqRwmcZThjQuqh2ao0dWK.md diff --git a/src/data/roadmaps/linux/content/navigation-basics/index.md b/src/data/roadmaps/linux/content/navigation-basics@y7KjVfSI6CAduyHd4mBFT.md similarity index 98% rename from src/data/roadmaps/linux/content/navigation-basics/index.md rename to src/data/roadmaps/linux/content/navigation-basics@y7KjVfSI6CAduyHd4mBFT.md index 2e4f7f417..6f955976d 100644 --- a/src/data/roadmaps/linux/content/navigation-basics/index.md +++ b/src/data/roadmaps/linux/content/navigation-basics@y7KjVfSI6CAduyHd4mBFT.md @@ -21,4 +21,4 @@ Visit the following resources to learn more: - [@article@Intro to Linux](https://www.linkedin.com/pulse/intro-linux-fundamentals-what-hillary-nyakundi-4u7af/) - [@video@Linux fundamentals](https://www.youtube.com/watch?v=kPylihJRG70&t=1381s&ab_channel=TryHackMe) - [@article@Practice on Linux fundamentals](https://linuxjourney.com/) -- [@course@Linux for Noobs (Hands-on)](https://labex.io/courses/linux-for-noobs) \ No newline at end of file +- [@course@Linux for Noobs (Hands-on)](https://labex.io/courses/linux-for-noobs) diff --git a/src/data/roadmaps/linux/content/networking/netfilter.md b/src/data/roadmaps/linux/content/netfilter@bZ8Yj6QfBeDdh8hRM_aZs.md similarity index 63% rename from src/data/roadmaps/linux/content/networking/netfilter.md rename to src/data/roadmaps/linux/content/netfilter@bZ8Yj6QfBeDdh8hRM_aZs.md index d79216be7..d824d130c 100644 --- a/src/data/roadmaps/linux/content/networking/netfilter.md +++ b/src/data/roadmaps/linux/content/netfilter@bZ8Yj6QfBeDdh8hRM_aZs.md @@ -1,8 +1,6 @@ -# Netfilter +# Netfilter -Netfilter is a powerful tool included in Linux that provides the functionality for maneuvering and altering network packets. It is essentially a framework that acts as an interface between the kernel and the packet, allowing for the manipulation and transformation of packets in transit. - -Netfilter's primary application is in developing firewall systems and managing network address translations (NATs). In Linux, netfilter is extremely valuable due to the wide range of applications it offers, from traffic control, packet modification, logging, and network intrusion detection. +Netfilter is a Linux kernel framework for manipulating and filtering network packets. It provides hooks at various stages (prerouting, input, forward, output, postrouting) for custom functions. Primary applications include firewalls and NAT management. Works with iptables for configuration. Essential for traffic control, packet modification, logging, and intrusion detection in Linux systems. The structure of netfilter allows for custom functions, often referred to as hooks, to be inserted into the kernel's networking stack. These hooks can manipulate or inspect packets at various stages like prerouting, local in, forward, local out, and postrouting. diff --git a/src/data/roadmaps/linux/content/troubleshooting/netstat.md b/src/data/roadmaps/linux/content/netstat@yrxNYMluJ9OAQCKuM5W1u.md similarity index 52% rename from src/data/roadmaps/linux/content/troubleshooting/netstat.md rename to src/data/roadmaps/linux/content/netstat@yrxNYMluJ9OAQCKuM5W1u.md index 31b30cf65..fbf931af1 100644 --- a/src/data/roadmaps/linux/content/troubleshooting/netstat.md +++ b/src/data/roadmaps/linux/content/netstat@yrxNYMluJ9OAQCKuM5W1u.md @@ -1,6 +1,6 @@ -# Netstat +# Netstat -Netstat, short for network statistics, is a built-in command-line tool used in Linux systems for network troubleshooting and performance measurement. It provides statistics for protocols, a list of open ports, routing table information, and other important network details. Administrators and developers work with netstat to examine network issues and understand how a system communicates with others. +Netstat is a command-line tool for network troubleshooting and performance measurement in Linux. It provides network statistics, open ports, routing table information, and protocol details. Use options like `-n` for numerical addresses, `-c` for continuous monitoring, and `-t`/`-u` for specific protocols. Example: `netstat -n` lists all connections with numerical values. Its functionality is extended owing to various command-line options it supports, which could be used singularly or combinedly to fine-tune the output. These might include displaying numerical addresses instead of names (`-n`), continuous monitoring (`-c`), or spotting connections on a specific protocol (`-t`, `-u`). diff --git a/src/data/roadmaps/linux/content/networking/dns-resolution.md b/src/data/roadmaps/linux/content/networking/dns-resolution.md deleted file mode 100644 index 6b6e774d1..000000000 --- a/src/data/roadmaps/linux/content/networking/dns-resolution.md +++ /dev/null @@ -1,19 +0,0 @@ -# DNS Resolution in Networking on Linux - -Domain Name System (DNS) is a decentralized system used for converting hostnames into IP addresses, making it easier for users to access websites without having to remember specific numeric IP addresses. DNS resolution, therefore, is a critical aspect of networking in Linux. - -On Linux systems, when an application needs to connect to a certain URL, it consults the DNS resolver. This resolver, using the file `/etc/resolv.conf`, communicates with the DNS server, which then converts the URL into an IP address to establish a network connection. - -Below command is used to query DNS and fetch IP addresses: - -```bash -nslookup www.example.com -``` - -Or using dig command: - -```bash -dig www.example.com -``` - -Getting a good understanding of the DNS resolution process provides a solid base for tasks like network troubleshooting and web server setup on a Linux system. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/networking/ethernet-arp-rarp.md b/src/data/roadmaps/linux/content/networking/ethernet-arp-rarp.md deleted file mode 100644 index 22c5c0e4b..000000000 --- a/src/data/roadmaps/linux/content/networking/ethernet-arp-rarp.md +++ /dev/null @@ -1,14 +0,0 @@ -# Ethernet, ARP and RARP - -Linux serves as a prevalent OS choice for networking due to its robust, customizable, and open-source nature. Understanding networking in Linux involves comprehending various protocols and tools. Three crucial components of this landscape include Ethernet, ARP (Address Resolution Protocol), and RARP (Reverse Address Resolution Protocol). - -- Ethernet: It's the most widely installed LAN (Local Area Network) technology, allowing devices to communicate within a local area network. -- ARP: As per its name, it provides address resolution, translating IP addresses into MAC (Media Access Control) addresses, facilitating more direct network communication. -- RARP: It is the Reverse Address Resolution Protocol, working in the opposite way to ARP. It converts MAC addresses into IP addresses, which is useful in scenarios when a computer knows its MAC address but needs to find out its IP address. - -Knowledge of these components is indispensable in diagnosing and managing networking issues in Linux. - -Visit the following resources to learn more: - -- [@video@ARP Explained - Address Resolution Protocol](https://www.youtube.com/watch?v=cn8Zxh9bPio) -- [@video@What is Ethernet?](https://www.youtube.com/watch?v=HLziLmaYsO0) diff --git a/src/data/roadmaps/linux/content/networking/file-transfer.md b/src/data/roadmaps/linux/content/networking/file-transfer.md deleted file mode 100644 index 1c1358db1..000000000 --- a/src/data/roadmaps/linux/content/networking/file-transfer.md +++ /dev/null @@ -1,13 +0,0 @@ -# Linux File Transfer under Networking - -In Linux, file transfer is an act of copying or moving a file from one computer to another over a network connection. This concept is essential for system administrators and end-users who require the ability to share files between systems or networks. - -Linux provides several command-line tools and applications for network-based file transfers. These tools support various standard protocols such as FTP, HTTP, SCP, SFTP, and NFS. Some of the most well-known commands for file transfer include `scp`, `rsync`, and `wget`. - -For instance, when transferring a file from a local machine to a remote server, the `scp` command can be utilized as follows: -```bash -scp /path/to/local/file username@remote:/path/to/destination -``` -This command would copy the file to the designated remote system. - -Understanding and efficiently using these tools can make the task of file sharing over networks streamlined, easier, and more secure. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/networking/index.md b/src/data/roadmaps/linux/content/networking/index.md deleted file mode 100644 index 9e61a8380..000000000 --- a/src/data/roadmaps/linux/content/networking/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# Networking - -Networking is a crucial aspect in the Linux environment. It enables Linux systems to connect, interact, and share resources with other systems, be it Linux, Windows, macOS or any other operating system. Linux provides a wealth of tools and commands to manage network interfaces, view their configuration details, troubleshoot issues and automate tasks, demonstrating its robustness and versatility. The Linux networking stack is well-regarded for its performance, its ability to run large-scale and exhaustive configurations, and its support for a wide variety of network protocols. - -Linux adopts a file-based approach for network configuration, storing network-related settings and configurations in standard files, such as /etc/network/interfaces or /etc/sysconfig/network-scripts/, depending on the Linux distribution. - -Perhaps one of the most popular commands related to networking on a Linux system is the `ifconfig` command: - -```bash -ifconfig -``` - -This will output information about all network interfaces currently active on the system. However, please note that `ifconfig` is becoming obsolete and being replaced by `ip`, which offers more features and capabilities. diff --git a/src/data/roadmaps/linux/content/networking/subnetting.md b/src/data/roadmaps/linux/content/networking/subnetting.md deleted file mode 100644 index 3e9a51fd3..000000000 --- a/src/data/roadmaps/linux/content/networking/subnetting.md +++ /dev/null @@ -1,15 +0,0 @@ -# Subnetting - -Subnetting is a critical process in Linux networking. This practice involves dividing a network into two or more networks, known as subnets. Subnetting helps improve network performance and security. In Linux, subnetting can be managed within the context of the Internet Protocol (IP) addressing scheme, where it's crucial in organizing and managing IP addresses within a network, preventing IP conflicts and efficiently utilizing IP address ranges. This technique is invaluable in large complex Linux networking environments where IP address management can become overwhelmingly intricate. - -Generally, the following commands are used in Linux for subnetting: - -```shell -# Display current routing table -$ route -n - -# Add a new subnet -$ route add -net xxx.xxx.xxx.x/xx gw yyy.yyy.yyy.y -``` - -Please replace the `xxx.xxx.xxx.x/xx` with your desired subnet address and network mask and replace `yyy.yyy.yyy.y` with the intended default gateway for the subnet. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/networking@Mb42VFjCzMZn_PovKIfKx.md b/src/data/roadmaps/linux/content/networking@Mb42VFjCzMZn_PovKIfKx.md new file mode 100644 index 000000000..63110d0be --- /dev/null +++ b/src/data/roadmaps/linux/content/networking@Mb42VFjCzMZn_PovKIfKx.md @@ -0,0 +1,13 @@ +# Networking + +Linux networking enables systems to connect and share resources across different platforms. It provides robust tools for managing network interfaces, troubleshooting, and automation. Network configurations are stored in files like `/etc/network/interfaces`. Common commands include `ifconfig` (deprecated) and `ip` for interface management. Linux networking supports various protocols and scales well. + +Linux adopts a file-based approach for network configuration, storing network-related settings and configurations in standard files, such as /etc/network/interfaces or /etc/sysconfig/network-scripts/, depending on the Linux distribution. + +Perhaps one of the most popular commands related to networking on a Linux system is the `ifconfig` command: + +```bash +ifconfig +``` + +This will output information about all network interfaces currently active on the system. However, please note that `ifconfig` is becoming obsolete and being replaced by `ip`, which offers more features and capabilities. diff --git a/src/data/roadmaps/linux/content/nl@YSfGrmT795miIeIZrtC3D.md b/src/data/roadmaps/linux/content/nl@YSfGrmT795miIeIZrtC3D.md new file mode 100644 index 000000000..dd7c22c61 --- /dev/null +++ b/src/data/roadmaps/linux/content/nl@YSfGrmT795miIeIZrtC3D.md @@ -0,0 +1,7 @@ +# NL (Number Lines) + +The `nl` command numbers lines in text files, providing an overview of line locations. By default, it numbers only non-empty lines, but this behavior can be modified. Syntax: `nl [options] [file_name]`. If no file is specified, nl reads from stdin. Valuable for text processing when line numbers are needed for reference or debugging purposes. + +Learn more from the following resources: + +- [@article@Linux nl Command: Line Numbering](https://labex.io/tutorials/linux-linux-nl-command-line-numbering-210988) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/package-management/index.md b/src/data/roadmaps/linux/content/package-management/index.md deleted file mode 100644 index 130814937..000000000 --- a/src/data/roadmaps/linux/content/package-management/index.md +++ /dev/null @@ -1,17 +0,0 @@ -# Package Management - -Package Management is a crucial concept in Linux that aids in the handling of packages (collections of files). It not only allows the user to install new software with single commands but also helps manage existing ones. This includes installing, updating, configuring, and removing software packages. Package management incorporates a standardized system that keeps track of every software's prerequisites and takes care of installation, updates and removal. - -Linux distributions use various package managers. Some of the commonly used are `apt` (Advanced Packaging Tool) for Debian-based distributions, `yum` (Yellowdog Updater, Modified) and `dnf` (Dandified YUM) for Red-Hat-based distributions, and `pacman` for Arch Linux. - -For instance, to install a package in a Debian-based distribution, you would use the following command in apt: - -```bash -sudo apt install -``` - -Such vital features have made package management systems an integral part of Linux distributions, allowing users to handle applications efficiently. - -Learn more from the following resources: - -- [@article@Software Installation on Linux](https://labex.io/tutorials/linux-software-installation-on-linux-18005) diff --git a/src/data/roadmaps/linux/content/package-management/listing-installed-packages.md b/src/data/roadmaps/linux/content/package-management/listing-installed-packages.md deleted file mode 100644 index 6b3b1b115..000000000 --- a/src/data/roadmaps/linux/content/package-management/listing-installed-packages.md +++ /dev/null @@ -1,19 +0,0 @@ -# Listing Installed Packages - -Linux, known for its robustness and flexibility, provides several package managers that aid in software management. These package managers help us to install, update, or remove software in a systematic way. Each Linux distribution may come with its own package management system. Examples include `apt` in Debian-based systems, `dnf` in Fedora, `zypper` in OpenSUSE, and `pacman` in Arch Linux. - -One common task you may often need is listing installed packages in your system. This task can help in various scenarios like auditing installed software, scripting or automating deployment of software on new machines. - -Below is the command for listing installed packages in an `apt` package manager: - -```shell -sudo apt list --installed -``` - -For `dnf` package manager, you would use: - -```shell -dnf list installed -``` - -Remember, different distributions will have their own syntax for this command. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/package-management/snap.md b/src/data/roadmaps/linux/content/package-management/snap.md deleted file mode 100644 index 3783ce6fb..000000000 --- a/src/data/roadmaps/linux/content/package-management/snap.md +++ /dev/null @@ -1,12 +0,0 @@ -# Snap - -Snap is a modern approach to package management in Linux systems promoted by Canonical (the company behind Ubuntu). Unlike traditional package management systems such as dpkg or RPM, Snap focuses on providing software as self-contained packages (known as 'Snaps') that include all of their dependencies. This ensures that a Snap application runs consistently across a variety of different Linux distributions. - -Snaps are installed from a Snapcraft store and are automatically updated in the background. The Snap update process is transactional, meaning if something goes wrong during an update, Snap can automatically revert to the previous working version. - -Here is a simple example of a snap command: - -```sh -sudo snap install [package-name] -``` -In the command above, `[package-name]` is the name of the snap package you want to install. You must run this command as the superuser (sudo), as root privileges are needed to install packages. diff --git a/src/data/roadmaps/linux/content/package-management@4eINX8jYMJxfYh7ZV47YI.md b/src/data/roadmaps/linux/content/package-management@4eINX8jYMJxfYh7ZV47YI.md new file mode 100644 index 000000000..34282426f --- /dev/null +++ b/src/data/roadmaps/linux/content/package-management@4eINX8jYMJxfYh7ZV47YI.md @@ -0,0 +1,7 @@ +# Package Management + +Package management handles software installation, updates, configuration, and removal in Linux. It manages collections of files and tracks software prerequisites automatically. Common package managers include `apt` (Debian-based), `yum`/`dnf` (Red Hat-based), and `pacman` (Arch). Example: `sudo apt install ` installs packages. Essential for efficient application management. + +Learn more from the following resources: + +- [@article@Software Installation on Linux](https://labex.io/tutorials/linux-software-installation-on-linux-18005) diff --git a/src/data/roadmaps/linux/content/package-repositories@2oQiuQ2j02SCt9t5eV6hg.md b/src/data/roadmaps/linux/content/package-repositories@2oQiuQ2j02SCt9t5eV6hg.md new file mode 100644 index 000000000..820a2003b --- /dev/null +++ b/src/data/roadmaps/linux/content/package-repositories@2oQiuQ2j02SCt9t5eV6hg.md @@ -0,0 +1,11 @@ +# Package Repositories + +Package repositories are storage locations containing software packages for Linux distributions. They enable easy installation, updates, and dependency management through package managers like apt, yum, or dnf. Each distribution has pre-configured repositories with tested, secure packages. Use commands like `apt update` or `yum update` to sync with repositories. + +``` +sudo apt update # command to update the repository in Ubuntu +sudo yum update # command to update the repository in CentOS or Fedora +raco pkg update # command in Racket to update all installed packages +``` + +These repositories are what make Linux a force to reckon with when it comes to software management with an element of security ensuring that the users only install software that is secure and reliable. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/packet-analysis@7seneb4TWts4v1_x8xlcZ.md b/src/data/roadmaps/linux/content/packet-analysis@7seneb4TWts4v1_x8xlcZ.md new file mode 100644 index 000000000..1104a3253 --- /dev/null +++ b/src/data/roadmaps/linux/content/packet-analysis@7seneb4TWts4v1_x8xlcZ.md @@ -0,0 +1,11 @@ +# Packet Analysis + +Packet analysis is a key Linux network troubleshooting skill involving capturing and analyzing network traffic to identify performance issues, connectivity problems, and security vulnerabilities. Tools like tcpdump and Wireshark provide packet-level details for network diagnostics. Use `sudo tcpdump -i eth0` to capture packets on the eth0 interface for debugging network protocols. + +A basic example of using tcpdump to capture packets in a Linux system command might look like this: + +```sh +sudo tcpdump -i eth0 +``` + +This command captures and displays packets being transmitted or received over the `eth0` network interface. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/paste.md b/src/data/roadmaps/linux/content/paste@5658kdqJw-pIOyyhll80a.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/paste.md rename to src/data/roadmaps/linux/content/paste@5658kdqJw-pIOyyhll80a.md diff --git a/src/data/roadmaps/linux/content/permissions@L6RMExeqi9501y-eCHDt1.md b/src/data/roadmaps/linux/content/permissions@L6RMExeqi9501y-eCHDt1.md new file mode 100644 index 000000000..93b8b9f2c --- /dev/null +++ b/src/data/roadmaps/linux/content/permissions@L6RMExeqi9501y-eCHDt1.md @@ -0,0 +1,8 @@ +# Permissions + +Linux permissions control file and directory access for users, groups, and others with read, write, and execute types. Commands include `chmod` (change permissions), `chown` (change owner), and `chgrp` (change group). Proper permission management is crucial for system security and organization. Essential for maintaining controlled access to system resources. + +Learn more from the following resources: + +- [@article@Linux file permissions explained](https://www.redhat.com/sysadmin/linux-file-permissions-explained) +- [@video@Linux file permissions in 5 minutes](https://www.youtube.com/watch?v=LnKoncbQBsM) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/working-with-files/permissions.md b/src/data/roadmaps/linux/content/permissions@TnrT-cqMA8urew9nLv0Ns.md similarity index 100% rename from src/data/roadmaps/linux/content/working-with-files/permissions.md rename to src/data/roadmaps/linux/content/permissions@TnrT-cqMA8urew9nLv0Ns.md diff --git a/src/data/roadmaps/linux/content/ping@Uc36t92UAlILgM3_XxcMG.md b/src/data/roadmaps/linux/content/ping@Uc36t92UAlILgM3_XxcMG.md new file mode 100644 index 000000000..9d3dbb58e --- /dev/null +++ b/src/data/roadmaps/linux/content/ping@Uc36t92UAlILgM3_XxcMG.md @@ -0,0 +1,8 @@ +# Ping + +The `ping` command is essential for Linux network troubleshooting, checking connectivity between your host and target machines. It sends ICMP ECHO_REQUEST packets and listens for ECHO_RESPONSE returns, providing insights into connection health and speed. Use `ping ` to diagnose network connectivity issues and identify reachability problems efficiently. + +```bash +ping +``` +If there is any issue reaching the target host, `ping` can identify this and provide feedback, making it an essential component in troubleshooting network issues. In many cases, it is the first tool a Linux user will turn to when diagnosing network connectivity problems. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/pipe.md b/src/data/roadmaps/linux/content/pipe@v32PJl4fzIFTOirOm6G44.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/pipe.md rename to src/data/roadmaps/linux/content/pipe@v32PJl4fzIFTOirOm6G44.md diff --git a/src/data/roadmaps/linux/content/proc-forking@Rib7h9lh_ndiXkwNbftz_.md b/src/data/roadmaps/linux/content/proc-forking@Rib7h9lh_ndiXkwNbftz_.md new file mode 100644 index 000000000..ecada22b2 --- /dev/null +++ b/src/data/roadmaps/linux/content/proc-forking@Rib7h9lh_ndiXkwNbftz_.md @@ -0,0 +1,28 @@ +# Process Forking + +Process forking uses the `fork()` system call to create child processes from parent processes, enabling concurrent execution. Child processes are nearly perfect copies of parents with different PIDs. Changes in child processes don't affect parents. Essential for understanding Linux process creation and control in multi-processing environments. + +Here's a basic code snippet of proc forking in C: + +```c +#include +#include +#include + +int main() +{ + pid_t child_pid; + + // Try creating a child process + child_pid = fork(); + + // If a child is successfully created + if(child_pid >= 0) + printf("Child created with PID: %d\n", child_pid); + else + printf("Fork failed\n"); + return 0; +} +``` + +In this snippet, `fork()` is used to created a new child process. If the process creation is successful, fork() returns the process ID of the child process. If unsuccessful, it returns a negative value. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/proc-priorities@5anSYRhaKIs3dCLWlvZfT.md b/src/data/roadmaps/linux/content/proc-priorities@5anSYRhaKIs3dCLWlvZfT.md new file mode 100644 index 000000000..426e481ab --- /dev/null +++ b/src/data/roadmaps/linux/content/proc-priorities@5anSYRhaKIs3dCLWlvZfT.md @@ -0,0 +1,7 @@ +# Process Priorities + +Linux assigns priority levels to processes for efficient resource utilization and execution timing. Priority values ("nice" values) range from -20 (highest) to +19 (lowest priority). View priorities with `ps -eo pid,pri,user,comm`. Change priorities using `renice -5 -p [PID]`. Essential for system performance optimization and CPU resource management. + +Here's a simple command in the Linux terminal to display the process ID, priority, and user for all processes: + +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/proc-signals@VkLWTvKnRXzvLGWza2v45.md b/src/data/roadmaps/linux/content/proc-signals@VkLWTvKnRXzvLGWza2v45.md new file mode 100644 index 000000000..d54ea8013 --- /dev/null +++ b/src/data/roadmaps/linux/content/proc-signals@VkLWTvKnRXzvLGWza2v45.md @@ -0,0 +1,3 @@ +# Process Signals + +Process signals are communication mechanisms in Linux that notify processes of synchronous or asynchronous events. Common signals include SIGINT, SIGSTOP, SIGKILL for interrupting, pausing, or terminating processes. Example: `kill -SIGSTOP 12345` suspends process with PID 12345 until SIGCONT is received. Essential for comprehensive process management and resource allocation. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/process-forking@Rib7h9lh_ndiXkwNbftz_.md b/src/data/roadmaps/linux/content/process-forking@Rib7h9lh_ndiXkwNbftz_.md new file mode 100644 index 000000000..8674f73a3 --- /dev/null +++ b/src/data/roadmaps/linux/content/process-forking@Rib7h9lh_ndiXkwNbftz_.md @@ -0,0 +1,28 @@ +# Process Forking + +Process forking allows a running process (parent) to create a copy of itself (child) using the `fork()` system call. The child process is nearly identical to the parent except for process ID and parent process ID. Both processes execute concurrently and independently - changes in one don't affect the other. This mechanism is fundamental for Linux process creation. + +Here's a basic code snippet of proc forking in C: + +```c +#include +#include +#include + +int main() +{ + pid_t child_pid; + + // Try creating a child process + child_pid = fork(); + + // If a child is successfully created + if(child_pid >= 0) + printf("Child created with PID: %d\n", child_pid); + else + printf("Fork failed\n"); + return 0; +} +``` + +In this snippet, `fork()` is used to created a new child process. If the process creation is successful, fork() returns the process ID of the child process. If unsuccessful, it returns a negative value. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/process-management/bg-fg-processes.md b/src/data/roadmaps/linux/content/process-management/bg-fg-processes.md deleted file mode 100644 index 5898f95ce..000000000 --- a/src/data/roadmaps/linux/content/process-management/bg-fg-processes.md +++ /dev/null @@ -1,26 +0,0 @@ -# Managing bg (background) and fg (foreground) Processes - -In Linux environment, a process can be run in either the foreground (fg) or the background (bg). The foreground process takes input directly from the user, displaying output and errors to the user's terminal. On the other hand, a background process runs independently of the user's actions, freeing up the terminal for other tasks. - -Typically, a process starts in the foreground. However, you can send it to the background by appending an ampersand (&) to the command or by using the `bg` command. Conversely, the `fg` command brings a background process to the foreground. - -Here's how you can send a running process to background: - -```bash -command & -``` - -Or if a process is already running: - -```bash -CTRL + Z # This will pause the process -bg # This resumes the paused process in the background -``` - -And to bring it back to the foreground: - -```bash -fg -``` - -These commands, `bg` and `fg` are part of job control in Unix-like operating systems, which lets you manage multiple tasks simultaneously from a single terminal. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/process-management/proc-forking.md b/src/data/roadmaps/linux/content/process-management/proc-forking.md deleted file mode 100644 index 8eec81f68..000000000 --- a/src/data/roadmaps/linux/content/process-management/proc-forking.md +++ /dev/null @@ -1,30 +0,0 @@ -# Process Forking in Process Management - -Process forking is a fundamental concept under process management in Linux systems. The term refers to the mechanism where a running process (parent process) can generate a copy of itself (child process), enabling concurrent execution of both processes. This is facilitated by the 'fork' system call. It is a prominent aspect in understanding the creation and control of processes in a Linux environment. - -The child process created by fork is a nearly perfect copy of the parent process with exception to just a few values including the process ID and parent process ID. Any changes made in the child process does not affect the parent process, and vice versa. - -Here's a basic code snippet of proc forking in C: - -```c -#include -#include -#include - -int main() -{ - pid_t child_pid; - - // Try creating a child process - child_pid = fork(); - - // If a child is successfully created - if(child_pid >= 0) - printf("Child created with PID: %d\n", child_pid); - else - printf("Fork failed\n"); - return 0; -} -``` - -In this snippet, `fork()` is used to created a new child process. If the process creation is successful, fork() returns the process ID of the child process. If unsuccessful, it returns a negative value. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/process-management/proc-priorities.md b/src/data/roadmaps/linux/content/process-management/proc-priorities.md deleted file mode 100644 index 78b4c31b9..000000000 --- a/src/data/roadmaps/linux/content/process-management/proc-priorities.md +++ /dev/null @@ -1,19 +0,0 @@ -# Proc Priorities Under Process Management - -In the Linux environment, every running task or essentially a "process" is assigned a certain priority level that impacts its execution timing. These priorities are instrumental in efficient system resource utilization, enabling Linux to fine-tune execution and allocate system resources smartly. - -The Linux kernel sorts processes in the proc structure, typically found under the `/proc` file system directory. This structure contains information about all active processes, including their priorities. The concept of proc priorities under process management refers to the priority accorded to each process by the system. This priority value (also known as "nice" value) ranges from -20 (highest priority) to +19 (lowest priority). - -By understanding and managing proc priorities, you can optimize system performance and control which processes receive more or less of the CPU's attention. - -Here's a simple command in the Linux terminal to display the process ID, priority, and user for all processes: - -```sh -ps -eo pid,pri,user,comm -``` - -To change the priority of any process, you can use the `renice` command: - -```sh -renice -5 -p [PID] # Increase priority by 5 units for process ID [PID] -``` diff --git a/src/data/roadmaps/linux/content/process-management/proc-signals.md b/src/data/roadmaps/linux/content/process-management/proc-signals.md deleted file mode 100644 index 18a9b919f..000000000 --- a/src/data/roadmaps/linux/content/process-management/proc-signals.md +++ /dev/null @@ -1,14 +0,0 @@ -# Proc Signals under Process Management - -In Linux, process management is a fundamental part of the system which involves creating, scheduling, terminating and coordinating the execution of processes. One crucial aspect of this is proc signals or process signals. - -Process signals are a form of communication mechanism in Unix and Linux systems. They provide a means to notify a process of synchronous or asynchronous events. There are a variety of signals like SIGINT, SIGSTOP, SIGKILL, etc. available which can be sent to a running process to interrupt, pause or terminate it. - -For instance, to send a SIGSTOP signal to a process with a PID of 12345 you would use `kill` command in terminal as follows: - -```bash -kill -SIGSTOP 12345 -``` -This will suspend the execution of the process until a SIGCONT signal is received. - -Understanding proc signals is essential for comprehensive process management and resource allocation in Linux. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/process-management/index.md b/src/data/roadmaps/linux/content/process-management@h01Y6dW09ChidlM2HYoav.md similarity index 77% rename from src/data/roadmaps/linux/content/process-management/index.md rename to src/data/roadmaps/linux/content/process-management@h01Y6dW09ChidlM2HYoav.md index a6ddf74d2..b2238b96d 100644 --- a/src/data/roadmaps/linux/content/process-management/index.md +++ b/src/data/roadmaps/linux/content/process-management@h01Y6dW09ChidlM2HYoav.md @@ -1,4 +1,6 @@ -# Process Management +# Process Management + +Linux treats every running program as a process. Process management commands help view, control, and manipulate these processes. Key commands: `ps aux` shows running processes, `top` provides live system view, `kill -SIGTERM pid` gracefully stops processes, `kill -SIGKILL pid` forcefully terminates processes. Essential for understanding and controlling Linux system operations effectively. Process management is integral part of any operating system and Linux is no different. Every program running on Linux, be it an application or a system operation, is treated as a process. These processes perform different tasks but work together to provide a seamless operating experience. diff --git a/src/data/roadmaps/linux/content/process-priorities@5anSYRhaKIs3dCLWlvZfT.md b/src/data/roadmaps/linux/content/process-priorities@5anSYRhaKIs3dCLWlvZfT.md new file mode 100644 index 000000000..622396767 --- /dev/null +++ b/src/data/roadmaps/linux/content/process-priorities@5anSYRhaKIs3dCLWlvZfT.md @@ -0,0 +1,7 @@ +# Process Priorities + +Linux assigns priority levels to processes, affecting execution timing and resource allocation. Process priorities use "nice" values ranging from -20 (highest priority) to +19 (lowest priority). The `/proc` filesystem contains process information including priorities. You can view priorities with `ps -eo pid,pri,user,comm` and modify them using `renice` command. + +Here's a simple command in the Linux terminal to display the process ID, priority, and user for all processes: + +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/process-signals@VkLWTvKnRXzvLGWza2v45.md b/src/data/roadmaps/linux/content/process-signals@VkLWTvKnRXzvLGWza2v45.md new file mode 100644 index 000000000..407919e05 --- /dev/null +++ b/src/data/roadmaps/linux/content/process-signals@VkLWTvKnRXzvLGWza2v45.md @@ -0,0 +1,12 @@ +# Process Signals + +Process signals are communication mechanisms in Linux that notify processes of synchronous or asynchronous events. Common signals include SIGINT, SIGSTOP, SIGKILL for interrupting, pausing, or terminating processes. Use the `kill` command to send signals to processes by PID. Understanding signals is essential for effective process management and system control. + +For instance, to send a SIGSTOP signal to a process with a PID of 12345 you would use `kill` command in terminal as follows: + +```bash +kill -SIGSTOP 12345 +``` +This will suspend the execution of the process until a SIGCONT signal is received. + +Understanding proc signals is essential for comprehensive process management and resource allocation in Linux. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/shell-basics/redirects.md b/src/data/roadmaps/linux/content/redirects@JgoZzx4BfK7tmosgpZOsf.md similarity index 100% rename from src/data/roadmaps/linux/content/shell-basics/redirects.md rename to src/data/roadmaps/linux/content/redirects@JgoZzx4BfK7tmosgpZOsf.md diff --git a/src/data/roadmaps/linux/content/package-management/repositories.md b/src/data/roadmaps/linux/content/repositories@2oQiuQ2j02SCt9t5eV6hg.md similarity index 75% rename from src/data/roadmaps/linux/content/package-management/repositories.md rename to src/data/roadmaps/linux/content/repositories@2oQiuQ2j02SCt9t5eV6hg.md index 10c4a57f8..dc77ce14e 100644 --- a/src/data/roadmaps/linux/content/package-management/repositories.md +++ b/src/data/roadmaps/linux/content/repositories@2oQiuQ2j02SCt9t5eV6hg.md @@ -2,7 +2,7 @@ Package management in Linux involves handling packages or modules of software, streamlining the process of installing, upgrading, and configuring Linux distributions. At the crux of pack management are repositories, critical components that store and manage collections of software packages. -A repository in Linux is a storage location from where the system retrieves and installs the necessary OS updates and applications. These repositories contain thousands of Software Packages or RPM Packages compiled for specific Linux distributions. +Repositories are storage locations containing collections of software packages for Linux distributions. They store thousands of compiled packages specific to each distribution (.deb for Debian/Ubuntu, .rpm for Fedora/CentOS). Repositories ensure secure, tested software with proper dependencies. Update commands: `sudo apt update` (Ubuntu), `sudo yum update` (CentOS/Fedora). Essential for secure software management. The specific repository used depends on the Linux distribution (like Ubuntu, Fedora, etc.) and the package format the distribution uses (like .deb in Debian and Ubuntu or .rpm in Fedora and CentOS). diff --git a/src/data/roadmaps/linux/content/server-review/auth-logs.md b/src/data/roadmaps/linux/content/server-review/auth-logs.md deleted file mode 100644 index 7d0911fcd..000000000 --- a/src/data/roadmaps/linux/content/server-review/auth-logs.md +++ /dev/null @@ -1,13 +0,0 @@ -# Auth Logs - -When dealing with a Linux server and its maintenance, one of the most critical components to regularly review is the auth logs. These logs, usually located in /var/log/auth.log (for Debian-based distributions) or /var/log/secure (for Red Hat and CentOS), record all authentication-related events and activities which have occurred on the server. This includes, among others, system logins, password changes, and issued sudo commands. - -Auth logs are an invaluable tool for monitoring and analyzing the security of your Linux server. They can indicate brute force login attacks, unauthorized access attempts, and any suspicious behavior. Regular analysis of these logs is a fundamental task in ensuring server security and data integrity. - -Here is an example of how you can use the `tail` command to view the last few entries of the authentication log: - -```bash -tail /var/log/auth.log -``` - -Get yourself familiar with reading and understanding auth logs, as it's one essential way to keep your server secure. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/server-review/index.md b/src/data/roadmaps/linux/content/server-review/index.md deleted file mode 100644 index f0448131c..000000000 --- a/src/data/roadmaps/linux/content/server-review/index.md +++ /dev/null @@ -1,18 +0,0 @@ -# Server Review - -The process of reviewing a server in Linux involves assessing the server's performance, security, and configuration to identify areas of improvement or any potential issues. The scope of the review can include checking security enhancements, examining log files, reviewing user accounts, analyzing the server’s network configuration, and checking its software versions. - -Linux, known for its stability and security, has become a staple on the back-end of many networks and servers worldwide. Depending on the distribution you are using, Linux offers multiple tools and commands to perform comprehensive server reviews. - -```bash -# A command often used for showing memory information -free -m - -# A command for showing disk usage -df -h - -# A command for showing CPU load -uptime -``` - -It is a critical task for System Administrators and DevOps professionals to routinely conduct server reviews to ensure the server's optimal performance, security, and reliability. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/server-review@jSzfQf0MlnXtWHCc-HYvr.md b/src/data/roadmaps/linux/content/server-review@jSzfQf0MlnXtWHCc-HYvr.md new file mode 100644 index 000000000..3b7ac81d9 --- /dev/null +++ b/src/data/roadmaps/linux/content/server-review@jSzfQf0MlnXtWHCc-HYvr.md @@ -0,0 +1,16 @@ +# Server Review + +Server review in Linux involves assessing performance, security, and configuration to identify improvements and issues. Check security enhancements, log files, user accounts, network configuration, and software versions. Common commands: `free -m` for memory, `df -h` for disk usage, `uptime` for CPU load. Critical task for system administrators and DevOps professionals to ensure optimal performance, security, and reliability. + +Linux, known for its stability and security, has become a staple on the back-end of many networks and servers worldwide. Depending on the distribution you are using, Linux offers multiple tools and commands to perform comprehensive server reviews. + +```bash +# A command often used for showing memory information +free -m + +# A command for showing disk usage +df -h + +# A command for showing CPU load +uptime +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/service-management-systemd@F1sU3O1ouxTOvpidDfN3k.md b/src/data/roadmaps/linux/content/service-management-systemd@F1sU3O1ouxTOvpidDfN3k.md new file mode 100644 index 000000000..9838bc87e --- /dev/null +++ b/src/data/roadmaps/linux/content/service-management-systemd@F1sU3O1ouxTOvpidDfN3k.md @@ -0,0 +1,7 @@ +# Service Management + +Service management in Linux controls system daemons during boot/shutdown processes. Modern Linux distributions use systemd for service management with commands like `systemctl start/stop/restart/status/enable/disable`. Services perform various background functions independent of user interfaces. Effective service management is essential for system stability and security. + +Learn more from the following resources: + +- [@article@How to Master Linux Service Management with Systemctl](https://labex.io/tutorials/linux-how-to-master-linux-service-management-with-systemctl-392864) diff --git a/src/data/roadmaps/linux/content/service-management/index.md b/src/data/roadmaps/linux/content/service-management/index.md deleted file mode 100644 index af909f075..000000000 --- a/src/data/roadmaps/linux/content/service-management/index.md +++ /dev/null @@ -1,23 +0,0 @@ -# Service Management - -Service Management in Linux refers to the system of controlling the services (or "daemons") that Linux starts and stops during the process of booting up and shutting down your computer. These services perform various functions and provide processes that aren't attached to the user interface. - -Linux systems, particularly system administrators, often need to manage these services, such as starting or stopping them, enabling or disabling them at boot time, etc. Various commands involved in service management in Linux include `systemctl start`, `systemctl stop`, `systemctl restart`, `systemctl reload`, `systemctl status`, and `systemctl enable/disable`, among others. - -In modern Linux distros, service management is primarily handled by systemd but in older or minimalistic distros, it's handled by older systems like SystemV or Upstart. - -Here's a basic example of starting and checking the status of a service (e.g., sshd service) using systemctl: - -```bash -# Start sshd service -sudo systemctl start sshd - -# Check status of sshd service -sudo systemctl status sshd -``` - -Managing services is a key skill in Linux system administration and essential for maintaining a secure and stable system. - -Learn more from the following resources: - -- [@article@How to Master Linux Service Management with Systemctl](https://labex.io/tutorials/linux-how-to-master-linux-service-management-with-systemctl-392864) diff --git a/src/data/roadmaps/linux/content/service-management@F1sU3O1ouxTOvpidDfN3k.md b/src/data/roadmaps/linux/content/service-management@F1sU3O1ouxTOvpidDfN3k.md new file mode 100644 index 000000000..ff385b504 --- /dev/null +++ b/src/data/roadmaps/linux/content/service-management@F1sU3O1ouxTOvpidDfN3k.md @@ -0,0 +1,7 @@ +# Service Management + +Service management controls Linux services (daemons) during boot and shutdown processes. Common systemctl commands include start, stop, restart, reload, status, enable/disable. Modern Linux uses systemd while older systems use SystemV or Upstart. Example: `sudo systemctl start sshd` starts SSH service. Essential skill for Linux system administration and maintaining secure, stable systems. + +Learn more from the following resources: + +- [@article@How to Master Linux Service Management with Systemctl](https://labex.io/tutorials/linux-how-to-master-linux-service-management-with-systemctl-392864) diff --git a/src/data/roadmaps/linux/content/service-management/service-status.md b/src/data/roadmaps/linux/content/service-status@34UUrc8Yjc_8lvTL8itc3.md similarity index 66% rename from src/data/roadmaps/linux/content/service-management/service-status.md rename to src/data/roadmaps/linux/content/service-status@34UUrc8Yjc_8lvTL8itc3.md index 1262bb0a6..adfc78e3c 100644 --- a/src/data/roadmaps/linux/content/service-management/service-status.md +++ b/src/data/roadmaps/linux/content/service-status@34UUrc8Yjc_8lvTL8itc3.md @@ -1,6 +1,6 @@ # Service Status -In Linux, service status is a critical part of service management. It is used to understand the current state of any given service running on a Linux-based system. Services can include network processes, backend servers, or any application running in the background. +Service status shows the current state of Linux services including network processes, backend servers, and background applications. Use `systemctl status service_name` to check service states through systemd manager. Example: `systemctl status apache2.service` shows Apache web server status. Essential for diagnosing problems, maintaining performance, and preventing service downtimes. The command `systemctl` is the predominantly used command for controlling the `systemd` system and service manager. The `status` command in conjunction with `systemctl` is particularly useful for checking the state of the service. This command allows administrators to query and control the state of a systemd system and service manager. diff --git a/src/data/roadmaps/linux/content/server-review/services-running.md b/src/data/roadmaps/linux/content/services-running@ewUuI_x-YhOQIYd3MTgJJ.md similarity index 100% rename from src/data/roadmaps/linux/content/server-review/services-running.md rename to src/data/roadmaps/linux/content/services-running@ewUuI_x-YhOQIYd3MTgJJ.md diff --git a/src/data/roadmaps/linux/content/shell-and-other-basics@8QBMyL8D5jPovxN8jyZW9.md b/src/data/roadmaps/linux/content/shell-and-other-basics@8QBMyL8D5jPovxN8jyZW9.md new file mode 100644 index 000000000..28ee12818 --- /dev/null +++ b/src/data/roadmaps/linux/content/shell-and-other-basics@8QBMyL8D5jPovxN8jyZW9.md @@ -0,0 +1,11 @@ +# Shell Basics + +The Linux shell is a command-line interface that acts as an intermediary between users and the system kernel. Common shells include Bash, sh, and csh. Basic operations involve navigating directories, creating/deleting files, and executing commands. Shell knowledge is fundamental for Linux administration, scripting, and automation tasks. + +This is a follow up exercise to make your first bash script. Please run the commands in the terminal one by one and try to understand what they do: +``` +touch my_first_script.sh +chmod +x my_first_script.sh +echo "date" > my_first_script.sh +./my_first_script.sh +``` diff --git a/src/data/roadmaps/linux/content/shell-basics/index.md b/src/data/roadmaps/linux/content/shell-basics@8QBMyL8D5jPovxN8jyZW9.md similarity index 100% rename from src/data/roadmaps/linux/content/shell-basics/index.md rename to src/data/roadmaps/linux/content/shell-basics@8QBMyL8D5jPovxN8jyZW9.md diff --git a/src/data/roadmaps/linux/content/shell-programming/conditionals.md b/src/data/roadmaps/linux/content/shell-programming/conditionals.md deleted file mode 100644 index 9344214e7..000000000 --- a/src/data/roadmaps/linux/content/shell-programming/conditionals.md +++ /dev/null @@ -1,25 +0,0 @@ -# Conditionals in Shell Programming - -Conditional statements in Linux Shell Programming allow scripts to make decisions based on conditions. These are integral part of any programming language and just like other languages such as C, Python, JavaScript, Linux Shell also provides conditional statements. A conditional statement can be defined as an integral part of the shell script which guides the interpreter into the correct path of execution depending on the given conditions. - -In shell, the main commands that are used for conditionals statements are `if`, `elif` (else if), and `else`. These commands are used for process control based on the results of conditional tests which can evaluate the value of string variables, arithmetic tests, or the status of a process. - -Here's a simple illustration of how they work: - -```bash -#!/bin/sh -a=10 -b=20 - -if [ $a -lt 20 ] -then - echo "a is less than b" -elif [ $a -gt 20 ] -then - echo "a is greater than b" -else - echo "a is equal to b" -fi -``` - -In the above script, the condition inside the `if` statement is being checked. If the condition is `true`, then the code block inside the `if` statement gets executed, otherwise, it moves to the `elif` condition and so on. If none of those conditions is satisfied, then the code block inside the `else` statement will be executed. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/shell-programming/debugging.md b/src/data/roadmaps/linux/content/shell-programming/debugging.md deleted file mode 100644 index b44391655..000000000 --- a/src/data/roadmaps/linux/content/shell-programming/debugging.md +++ /dev/null @@ -1,22 +0,0 @@ -# Debugging in Shell Programming Under Linux - -Linux is a robust and flexible operating system that many developers and systems administrators prefer for its versatility and power. In particular, shell programming in Linux allows you to automate tasks and manage systems with high efficiency. However, given the intricate nature of shell scripts, debugging is an essential skill to handle errors and improve code performance. - -When encountering an issue in a shell script, you have several debugging tools at your disposal in a Linux environment. These aid in detecting, tracing, and fixing errors or bugs in your shell scripts. Some of these debugging tools include the bash shell's `-x` (or `-v`) options, which allow for execution traces. Other tools like `trap`, `set` command, or even leveraging external debugging tools such as `shellcheck` can also be highly effective. - -Consider opening your shell script with the -x option for execution tracing, like so: - -```bash -#!/bin/bash -x -``` - -Or, you can run a script in debug mode directly from the command line. - -```bash -bash -x script.sh -``` - -These debugging tools and options can drastically help you in making your scripts more error-proof and efficient. - -Visit the following sources to learn more: -- [@official@Official Bashdb Documentation](https://bashdb.readthedocs.io/en/latest/) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/shell-programming/index.md b/src/data/roadmaps/linux/content/shell-programming/index.md deleted file mode 100644 index f5221c891..000000000 --- a/src/data/roadmaps/linux/content/shell-programming/index.md +++ /dev/null @@ -1,18 +0,0 @@ -# Shell Programming - -Shell programming, also known as shell scripting, is an integral part of the Linux operating system. A shell script is essentially a program that the system's shell executes. While it may not be as powerful as compiled languages like C or C++, shell programming is quite potent for administrative-level tasks, automating repetitive tasks, and system monitoring. - -Most Linux distributions come with bash (Bourne Again Shell) as the default shell which is not only an excellent command-line shell, but also an outstanding scripting language. Shell scripts are generally written in a text editor and then can be run directly from the Linux command line. - -A simple example of a bash shell script: - -```bash -#!/bin/bash -# My first script -echo "Hello, World!" -``` -The 'echo' command prints its argument, in this case "Hello, World!", to the terminal. - -Visit the following resources to learn more: - -- [@video@Bash Scripting on Linux - YT Playlist](https://youtube.com/playlist?list=PLT98CRl2KxKGj-VKtApD8-zCqSaN2mD4w&si=MSehStqnhSqgoMSj) diff --git a/src/data/roadmaps/linux/content/shell-programming/literals.md b/src/data/roadmaps/linux/content/shell-programming/literals.md deleted file mode 100644 index dc56c2246..000000000 --- a/src/data/roadmaps/linux/content/shell-programming/literals.md +++ /dev/null @@ -1,25 +0,0 @@ -# Literals in Shell Programming on Linux - -In a Linux environment, shell scripting is an essential part of system operation and application development. One key aspect of shell scripting is the use of literals. The term 'literal', in computer science and shell programming, refers to a notation for representing a fixed value in source code. In shell scripts, these fixed values can include string literals, numeric literals or a boolean. When reading and understanding existing scripts or writing new ones, it's crucial to understand how and when to use these literals. Some basic shell script literals under Linux are listed below: - -String Literals: They can be defined by enclosing the text between either single or double quotes. For instance, 'Hello, world!' or "Hello, world!". - -Numeric Literals: They represent a sequence of digits. For example, 25, 100, or 1234. - -Boolean Literals: In most of the Linux shell scripts, 1 represents true, and 0 represents false. - -Be mindful of the type of literal you're using as it can significantly influence your scripting, your code's readability, and its overall functionality. - -```bash -#!/bin/bash -# Example of literals in shell script - -StringLiteral="This is a string literal" -NumericLiteral=125 -echo $StringLiteral -echo $NumericLiteral -``` - -In this example, `StringLiteral` and `NumericLiteral` are literals and `echo` is used to print them. - -Always remember, a good understanding of literals is fundamental when it comes to shell scripting in Linux. diff --git a/src/data/roadmaps/linux/content/shell-programming/variables.md b/src/data/roadmaps/linux/content/shell-programming/variables.md deleted file mode 100644 index bb9a8d17f..000000000 --- a/src/data/roadmaps/linux/content/shell-programming/variables.md +++ /dev/null @@ -1,15 +0,0 @@ -# Variables in Shell Programming on Linux - -In the context of Shell Programming on Linux, a variable is a character string that can store system data or user-defined data. It is a symbolic name that is assigned to an amount of storage space that can change its value during the execution of the program. Variables play a vital role in any programming paradigm, and shell scripting is no different. - -Variables fall into two broad categories: **System Variables** and **User-Defined Variables**. System variables are created and maintained by the Linux system itself. Examples include PATH, HOME, and PWD. User-defined variables, on the other hand, are created and controlled by the user. - -A variable in shell scripting is defined by the '=' (equals) operator, and the value can be retrieved by prefixing the variable name with a '$' (dollar) sign. - -```bash -# Create a User-Defined Variable -MY_VARIABLE="Hello World" - -# Print the value of the Variable -echo $MY_VARIABLE # Output: Hello World -``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/shell-programming@4tFZ1PLpz50bddf7zSFrW.md b/src/data/roadmaps/linux/content/shell-programming@4tFZ1PLpz50bddf7zSFrW.md new file mode 100644 index 000000000..291aea79c --- /dev/null +++ b/src/data/roadmaps/linux/content/shell-programming@4tFZ1PLpz50bddf7zSFrW.md @@ -0,0 +1,7 @@ +# Shell Programming + +Shell programming (scripting) automates administrative tasks, repetitive operations, and system monitoring in Linux. Bash is the default shell and scripting language in most distributions. Scripts are text files executed by the shell, excellent for system automation. Example: `#!/bin/bash echo "Hello, World!"` creates a simple script that prints output to terminal. + +Visit the following resources to learn more: + +- [@video@Bash Scripting on Linux - YT Playlist](https://youtube.com/playlist?list=PLT98CRl2KxKGj-VKtApD8-zCqSaN2mD4w&si=MSehStqnhSqgoMSj) diff --git a/src/data/roadmaps/linux/content/snap@eKyMZn30UxQeBZQ7FxFbF.md b/src/data/roadmaps/linux/content/snap@eKyMZn30UxQeBZQ7FxFbF.md new file mode 100644 index 000000000..f8f03da0f --- /dev/null +++ b/src/data/roadmaps/linux/content/snap@eKyMZn30UxQeBZQ7FxFbF.md @@ -0,0 +1,9 @@ +# Snap + +Snap is a modern Linux package management system by Canonical providing self-contained packages with all dependencies included. Snaps run consistently across different Linux distributions, install from Snapcraft store, and update automatically. Updates are transactional with automatic rollback on failure. Install packages using `sudo snap install [package-name]` command. + +Here is a simple example of a snap command: + +```sh +sudo snap install [package-name] +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/working-with-files/soft-hard-links.md b/src/data/roadmaps/linux/content/soft-hard-links@KaXHG_EKxI5PUXmcvlJt6.md similarity index 100% rename from src/data/roadmaps/linux/content/working-with-files/soft-hard-links.md rename to src/data/roadmaps/linux/content/soft-hard-links@KaXHG_EKxI5PUXmcvlJt6.md diff --git a/src/data/roadmaps/linux/content/soft-links--hard-links@KaXHG_EKxI5PUXmcvlJt6.md b/src/data/roadmaps/linux/content/soft-links--hard-links@KaXHG_EKxI5PUXmcvlJt6.md new file mode 100644 index 000000000..80e213124 --- /dev/null +++ b/src/data/roadmaps/linux/content/soft-links--hard-links@KaXHG_EKxI5PUXmcvlJt6.md @@ -0,0 +1,19 @@ +# Soft and Hard Links + +Linux supports two types of file links. Hard links share the same inode and data as the original file - if the original is deleted, data remains accessible. Soft links (symbolic links) are shortcuts pointing to the original file path - they break if the original is removed. Create with `ln` for hard links and `ln -s` for soft links. + +Below is an example of how to create a soft link and a hard link in Linux: + +```bash +# Create a hard link +ln source_file.txt hard_link.txt + +# Create a soft link +ln -s source_file.txt soft_link.txt +``` + +Please, understand that `source_file.txt` is the original file and `hard_link.txt` & `soft_link.txt` are the hard and soft links respectively. + +Learn more from the following resources: + +- [@article@How to understand the difference between hard and symbolic links in Linux](https://labex.io/tutorials/linux-how-to-understand-the-difference-between-hard-and-symbolic-links-in-linux-409929) diff --git a/src/data/roadmaps/linux/content/text-processing/sort.md b/src/data/roadmaps/linux/content/sort@1WRIy3xHtQfiQFZrprobP.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/sort.md rename to src/data/roadmaps/linux/content/sort@1WRIy3xHtQfiQFZrprobP.md diff --git a/src/data/roadmaps/linux/content/text-processing/split.md b/src/data/roadmaps/linux/content/split@Pl9s2ti25hsSEljXJvBTj.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/split.md rename to src/data/roadmaps/linux/content/split@Pl9s2ti25hsSEljXJvBTj.md diff --git a/src/data/roadmaps/linux/content/networking/ssh.md b/src/data/roadmaps/linux/content/ssh@uk6UMuI8Uhf02TBAGVeLS.md similarity index 58% rename from src/data/roadmaps/linux/content/networking/ssh.md rename to src/data/roadmaps/linux/content/ssh@uk6UMuI8Uhf02TBAGVeLS.md index 2c6650a57..d66ae3fed 100644 --- a/src/data/roadmaps/linux/content/networking/ssh.md +++ b/src/data/roadmaps/linux/content/ssh@uk6UMuI8Uhf02TBAGVeLS.md @@ -1,6 +1,6 @@ -# SSH (Secure Shell) +# SSH (Secure Shell) -In the domain of Linux networking, Secure Shell (SSH) holds a vital role. SSH is a cryptographic network protocol primarily used for secure data communication, remote command-line login, remote command execution, and other secure network services between two networked computers. Emphasizing confidentiality, integrity, and security of data during transmission, SSH offers a much safer method of remote access than its non-secure counterparts, such as Telnet. +SSH is a cryptographic network protocol for secure remote access, command execution, and data communication between networked computers. It provides confidentiality, integrity, and security during transmission, replacing insecure protocols like Telnet. Use `ssh username@server_ip_address` to connect to remote Linux servers. Essential for secure system administration and remote management. Given its importance and widespread usage, a solid understanding of its functionality is essential for anyone looking to navigate Linux operating systems and manage networks efficiently. diff --git a/src/data/roadmaps/linux/content/start-stop-service@FStz-bftQBK0M6zz2Bxl4.md b/src/data/roadmaps/linux/content/start-stop-service@FStz-bftQBK0M6zz2Bxl4.md new file mode 100644 index 000000000..e52af1d82 --- /dev/null +++ b/src/data/roadmaps/linux/content/start-stop-service@FStz-bftQBK0M6zz2Bxl4.md @@ -0,0 +1,3 @@ +# Start and Stop Services + +Linux service management controls system services like firewall, network, and database using `systemctl` commands. Basic operations: `sudo systemctl start service_name` (start), `sudo systemctl stop service_name` (stop), `sudo systemctl restart service_name` (restart). Root permissions required. Essential for system administrators managing updates and configuration changes. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/starting--stopping-services@DuEfJNrm4Jfmp8-8Pggrf.md b/src/data/roadmaps/linux/content/starting--stopping-services@DuEfJNrm4Jfmp8-8Pggrf.md new file mode 100644 index 000000000..4318101e0 --- /dev/null +++ b/src/data/roadmaps/linux/content/starting--stopping-services@DuEfJNrm4Jfmp8-8Pggrf.md @@ -0,0 +1,17 @@ +# Checking Service Logs + +System logs are essential for troubleshooting and monitoring Linux systems. Most logs are stored in `/var/log` directory and managed by systemd. Use `journalctl` to view system logs and `journalctl -u service_name` for specific service logs. The `dmesg` command displays kernel messages. Regular log monitoring is crucial for system administration. + +```shell +journalctl +``` + +This command will show the entire system log from the boot to the moment you're calling the journal. + +To display logs for a specific service, the `-u` option can be used followed by the service's name. + +```shell +journalctl -u service_name +``` + +Remember, understanding and monitoring your system logs will provide you a clear view of what's going on in your Linux environment. It is a vital skill worth developing to effectively manage and troubleshoot systems. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/stdout--stdin--stderr@t3fxSgCgtxuMtHjclPHA6.md b/src/data/roadmaps/linux/content/stdout--stdin--stderr@t3fxSgCgtxuMtHjclPHA6.md new file mode 100644 index 000000000..1c32141ef --- /dev/null +++ b/src/data/roadmaps/linux/content/stdout--stdin--stderr@t3fxSgCgtxuMtHjclPHA6.md @@ -0,0 +1,11 @@ +# Stdout, Stdin, and Stderr + +Linux processes use three standard data streams: STDIN (input), STDOUT (output), and STDERR (error messages). STDOUT handles normal command output while STDERR specifically handles error messages. You can redirect these streams using operators like `>` for stdout and `2>` for stderr, allowing separate handling of normal output and errors for better scripting and debugging. + +Here is an example code snippet showing how these channels are used: + +```bash +$ command > stdout.txt 2>stderr.txt +``` + +In this example, the ">" operator redirects the standard output (stdout) into a text file named stdout.txt, while "2>" redirects the standard error (stderr) into stderr.txt. This way, normal output and error messages are separately stored in distinct files for further examination or processing. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/stdout-in-err.md b/src/data/roadmaps/linux/content/stdout-in-err@t3fxSgCgtxuMtHjclPHA6.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/stdout-in-err.md rename to src/data/roadmaps/linux/content/stdout-in-err@t3fxSgCgtxuMtHjclPHA6.md diff --git a/src/data/roadmaps/linux/content/subnetting@Xszo9vXuwwXZo26seHehD.md b/src/data/roadmaps/linux/content/subnetting@Xszo9vXuwwXZo26seHehD.md new file mode 100644 index 000000000..a1286ec5e --- /dev/null +++ b/src/data/roadmaps/linux/content/subnetting@Xszo9vXuwwXZo26seHehD.md @@ -0,0 +1,15 @@ +# Subnetting + +Subnetting divides networks into smaller subnets to improve performance and security in Linux networking. It organizes IP addresses within IP addressing schemes, preventing conflicts and efficiently utilizing address ranges. Use `route -n` to view routing tables and `route add -net xxx.xxx.xxx.x/xx gw yyy.yyy.yyy.y` to add subnets. Essential for complex networking environments. + +Generally, the following commands are used in Linux for subnetting: + +```shell +# Display current routing table +$ route -n + +# Add a new subnet +$ route add -net xxx.xxx.xxx.x/xx gw yyy.yyy.yyy.y +``` + +Please replace the `xxx.xxx.xxx.x/xx` with your desired subnet address and network mask and replace `yyy.yyy.yyy.y` with the intended default gateway for the subnet. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/shell-basics/super-user.md b/src/data/roadmaps/linux/content/super-user@NIBSZGE9PskVrluJpdom0.md similarity index 100% rename from src/data/roadmaps/linux/content/shell-basics/super-user.md rename to src/data/roadmaps/linux/content/super-user@NIBSZGE9PskVrluJpdom0.md diff --git a/src/data/roadmaps/linux/content/disks-filesystems/swap.md b/src/data/roadmaps/linux/content/swap@AWosNs2nvDGV8r6WvgBI1.md similarity index 50% rename from src/data/roadmaps/linux/content/disks-filesystems/swap.md rename to src/data/roadmaps/linux/content/swap@AWosNs2nvDGV8r6WvgBI1.md index 37334601a..eea9816a3 100644 --- a/src/data/roadmaps/linux/content/disks-filesystems/swap.md +++ b/src/data/roadmaps/linux/content/swap@AWosNs2nvDGV8r6WvgBI1.md @@ -1,13 +1,6 @@ -# Linux Swap under Disks Filesystems +# Swap Space -Swap space in Linux is used when the amount of physical memory (RAM) is full. If the system needs more memory resources and the physical memory is full, inactive pages in memory are moved to the swap space. Swap space is a portion of a hard disk drive (HDD) that is used for virtual memory. - -Having swap space ensures that whenever your system runs low on physical memory, it can move some of the data to the swap, freeing up RAM space, but this comes with performance implications as disk-based storage is slower than RAM. - -In the context of disks and filesystems, the swap space can live in two places: - -1. In its own dedicated partition. -2. In a regular file within an existing filesystem. +Swap space extends physical memory by using disk storage when RAM is full. Inactive memory pages move to swap, freeing RAM but with performance impact due to slower disk access. Swap can exist as dedicated partitions or regular files. Create with `fallocate`, `mkswap`, and `swapon` commands. Critical for memory management and system stability optimization. For instance, to add a swap file, we might use the fallocate command to create a certain sized file for swap and the mkswap command to make it suitable for swap usage. diff --git a/src/data/roadmaps/linux/content/text-processing/tail.md b/src/data/roadmaps/linux/content/tail@Yyk28H6TiteZEGv6Aps1h.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/tail.md rename to src/data/roadmaps/linux/content/tail@Yyk28H6TiteZEGv6Aps1h.md diff --git a/src/data/roadmaps/linux/content/networking/tcp-ip.md b/src/data/roadmaps/linux/content/tcp-ip@0pciSsiQqIGJh3x8465_s.md similarity index 68% rename from src/data/roadmaps/linux/content/networking/tcp-ip.md rename to src/data/roadmaps/linux/content/tcp-ip@0pciSsiQqIGJh3x8465_s.md index c9aaed8fe..6ec06cdd3 100644 --- a/src/data/roadmaps/linux/content/networking/tcp-ip.md +++ b/src/data/roadmaps/linux/content/tcp-ip@0pciSsiQqIGJh3x8465_s.md @@ -1,4 +1,6 @@ -# TCP/IP +# TCP/IP + +TCP/IP (Transmission Control Protocol/Internet Protocol) forms the backbone of internet communication, allowing computers to connect and transfer data. It comprises four layers: Network Interface, Internet, Transport, and Application. Essential for Linux networking, enabling hosts to interact across networks. Use `netstat -at` to view active TCP/IP connections. Crucial for network management and troubleshooting. The TCP/IP (Transmission Control Protocol/Internet Protocol) forms the backbone of internet protocols. Essentially, it is a set of networking protocols that allows two or more computers to communicate. In the context of Linux, TCP/IP networking is a fundamental part of the operating system's functionality. It provides a platform for establishing connections and facilitating data transfer between two endpoints. diff --git a/src/data/roadmaps/linux/content/tcpip-stack@0pciSsiQqIGJh3x8465_s.md b/src/data/roadmaps/linux/content/tcpip-stack@0pciSsiQqIGJh3x8465_s.md new file mode 100644 index 000000000..fa752b60f --- /dev/null +++ b/src/data/roadmaps/linux/content/tcpip-stack@0pciSsiQqIGJh3x8465_s.md @@ -0,0 +1,10 @@ +# TCP/IP Stack + +TCP/IP (Transmission Control Protocol/Internet Protocol) is the foundational networking protocol suite that enables computer communication over networks. It consists of four layers: Network Interface, Internet, Transport, and Application. In Linux, TCP/IP is integral to the OS functionality, allowing hosts to connect and transfer data across same or different networks. + +Below is a basic command using TCP/IP protocol in Linux: + +```bash +# To view all active TCP/IP network connections +netstat -at +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/tee@Bo9CdrGJej-QcNmw46k9t.md b/src/data/roadmaps/linux/content/tee@Bo9CdrGJej-QcNmw46k9t.md new file mode 100644 index 000000000..279bcaa61 --- /dev/null +++ b/src/data/roadmaps/linux/content/tee@Bo9CdrGJej-QcNmw46k9t.md @@ -0,0 +1,3 @@ +# TEE + +The `tee` command reads from standard input and writes to both standard output and files simultaneously, like a T-splitter in plumbing. It enables users to view results in the terminal while saving output to files concurrently. Syntax: `command | tee file`. Extremely useful for documenting terminal activities and preserving command outputs for later analysis. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/awk.md b/src/data/roadmaps/linux/content/text-processing/awk.md deleted file mode 100644 index af3d26648..000000000 --- a/src/data/roadmaps/linux/content/text-processing/awk.md +++ /dev/null @@ -1,23 +0,0 @@ -# awk - Text Processing - -awk is a powerful text-processing language that is widely used in Unix-like operating systems, including Linux. Named after its three original developers - Alfred Aho, Peter Weinberger, and Brian Kernighan, awk is adept at performing operations upon text files, such as sorting, filtering, and report generation. - -The language comprises a set of commands within a script that define pattern-action pairs. Essentially, awk reads an input file line by line, identifies patterns that match what is specified in the script, and consequently executes actions upon those matches. - -Though a complete language with variables, expressions, and control structures, awk is most commonly used as a single-line command within bash shell scripts, leveraging its versatile text manipulation capabilities. - -Here's an example of how to print first two fields of each line of a file using awk: - -```awk -awk '{print $1,$2}' filename -``` - -This would display the first and second field (typically separated by spaces) of every line in 'filename'. - -Visit the following resources to learn more: - -- [@article@IBM.com: Awk by Example](https://developer.ibm.com/tutorials/l-awk1/) -- [@article@Linux Handbook: Awk](https://linuxhandbook.com/awk-command-tutorial/) -- [@video@YouTube](https://www.youtube.com/watch?v=9YOZmI-zWok) -- [@feed@Explore top posts about Bash](https://app.daily.dev/tags/bash?ref=roadmapsh) -- [@article@Linux awk Command: Text Processing](https://labex.io/tutorials/linux-linux-awk-command-text-processing-388493) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/expand.md b/src/data/roadmaps/linux/content/text-processing/expand.md deleted file mode 100644 index 14390479d..000000000 --- a/src/data/roadmaps/linux/content/text-processing/expand.md +++ /dev/null @@ -1,18 +0,0 @@ -# Expand in Text Processing - -Expand is a command-line utility in Unix and Unix-like operating systems that converts tabs into spaces. It can be an essential tool while working with file outputs where the formatting can get disturbed due to tabs. This can be especially useful when working with Linux shell scripts, where the tab space might differ on different systems or text editors, resulting in inconsistent formatting. Consistent indentation using space can greatly enhance code readability. - -The `expand` command by default converts tabs into 8 spaces. Here is an example usage: - -```bash -expand filename -``` - -In this example, `filename` is the name of the file you want to convert tabs into spaces in. Once the command is run, the tab-converted content will be printed to standard output. - -For specifying the number of spaces for each tab, the `-t` option can be used as follows: -```bash -expand -t 4 filename -``` - -In this example, each tab character in `filename` will be replaced with 4 spaces. The output would then be displayed on the console. diff --git a/src/data/roadmaps/linux/content/text-processing/nl.md b/src/data/roadmaps/linux/content/text-processing/nl.md deleted file mode 100644 index c1171fb97..000000000 --- a/src/data/roadmaps/linux/content/text-processing/nl.md +++ /dev/null @@ -1,15 +0,0 @@ -# Introduction to NL (Number Lines) - -`nl` command in Linux is a utility for numbering lines in a text file. Also known as 'number lines', it can be handy when you need an overview where certain lines in a file are located. By default, nl number the non-empty lines only, but this behavior can be modified based on user's needs. - -It follows a syntax like this: - -```bash -nl [options] [file_name] -``` - -If no file is specified, `nl` will wait for input from user's terminal (stdin). Its clear and readable output makes it a valuable part of any Linux user's text processing toolkit. - -Learn more from the following resources: - -- [@article@Linux nl Command: Line Numbering](https://labex.io/tutorials/linux-linux-nl-command-line-numbering-210988) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/tee.md b/src/data/roadmaps/linux/content/text-processing/tee.md deleted file mode 100644 index 77da2abd7..000000000 --- a/src/data/roadmaps/linux/content/text-processing/tee.md +++ /dev/null @@ -1,11 +0,0 @@ -# Tee in Text Processing - -`tee` is a widely used command in Linux systems, falling under the category of text processing tools. It performs a dual function: the command reads from the standard input and writes to standard output and files. This operation gets its name from the T-splitter in plumbing, which splits the flow into two directions, paralleling the function of the `tee` command. - -The basic syntax of `tee` under text processing in Linux is: - -```bash -command | tee file -``` - -In this construction 'command' represents the command from which `tee` reads the output, and 'file' signifies the file where `tee` writes the output. It's an extremely useful command for users who want to document their terminal undertakings as it enables both reviewing the result in the terminal and storing the output in the file simultaneously. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/unexpand.md b/src/data/roadmaps/linux/content/text-processing/unexpand.md deleted file mode 100644 index a8d2ca62a..000000000 --- a/src/data/roadmaps/linux/content/text-processing/unexpand.md +++ /dev/null @@ -1,11 +0,0 @@ -# Unexpand in Text Processing - -The `unexpand` command in Linux is a significant tool when dealing with text processing. It is mostly used to convert spaces into tabs in a file or output from the terminal. This command works by replacing spaces with tabs, making a document or output more coherent and neat. It is primarily used to format the structure, particularly in programming scripts, where indenting with tabs is a common practice. - -An example of using the `unexpand` command: - -```bash -unexpand -t 4 file.txt -``` - -The "-t 4" switch tells unexpand to replace every four spaces in `file.txt` with a tab. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/index.md b/src/data/roadmaps/linux/content/text-processing@-B2Dvz7160Er0OBHzS6ro.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/index.md rename to src/data/roadmaps/linux/content/text-processing@-B2Dvz7160Er0OBHzS6ro.md diff --git a/src/data/roadmaps/linux/content/text-processing/tr.md b/src/data/roadmaps/linux/content/tr@O9Vci_WpUY-79AkA4HDx3.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/tr.md rename to src/data/roadmaps/linux/content/tr@O9Vci_WpUY-79AkA4HDx3.md diff --git a/src/data/roadmaps/linux/content/troubleshooting/traceroute.md b/src/data/roadmaps/linux/content/traceroute@BnB3Rirh4R7a7LW7-k-95.md similarity index 56% rename from src/data/roadmaps/linux/content/troubleshooting/traceroute.md rename to src/data/roadmaps/linux/content/traceroute@BnB3Rirh4R7a7LW7-k-95.md index 5ec88f170..f4089d0ff 100644 --- a/src/data/roadmaps/linux/content/troubleshooting/traceroute.md +++ b/src/data/roadmaps/linux/content/traceroute@BnB3Rirh4R7a7LW7-k-95.md @@ -1,6 +1,6 @@ -# Traceroute +# Traceroute -Traceroute is a network diagnostic tool used widely in Linux systems for troubleshooting. It is designed to display the path that packets take from the system where traceroute is run to a specified destination system or website. It's used to identify routing problems, offer latency measurement, and figure out the network structure as packets journey across the internet. +Traceroute is a Linux network diagnostic tool that displays the path packets take from your system to a destination. It identifies routing problems, measures latency, and reveals network structure as packets traverse the internet. Each hop is tested multiple times with round-trip times displayed. Use `traceroute www.example.com` to discover packet routes and diagnose failures. Each jump along the route is tested multiple times (the default is 3 but this can be changed), and the round-trip time for each packet is displayed. If certain packets are failing to reach their destination, traceroute can help diagnose where the failure is occurring. diff --git a/src/data/roadmaps/linux/content/troubleshooting/index.md b/src/data/roadmaps/linux/content/troubleshooting/index.md deleted file mode 100644 index e6d6a7484..000000000 --- a/src/data/roadmaps/linux/content/troubleshooting/index.md +++ /dev/null @@ -1,11 +0,0 @@ -# Troubleshooting - -Troubleshooting is an essential skill for any Linux user or administrator. This involves identifying and resolving problems or issues within a Linux system. These problems can range from common system errors, hardware or software issues, network connectivity problems, to management of system resources. The process of troubleshooting in Linux often involves the use of command-line tools, inspecting system and application log files, understanding system processes, and sometimes, deep diving into the Linux kernel. - -The key to effective troubleshooting is understanding how Linux works and being familiar with the common command-line tools. Also, being able to interpret error messages, use Linux's built-in debugging tools, and understand common problem symptoms can speed up resolution time. - -```bash -# example of using a command-line tool for troubleshooting -top -``` -The `top` command is a commonly used troubleshooting tool that provides a dynamic, real-time view of the processes running on a system. It can be particularly useful for identifying resource-heavy processes that could be causing performance issues. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/troubleshooting/packet-analysis.md b/src/data/roadmaps/linux/content/troubleshooting/packet-analysis.md deleted file mode 100644 index 251d40153..000000000 --- a/src/data/roadmaps/linux/content/troubleshooting/packet-analysis.md +++ /dev/null @@ -1,13 +0,0 @@ -# Packet Analysis - -In the realm of Linux system administration and network troubleshooting, packet analysis is a key skill. It involves the use of tools and techniques to capture and analyze network traffic. By inspecting the data being sent and received over a network, system and network administrators can identify and troubleshoot issues such as poor performance, connectivity problems, and security vulnerabilities. - -Tools like tcpdump and Wireshark are common utilities for this very purpose. They display packet-level details to provide a complete picture of network activities. These are particularly useful for network diagnostics and debugging issues related to network protocols. - -A basic example of using tcpdump to capture packets in a Linux system command might look like this: - -```sh -sudo tcpdump -i eth0 -``` - -This command captures and displays packets being transmitted or received over the `eth0` network interface. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/troubleshooting/ping.md b/src/data/roadmaps/linux/content/troubleshooting/ping.md deleted file mode 100644 index 9b60e973c..000000000 --- a/src/data/roadmaps/linux/content/troubleshooting/ping.md +++ /dev/null @@ -1,8 +0,0 @@ -# Ping - -`Ping` is a critical tool when it comes to network troubleshooting on Linux operating systems. The `ping` command allows you to check the connectivity status between your host and a target machine, which could be another computer, server or any device on a network. This diagnostic tool sends ICMP (Internet Control Message Protocol) ECHO_REQUEST packets to the target host and listens for ECHO_RESPONSE returns, giving insight into the health and speed of the connection. - -```bash -ping -``` -If there is any issue reaching the target host, `ping` can identify this and provide feedback, making it an essential component in troubleshooting network issues. In many cases, it is the first tool a Linux user will turn to when diagnosing network connectivity problems. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/troubleshooting@bdQNcr1sj94aX_gjwf2Fa.md b/src/data/roadmaps/linux/content/troubleshooting@bdQNcr1sj94aX_gjwf2Fa.md new file mode 100644 index 000000000..5373ec647 --- /dev/null +++ b/src/data/roadmaps/linux/content/troubleshooting@bdQNcr1sj94aX_gjwf2Fa.md @@ -0,0 +1,9 @@ +# Troubleshooting + +Linux troubleshooting involves identifying and resolving system errors, hardware/software issues, network problems, and resource management challenges. Key skills include using command-line tools, inspecting log files, understanding processes, and interpreting error messages. Tools like `top` provide real-time process monitoring to identify resource-heavy processes causing performance issues efficiently. + +```bash +# example of using a command-line tool for troubleshooting +top +``` +The `top` command is a commonly used troubleshooting tool that provides a dynamic, real-time view of the processes running on a system. It can be particularly useful for identifying resource-heavy processes that could be causing performance issues. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/ulimits@QgfenmhMc18cU_JngQ1n0.md b/src/data/roadmaps/linux/content/ulimits@QgfenmhMc18cU_JngQ1n0.md new file mode 100644 index 000000000..2aee2bd02 --- /dev/null +++ b/src/data/roadmaps/linux/content/ulimits@QgfenmhMc18cU_JngQ1n0.md @@ -0,0 +1,13 @@ +# Ulimits + +Ulimits (user limits) are Linux kernel features that restrict resources like file handles and memory that processes can consume. In containerization, ulimits prevent rogue processes from exhausting server resources and creating denial-of-service situations. Use `ulimit -a` to view current limits and `ulimit -n 1024` to set specific limits for optimal container performance and security. + +```bash +# To see current ulimits: +ulimit -a + +# To set a specific ulimit (soft limit), for example file handles: +ulimit -n 1024 +``` + +Properly configuring and understanding ulimits – especially in containerized environments – is an essential part of system administration in Linux. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/unexpand@sKduFaX6xZaUUBdXRMKCL.md b/src/data/roadmaps/linux/content/unexpand@sKduFaX6xZaUUBdXRMKCL.md new file mode 100644 index 000000000..64d7c47b6 --- /dev/null +++ b/src/data/roadmaps/linux/content/unexpand@sKduFaX6xZaUUBdXRMKCL.md @@ -0,0 +1,9 @@ +# Unexpand + +The `unexpand` command converts spaces to tabs in text files, making documents more coherent and neat. Commonly used in programming scripts where tab indentation is preferred. Use `unexpand -t 4 file.txt` to replace every four spaces with a tab. Opposite of `expand` command, useful for standardizing indentation formatting in code files. + +An example of using the `unexpand` command: + +```bash +unexpand -t 4 file.txt +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/text-processing/uniq.md b/src/data/roadmaps/linux/content/uniq@qnBbzphImflQbEbtFub9x.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/uniq.md rename to src/data/roadmaps/linux/content/uniq@qnBbzphImflQbEbtFub9x.md diff --git a/src/data/roadmaps/linux/content/uptime-and-load@19lTWqAvZFT2CDlhLlPSq.md b/src/data/roadmaps/linux/content/uptime-and-load@19lTWqAvZFT2CDlhLlPSq.md new file mode 100644 index 000000000..d787b16c9 --- /dev/null +++ b/src/data/roadmaps/linux/content/uptime-and-load@19lTWqAvZFT2CDlhLlPSq.md @@ -0,0 +1,16 @@ +# Uptime and Load + +The `uptime` command shows how long a Linux system has been running and the system load average. Load average indicates computational work and CPU queue length, displayed for 1, 5, and 15-minute intervals. High load averages suggest resource constraints or performance issues. Regular monitoring helps identify usage patterns and plan capacity. + +Here is an example of the `uptime` command and its output: + +```bash +$ uptime + 10:58:35 up 2 days, 20 min, 1 user, load average: 0.00, 0.01, 0.05 +``` + +In the output above, "2 days, 20 min" tells us how long the system has been up, while "0.00, 0.01, 0.05" shows the system's load average over the last one, five, and fifteen minutes, respectively. + +Learn more from the following resources: + +- [@article@Linux Load Average: What is Load Average in Linux?](https://www.digitalocean.com/community/tutorials/load-average-in-linux) diff --git a/src/data/roadmaps/linux/content/server-review/uptime-load.md b/src/data/roadmaps/linux/content/uptime-load@19lTWqAvZFT2CDlhLlPSq.md similarity index 100% rename from src/data/roadmaps/linux/content/server-review/uptime-load.md rename to src/data/roadmaps/linux/content/uptime-load@19lTWqAvZFT2CDlhLlPSq.md diff --git a/src/data/roadmaps/linux/content/user-groups@h8wc8XEwWYHErna68w7Mg.md b/src/data/roadmaps/linux/content/user-groups@h8wc8XEwWYHErna68w7Mg.md new file mode 100644 index 000000000..3e8e9b938 --- /dev/null +++ b/src/data/roadmaps/linux/content/user-groups@h8wc8XEwWYHErna68w7Mg.md @@ -0,0 +1,8 @@ +# Users and Groups + +Linux user groups simplify system administration by managing collections of users with shared access rights to files and directories. Each user belongs to one or more groups, enabling privilege management without full superuser access. Management commands: `groupadd`, `groupdel`, `groupmod`, `usermod`, `gpasswd`. Essential for secure and organized system environments. + +Learn more from the following resources: + +- [@article@How to create, delete, and modify groups in Linux](https://www.redhat.com/sysadmin/linux-groups) +- [@article@How to manage groups on Linux](https://linuxconfig.org/how-to-manage-groups-on-linux) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/user-management/create-update.md b/src/data/roadmaps/linux/content/user-management/create-update.md deleted file mode 100644 index 38607b4e1..000000000 --- a/src/data/roadmaps/linux/content/user-management/create-update.md +++ /dev/null @@ -1,8 +0,0 @@ -# User Management: Create, Update, and Delete Users - -User management in Linux involves creating, updating, and deleting user accounts to ensure system security and efficient resource utilization. Administrators can create new users using commands like `useradd` or `adduser`, update user details such as home directory or login shell with `usermod`, and delete users using `userdel`. Effective user management leverages Linux's multi-user capabilities, maintaining a secure and organized system environment. - -Learn more from the following resources: - -- [@article@How to create, update, and delete users account on Linux](https://linuxconfig.org/how-to-create-modify-and-delete-users-account-on-linux) -- [@article@How to manage users in Linux](https://www.freecodecamp.org/news/how-to-manage-users-in-linux/) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/user-management/index.md b/src/data/roadmaps/linux/content/user-management/index.md deleted file mode 100644 index 4a44ba3f6..000000000 --- a/src/data/roadmaps/linux/content/user-management/index.md +++ /dev/null @@ -1,23 +0,0 @@ -# User Management - -Linux operating system offers a structured user management system, allowing multiple users to interact with the same system in an isolated manner. This includes defining user roles, assigning permissions, groups, ownership and other related aspects, which are crucial tasks for Linux administrators. - -For smoother and controlled operation, user management in Linux includes tasks such as creating, deleting, modifying users and groups. It also involves assigning permissions and ownership of files and directories to users/groups. - -Basic shell commands are a fundamental part of user management in Linux. For example, `adduser` or `useradd` is used to create a new user on a system: - -```bash -sudo adduser newuser -``` - -Similarly, `deluser` or `userdel` is used to remove a user: - -```bash -sudo deluser newuser -``` - -The entire concept of user management circles around providing proper accessibility, and maintaining the security of the Linux operating system. Other commands such as `passwd` for password management or `su` for switching users further emphasize the depth and importance of user management in Linux. - -Learn more from the following resources: - -- [@article@User Account Management](https://labex.io/tutorials/linux-user-account-management-49) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/user-management/permissions.md b/src/data/roadmaps/linux/content/user-management/permissions.md deleted file mode 100644 index 3822e8a83..000000000 --- a/src/data/roadmaps/linux/content/user-management/permissions.md +++ /dev/null @@ -1,8 +0,0 @@ -# User Management: Managing Permissions - -User management in Linux involves managing permissions to control who can access, modify, and execute files and directories. Permissions are categorized into read, write, and execute types and can be set for the file owner (user), the owning group, and others. Commands like `chmod`, `chown`, and `chgrp` are used to view and manipulate these permissions. Properly managing permissions is crucial for maintaining system security and organization. For more detailed instructions, refer to resources on Linux file permissions. - -Learn more from the following resources: - -- [@article@Linux file permissions explained](https://www.redhat.com/sysadmin/linux-file-permissions-explained) -- [@video@Linux file permissions in 5 minutes](https://www.youtube.com/watch?v=LnKoncbQBsM) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/user-management/user-groups.md b/src/data/roadmaps/linux/content/user-management/user-groups.md deleted file mode 100644 index c97898b59..000000000 --- a/src/data/roadmaps/linux/content/user-management/user-groups.md +++ /dev/null @@ -1,8 +0,0 @@ -# User Management: Users & Groups - -User management in Linux uses user groups to manage system users and permissions efficiently. A user group is a collection of users that simplifies system administration by determining access rights to resources like files and directories. Each user belongs to one or more groups, allowing administrators to grant specific privileges without full superuser access. Commands like `groupadd`, `groupdel`, `groupmod`, `usermod`, and `gpasswd` are used to manage groups. Proper group management is crucial for a secure and organized system environment. For detailed instructions, refer to resources on managing Linux groups. - -Learn more from the following resources: - -- [@article@How to create, delete, and modify groups in Linux](https://www.redhat.com/sysadmin/linux-groups) -- [@article@How to manage groups on Linux](https://linuxconfig.org/how-to-manage-groups-on-linux) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/user-management@g6n7f1Qi0BPr_BGvisWuz.md b/src/data/roadmaps/linux/content/user-management@g6n7f1Qi0BPr_BGvisWuz.md new file mode 100644 index 000000000..2dfbde35b --- /dev/null +++ b/src/data/roadmaps/linux/content/user-management@g6n7f1Qi0BPr_BGvisWuz.md @@ -0,0 +1,7 @@ +# User Management + +Linux user management allows multiple users to interact with the system in isolation. Includes creating, deleting, modifying users and groups, assigning permissions and ownership. Key commands: `adduser`/`useradd` creates users, `deluser`/`userdel` removes users, `passwd` manages passwords, `su` switches users. Essential for providing proper accessibility and maintaining Linux system security. + +Learn more from the following resources: + +- [@article@User Account Management](https://labex.io/tutorials/linux-user-account-management-49) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/users-and-groups@h8wc8XEwWYHErna68w7Mg.md b/src/data/roadmaps/linux/content/users-and-groups@h8wc8XEwWYHErna68w7Mg.md new file mode 100644 index 000000000..0be08b8a1 --- /dev/null +++ b/src/data/roadmaps/linux/content/users-and-groups@h8wc8XEwWYHErna68w7Mg.md @@ -0,0 +1,8 @@ +# Users and Groups + +User management in Linux uses groups to organize users and manage permissions efficiently. Groups are collections of users that simplify system administration by controlling access to resources like files and directories. Users can belong to multiple groups, enabling precise privilege management. Commands like `groupadd`, `groupdel`, `groupmod`, `usermod`, and `gpasswd` manage groups effectively. Proper group management is crucial for a secure and organized system environment. For detailed instructions, refer to resources on managing Linux groups. + +Learn more from the following resources: + +- [@article@How to create, delete, and modify groups in Linux](https://www.redhat.com/sysadmin/linux-groups) +- [@article@How to manage groups on Linux](https://linuxconfig.org/how-to-manage-groups-on-linux) \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/variables@JyxvZOb7iusOSUYSlniGl.md b/src/data/roadmaps/linux/content/variables@JyxvZOb7iusOSUYSlniGl.md new file mode 100644 index 000000000..43953a63d --- /dev/null +++ b/src/data/roadmaps/linux/content/variables@JyxvZOb7iusOSUYSlniGl.md @@ -0,0 +1,11 @@ +# Variables + +Shell variables store system or user-defined data that can change during script execution. Two categories exist: System Variables (PATH, HOME, PWD) created by Linux, and User-Defined Variables created by users. Define variables with `=` operator and retrieve values with `$` prefix. Example: `MY_VARIABLE="Hello World"` then `echo $MY_VARIABLE` prints the value. + +```bash +# Create a User-Defined Variable +MY_VARIABLE="Hello World" + +# Print the value of the Variable +echo $MY_VARIABLE # Output: Hello World +``` \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/editing-files/vim.md b/src/data/roadmaps/linux/content/vim@XiZz7EFIey1XKS292GN4t.md similarity index 100% rename from src/data/roadmaps/linux/content/editing-files/vim.md rename to src/data/roadmaps/linux/content/vim@XiZz7EFIey1XKS292GN4t.md diff --git a/src/data/roadmaps/linux/content/text-processing/wc.md b/src/data/roadmaps/linux/content/wc@LIGOJwrXexnIcPyHVlhQ8.md similarity index 100% rename from src/data/roadmaps/linux/content/text-processing/wc.md rename to src/data/roadmaps/linux/content/wc@LIGOJwrXexnIcPyHVlhQ8.md diff --git a/src/data/roadmaps/linux/content/working-with-files/index.md b/src/data/roadmaps/linux/content/working-with-files@RsOTPZPZGTEIt1Lk41bQV.md similarity index 100% rename from src/data/roadmaps/linux/content/working-with-files/index.md rename to src/data/roadmaps/linux/content/working-with-files@RsOTPZPZGTEIt1Lk41bQV.md diff --git a/src/data/roadmaps/linux/linux.json b/src/data/roadmaps/linux/linux.json index e504d56b4..94ad56bd8 100644 --- a/src/data/roadmaps/linux/linux.json +++ b/src/data/roadmaps/linux/linux.json @@ -3,8 +3,11 @@ { "id": "k_AR2YBSv077a6RwpCpZT", "type": "vertical", - "position": { "x": 106.8618127280065, "y": 2341.4007482223487 }, - "selected": true, + "position": { + "x": 106.8618127280065, + "y": 2341.4007482223487 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -19,17 +22,27 @@ }, "zIndex": 999, "width": 20, - "height": 103, - "measured": { "width": 20, "height": 103 }, + "height": 150, + "measured": { + "width": 20, + "height": 103 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 106.8618127280065, + "y": 2341.4007482223487 + } }, { "id": "5xQ5fcVJsUgSPyTR0Uu9u", "type": "vertical", - "position": { "x": 312.8618127280065, "y": 1298.7051467174065 }, - "selected": true, + "position": { + "x": 312.8618127280065, + "y": 1298.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -44,17 +57,27 @@ }, "zIndex": 999, "width": 20, - "height": 97, - "measured": { "width": 20, "height": 97 }, + "height": 150, + "measured": { + "width": 20, + "height": 97 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 312.8618127280065, + "y": 1298.7051467174065 + } }, { "id": "0RUdgwm8iZ-ESxhdnWmLE", "type": "vertical", - "position": { "x": 172.8618127280065, "y": 1298.7051467174065 }, - "selected": true, + "position": { + "x": 172.8618127280065, + "y": 1298.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -70,17 +93,27 @@ }, "zIndex": 999, "width": 20, - "height": 92, - "measured": { "width": 20, "height": 92 }, + "height": 150, + "measured": { + "width": 20, + "height": 92 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 172.8618127280065, + "y": 1298.7051467174065 + } }, { "id": "CSVnyS5MDoz4YRQLSDgEt", "type": "vertical", - "position": { "x": -545.6381872719935, "y": 1385.2051467174065 }, - "selected": true, + "position": { + "x": -545.6381872719935, + "y": 1385.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -95,34 +128,60 @@ }, "zIndex": 999, "width": 20, - "height": 105, - "measured": { "width": 20, "height": 105 }, + "height": 150, + "measured": { + "width": 20, + "height": 105 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -545.6381872719935, + "y": 1385.2051467174065 + } }, { "id": "u2K2QU5WxT9sSe9FCB-CA", "type": "section", - "position": { "x": -682.1381872719935, "y": 931.2051467174066 }, - "width": 293, - "height": 207, - "style": { "width": 269, "height": 195.5 }, - "selected": true, + "position": { + "x": -682.1381872719935, + "y": 931.2051467174066 + }, + "width": 269, + "height": 196, + "style": { + "width": 269, + "height": 195.5 + }, + "selected": false, "data": { - "style": { "backgroundColor": "#ffffff", "borderColor": "#000000" } + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "measured": { + "width": 293, + "height": 207 }, - "measured": { "width": 293, "height": 207 }, "dragging": false, "resizing": false, "focusable": true, - "selectable": true + "selectable": true, + "positionAbsolute": { + "x": -682.1381872719935, + "y": 931.2051467174066 + } }, { "id": "SVEfguTRO7MyqPkqdZOAc", "type": "vertical", - "position": { "x": 217.3618127280065, "y": 569.7051467174066 }, - "selected": true, + "position": { + "x": 217.3618127280065, + "y": 569.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -138,17 +197,27 @@ }, "zIndex": 999, "width": 20, - "height": 78, - "measured": { "width": 20, "height": 78 }, + "height": 150, + "measured": { + "width": 20, + "height": 78 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 217.3618127280065, + "y": 569.7051467174066 + } }, { "id": "HU7wZWiES3m3xl1-NYP6F", "type": "title", - "position": { "x": -230.1381872719935, "y": -32.599251777651034 }, - "selected": true, + "position": { + "x": -230.1381872719935, + "y": -32.599251777651034 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -161,15 +230,27 @@ } }, "zIndex": 999, - "measured": { "width": 107, "height": 68 }, + "measured": { + "width": 107, + "height": 68 + }, "dragging": false, - "focusable": true + "focusable": true, + "width": 107, + "height": 68, + "positionAbsolute": { + "x": -230.1381872719935, + "y": -32.599251777651034 + } }, { "id": "uqyE79OItPOX33E5FoGel", "type": "vertical", - "position": { "x": -186.6381872719935, "y": -124.09925177765109 }, - "selected": true, + "position": { + "x": -186.6381872719935, + "y": -124.09925177765109 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -184,17 +265,27 @@ }, "zIndex": 999, "width": 20, - "height": 81, - "measured": { "width": 20, "height": 81 }, + "height": 150, + "measured": { + "width": 20, + "height": 81 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -186.6381872719935, + "y": -124.09925177765109 + } }, { "id": "y7KjVfSI6CAduyHd4mBFT", "type": "topic", - "position": { "x": -297.6381872719935, "y": 129.40074822234897 }, - "selected": true, + "position": { + "x": -297.6381872719935, + "y": 129.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -208,19 +299,31 @@ "oldId": "t8SJbGVXsUDECxePLDk_w" }, "zIndex": 999, - "width": 242, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 242, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 242, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -297.6381872719935, + "y": 129.40074822234897 + } }, { "id": "qLeEEwBvlGt1fP5Qcreah", "type": "subtopic", - "position": { "x": 76.8618127280065, "y": 50.40074822234891 }, - "selected": true, + "position": { + "x": 76.8618127280065, + "y": 50.40074822234891 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -236,17 +339,29 @@ "zIndex": 999, "width": 297, "height": 49, - "style": { "width": 297 }, - "measured": { "width": 297, "height": 49 }, + "style": { + "width": 297 + }, + "measured": { + "width": 297, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 76.8618127280065, + "y": 50.40074822234891 + } }, { "id": "q-Ky0ietZGpyUcBQfh-BJ", "type": "subtopic", - "position": { "x": 76.8618127280065, "y": 103.40074822234891 }, - "selected": true, + "position": { + "x": 76.8618127280065, + "y": 103.40074822234891 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -262,17 +377,29 @@ "zIndex": 999, "width": 297, "height": 49, - "style": { "width": 297 }, - "measured": { "width": 297, "height": 49 }, + "style": { + "width": 297 + }, + "measured": { + "width": 297, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 76.8618127280065, + "y": 103.40074822234891 + } }, { "id": "9oo2fxTM2_p0VYPBroqxa", "type": "subtopic", - "position": { "x": 76.8618127280065, "y": 156.4007482223489 }, - "selected": true, + "position": { + "x": 76.8618127280065, + "y": 156.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -288,17 +415,29 @@ "zIndex": 999, "width": 297, "height": 49, - "style": { "width": 297 }, - "measured": { "width": 297, "height": 49 }, + "style": { + "width": 297 + }, + "measured": { + "width": 297, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 76.8618127280065, + "y": 156.4007482223489 + } }, { "id": "3fzuXKH7az_LVnmnoXB1p", "type": "subtopic", - "position": { "x": 76.8618127280065, "y": 209.4007482223489 }, - "selected": true, + "position": { + "x": 76.8618127280065, + "y": 209.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -313,17 +452,29 @@ "zIndex": 999, "width": 297, "height": 49, - "style": { "width": 297 }, - "measured": { "width": 297, "height": 49 }, + "style": { + "width": 297 + }, + "measured": { + "width": 297, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 76.8618127280065, + "y": 209.4007482223489 + } }, { "id": "HGmeYvRf7_XusZl_K4x9k", "type": "topic", - "position": { "x": -297.6381872719935, "y": 182.40074822234897 }, - "selected": true, + "position": { + "x": -297.6381872719935, + "y": 182.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -337,19 +488,31 @@ "oldId": "t8SJbGVXsUDECxePLDk_w" }, "zIndex": 999, - "width": 242, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 242, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 242, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -297.6381872719935, + "y": 182.40074822234897 + } }, { "id": "8QBMyL8D5jPovxN8jyZW9", "type": "topic", - "position": { "x": -297.6381872719935, "y": 355.4007482223489 }, - "selected": true, + "position": { + "x": -297.6381872719935, + "y": 355.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -363,19 +526,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 242, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 242, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 242, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -297.6381872719935, + "y": 355.4007482223489 + } }, { "id": "wx-CpX3NJtKrdr_dQHZi9", "type": "linksgroup", - "position": { "x": -685.1381872719935, "y": -123.59925177765109 }, - "selected": true, + "position": { + "x": -685.1381872719935, + "y": -123.59925177765109 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -405,18 +580,28 @@ ] }, "zIndex": 999, - "measured": { "width": 287, "height": 196 }, + "measured": { + "width": 287, + "height": 196 + }, "dragging": false, - "width": 287, - "height": 196, + "width": 260, + "height": 192, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -685.1381872719935, + "y": -123.59925177765109 + } }, { "id": "kpF15oUmlUmk1qVGEBB7Y", "type": "paragraph", - "position": { "x": 75.99419451849974, "y": -139.2948532825934 }, - "selected": true, + "position": { + "x": 75.99419451849974, + "y": -139.2948532825934 + }, + "selected": false, "data": { "label": "Find the interactive version of this roadmap and more roadmaps at", "style": { @@ -429,45 +614,71 @@ "oldId": "yHmHXymPNWwu8p1vvqD3o" }, "zIndex": 999, - "width": 299, - "height": 151, - "positionAbsolute": { "x": 548.0942414053277, "y": -133.9615199492601 }, + "width": 355, + "height": 143, + "positionAbsolute": { + "x": 75.99419451849974, + "y": -139.2948532825934 + }, "dragging": false, "selectable": true, "focusable": true, - "style": { "width": 355, "height": 143 }, + "style": { + "width": 355, + "height": 143 + }, "resizing": false, - "measured": { "width": 299, "height": 151 } + "measured": { + "width": 299, + "height": 151 + } }, { "id": "if9eTna5NRTMStVwpSwDP", "type": "button", - "position": { "x": 90.99419451849974, "y": -53.09925177765109 }, - "selected": true, + "position": { + "x": 90.99419451849974, + "y": -53.09925177765109 + }, + "selected": false, "data": { "label": "roadmap.sh", "href": "https://roadmap.sh", "color": "#ffffff", "backgroundColor": "#4136D6", - "style": { "fontSize": 17 }, + "style": { + "fontSize": 17 + }, "oldId": "2zqZkyVgigifcRS1H7F_b" }, "zIndex": 999, - "width": 269, + "width": 330, "height": 49, "dragging": false, - "style": { "width": 330, "height": 49 }, + "style": { + "width": 330, + "height": 49 + }, "resizing": false, - "positionAbsolute": { "x": 560.5942414053277, "y": -52.103402024556615 }, + "positionAbsolute": { + "x": 90.99419451849974, + "y": -53.09925177765109 + }, "selectable": true, "focusable": true, - "measured": { "width": 269, "height": 49 } + "measured": { + "width": 269, + "height": 49 + } }, { "id": "XiZz7EFIey1XKS292GN4t", "type": "subtopic", - "position": { "x": -683.6381872719935, "y": 182.40074822234897 }, - "selected": true, + "position": { + "x": -683.6381872719935, + "y": 182.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -481,18 +692,28 @@ "oldId": "yqRwmcZThjQuqh2ao0dWK" }, "zIndex": 999, - "width": 138, + "width": 74, "height": 49, - "measured": { "width": 138, "height": 49 }, + "measured": { + "width": 138, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -683.6381872719935, + "y": 182.40074822234897 + } }, { "id": "yqRwmcZThjQuqh2ao0dWK", "type": "subtopic", - "position": { "x": -541.6381872719935, "y": 182.40074822234897 }, - "selected": true, + "position": { + "x": -541.6381872719935, + "y": 182.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -505,18 +726,28 @@ } }, "zIndex": 999, - "width": 120, + "width": 87, "height": 49, - "measured": { "width": 120, "height": 49 }, + "measured": { + "width": 120, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -541.6381872719935, + "y": 182.40074822234897 + } }, { "id": "moGMHNR58wFlzhS7je1wc", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 249.4007482223489 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 249.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -530,19 +761,31 @@ "oldId": "NIBSZGE9PskVrluJpdom0" }, "zIndex": 999, - "width": 261, + "width": 228, "height": 49, - "style": { "width": 228 }, - "measured": { "width": 261, "height": 49 }, + "style": { + "width": 228 + }, + "measured": { + "width": 261, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 249.4007482223489 + } }, { "id": "zwXEmpPYjA7_msS43z7I0", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 302.4007482223489 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 302.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -556,19 +799,31 @@ "oldId": "NIBSZGE9PskVrluJpdom0" }, "zIndex": 999, - "width": 261, + "width": 228, "height": 49, - "style": { "width": 228 }, - "measured": { "width": 261, "height": 49 }, + "style": { + "width": 228 + }, + "measured": { + "width": 261, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 302.4007482223489 + } }, { "id": "KaMSsQnJzNqGHg0Oia4uy", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 355.4007482223489 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 355.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -582,19 +837,31 @@ "oldId": "NIBSZGE9PskVrluJpdom0" }, "zIndex": 999, - "width": 261, + "width": 228, "height": 49, - "style": { "width": 228 }, - "measured": { "width": 261, "height": 49 }, + "style": { + "width": 228 + }, + "measured": { + "width": 261, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 355.4007482223489 + } }, { "id": "JgoZzx4BfK7tmosgpZOsf", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 408.4007482223489 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 408.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -608,19 +875,31 @@ "oldId": "NIBSZGE9PskVrluJpdom0" }, "zIndex": 999, - "width": 261, + "width": 228, "height": 49, - "style": { "width": 228 }, - "measured": { "width": 261, "height": 49 }, + "style": { + "width": 228 + }, + "measured": { + "width": 261, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 408.4007482223489 + } }, { "id": "NIBSZGE9PskVrluJpdom0", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 461.4007482223489 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 461.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -633,19 +912,31 @@ } }, "zIndex": 999, - "width": 261, + "width": 228, "height": 49, - "style": { "width": 228 }, - "measured": { "width": 261, "height": 49 }, + "style": { + "width": 228 + }, + "measured": { + "width": 261, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 461.4007482223489 + } }, { "id": "RsOTPZPZGTEIt1Lk41bQV", "type": "topic", - "position": { "x": -297.6381872719935, "y": 631.400748222349 }, - "selected": true, + "position": { + "x": -297.6381872719935, + "y": 631.400748222349 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -659,19 +950,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 242, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 242, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 242, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -297.6381872719935, + "y": 631.400748222349 + } }, { "id": "TnrT-cqMA8urew9nLv0Ns", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 553.7051467174066 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 553.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -687,17 +990,29 @@ "zIndex": 999, "width": 260, "height": 49, - "style": { "width": 260 }, - "measured": { "width": 260, "height": 49 }, + "style": { + "width": 260 + }, + "measured": { + "width": 260, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 553.7051467174066 + } }, { "id": "iD073xTmpzvQFfXwcwXcY", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 606.7051467174066 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 606.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -713,17 +1028,29 @@ "zIndex": 999, "width": 260, "height": 49, - "style": { "width": 260 }, - "measured": { "width": 260, "height": 49 }, + "style": { + "width": 260 + }, + "measured": { + "width": 260, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 606.7051467174066 + } }, { "id": "abKO6KuuIfl9ruVxBw6t_", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 659.7051467174066 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 659.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -739,17 +1066,29 @@ "zIndex": 999, "width": 260, "height": 49, - "style": { "width": 260 }, - "measured": { "width": 260, "height": 49 }, + "style": { + "width": 260 + }, + "measured": { + "width": 260, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 659.7051467174066 + } }, { "id": "KaXHG_EKxI5PUXmcvlJt6", "type": "subtopic", - "position": { "x": -682.6381872719935, "y": 712.7051467174066 }, - "selected": true, + "position": { + "x": -682.6381872719935, + "y": 712.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -764,17 +1103,29 @@ "zIndex": 999, "width": 260, "height": 49, - "style": { "width": 260 }, - "measured": { "width": 260, "height": 49 }, + "style": { + "width": 260 + }, + "measured": { + "width": 260, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.6381872719935, + "y": 712.7051467174066 + } }, { "id": "-B2Dvz7160Er0OBHzS6ro", "type": "topic", - "position": { "x": 110.8618127280065, "y": 631.400748222349 }, - "selected": true, + "position": { + "x": 110.8618127280065, + "y": 631.400748222349 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -788,19 +1139,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 233, - "height": 50, - "style": { "width": 225 }, - "measured": { "width": 233, "height": 50 }, + "width": 225, + "height": 49, + "style": { + "width": 225 + }, + "measured": { + "width": 233, + "height": 50 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 110.8618127280065, + "y": 631.400748222349 + } }, { "id": "t3fxSgCgtxuMtHjclPHA6", "type": "subtopic", - "position": { "x": 77.99419451849974, "y": 291.4007482223489 }, - "selected": true, + "position": { + "x": 77.99419451849974, + "y": 291.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -813,18 +1176,28 @@ } }, "zIndex": 999, - "width": 225, + "width": 209, "height": 49, - "measured": { "width": 225, "height": 49 }, + "measured": { + "width": 225, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 77.99419451849974, + "y": 291.4007482223489 + } }, { "id": "Z5Mf_e5G24IkmxEHgYBe2", "type": "subtopic", - "position": { "x": 306.99419451849974, "y": 291.4007482223489 }, - "selected": true, + "position": { + "x": 306.99419451849974, + "y": 291.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -838,18 +1211,28 @@ "oldId": "6xdkFk_GT93MigeTSSGCp" }, "zIndex": 999, - "width": 68, + "width": 69, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 306.99419451849974, + "y": 291.4007482223489 + } }, { "id": "5658kdqJw-pIOyyhll80a", "type": "subtopic", - "position": { "x": 76.8618127280065, "y": 344.4007482223489 }, - "selected": true, + "position": { + "x": 76.8618127280065, + "y": 344.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -863,18 +1246,28 @@ "oldId": "v32PJl4fzIFTOirOm6G44" }, "zIndex": 999, - "width": 68, + "width": 88, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 76.8618127280065, + "y": 344.4007482223489 + } }, { "id": "1WRIy3xHtQfiQFZrprobP", "type": "subtopic", - "position": { "x": 148.8618127280065, "y": 344.4007482223489 }, - "selected": true, + "position": { + "x": 148.8618127280065, + "y": 344.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -889,16 +1282,27 @@ }, "zIndex": 999, "height": 49, - "measured": { "width": 75, "height": 49 }, + "measured": { + "width": 75, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "width": 75, + "positionAbsolute": { + "x": 148.8618127280065, + "y": 344.4007482223489 + } }, { "id": "6xdkFk_GT93MigeTSSGCp", "type": "subtopic", - "position": { "x": 289.8618127280065, "y": 344.4007482223489 }, - "selected": true, + "position": { + "x": 289.8618127280065, + "y": 344.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -912,16 +1316,27 @@ }, "zIndex": 999, "height": 49, - "measured": { "width": 84, "height": 49 }, + "measured": { + "width": 84, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "width": 84, + "positionAbsolute": { + "x": 289.8618127280065, + "y": 344.4007482223489 + } }, { "id": "O9Vci_WpUY-79AkA4HDx3", "type": "subtopic", - "position": { "x": 228.3618127280065, "y": 344.4007482223489 }, - "selected": true, + "position": { + "x": 228.3618127280065, + "y": 344.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -935,18 +1350,28 @@ "oldId": "6xdkFk_GT93MigeTSSGCp" }, "zIndex": 999, - "width": 55, + "width": 56, "height": 49, - "measured": { "width": 55, "height": 49 }, + "measured": { + "width": 55, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 228.3618127280065, + "y": 344.4007482223489 + } }, { "id": "Yyk28H6TiteZEGv6Aps1h", "type": "subtopic", - "position": { "x": 76.8618127280065, "y": 397.4007482223489 }, - "selected": true, + "position": { + "x": 76.8618127280065, + "y": 397.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -960,18 +1385,28 @@ "oldId": "TZuDVFS7DZFBgaSYYXoGe" }, "zIndex": 999, - "width": 68, + "width": 67, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 76.8618127280065, + "y": 397.4007482223489 + } }, { "id": "vfcCS1GoyKpU1rQaE8I5r", "type": "subtopic", - "position": { "x": 148.8618127280065, "y": 397.4007482223489 }, - "selected": true, + "position": { + "x": 148.8618127280065, + "y": 397.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -985,18 +1420,28 @@ "oldId": "v32PJl4fzIFTOirOm6G44" }, "zIndex": 999, - "width": 68, + "width": 72, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 148.8618127280065, + "y": 397.4007482223489 + } }, { "id": "Pl9s2ti25hsSEljXJvBTj", "type": "subtopic", - "position": { "x": 221.8618127280065, "y": 397.4007482223489 }, - "selected": true, + "position": { + "x": 221.8618127280065, + "y": 397.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1010,18 +1455,28 @@ "oldId": "v32PJl4fzIFTOirOm6G44" }, "zIndex": 999, - "width": 68, + "width": 76, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 221.8618127280065, + "y": 397.4007482223489 + } }, { "id": "v32PJl4fzIFTOirOm6G44", "type": "subtopic", - "position": { "x": 292.8618127280065, "y": 397.4007482223489 }, - "selected": true, + "position": { + "x": 292.8618127280065, + "y": 397.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1035,18 +1490,28 @@ "oldId": "6xdkFk_GT93MigeTSSGCp" }, "zIndex": 999, - "width": 80, + "width": 79, "height": 49, - "measured": { "width": 80, "height": 49 }, + "measured": { + "width": 80, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 292.8618127280065, + "y": 397.4007482223489 + } }, { "id": "Bo9CdrGJej-QcNmw46k9t", "type": "subtopic", - "position": { "x": 75.99419451849974, "y": 450.4007482223489 }, - "selected": true, + "position": { + "x": 75.99419451849974, + "y": 450.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1060,18 +1525,28 @@ "oldId": "QTmECqpRVMjNgQU70uCF8" }, "zIndex": 999, - "width": 68, + "width": 70, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 75.99419451849974, + "y": 450.4007482223489 + } }, { "id": "YSfGrmT795miIeIZrtC3D", "type": "subtopic", - "position": { "x": 148.8618127280065, "y": 450.4007482223489 }, - "selected": true, + "position": { + "x": 148.8618127280065, + "y": 450.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1085,18 +1560,28 @@ "oldId": "TZuDVFS7DZFBgaSYYXoGe" }, "zIndex": 999, - "width": 68, + "width": 58, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 148.8618127280065, + "y": 450.4007482223489 + } }, { "id": "LIGOJwrXexnIcPyHVlhQ8", "type": "subtopic", - "position": { "x": 221.8618127280065, "y": 450.4007482223489 }, - "selected": true, + "position": { + "x": 221.8618127280065, + "y": 450.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1110,18 +1595,28 @@ "oldId": "TZuDVFS7DZFBgaSYYXoGe" }, "zIndex": 999, - "width": 68, + "width": 65, "height": 49, - "measured": { "width": 68, "height": 49 }, + "measured": { + "width": 68, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 221.8618127280065, + "y": 450.4007482223489 + } }, { "id": "TZuDVFS7DZFBgaSYYXoGe", "type": "subtopic", - "position": { "x": 292.8618127280065, "y": 450.4007482223489 }, - "selected": true, + "position": { + "x": 292.8618127280065, + "y": 450.4007482223489 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1135,18 +1630,28 @@ "oldId": "v32PJl4fzIFTOirOm6G44" }, "zIndex": 999, - "width": 80, + "width": 102, "height": 49, - "measured": { "width": 80, "height": 49 }, + "measured": { + "width": 80, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 292.8618127280065, + "y": 450.4007482223489 + } }, { "id": "sKduFaX6xZaUUBdXRMKCL", "type": "subtopic", - "position": { "x": 75.99419451849974, "y": 503.40074822234897 }, - "selected": true, + "position": { + "x": 75.99419451849974, + "y": 503.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1160,18 +1665,28 @@ "oldId": "QTmECqpRVMjNgQU70uCF8" }, "zIndex": 999, - "width": 102, + "width": 121, "height": 49, - "measured": { "width": 102, "height": 49 }, + "measured": { + "width": 102, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 75.99419451849974, + "y": 503.40074822234897 + } }, { "id": "qnBbzphImflQbEbtFub9x", "type": "subtopic", - "position": { "x": 181.99419451849974, "y": 503.40074822234897 }, - "selected": true, + "position": { + "x": 181.99419451849974, + "y": 503.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1185,18 +1700,28 @@ "oldId": "QTmECqpRVMjNgQU70uCF8" }, "zIndex": 999, - "width": 55, + "width": 78, "height": 49, - "measured": { "width": 55, "height": 49 }, + "measured": { + "width": 55, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 181.99419451849974, + "y": 503.40074822234897 + } }, { "id": "umlhxidsvtZG9k40Ca0Ac", "type": "subtopic", - "position": { "x": 240.99419451849974, "y": 503.40074822234897 }, - "selected": true, + "position": { + "x": 240.99419451849974, + "y": 503.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1210,18 +1735,28 @@ "oldId": "QTmECqpRVMjNgQU70uCF8" }, "zIndex": 999, - "width": 65, + "width": 81, "height": 49, - "measured": { "width": 65, "height": 49 }, + "measured": { + "width": 65, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 240.99419451849974, + "y": 503.40074822234897 + } }, { "id": "QTmECqpRVMjNgQU70uCF8", "type": "subtopic", - "position": { "x": 309.99419451849974, "y": 503.40074822234897 }, - "selected": true, + "position": { + "x": 309.99419451849974, + "y": 503.40074822234897 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1235,18 +1770,28 @@ "oldId": "TZuDVFS7DZFBgaSYYXoGe" }, "zIndex": 999, - "width": 63, + "width": 74, "height": 49, - "measured": { "width": 63, "height": 49 }, + "measured": { + "width": 63, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 309.99419451849974, + "y": 503.40074822234897 + } }, { "id": "jSzfQf0MlnXtWHCc-HYvr", "type": "topic", - "position": { "x": 110.8618127280065, "y": 801.7051467174066 }, - "selected": true, + "position": { + "x": 110.8618127280065, + "y": 801.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1260,19 +1805,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 233, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 233, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 233, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 110.8618127280065, + "y": 801.7051467174066 + } }, { "id": "19lTWqAvZFT2CDlhLlPSq", "type": "subtopic", - "position": { "x": 110.8618127280065, "y": 906.2051467174066 }, - "selected": true, + "position": { + "x": 110.8618127280065, + "y": 906.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1288,17 +1845,29 @@ "zIndex": 999, "width": 233, "height": 49, - "style": { "width": 233 }, - "measured": { "width": 233, "height": 49 }, + "style": { + "width": 233 + }, + "measured": { + "width": 233, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 110.8618127280065, + "y": 906.2051467174066 + } }, { "id": "WwybfdKuP9ogCGpT7d3NU", "type": "subtopic", - "position": { "x": 110.8618127280065, "y": 959.2051467174066 }, - "selected": true, + "position": { + "x": 110.8618127280065, + "y": 959.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1314,17 +1883,29 @@ "zIndex": 999, "width": 233, "height": 49, - "style": { "width": 233 }, - "measured": { "width": 233, "height": 49 }, + "style": { + "width": 233 + }, + "measured": { + "width": 233, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 110.8618127280065, + "y": 959.2051467174066 + } }, { "id": "ewUuI_x-YhOQIYd3MTgJJ", "type": "subtopic", - "position": { "x": 110.8618127280065, "y": 1012.2051467174066 }, - "selected": true, + "position": { + "x": 110.8618127280065, + "y": 1012.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1340,17 +1921,29 @@ "zIndex": 999, "width": 233, "height": 49, - "style": { "width": 233 }, - "measured": { "width": 233, "height": 49 }, + "style": { + "width": 233 + }, + "measured": { + "width": 233, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 110.8618127280065, + "y": 1012.2051467174066 + } }, { "id": "tx0nh6cbBjVxwNlyrBNYm", "type": "subtopic", - "position": { "x": 110.8618127280065, "y": 1065.2051467174065 }, - "selected": true, + "position": { + "x": 110.8618127280065, + "y": 1065.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1365,34 +1958,61 @@ "zIndex": 999, "width": 233, "height": 49, - "style": { "width": 233 }, - "measured": { "width": 233, "height": 49 }, + "style": { + "width": 233 + }, + "measured": { + "width": 233, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 110.8618127280065, + "y": 1065.2051467174065 + } }, { "id": "J6ptF9of4cYcyLO0iAMao", "type": "horizontal", - "position": { "x": 75.99419451849974, "y": 558.2051467174066 }, - "selected": true, + "position": { + "x": 75.99419451849974, + "y": 558.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, "data": { "label": "horizontal node", - "style": { "stroke": "#2B78E4", "strokeWidth": 3 } + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3 + } }, "zIndex": 999, - "measured": { "width": 300, "height": 20 }, + "measured": { + "width": 300, + "height": 20 + }, "dragging": false, - "focusable": true + "focusable": true, + "width": 50, + "height": 20, + "positionAbsolute": { + "x": 75.99419451849974, + "y": 558.2051467174066 + } }, { "id": "h01Y6dW09ChidlM2HYoav", "type": "topic", - "position": { "x": -295.1381872719935, "y": 801.7051467174066 }, - "selected": true, + "position": { + "x": -295.1381872719935, + "y": 801.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1406,19 +2026,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 233, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 233, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 233, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -295.1381872719935, + "y": 801.7051467174066 + } }, { "id": "mUKoiGUTpIaUgQNF3BND_", "type": "subtopic", - "position": { "x": -356.1381872719935, "y": 902.2051467174066 }, - "selected": true, + "position": { + "x": -356.1381872719935, + "y": 902.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1432,19 +2064,31 @@ "oldId": "0FLUI9r7znMqi6YKReLzD" }, "zIndex": 999, - "width": 355, + "width": 330, "height": 49, - "style": { "width": 330 }, - "measured": { "width": 355, "height": 49 }, + "style": { + "width": 330 + }, + "measured": { + "width": 355, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -356.1381872719935, + "y": 902.2051467174066 + } }, { "id": "lf3_CRyOI2ZXGzz5ff451", "type": "subtopic", - "position": { "x": -356.1381872719935, "y": 955.2051467174066 }, - "selected": true, + "position": { + "x": -356.1381872719935, + "y": 955.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1458,19 +2102,31 @@ "oldId": "0FLUI9r7znMqi6YKReLzD" }, "zIndex": 999, - "width": 355, + "width": 330, "height": 49, - "style": { "width": 330 }, - "measured": { "width": 355, "height": 49 }, + "style": { + "width": 330 + }, + "measured": { + "width": 355, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -356.1381872719935, + "y": 955.2051467174066 + } }, { "id": "VkLWTvKnRXzvLGWza2v45", "type": "subtopic", - "position": { "x": -356.1381872719935, "y": 1008.2051467174066 }, - "selected": true, + "position": { + "x": -356.1381872719935, + "y": 1008.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1484,19 +2140,31 @@ "oldId": "Rib7h9lh_ndiXkwNbftz_" }, "zIndex": 999, - "width": 171, + "width": 330, "height": 49, - "style": { "width": 330 }, - "measured": { "width": 171, "height": 49 }, + "style": { + "width": 330 + }, + "measured": { + "width": 171, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -356.1381872719935, + "y": 1008.2051467174066 + } }, { "id": "0FLUI9r7znMqi6YKReLzD", "type": "subtopic", - "position": { "x": -180.6381872719935, "y": 1008.2051467174066 }, - "selected": true, + "position": { + "x": -180.6381872719935, + "y": 1008.2051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1509,19 +2177,31 @@ } }, "zIndex": 999, - "width": 179, + "width": 330, "height": 49, - "style": { "width": 330 }, - "measured": { "width": 179, "height": 49 }, + "style": { + "width": 330 + }, + "measured": { + "width": 179, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -180.6381872719935, + "y": 1008.2051467174066 + } }, { "id": "5anSYRhaKIs3dCLWlvZfT", "type": "subtopic", - "position": { "x": -356.1381872719935, "y": 1061.2051467174065 }, - "selected": true, + "position": { + "x": -356.1381872719935, + "y": 1061.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1535,19 +2215,31 @@ "oldId": "Rib7h9lh_ndiXkwNbftz_" }, "zIndex": 999, - "width": 180, + "width": 330, "height": 49, - "style": { "width": 330 }, - "measured": { "width": 180, "height": 49 }, + "style": { + "width": 330 + }, + "measured": { + "width": 180, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -356.1381872719935, + "y": 1061.2051467174065 + } }, { "id": "Rib7h9lh_ndiXkwNbftz_", "type": "subtopic", - "position": { "x": -171.1381872719935, "y": 1061.2051467174065 }, - "selected": true, + "position": { + "x": -171.1381872719935, + "y": 1061.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1561,19 +2253,31 @@ "oldId": "0FLUI9r7znMqi6YKReLzD" }, "zIndex": 999, - "width": 169, + "width": 330, "height": 49, - "style": { "width": 330 }, - "measured": { "width": 169, "height": 49 }, + "style": { + "width": 330 + }, + "measured": { + "width": 169, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -171.1381872719935, + "y": 1061.2051467174065 + } }, { "id": "g6n7f1Qi0BPr_BGvisWuz", "type": "topic", - "position": { "x": -682.1381872719935, "y": 906.7051467174066 }, - "selected": true, + "position": { + "x": -682.1381872719935, + "y": 906.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1587,19 +2291,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 293, + "width": 269, "height": 49, - "style": { "width": 269 }, - "measured": { "width": 293, "height": 49 }, + "style": { + "width": 269 + }, + "measured": { + "width": 293, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.1381872719935, + "y": 906.7051467174066 + } }, { "id": "R9TZfkgVUQNLnMpDhovJa", "type": "subtopic", - "position": { "x": -662.1381872719935, "y": 968.7051467174066 }, - "selected": true, + "position": { + "x": -662.1381872719935, + "y": 968.7051467174066 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1615,17 +2331,30 @@ "zIndex": 999, "width": 253, "height": 49, - "style": { "width": 253, "height": 49 }, - "measured": { "width": 253, "height": 49 }, + "style": { + "width": 253, + "height": 49 + }, + "measured": { + "width": 253, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -662.1381872719935, + "y": 968.7051467174066 + } }, { "id": "h8wc8XEwWYHErna68w7Mg", "type": "subtopic", - "position": { "x": -662.1381872719935, "y": 1021.7051467174065 }, - "selected": true, + "position": { + "x": -662.1381872719935, + "y": 1021.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1641,17 +2370,30 @@ "zIndex": 999, "width": 253, "height": 49, - "style": { "width": 253, "height": 49 }, - "measured": { "width": 253, "height": 49 }, + "style": { + "width": 253, + "height": 49 + }, + "measured": { + "width": 253, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -662.1381872719935, + "y": 1021.7051467174065 + } }, { "id": "L6RMExeqi9501y-eCHDt1", "type": "subtopic", - "position": { "x": -662.1381872719935, "y": 1074.7051467174065 }, - "selected": true, + "position": { + "x": -662.1381872719935, + "y": 1074.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1666,17 +2408,30 @@ "zIndex": 999, "width": 253, "height": 49, - "style": { "width": 253, "height": 49 }, - "measured": { "width": 253, "height": 49 }, + "style": { + "width": 253, + "height": 49 + }, + "measured": { + "width": 253, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -662.1381872719935, + "y": 1074.7051467174065 + } }, { "id": "F1sU3O1ouxTOvpidDfN3k", "type": "topic", - "position": { "x": -682.1381872719935, "y": 1224.7051467174065 }, - "selected": true, + "position": { + "x": -682.1381872719935, + "y": 1224.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1690,19 +2445,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 293, - "height": 49, - "style": { "width": 225 }, - "measured": { "width": 293, "height": 49 }, + "width": 225, + "height": 69, + "style": { + "width": 225 + }, + "measured": { + "width": 293, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -682.1381872719935, + "y": 1224.7051467174065 + } }, { "id": "34UUrc8Yjc_8lvTL8itc3", "type": "subtopic", - "position": { "x": -263.50580548150026, "y": 1146.7051467174065 }, - "selected": true, + "position": { + "x": -263.50580548150026, + "y": 1146.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1718,17 +2485,29 @@ "zIndex": 999, "width": 262, "height": 49, - "style": { "width": 262 }, - "measured": { "width": 262, "height": 49 }, + "style": { + "width": 262 + }, + "measured": { + "width": 262, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -263.50580548150026, + "y": 1146.7051467174065 + } }, { "id": "FStz-bftQBK0M6zz2Bxl4", "type": "subtopic", - "position": { "x": -263.50580548150026, "y": 1199.7051467174065 }, - "selected": true, + "position": { + "x": -263.50580548150026, + "y": 1199.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1744,17 +2523,29 @@ "zIndex": 999, "width": 262, "height": 49, - "style": { "width": 262 }, - "measured": { "width": 262, "height": 49 }, + "style": { + "width": 262 + }, + "measured": { + "width": 262, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -263.50580548150026, + "y": 1199.7051467174065 + } }, { "id": "DuEfJNrm4Jfmp8-8Pggrf", "type": "subtopic", - "position": { "x": -263.50580548150026, "y": 1252.7051467174065 }, - "selected": true, + "position": { + "x": -263.50580548150026, + "y": 1252.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1770,17 +2561,29 @@ "zIndex": 999, "width": 262, "height": 49, - "style": { "width": 262 }, - "measured": { "width": 262, "height": 49 }, + "style": { + "width": 262 + }, + "measured": { + "width": 262, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -263.50580548150026, + "y": 1252.7051467174065 + } }, { "id": "xk5Xgi797HlVjdZJRfwX1", "type": "subtopic", - "position": { "x": -263.50580548150026, "y": 1305.7051467174065 }, - "selected": true, + "position": { + "x": -263.50580548150026, + "y": 1305.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1795,17 +2598,29 @@ "zIndex": 999, "width": 262, "height": 49, - "style": { "width": 262 }, - "measured": { "width": 262, "height": 49 }, + "style": { + "width": 262 + }, + "measured": { + "width": 262, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -263.50580548150026, + "y": 1305.7051467174065 + } }, { "id": "4eINX8jYMJxfYh7ZV47YI", "type": "topic", - "position": { "x": -646.1381872719935, "y": 1369.7051467174065 }, - "selected": true, + "position": { + "x": -646.1381872719935, + "y": 1369.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1819,19 +2634,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 221, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 221, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 221, + "height": 49 + }, "resizing": true, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -646.1381872719935, + "y": 1369.7051467174065 + } }, { "id": "2oQiuQ2j02SCt9t5eV6hg", "type": "subtopic", - "position": { "x": -685.1381872719935, "y": 1459.2051467174065 }, - "selected": true, + "position": { + "x": -685.1381872719935, + "y": 1459.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1845,19 +2672,31 @@ "oldId": "eKyMZn30UxQeBZQ7FxFbF" }, "zIndex": 999, - "width": 230, + "width": 293, "height": 49, - "style": { "width": 293 }, - "measured": { "width": 230, "height": 49 }, + "style": { + "width": 293 + }, + "measured": { + "width": 230, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -685.1381872719935, + "y": 1459.2051467174065 + } }, { "id": "Z23eJZjmWoeXQuezR9AhG", "type": "subtopic", - "position": { "x": -685.1381872719935, "y": 1512.2051467174065 }, - "selected": true, + "position": { + "x": -685.1381872719935, + "y": 1512.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1871,19 +2710,31 @@ "oldId": "xEHiB-egkkcBuZmgMoqHT" }, "zIndex": 999, - "width": 335, + "width": 293, "height": 49, - "style": { "width": 293 }, - "measured": { "width": 335, "height": 49 }, + "style": { + "width": 293 + }, + "measured": { + "width": 335, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -685.1381872719935, + "y": 1512.2051467174065 + } }, { "id": "48wAoAAlCNt3j5mBpKTWC", "type": "subtopic", - "position": { "x": -685.1381872719935, "y": 1565.2051467174065 }, - "selected": true, + "position": { + "x": -685.1381872719935, + "y": 1565.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1897,19 +2748,31 @@ "oldId": "xEHiB-egkkcBuZmgMoqHT" }, "zIndex": 999, - "width": 335, + "width": 293, "height": 49, - "style": { "width": 293 }, - "measured": { "width": 335, "height": 49 }, + "style": { + "width": 293 + }, + "measured": { + "width": 335, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -685.1381872719935, + "y": 1565.2051467174065 + } }, { "id": "xEHiB-egkkcBuZmgMoqHT", "type": "subtopic", - "position": { "x": -685.1381872719935, "y": 1619.2051467174065 }, - "selected": true, + "position": { + "x": -685.1381872719935, + "y": 1619.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1922,19 +2785,31 @@ } }, "zIndex": 999, - "width": 335, - "height": 49, - "style": { "width": 293 }, - "measured": { "width": 335, "height": 49 }, + "width": 293, + "height": 69, + "style": { + "width": 293 + }, + "measured": { + "width": 335, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -685.1381872719935, + "y": 1619.2051467174065 + } }, { "id": "eKyMZn30UxQeBZQ7FxFbF", "type": "subtopic", - "position": { "x": -450.1381872719935, "y": 1459.2051467174065 }, - "selected": true, + "position": { + "x": -450.1381872719935, + "y": 1459.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1948,19 +2823,31 @@ "oldId": "xEHiB-egkkcBuZmgMoqHT" }, "zIndex": 999, - "width": 100, + "width": 293, "height": 49, - "style": { "width": 293 }, - "measured": { "width": 100, "height": 49 }, + "style": { + "width": 293 + }, + "measured": { + "width": 100, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -450.1381872719935, + "y": 1459.2051467174065 + } }, { "id": "Fn_uYKigJRgb7r_iYGVBr", "type": "topic", - "position": { "x": 138.99419451849974, "y": 1369.7051467174065 }, - "selected": true, + "position": { + "x": 138.99419451849974, + "y": 1369.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -1974,19 +2861,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 221, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 221, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 221, + "height": 49 + }, "resizing": true, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 138.99419451849974, + "y": 1369.7051467174065 + } }, { "id": "AwQJYL60NNbA5_z7iLcM7", "type": "subtopic", - "position": { "x": 115.99419451849974, "y": 1171.7051467174065 }, - "selected": true, + "position": { + "x": 115.99419451849974, + "y": 1171.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2000,19 +2899,31 @@ "oldId": "AWosNs2nvDGV8r6WvgBI1" }, "zIndex": 999, - "width": 121, + "width": 252, "height": 49, - "style": { "width": 252 }, - "measured": { "width": 121, "height": 49 }, + "style": { + "width": 252 + }, + "measured": { + "width": 121, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 115.99419451849974, + "y": 1171.7051467174065 + } }, { "id": "LFPhSHOhUqM98fUxMjQUw", "type": "subtopic", - "position": { "x": 240.8618127280065, "y": 1171.7051467174065 }, - "selected": true, + "position": { + "x": 240.8618127280065, + "y": 1171.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2026,19 +2937,31 @@ "oldId": "I3LNa1cM_zRkBy8wKdz3g" }, "zIndex": 999, - "width": 134, + "width": 252, "height": 49, - "style": { "width": 252 }, - "measured": { "width": 134, "height": 49 }, + "style": { + "width": 252 + }, + "measured": { + "width": 134, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 240.8618127280065, + "y": 1171.7051467174065 + } }, { "id": "AWosNs2nvDGV8r6WvgBI1", "type": "subtopic", - "position": { "x": 272.8618127280065, "y": 1278.7051467174065 }, - "selected": true, + "position": { + "x": 272.8618127280065, + "y": 1278.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2052,19 +2975,31 @@ "oldId": "I3LNa1cM_zRkBy8wKdz3g" }, "zIndex": 999, - "width": 100, + "width": 252, "height": 49, - "style": { "width": 252 }, - "measured": { "width": 100, "height": 49 }, + "style": { + "width": 252 + }, + "measured": { + "width": 100, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 272.8618127280065, + "y": 1278.7051467174065 + } }, { "id": "zmb5lK_EGMAChPoPvP9E0", "type": "subtopic", - "position": { "x": 115.49419451849974, "y": 1224.7051467174065 }, - "selected": true, + "position": { + "x": 115.49419451849974, + "y": 1224.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2078,19 +3013,31 @@ "oldId": "I3LNa1cM_zRkBy8wKdz3g" }, "zIndex": 999, - "width": 120, + "width": 252, "height": 49, - "style": { "width": 252 }, - "measured": { "width": 120, "height": 49 }, + "style": { + "width": 252 + }, + "measured": { + "width": 120, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 115.49419451849974, + "y": 1224.7051467174065 + } }, { "id": "4xBaZPk0eSsWG1vK3e2yW", "type": "subtopic", - "position": { "x": 115.49419451849974, "y": 1278.7051467174065 }, - "selected": true, + "position": { + "x": 115.49419451849974, + "y": 1278.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2104,19 +3051,31 @@ "oldId": "I3LNa1cM_zRkBy8wKdz3g" }, "zIndex": 999, - "width": 152, + "width": 252, "height": 49, - "style": { "width": 252 }, - "measured": { "width": 152, "height": 49 }, + "style": { + "width": 252 + }, + "measured": { + "width": 152, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 115.49419451849974, + "y": 1278.7051467174065 + } }, { "id": "I3LNa1cM_zRkBy8wKdz3g", "type": "subtopic", - "position": { "x": 241.99419451849974, "y": 1224.7051467174065 }, - "selected": true, + "position": { + "x": 241.99419451849974, + "y": 1224.7051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2129,19 +3088,31 @@ } }, "zIndex": 999, - "width": 131, + "width": 252, "height": 49, - "style": { "width": 252 }, - "measured": { "width": 131, "height": 49 }, + "style": { + "width": 252 + }, + "measured": { + "width": 131, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 241.99419451849974, + "y": 1224.7051467174065 + } }, { "id": "DQEa8LrJ9TVW4ULBE4aHJ", "type": "topic", - "position": { "x": 138.99419451849974, "y": 1518.2051467174065 }, - "selected": true, + "position": { + "x": 138.99419451849974, + "y": 1518.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2155,19 +3126,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 221, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 221, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 221, + "height": 49 + }, "resizing": true, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 138.99419451849974, + "y": 1518.2051467174065 + } }, { "id": "ru7mpLQZKE1QxAdiA1sS3", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1465.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1465.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2181,19 +3164,31 @@ "oldId": "o5lSQFW-V_PqndGqo1mp3" }, "zIndex": 999, - "width": 207, + "width": 155, "height": 49, - "style": { "width": 155 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 155 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1465.2051467174065 + } }, { "id": "o5lSQFW-V_PqndGqo1mp3", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1518.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1518.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2206,19 +3201,31 @@ } }, "zIndex": 999, - "width": 207, + "width": 155, "height": 49, - "style": { "width": 155 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 155 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1518.2051467174065 + } }, { "id": "Mb42VFjCzMZn_PovKIfKx", "type": "topic", - "position": { "x": 138.99419451849974, "y": 1710.2051467174065 }, - "selected": true, + "position": { + "x": 138.99419451849974, + "y": 1710.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2232,19 +3239,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 221, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 221, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 221, + "height": 49 + }, "resizing": true, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 138.99419451849974, + "y": 1710.2051467174065 + } }, { "id": "0pciSsiQqIGJh3x8465_s", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1604.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1604.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2260,17 +3279,29 @@ "zIndex": 999, "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1604.2051467174065 + } }, { "id": "Xszo9vXuwwXZo26seHehD", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1657.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1657.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2286,17 +3317,29 @@ "zIndex": 999, "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1657.2051467174065 + } }, { "id": "4ees23q281J1DPVAc7iXd", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1710.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1710.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2312,17 +3355,29 @@ "zIndex": 999, "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1710.2051467174065 + } }, { "id": "X6Jw95kbyPgsDNRhvkQP9", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1764.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1764.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2336,19 +3391,31 @@ "oldId": "D0yUzzaJsfhtdBWMtquAj" }, "zIndex": 999, - "width": 75, + "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 75, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 75, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1764.2051467174065 + } }, { "id": "D0yUzzaJsfhtdBWMtquAj", "type": "subtopic", - "position": { "x": -102.57199637674694, "y": 1764.2051467174065 }, - "selected": true, + "position": { + "x": -102.57199637674694, + "y": 1764.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2361,19 +3428,31 @@ } }, "zIndex": 999, - "width": 128, + "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 128, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 128, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -102.57199637674694, + "y": 1764.2051467174065 + } }, { "id": "f5oQYhmjNM2_FD7Qe1zGK", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1818.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1818.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2389,17 +3468,29 @@ "zIndex": 999, "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1818.2051467174065 + } }, { "id": "bZ8Yj6QfBeDdh8hRM_aZs", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1871.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1871.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2413,19 +3504,31 @@ "oldId": "uk6UMuI8Uhf02TBAGVeLS" }, "zIndex": 999, - "width": 102, + "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 102, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 102, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1871.2051467174065 + } }, { "id": "uk6UMuI8Uhf02TBAGVeLS", "type": "subtopic", - "position": { "x": -74.6381872719935, "y": 1871.2051467174065 }, - "selected": true, + "position": { + "x": -74.6381872719935, + "y": 1871.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2439,19 +3542,31 @@ "oldId": "D0yUzzaJsfhtdBWMtquAj" }, "zIndex": 999, - "width": 100, + "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 100, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 100, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -74.6381872719935, + "y": 1871.2051467174065 + } }, { "id": "tVrbVcNEfc11FbEUoO2Dk", "type": "subtopic", - "position": { "x": -181.57199637674694, "y": 1925.2051467174065 }, - "selected": true, + "position": { + "x": -181.57199637674694, + "y": 1925.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2467,17 +3582,29 @@ "zIndex": 999, "width": 207, "height": 49, - "style": { "width": 207 }, - "measured": { "width": 207, "height": 49 }, + "style": { + "width": 207 + }, + "measured": { + "width": 207, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -181.57199637674694, + "y": 1925.2051467174065 + } }, { "id": "4tFZ1PLpz50bddf7zSFrW", "type": "topic", - "position": { "x": -636.1381872719935, "y": 1986.2051467174065 }, - "selected": true, + "position": { + "x": -636.1381872719935, + "y": 1986.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2491,19 +3618,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 221, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 221, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 221, + "height": 49 + }, "resizing": true, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -636.1381872719935, + "y": 1986.2051467174065 + } }, { "id": "-pW7R76yNIeGf7TQoX4QL", "type": "subtopic", - "position": { "x": -636.1381872719935, "y": 1749.2051467174065 }, - "selected": true, + "position": { + "x": -636.1381872719935, + "y": 1749.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2519,16 +3658,26 @@ "zIndex": 999, "width": 102, "height": 49, - "measured": { "width": 102, "height": 49 }, + "measured": { + "width": 102, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -636.1381872719935, + "y": 1749.2051467174065 + } }, { "id": "JyxvZOb7iusOSUYSlniGl", "type": "subtopic", - "position": { "x": -530.1381872719935, "y": 1750.2051467174065 }, - "selected": true, + "position": { + "x": -530.1381872719935, + "y": 1750.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2541,18 +3690,28 @@ } }, "zIndex": 999, - "width": 119, + "width": 115, "height": 49, - "measured": { "width": 119, "height": 49 }, + "measured": { + "width": 119, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -530.1381872719935, + "y": 1750.2051467174065 + } }, { "id": "WJT-yrMq8cEI87RHWA2jY", "type": "subtopic", - "position": { "x": -636.1381872719935, "y": 1802.2051467174065 }, - "selected": true, + "position": { + "x": -636.1381872719935, + "y": 1802.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2566,18 +3725,28 @@ "oldId": "rOGnHbGIr3xPCFdpkqoeK" }, "zIndex": 999, - "width": 101, + "width": 92, "height": 49, - "measured": { "width": 101, "height": 49 }, + "measured": { + "width": 101, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -636.1381872719935, + "y": 1802.2051467174065 + } }, { "id": "rQxfp7UWqN72iqewZhOdc", "type": "subtopic", - "position": { "x": -530.1381872719935, "y": 1803.2051467174065 }, - "selected": true, + "position": { + "x": -530.1381872719935, + "y": 1803.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2591,18 +3760,28 @@ "oldId": "JyxvZOb7iusOSUYSlniGl" }, "zIndex": 999, - "width": 119, + "width": 140, "height": 49, - "measured": { "width": 119, "height": 49 }, + "measured": { + "width": 119, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -530.1381872719935, + "y": 1803.2051467174065 + } }, { "id": "rOGnHbGIr3xPCFdpkqoeK", "type": "subtopic", - "position": { "x": -636.1381872719935, "y": 1856.2051467174065 }, - "selected": true, + "position": { + "x": -636.1381872719935, + "y": 1856.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2616,18 +3795,28 @@ "oldId": "rQxfp7UWqN72iqewZhOdc" }, "zIndex": 999, - "width": 222, + "width": 129, "height": 49, - "measured": { "width": 222, "height": 49 }, + "measured": { + "width": 222, + "height": 49 + }, "dragging": false, "resizing": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -636.1381872719935, + "y": 1856.2051467174065 + } }, { "id": "bdQNcr1sj94aX_gjwf2Fa", "type": "topic", - "position": { "x": -636.1381872719935, "y": 2146.2051467174065 }, - "selected": true, + "position": { + "x": -636.1381872719935, + "y": 2146.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2641,19 +3830,31 @@ "oldId": "3OpGaQhyNtk1n1MLp-tlb" }, "zIndex": 999, - "width": 221, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 221, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 221, + "height": 49 + }, "resizing": true, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -636.1381872719935, + "y": 2146.2051467174065 + } }, { "id": "Ymf3u_sG1dyt8ZR_LbwqJ", "type": "subtopic", - "position": { "x": -294.50580548150026, "y": 2066.2051467174065 }, - "selected": true, + "position": { + "x": -294.50580548150026, + "y": 2066.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2667,18 +3868,28 @@ "oldId": "7seneb4TWts4v1_x8xlcZ" }, "zIndex": 999, - "width": 86, + "width": 88, "height": 49, - "measured": { "width": 86, "height": 49 }, + "measured": { + "width": 86, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -294.50580548150026, + "y": 2066.2051467174065 + } }, { "id": "Uc36t92UAlILgM3_XxcMG", "type": "subtopic", - "position": { "x": -204.57199637674694, "y": 2066.2051467174065 }, - "selected": true, + "position": { + "x": -204.57199637674694, + "y": 2066.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2691,18 +3902,28 @@ } }, "zIndex": 999, - "width": 86, + "width": 78, "height": 49, - "measured": { "width": 86, "height": 49 }, + "measured": { + "width": 86, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -204.57199637674694, + "y": 2066.2051467174065 + } }, { "id": "BnB3Rirh4R7a7LW7-k-95", "type": "subtopic", - "position": { "x": -294.50580548150026, "y": 2119.2051467174065 }, - "selected": true, + "position": { + "x": -294.50580548150026, + "y": 2119.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2718,17 +3939,29 @@ "zIndex": 999, "width": 177, "height": 49, - "style": { "width": 177 }, - "measured": { "width": 177, "height": 49 }, + "style": { + "width": 177 + }, + "measured": { + "width": 177, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -294.50580548150026, + "y": 2119.2051467174065 + } }, { "id": "yrxNYMluJ9OAQCKuM5W1u", "type": "subtopic", - "position": { "x": -294.50580548150026, "y": 2172.2051467174065 }, - "selected": true, + "position": { + "x": -294.50580548150026, + "y": 2172.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2744,17 +3977,29 @@ "zIndex": 999, "width": 177, "height": 49, - "style": { "width": 177 }, - "measured": { "width": 177, "height": 49 }, + "style": { + "width": 177 + }, + "measured": { + "width": 177, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -294.50580548150026, + "y": 2172.2051467174065 + } }, { "id": "7seneb4TWts4v1_x8xlcZ", "type": "subtopic", - "position": { "x": -294.50580548150026, "y": 2225.2051467174065 }, - "selected": true, + "position": { + "x": -294.50580548150026, + "y": 2225.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2770,17 +4015,29 @@ "zIndex": 999, "width": 177, "height": 49, - "style": { "width": 177 }, - "measured": { "width": 177, "height": 49 }, + "style": { + "width": 177 + }, + "measured": { + "width": 177, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": -294.50580548150026, + "y": 2225.2051467174065 + } }, { "id": "3OpGaQhyNtk1n1MLp-tlb", "type": "topic", - "position": { "x": 19.99419451849974, "y": 2314.2051467174065 }, - "selected": true, + "position": { + "x": 19.99419451849974, + "y": 2314.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2794,19 +4051,31 @@ "oldId": "t8SJbGVXsUDECxePLDk_w" }, "zIndex": 999, - "width": 186, + "width": 225, "height": 49, - "style": { "width": 225 }, - "measured": { "width": 186, "height": 49 }, + "style": { + "width": 225 + }, + "measured": { + "width": 186, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 19.99419451849974, + "y": 2314.2051467174065 + } }, { "id": "QgfenmhMc18cU_JngQ1n0", "type": "subtopic", - "position": { "x": 11.49419451849974, "y": 2115.2051467174065 }, - "selected": true, + "position": { + "x": 11.49419451849974, + "y": 2115.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2822,17 +4091,29 @@ "zIndex": 999, "width": 100, "height": 49, - "style": { "width": 100 }, - "measured": { "width": 100, "height": 49 }, + "style": { + "width": 100 + }, + "measured": { + "width": 100, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 11.49419451849974, + "y": 2115.2051467174065 + } }, { "id": "23lsrUw8ux6ZP9JlDNNu2", "type": "subtopic", - "position": { "x": 114.3618127280065, "y": 2115.2051467174065 }, - "selected": true, + "position": { + "x": 114.3618127280065, + "y": 2115.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2845,18 +4126,28 @@ } }, "zIndex": 999, - "width": 100, + "width": 107, "height": 49, - "measured": { "width": 100, "height": 49 }, + "measured": { + "width": 100, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 114.3618127280065, + "y": 2115.2051467174065 + } }, { "id": "bVCwRoFsYb3HD8X4xuKOo", "type": "subtopic", - "position": { "x": 11.49419451849974, "y": 2168.2051467174065 }, - "selected": true, + "position": { + "x": 11.49419451849974, + "y": 2168.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2872,17 +4163,29 @@ "zIndex": 999, "width": 203, "height": 49, - "style": { "width": 203 }, - "measured": { "width": 203, "height": 49 }, + "style": { + "width": 203 + }, + "measured": { + "width": 203, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 11.49419451849974, + "y": 2168.2051467174065 + } }, { "id": "MfengY3ouz6sSOx3PXYf8", "type": "subtopic", - "position": { "x": 11.49419451849974, "y": 2221.2051467174065 }, - "selected": true, + "position": { + "x": 11.49419451849974, + "y": 2221.2051467174065 + }, + "selected": false, "selectable": true, "draggable": true, "deletable": true, @@ -2898,19 +4201,31 @@ "zIndex": 999, "width": 203, "height": 49, - "style": { "width": 203 }, - "measured": { "width": 203, "height": 49 }, + "style": { + "width": 203 + }, + "measured": { + "width": 203, + "height": 49 + }, "resizing": false, "dragging": false, - "focusable": true + "focusable": true, + "positionAbsolute": { + "x": 11.49419451849974, + "y": 2221.2051467174065 + } }, { "width": 21, "height": 74, "id": "ef-jFKMs8jw3Ti94jem96", "type": "vertical", - "position": { "x": 105.02847939467313, "y": 2524.6547713337786 }, - "selected": true, + "position": { + "x": 105.02847939467313, + "y": 2524.6547713337786 + }, + "selected": false, "data": { "label": "vertical node", "style": { @@ -2922,21 +4237,33 @@ "oldId": "RLtk1C3gofHnLJ17x3o5b" }, "zIndex": 999, - "positionAbsolute": { "x": -166.70323666083152, "y": 1933.7906301811445 }, + "positionAbsolute": { + "x": 105.02847939467313, + "y": 2524.6547713337786 + }, "dragging": false, "focusable": true, - "style": { "width": 21, "height": 74 }, + "style": { + "width": 21, + "height": 74 + }, "resizing": false, "selectable": true, - "measured": { "width": 21, "height": 74 } + "measured": { + "width": 21, + "height": 74 + } }, { - "width": 473, - "height": 117, + "width": 410, + "height": 119, "id": "0vLaVNJaJSHZ_bHli6Qzs", "type": "paragraph", - "position": { "x": -133.74416945365664, "y": 2421.509113900669 }, - "selected": true, + "position": { + "x": -133.74416945365664, + "y": 2421.509113900669 + }, + "selected": false, "data": { "label": "Continue learning with following roadmaps", "style": { @@ -2949,88 +4276,139 @@ "oldId": "m9eO0jLGuR_9w2JJbe_g2" }, "zIndex": 999, - "positionAbsolute": { "x": -361.2032366608315, "y": 1810.7906301811447 }, + "positionAbsolute": { + "x": -133.74416945365664, + "y": 2421.509113900669 + }, "dragging": false, - "style": { "width": 410, "height": 119 }, + "style": { + "width": 410, + "height": 119 + }, "resizing": false, "focusable": true, "selectable": true, - "measured": { "width": 473, "height": 117 } + "measured": { + "width": 473, + "height": 117 + } }, { - "width": 136, + "width": 380, "height": 49, "id": "UloavCkIvZnD1XMFohYVT", "type": "button", - "position": { "x": -118.74416945365664, "y": 2475.6547713337786 }, - "selected": true, + "position": { + "x": -118.74416945365664, + "y": 2475.6547713337786 + }, + "selected": false, "data": { "label": "DevOps", "href": "https://roadmap.sh/devops", "color": "#FFf", "backgroundColor": "#4136D6", - "style": { "fontSize": 17 }, + "style": { + "fontSize": 17 + }, "borderColor": "#4136D6", "oldId": "OIcmPSbdsuWapb6HZ4BEi" }, "zIndex": 999, "dragging": false, - "positionAbsolute": { "x": -346.2032366608315, "y": 1864.9362876142543 }, - "style": { "width": 380, "height": 49 }, + "positionAbsolute": { + "x": -118.74416945365664, + "y": 2475.6547713337786 + }, + "style": { + "width": 380, + "height": 49 + }, "focusable": true, "resizing": false, "selectable": true, - "measured": { "width": 136, "height": 49 } + "measured": { + "width": 136, + "height": 49 + } }, { - "width": 128, + "width": 380, "height": 49, "id": "StxLh1r3qXqyRSqfJGird", "type": "button", - "position": { "x": 196.8618127280065, "y": 2475.6547713337786 }, - "selected": true, + "position": { + "x": 196.8618127280065, + "y": 2475.6547713337786 + }, + "selected": false, "data": { "label": "Backend", "href": "https://roadmap.sh/backend", "color": "#FFf", "backgroundColor": "#4136D6", - "style": { "fontSize": 17 }, + "style": { + "fontSize": 17 + }, "borderColor": "#4136D6", "oldId": "OIcmPSbdsuWapb6HZ4BEi" }, "zIndex": 999, "dragging": false, - "positionAbsolute": { "x": -346.2032366608315, "y": 1864.9362876142543 }, - "style": { "width": 380, "height": 49 }, + "positionAbsolute": { + "x": 196.8618127280065, + "y": 2475.6547713337786 + }, + "style": { + "width": 380, + "height": 49 + }, "focusable": true, "resizing": false, "selectable": true, - "measured": { "width": 128, "height": 49 } + "measured": { + "width": 128, + "height": 49 + } }, { - "width": 166, + "width": 380, "height": 49, "id": "OIcmPSbdsuWapb6HZ4BEi", "type": "button", - "position": { "x": 22.861812728006498, "y": 2475.6547713337786 }, - "selected": true, + "position": { + "x": 22.861812728006498, + "y": 2475.6547713337786 + }, + "selected": false, "data": { "label": "Docker", "href": "https://roadmap.sh/docker", "color": "#FFf", "backgroundColor": "#4136D6", - "style": { "fontSize": 17 }, + "style": { + "fontSize": 17 + }, "borderColor": "#4136D6", "oldId": "cmSSwPPiiHwYh9ct14N6A" }, "zIndex": 999, "dragging": false, - "positionAbsolute": { "x": -346.2032366608315, "y": 1864.9362876142543 }, - "style": { "width": 380, "height": 49 }, + "positionAbsolute": { + "x": 22.861812728006498, + "y": 2475.6547713337786 + }, + "style": { + "width": 380, + "height": 49 + }, "focusable": true, "resizing": false, "selectable": true, - "measured": { "width": 166, "height": 49 } + "measured": { + "width": 166, + "height": 49 + } } ], "edges": [ @@ -3045,9 +4423,11 @@ "sourceHandle": "x2", "target": "y7KjVfSI6CAduyHd4mBFT", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__HU7wZWiES3m3xl1-NYP6Fx2-t8SJbGVXsUDECxePLDk_ww1", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3062,9 +4442,11 @@ "sourceHandle": "z2", "target": "qLeEEwBvlGt1fP5Qcreah", "targetHandle": "y2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__t8SJbGVXsUDECxePLDk_wz2-qLeEEwBvlGt1fP5Qcreahy2", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3079,9 +4461,11 @@ "sourceHandle": "z2", "target": "q-Ky0ietZGpyUcBQfh-BJ", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__t8SJbGVXsUDECxePLDk_wz2-q-Ky0ietZGpyUcBQfh-BJy1", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3096,9 +4480,11 @@ "sourceHandle": "z2", "target": "9oo2fxTM2_p0VYPBroqxa", "targetHandle": "y2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__t8SJbGVXsUDECxePLDk_wz2-9oo2fxTM2_p0VYPBroqxay2", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3113,9 +4499,11 @@ "sourceHandle": "z2", "target": "3fzuXKH7az_LVnmnoXB1p", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__t8SJbGVXsUDECxePLDk_wz2-3fzuXKH7az_LVnmnoXB1py1", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3130,9 +4518,11 @@ "sourceHandle": "y2", "target": "yqRwmcZThjQuqh2ao0dWK", "targetHandle": "z2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__HGmeYvRf7_XusZl_K4x9ky2-yqRwmcZThjQuqh2ao0dWKz2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3147,9 +4537,11 @@ "sourceHandle": "x2", "target": "8QBMyL8D5jPovxN8jyZW9", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__HGmeYvRf7_XusZl_K4x9kx2-3OpGaQhyNtk1n1MLp-tlbw1", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3164,9 +4556,11 @@ "sourceHandle": "y2", "target": "KaMSsQnJzNqGHg0Oia4uy", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-KaMSsQnJzNqGHg0Oia4uyz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3181,9 +4575,11 @@ "sourceHandle": "y2", "target": "moGMHNR58wFlzhS7je1wc", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-moGMHNR58wFlzhS7je1wcz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3198,9 +4594,11 @@ "sourceHandle": "y2", "target": "zwXEmpPYjA7_msS43z7I0", "targetHandle": "z2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-zwXEmpPYjA7_msS43z7I0z2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3215,9 +4613,11 @@ "sourceHandle": "y2", "target": "JgoZzx4BfK7tmosgpZOsf", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-JgoZzx4BfK7tmosgpZOsfz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3232,9 +4632,11 @@ "sourceHandle": "y2", "target": "NIBSZGE9PskVrluJpdom0", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-NIBSZGE9PskVrluJpdom0z1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3249,9 +4651,11 @@ "sourceHandle": "x2", "target": "RsOTPZPZGTEIt1Lk41bQV", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__8QBMyL8D5jPovxN8jyZW9x2-3OpGaQhyNtk1n1MLp-tlbw1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3266,9 +4670,11 @@ "sourceHandle": "z2", "target": "-B2Dvz7160Er0OBHzS6ro", "targetHandle": "y2", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__RsOTPZPZGTEIt1Lk41bQVz2-3OpGaQhyNtk1n1MLp-tlby2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3283,9 +4689,11 @@ "sourceHandle": "y2", "target": "TnrT-cqMA8urew9nLv0Ns", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__RsOTPZPZGTEIt1Lk41bQVy2-TnrT-cqMA8urew9nLv0Nsz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3300,9 +4708,11 @@ "sourceHandle": "y2", "target": "iD073xTmpzvQFfXwcwXcY", "targetHandle": "z2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__RsOTPZPZGTEIt1Lk41bQVy2-iD073xTmpzvQFfXwcwXcYz2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3317,9 +4727,11 @@ "sourceHandle": "y2", "target": "abKO6KuuIfl9ruVxBw6t_", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__RsOTPZPZGTEIt1Lk41bQVy2-abKO6KuuIfl9ruVxBw6t_z1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3334,9 +4746,11 @@ "sourceHandle": "y2", "target": "KaXHG_EKxI5PUXmcvlJt6", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__RsOTPZPZGTEIt1Lk41bQVy2-KaXHG_EKxI5PUXmcvlJt6z1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3351,9 +4765,11 @@ "sourceHandle": "x2", "target": "jSzfQf0MlnXtWHCc-HYvr", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__-B2Dvz7160Er0OBHzS6rox2-3OpGaQhyNtk1n1MLp-tlbw1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3368,9 +4784,11 @@ "sourceHandle": "x2", "target": "19lTWqAvZFT2CDlhLlPSq", "targetHandle": "w1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbx2-19lTWqAvZFT2CDlhLlPSqw1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3385,9 +4803,11 @@ "sourceHandle": "y2", "target": "h01Y6dW09ChidlM2HYoav", "targetHandle": "z2", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__jSzfQf0MlnXtWHCc-HYvry2-3OpGaQhyNtk1n1MLp-tlbz2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3402,9 +4822,11 @@ "sourceHandle": "x2", "target": "mUKoiGUTpIaUgQNF3BND_", "targetHandle": "w1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbx2-mUKoiGUTpIaUgQNF3BND_w1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3419,9 +4841,11 @@ "sourceHandle": "y2", "target": "g6n7f1Qi0BPr_BGvisWuz", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__h01Y6dW09ChidlM2HYoavy2-g6n7f1Qi0BPr_BGvisWuzw1", - "selected": true, + "selected": false, "type": "smoothstep", "focusable": true, "selectable": true @@ -3437,9 +4861,11 @@ "sourceHandle": "x2", "target": "F1sU3O1ouxTOvpidDfN3k", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__u2K2QU5WxT9sSe9FCB-CAx2-3OpGaQhyNtk1n1MLp-tlbw1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3454,9 +4880,11 @@ "sourceHandle": "z2", "target": "34UUrc8Yjc_8lvTL8itc3", "targetHandle": "y2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-34UUrc8Yjc_8lvTL8itc3y2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3471,9 +4899,11 @@ "sourceHandle": "z2", "target": "FStz-bftQBK0M6zz2Bxl4", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-FStz-bftQBK0M6zz2Bxl4y1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3488,9 +4918,11 @@ "sourceHandle": "z2", "target": "DuEfJNrm4Jfmp8-8Pggrf", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-DuEfJNrm4Jfmp8-8Pggrfy1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3505,9 +4937,11 @@ "sourceHandle": "z2", "target": "xk5Xgi797HlVjdZJRfwX1", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-xk5Xgi797HlVjdZJRfwX1y1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3522,9 +4956,11 @@ "sourceHandle": "x2", "target": "4eINX8jYMJxfYh7ZV47YI", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__F1sU3O1ouxTOvpidDfN3kx2-3OpGaQhyNtk1n1MLp-tlbw1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3539,9 +4975,11 @@ "sourceHandle": "z2", "target": "Fn_uYKigJRgb7r_iYGVBr", "targetHandle": "y1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__4eINX8jYMJxfYh7ZV47YIz2-3OpGaQhyNtk1n1MLp-tlby1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3556,9 +4994,11 @@ "sourceHandle": "y2", "target": "o5lSQFW-V_PqndGqo1mp3", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-o5lSQFW-V_PqndGqo1mp3z1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3573,9 +5013,11 @@ "sourceHandle": "y2", "target": "ru7mpLQZKE1QxAdiA1sS3", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-ru7mpLQZKE1QxAdiA1sS3z1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3590,9 +5032,11 @@ "sourceHandle": "x2", "target": "DQEa8LrJ9TVW4ULBE4aHJ", "targetHandle": "w2", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__Fn_uYKigJRgb7r_iYGVBrx2-3OpGaQhyNtk1n1MLp-tlbw2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3607,9 +5051,11 @@ "sourceHandle": "x2", "target": "Mb42VFjCzMZn_PovKIfKx", "targetHandle": "w1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__DQEa8LrJ9TVW4ULBE4aHJx2-3OpGaQhyNtk1n1MLp-tlbw1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3624,9 +5070,11 @@ "sourceHandle": "y2", "target": "0pciSsiQqIGJh3x8465_s", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-0pciSsiQqIGJh3x8465_sz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3641,9 +5089,11 @@ "sourceHandle": "y2", "target": "Xszo9vXuwwXZo26seHehD", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-Xszo9vXuwwXZo26seHehDz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3658,9 +5108,11 @@ "sourceHandle": "y2", "target": "4ees23q281J1DPVAc7iXd", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-4ees23q281J1DPVAc7iXdz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3675,9 +5127,11 @@ "sourceHandle": "y2", "target": "D0yUzzaJsfhtdBWMtquAj", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-D0yUzzaJsfhtdBWMtquAjz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3692,9 +5146,11 @@ "sourceHandle": "y2", "target": "f5oQYhmjNM2_FD7Qe1zGK", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-f5oQYhmjNM2_FD7Qe1zGKz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3709,9 +5165,11 @@ "sourceHandle": "y2", "target": "uk6UMuI8Uhf02TBAGVeLS", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-uk6UMuI8Uhf02TBAGVeLSz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3726,9 +5184,11 @@ "sourceHandle": "y2", "target": "tVrbVcNEfc11FbEUoO2Dk", "targetHandle": "z1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlby2-tVrbVcNEfc11FbEUoO2Dkz1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3743,9 +5203,11 @@ "sourceHandle": "x2", "target": "4tFZ1PLpz50bddf7zSFrW", "targetHandle": "z2", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__Mb42VFjCzMZn_PovKIfKxx2-3OpGaQhyNtk1n1MLp-tlbz2", - "selected": true, + "selected": false, "type": "smoothstep", "focusable": true, "selectable": true @@ -3761,9 +5223,11 @@ "sourceHandle": "w2", "target": "rOGnHbGIr3xPCFdpkqoeK", "targetHandle": "x1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbw2-rOGnHbGIr3xPCFdpkqoeKx1", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3778,9 +5242,11 @@ "sourceHandle": "x2", "target": "bdQNcr1sj94aX_gjwf2Fa", "targetHandle": "w2", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__4tFZ1PLpz50bddf7zSFrWx2-3OpGaQhyNtk1n1MLp-tlbw2", - "selected": true, + "selected": false, "focusable": true, "selectable": true }, @@ -3795,9 +5261,11 @@ "sourceHandle": "z2", "target": "BnB3Rirh4R7a7LW7-k-95", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-BnB3Rirh4R7a7LW7-k-95y1", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3812,9 +5280,11 @@ "sourceHandle": "z2", "target": "yrxNYMluJ9OAQCKuM5W1u", "targetHandle": "y2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-yrxNYMluJ9OAQCKuM5W1uy2", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3829,9 +5299,11 @@ "sourceHandle": "z2", "target": "Ymf3u_sG1dyt8ZR_LbwqJ", "targetHandle": "y1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-Ymf3u_sG1dyt8ZR_LbwqJy1", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3846,9 +5318,11 @@ "sourceHandle": "z2", "target": "7seneb4TWts4v1_x8xlcZ", "targetHandle": "y2", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbz2-7seneb4TWts4v1_x8xlcZy2", - "selected": true, + "selected": false, "selectable": true, "focusable": true }, @@ -3863,9 +5337,11 @@ "sourceHandle": "x2", "target": "3OpGaQhyNtk1n1MLp-tlb", "targetHandle": "y1", - "data": { "edgeStyle": "solid" }, + "data": { + "edgeStyle": "solid" + }, "id": "xy-edge__bdQNcr1sj94aX_gjwf2Fax2-3OpGaQhyNtk1n1MLp-tlby1", - "selected": true, + "selected": false, "type": "smoothstep", "selectable": true, "focusable": true @@ -3881,11 +5357,13 @@ "sourceHandle": "w2", "target": "MfengY3ouz6sSOx3PXYf8", "targetHandle": "x1", - "data": { "edgeStyle": "dashed" }, + "data": { + "edgeStyle": "dashed" + }, "id": "xy-edge__3OpGaQhyNtk1n1MLp-tlbw2-MfengY3ouz6sSOx3PXYf8x1", - "selected": true, + "selected": false, "selectable": true, "focusable": true } ] -} +} \ No newline at end of file diff --git a/src/data/roadmaps/linux/migration-mapping.json b/src/data/roadmaps/linux/migration-mapping.json new file mode 100644 index 000000000..70f056aa3 --- /dev/null +++ b/src/data/roadmaps/linux/migration-mapping.json @@ -0,0 +1,104 @@ +{ + "navigation-basics": "y7KjVfSI6CAduyHd4mBFT", + "navigation-basics:basic-commands": "qLeEEwBvlGt1fP5Qcreah", + "navigation-basics:moving-files": "q-Ky0ietZGpyUcBQfh-BJ", + "navigation-basics:creating-files": "9oo2fxTM2_p0VYPBroqxa", + "navigation-basics:directory-hierarchy": "3fzuXKH7az_LVnmnoXB1p", + "editing-files": "HGmeYvRf7_XusZl_K4x9k", + "editing-files:vim": "XiZz7EFIey1XKS292GN4t", + "editing-files:nano": "yqRwmcZThjQuqh2ao0dWK", + "shell-basics": "8QBMyL8D5jPovxN8jyZW9", + "shell-basics:command-path": "moGMHNR58wFlzhS7je1wc", + "shell-basics:environment-variables": "zwXEmpPYjA7_msS43z7I0", + "shell-basics:command-help": "KaMSsQnJzNqGHg0Oia4uy", + "shell-basics:redirects": "JgoZzx4BfK7tmosgpZOsf", + "shell-basics:super-user": "NIBSZGE9PskVrluJpdom0", + "working-with-files": "RsOTPZPZGTEIt1Lk41bQV", + "working-with-files:permissions": "TnrT-cqMA8urew9nLv0Ns", + "working-with-files:archiving": "iD073xTmpzvQFfXwcwXcY", + "working-with-files:copying-renaming": "abKO6KuuIfl9ruVxBw6t_", + "working-with-files:soft-hard-links": "KaXHG_EKxI5PUXmcvlJt6", + "text-processing": "-B2Dvz7160Er0OBHzS6ro", + "text-processing:stdout-in-err": "t3fxSgCgtxuMtHjclPHA6", + "text-processing:cut": "Z5Mf_e5G24IkmxEHgYBe2", + "text-processing:paste": "5658kdqJw-pIOyyhll80a", + "text-processing:sort": "1WRIy3xHtQfiQFZrprobP", + "text-processing:tr": "O9Vci_WpUY-79AkA4HDx3", + "text-processing:head": "6xdkFk_GT93MigeTSSGCp", + "text-processing:tail": "Yyk28H6TiteZEGv6Aps1h", + "text-processing:join": "vfcCS1GoyKpU1rQaE8I5r", + "text-processing:split": "Pl9s2ti25hsSEljXJvBTj", + "text-processing:pipe": "v32PJl4fzIFTOirOm6G44", + "text-processing:tee": "Bo9CdrGJej-QcNmw46k9t", + "text-processing:nl": "YSfGrmT795miIeIZrtC3D", + "text-processing:wc": "LIGOJwrXexnIcPyHVlhQ8", + "text-processing:expand": "TZuDVFS7DZFBgaSYYXoGe", + "text-processing:unexpand": "sKduFaX6xZaUUBdXRMKCL", + "text-processing:uniq": "qnBbzphImflQbEbtFub9x", + "text-processing:grep": "umlhxidsvtZG9k40Ca0Ac", + "text-processing:awk": "QTmECqpRVMjNgQU70uCF8", + "server-review": "jSzfQf0MlnXtWHCc-HYvr", + "server-review:uptime-load": "19lTWqAvZFT2CDlhLlPSq", + "server-review:auth-logs": "WwybfdKuP9ogCGpT7d3NU", + "server-review:services-running": "ewUuI_x-YhOQIYd3MTgJJ", + "server-review:available-mem": "tx0nh6cbBjVxwNlyrBNYm", + "process-management": "h01Y6dW09ChidlM2HYoav", + "process-management:bg-fg-processes": "mUKoiGUTpIaUgQNF3BND_", + "process-management:listing-finding-proc": "lf3_CRyOI2ZXGzz5ff451", + "process-management:proc-signals": "VkLWTvKnRXzvLGWza2v45", + "process-management:proc-priorities": "5anSYRhaKIs3dCLWlvZfT", + "process-management:kill-processes": "0FLUI9r7znMqi6YKReLzD", + "process-management:proc-forking": "Rib7h9lh_ndiXkwNbftz_", + "user-management": "g6n7f1Qi0BPr_BGvisWuz", + "user-management:create-update": "R9TZfkgVUQNLnMpDhovJa", + "user-management:user-groups": "h8wc8XEwWYHErna68w7Mg", + "user-management:permissions": "L6RMExeqi9501y-eCHDt1", + "service-management": "F1sU3O1ouxTOvpidDfN3k", + "service-management:service-status": "34UUrc8Yjc_8lvTL8itc3", + "service-management:start-stop-service": "FStz-bftQBK0M6zz2Bxl4", + "service-management:check-logs": "DuEfJNrm4Jfmp8-8Pggrf", + "service-management:creating-services": "xk5Xgi797HlVjdZJRfwX1", + "package-management": "4eINX8jYMJxfYh7ZV47YI", + "package-management:repositories": "2oQiuQ2j02SCt9t5eV6hg", + "package-management:snap": "eKyMZn30UxQeBZQ7FxFbF", + "package-management:finding-installing-packages": "Z23eJZjmWoeXQuezR9AhG", + "package-management:listing-installed-packages": "48wAoAAlCNt3j5mBpKTWC", + "package-management:install-remove-ugprade-packages": "xEHiB-egkkcBuZmgMoqHT", + "disks-filesystems": "Fn_uYKigJRgb7r_iYGVBr", + "disks-filesystems:inodes": "AwQJYL60NNbA5_z7iLcM7", + "disks-filesystems:filesystems": "LFPhSHOhUqM98fUxMjQUw", + "disks-filesystems:mounts": "zmb5lK_EGMAChPoPvP9E0", + "disks-filesystems:adding-disks": "4xBaZPk0eSsWG1vK3e2yW", + "disks-filesystems:lvm": "I3LNa1cM_zRkBy8wKdz3g", + "disks-filesystems:swap": "AWosNs2nvDGV8r6WvgBI1", + "booting-linux": "DQEa8LrJ9TVW4ULBE4aHJ", + "booting-linux:logs": "ru7mpLQZKE1QxAdiA1sS3", + "booting-linux:boot-loaders": "o5lSQFW-V_PqndGqo1mp3", + "networking": "Mb42VFjCzMZn_PovKIfKx", + "networking:tcp-ip": "0pciSsiQqIGJh3x8465_s", + "networking:subnetting": "Xszo9vXuwwXZo26seHehD", + "networking:ethernet-arp-rarp": "4ees23q281J1DPVAc7iXd", + "networking:dhcp": "X6Jw95kbyPgsDNRhvkQP9", + "networking:ip-routing": "D0yUzzaJsfhtdBWMtquAj", + "networking:dns-resolution": "f5oQYhmjNM2_FD7Qe1zGK", + "networking:netfilter": "bZ8Yj6QfBeDdh8hRM_aZs", + "networking:ssh": "uk6UMuI8Uhf02TBAGVeLS", + "networking:file-transfer": "tVrbVcNEfc11FbEUoO2Dk", + "shell-programming": "4tFZ1PLpz50bddf7zSFrW", + "shell-programming:debugging": "rOGnHbGIr3xPCFdpkqoeK", + "shell-programming:conditionals": "rQxfp7UWqN72iqewZhOdc", + "shell-programming:loops": "WJT-yrMq8cEI87RHWA2jY", + "shell-programming:literals": "-pW7R76yNIeGf7TQoX4QL", + "shell-programming:variables": "JyxvZOb7iusOSUYSlniGl", + "troubleshooting": "bdQNcr1sj94aX_gjwf2Fa", + "troubleshooting:icmp": "Ymf3u_sG1dyt8ZR_LbwqJ", + "troubleshooting:ping": "Uc36t92UAlILgM3_XxcMG", + "troubleshooting:traceroute": "BnB3Rirh4R7a7LW7-k-95", + "troubleshooting:netstat": "yrxNYMluJ9OAQCKuM5W1u", + "troubleshooting:packet-analysis": "7seneb4TWts4v1_x8xlcZ", + "containerization": "3OpGaQhyNtk1n1MLp-tlb", + "containerization:ulimits": "QgfenmhMc18cU_JngQ1n0", + "containerization:cgroups": "23lsrUw8ux6ZP9JlDNNu2", + "containerization:container-runtime": "bVCwRoFsYb3HD8X4xuKOo", + "containerization:docker": "MfengY3ouz6sSOx3PXYf8" +} \ No newline at end of file diff --git a/src/lib/resource-progress.ts b/src/lib/resource-progress.ts index d556e9a83..c993321c7 100644 --- a/src/lib/resource-progress.ts +++ b/src/lib/resource-progress.ts @@ -121,6 +121,7 @@ export function clearMigratedRoadmapProgress( 'aws', 'datastructures-and-algorithms', 'kubernetes', + 'linux', ]; if (!migratedRoadmaps.includes(resourceId)) {