<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dipanshu Torawane</title>
    <description>The latest articles on DEV Community by Dipanshu Torawane (@dipanshu_18).</description>
    <link>https://dev.to/dipanshu_18</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F828091%2F090d0857-0292-4bad-afbd-d57cb9c5815e.jpg</url>
      <title>DEV Community: Dipanshu Torawane</title>
      <link>https://dev.to/dipanshu_18</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dipanshu_18"/>
    <language>en</language>
    <item>
      <title>KCD Chennai 2022 Blogathon Contest 🎉</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Mon, 28 Mar 2022 17:39:20 +0000</pubDate>
      <link>https://dev.to/kcdchennai/kcd-chennai-2022-blogathon-contest-463a</link>
      <guid>https://dev.to/kcdchennai/kcd-chennai-2022-blogathon-contest-463a</guid>
      <description>&lt;h2&gt;
  
  
  Blogathon
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Either write something worth reading or do something worth writing.&lt;/em&gt; --&lt;strong&gt;Benjamin Franklin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As of 2021, there are more than 570 million blogs on the internet (and this number is constantly growing). Over 7 million blog posts are published daily. 77% of people regularly read blogs online. Blogging is a powerful means of sharing knowledge and promoting your thoughts and views.&lt;/p&gt;

&lt;p&gt;Kubernetes Community Days (KCD) Chennai 2022 is hosting a &lt;strong&gt;Blogathon&lt;/strong&gt;. If you are a seasoned blogger, or the occasional writer, or the one searching for the right reason to start blogging, we invite you to participate!! &lt;strong&gt;Unleash the writer in you.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the Prizes on Offer?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdalgcnjoxlbg7ldc58gp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdalgcnjoxlbg7ldc58gp.png" alt="prizest" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I Participate?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Register yourself &lt;a href="https://forms.gle/3Kqx2C7GMAiKFf246" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Upon registration you'll receive an email containing further steps to be followed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Important Dates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;29-March-2022: Registration begins&lt;/li&gt;
&lt;li&gt;16-April-2022: Blogging begins&lt;/li&gt;
&lt;li&gt;15-May-2022:   Registration ends&lt;/li&gt;
&lt;li&gt;31-May-2022:   Blogging ends&lt;/li&gt;
&lt;li&gt;4-June-2022:   Winners announced during KCD Chennai 2022&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What topics can I write about?
&lt;/h2&gt;

&lt;p&gt;We invite Technical blogs on a wide variety of topics. You are allowed to write about any topic you are passionate about, as long as the content is technical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing your blog
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When you create a new blog, under 'Create Post' choose 'Kubernetes Community Days Chennai' as shown below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvq5jo68ezht9x39fcm4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvq5jo68ezht9x39fcm4y.png" alt="how-to-publish-blog" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How is the score calculated?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your score would be calculated using all these parameters:

&lt;ul&gt;
&lt;li&gt;No. of views&lt;/li&gt;
&lt;li&gt;No. of reactions (likes, unicorns, bookmarks)&lt;/li&gt;
&lt;li&gt;No. of blogs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Blogs published during 16-April to 31-May alone would be considered for scoring. (&lt;strong&gt;Tip:&lt;/strong&gt; Keep publishing &lt;strong&gt;as many good-quality&lt;/strong&gt; blogs as possible.)&lt;/li&gt;

&lt;li&gt;The person who publishes the max. no of blogs during 16-April to 31-May wins the &lt;strong&gt;Prolific Blogger&lt;/strong&gt; award (&lt;strong&gt;Tip:&lt;/strong&gt; Become a blogging factory!)&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Score board
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;kcd-chennai bot&lt;/strong&gt; publishes the score board to the #kcd-chennai channel in CNCF slack. Sign-up for free at &lt;a href="https://slack.cncf.io" rel="noopener noreferrer"&gt;https://slack.cncf.io&lt;/a&gt; and join the #kcd-chennai channel to view the score board&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You are allowed to publish any number of blogs; there is no restriction.&lt;/li&gt;
&lt;li&gt;You are allowed to cross-post blogs you've already published in other blogging sites e.g. medium, hashode, wordpress etc.&lt;/li&gt;
&lt;li&gt;You are allowed to publish blogs you've already published in DEV under your personal account.&lt;/li&gt;
&lt;li&gt;Published blogs would be reviewed by our team. If the blog is offensive, violates copy rights or we detect plagiarism, such blogs would be removed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Can I promote my blogs?
&lt;/h2&gt;

&lt;p&gt;Of course yes! Feel free to promote your blogs via Social media, Emails, Newsletters, WhatsApp etc. This would help increase the views and reactions!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact Us
&lt;/h2&gt;

&lt;p&gt;If you have further questions or need help, post it in the #kcd-chennai channel in &lt;a href="https://slack.cncf.io" rel="noopener noreferrer"&gt;https://slack.cncf.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cncf</category>
      <category>cloudnative</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Intro to Environment Variables and SSH...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Tue, 22 Mar 2022 11:17:38 +0000</pubDate>
      <link>https://dev.to/kcdchennai/environment-variables-ssh-199n</link>
      <guid>https://dev.to/kcdchennai/environment-variables-ssh-199n</guid>
      <description>&lt;p&gt;&lt;strong&gt;What are environment variables?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each user has their own environment. Each user can configure their own environment/account by &lt;strong&gt;setting preferences&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These OS configurations should be isolated from other user environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1z9nzojrx8exojcvmrt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1z9nzojrx8exojcvmrt.png" alt="environment-variables-on-linux.png" width="500" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where does OS store all these configurations?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are stored in environment variables which are just &lt;strong&gt;KEY = value pairs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Variables that store information. By convention, names are defined in UPPERCASE. For example, &lt;code&gt;SHELL=/bin/bash&lt;/code&gt; &lt;em&gt;(Default shell program of the user)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Users can change these environment variable values. For example, &lt;code&gt;SHELL=/bin/zsh&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Variables are variables, which means they can be changed.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Commands for environment variables
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;printenv&lt;/code&gt; =&amp;gt; prints all the environment variables.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;printenv &amp;lt;Env. variables&amp;gt;&lt;/code&gt; =&amp;gt; prints the provided environment variable's name.&lt;/p&gt;

&lt;h4&gt;
  
  
  Referencing Environment Variable
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Using the &lt;code&gt;$&lt;/code&gt; sign. For example, &lt;code&gt;$USER&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use cases of Environment Variables&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OS stores information about the environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We can create our own environment variables.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Creating Environment Variables
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;export (env.) variable_name=value&lt;/code&gt; -&amp;gt; This is available all over the environment and not unlike bash variables which are available in the script.&lt;/p&gt;

&lt;p&gt;For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DB_USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dbuser
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secretpwdvalue
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DB_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mydb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Deleting Environment Variables
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;unset (env.) variable_name=value&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;unset &lt;/span&gt;DB_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are only available for the current session*(temporary env. variable) and* after exiting the terminal the env. variable created is removed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Persisting Environment Variables
&lt;/h3&gt;

&lt;p&gt;This is user-specific.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;There are per-user shell-specific configuration files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, if you are using BASH, you can declare the variables in the &lt;code&gt;~/.bashrc&lt;/code&gt; file.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Variables set in this file are located whenever a bash login shell is entered.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;To add these variables, open the &lt;code&gt;.bashrc&lt;/code&gt; file and at the last entry&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DB_USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dbuser
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secretpwdvalue
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DB_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mydb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, after reopening the terminal, the environment variables will be there as they are saved on the system.&lt;/p&gt;

&lt;p&gt;To load the new environment variables into the current shell session&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Persisting Environment Variables System-wide
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;To add for all users there is a configuration file in Linux in the home folder.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/etc/environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  PATH environment variable
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;These are lists of directories to executable files, separated by &lt;code&gt;:&lt;/code&gt;(colon)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This tells the shell which directories to search for the executable in response to our executed command. &lt;code&gt;PATH = $PATH:.....&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need to provide an absolute location to make that file available.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It adds our custom app/command to be available for the user(if configured in &lt;code&gt;.bashrc&lt;/code&gt;) or for all users (if configured in &lt;code&gt;/etc/environment&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  SSH - Secure Shell
&lt;/h3&gt;

&lt;p&gt;It is a network protocol that gives users a secure way to access a computer over the internet. &lt;strong&gt;SSH&lt;/strong&gt; also refers to the suite of utilities that implement that protocol.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ff9eet33ssvuanmpqff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ff9eet33ssvuanmpqff.png" alt="ssh.png" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Some Use Cases
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Copy the file to the remote server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the software on a new server.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2 ways to authenticate with the remote server
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Username&lt;/strong&gt; and &lt;strong&gt;Password&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Admin creates a user on the remote server and the user can then connect with the username and password.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SSH key pair&lt;/strong&gt; &lt;em&gt;(more secure way)&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;The client creates an SSH key pair.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;key-pair &lt;span class="o"&gt;=&lt;/span&gt; Private key + Public key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Private Key&lt;/code&gt; =&amp;gt; Secret key which is stored securely on the client machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Public Key&lt;/code&gt; =&amp;gt; This can be shared with the remote server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The client machine for that public key can safely connect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The client can "unlock" the public key with his private key.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; &lt;em&gt;If the public key of a person is not registered on the remote server, he/she will not be able to connect to it.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  SSH for services
&lt;/h4&gt;

&lt;p&gt;Services, like Jenkins, often need to connect to another server via SSH.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a Jenkins user on the application server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create SSH key pair on Jenkins server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add public SSH key to &lt;code&gt;authorized_keys&lt;/code&gt; on the application server.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Connect via SSH(Password Authentication)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh username@SSHserver&lt;span class="o"&gt;(&lt;/span&gt;IP address&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh root@159.89.14.94
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Generate SSH key pair
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;mkdir .ssh/&lt;/code&gt; =&amp;gt; create a directory for storing keys*(if not there)*.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This generates ssh key pairs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here, &lt;code&gt;-t&lt;/code&gt; means type and &lt;code&gt;rsa&lt;/code&gt; means the method of encryption.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;~/.ssh&lt;/code&gt; =&amp;gt; .ssh folder under the home directory is the default location for your ssh key pair.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;id_rsa&lt;/code&gt; =&amp;gt; &lt;strong&gt;Private&lt;/strong&gt; key.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;id_rsa.pub&lt;/code&gt; =&amp;gt; &lt;strong&gt;Public&lt;/strong&gt; key.&lt;/p&gt;

&lt;h4&gt;
  
  
  Copy files to the remote server
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;scp&lt;/code&gt;&lt;em&gt;(secure copy)&lt;/em&gt; =&amp;gt; allows you to securely copy files and directories.&lt;/p&gt;

&lt;p&gt;For example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;scp test.sh root@159.89.14.94:/root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>devops</category>
      <category>linux</category>
      <category>ssh</category>
    </item>
    <item>
      <title>Basics of Networking...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Mon, 21 Mar 2022 12:01:59 +0000</pubDate>
      <link>https://dev.to/kcdchennai/networking-1g41</link>
      <guid>https://dev.to/kcdchennai/networking-1g41</guid>
      <description>&lt;h3&gt;
  
  
  Basic Networking Terms
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;LAN&lt;/strong&gt;(Local Area Network)&lt;/p&gt;

&lt;p&gt;Collection of devices connected together in one &lt;em&gt;physical&lt;/em&gt; location. Each device has a unique &lt;strong&gt;IP&lt;/strong&gt;(Internet Protocol) address. Devices communicate via these IP addresses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0r2qakx3zs0blw21hdf8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0r2qakx3zs0blw21hdf8.png" alt="LAN.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP&lt;/strong&gt;(Internet Protocol)&lt;/p&gt;

&lt;p&gt;It's a 32-bit value.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1 bit: &lt;strong&gt;1 or 0&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;00000000: &lt;strong&gt;0&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;11111111: &lt;strong&gt;255&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkztpch2guhr1hojkmez0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkztpch2guhr1hojkmez0.jpg" alt="ip-addressing.jpg" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, 172.16.0.0&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP addresses can range from 0.0.0.0 to 255.255.255.255&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP address range&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttvjj96aarpzhuv9h9sk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttvjj96aarpzhuv9h9sk.png" alt="ip range.png" width="473" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Switch&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It sits within the LAN and facilitates the connection between all the devices within the LAN.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftylum9l4nx7axv865rmy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftylum9l4nx7axv865rmy.png" alt="Switch.png" width="371" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gateway&lt;/strong&gt; is the &lt;strong&gt;IP address&lt;/strong&gt; of the router.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2hg4ob4kmv883bmstqc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2hg4ob4kmv883bmstqc.jpg" alt="Gateway.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Router&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It sits between &lt;strong&gt;LAN&lt;/strong&gt; and outside networks &lt;strong&gt;(WAN: Wide Area Network)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It connects devices on LAN and WAN and allows networked devices to access the Internet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipgb1e3ucgi4y368ga9z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipgb1e3ucgi4y368ga9z.jpg" alt="Router.jpg" width="457" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;subnet&lt;/strong&gt; is the &lt;strong&gt;logical subdivision&lt;/strong&gt; of an IP network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furf2kqe15zs1f3zj6nn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furf2kqe15zs1f3zj6nn3.png" alt="Subnet.png" width="290" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to know whether the other device is inside or outside the LAN?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It knows because of the IP address of the target device.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Devices in the LAN belong to the same IP address range.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Subnetting&lt;/strong&gt; is the process of dividing a network into two or more networks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CIDR&lt;/strong&gt;&lt;em&gt;(Classless Inter-Domain Routing)&lt;/em&gt; block&lt;/p&gt;

&lt;p&gt;It is a subnet mask that dictates how many bits are fixed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;255.255.0.0 =&amp;gt; means that 16 bits are fixed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;255.255.255.0 =&amp;gt; means that 24 bits are fixed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0sk0okaxpvt8x044ifc1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0sk0okaxpvt8x044ifc1.jpg" alt="CIDR block.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Any device needs 3 pieces of data for communication:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;IP address&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Subnet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gateway&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  NAT(Network Address Translation)
&lt;/h3&gt;

&lt;p&gt;It's the IP address range chosen by an administrator.&lt;/p&gt;

&lt;p&gt;Each device gets a unique IP from that range.&lt;/p&gt;

&lt;p&gt;How to make sure that IP addresses don't overlap?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;IP addresses within LAN are not visible to the outside network or internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your laptop's private IP address is replaced by the router.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09ic1vnoww1atazo30c7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09ic1vnoww1atazo30c7.png" alt="NAT.png" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of NAT&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Security and Protection of devices within LAN.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reuse IP addresses.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;There are a limited no. of IPv4 addresses available - 4,294,967,296 public addresses.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Firewall
&lt;/h3&gt;

&lt;p&gt;A system that prevents unauthorized access from entering a private network.&lt;/p&gt;

&lt;p&gt;Using Firewall Rules you can define, which requests are allowed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qtkj5jmd6ud8rdk4nk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qtkj5jmd6ud8rdk4nk3.png" alt="Firewall.png" width="438" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What are these firewall rules?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It defines which IP address in your network is accessible and which IP address can access your server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, you can allow any device to access your server.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;It allows the device's IP address at the port to be accessed.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;This is also called &lt;strong&gt;Port Forwarding&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fes9v8e8oszdamw6o0t6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fes9v8e8oszdamw6o0t6b.png" alt="Firewall Rule.png" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a Port?
&lt;/h3&gt;

&lt;p&gt;Port =&amp;gt; every device has a set of ports.&lt;/p&gt;

&lt;p&gt;You can allow specific ports(doors).&lt;/p&gt;

&lt;p&gt;You can allow specific ports(doors) AND specific IP addresses (guests).&lt;/p&gt;

&lt;p&gt;Different Applications listen to specific ports.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1647862056022%2FLCqPF4c83.jfif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1647862056022%2FLCqPF4c83.jfif" alt="Ports.jfif" width="246" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standard Ports for many applications&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Port &lt;strong&gt;80&lt;/strong&gt; =&amp;gt; Web Servers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port &lt;strong&gt;3306&lt;/strong&gt; =&amp;gt; MySQL DB&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Port &lt;strong&gt;5432&lt;/strong&gt; =&amp;gt; PostgreSQL DB&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For every application, you need a port!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Each port is unique on a device.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DNS or Domain Name Service
&lt;/h3&gt;

&lt;p&gt;It translates domain names to IP addresses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5q3fi1na5qqeec7f2nm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5q3fi1na5qqeec7f2nm.png" alt="what-is-dns.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why do we use names instead of IP addresses?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Humans are better at remembering words &amp;amp; names instead of numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, &lt;strong&gt;&lt;a href="http://www.facebook.com" rel="noopener noreferrer"&gt;www.facebook.com&lt;/a&gt;&lt;/strong&gt; is converted to &lt;strong&gt;69.63.176.13&lt;/strong&gt; &lt;em&gt;(Mapping IP addresses to names).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How does DNS manage all these IP addresses?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Domain Names have a hierarchical structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Root Domains&lt;/strong&gt; &lt;em&gt;(there are 13 root domains named from a to m)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Top Level Domain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm82hj8g83l9eqe5jutwh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm82hj8g83l9eqe5jutwh.jpg" alt="TopLevelDomainNames.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are also geographical domains that were added later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5pafmtjpq7s0oxe5bew.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5pafmtjpq7s0oxe5bew.gif" alt="domains.gif" width="372" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Who manages these names?&lt;/p&gt;

&lt;p&gt;Who can keeps the track of the availability of names?&lt;/p&gt;

&lt;p&gt;This is all regulated by a dedicated organization called Internet Corporation for Assigned Names &amp;amp; Numbers*&lt;em&gt;(ICANN)&lt;/em&gt;*.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbegec9xef789z7g8h1ma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbegec9xef789z7g8h1ma.png" alt="ICANN.png" width="560" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This organization manages the TLD development and architecture of the internet domain space and authorizes Domain Name Registrars, which register and assign domain names.&lt;/p&gt;

&lt;p&gt;Each domain name can have a subdomain name with an IP address range of the domain name.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does the DNS Resolution work?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu17gyp3183gsqxen41u3.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu17gyp3183gsqxen41u3.webp" alt="rc24-how-dns-works.webp" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DNS entries are cached for efficiency.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Networking Commands
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ifconfig&lt;/code&gt; =&amp;gt; shows all network details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;netstat&lt;/code&gt; =&amp;gt; shows an active connection on your machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ps -aux&lt;/code&gt; =&amp;gt; shows currently running applications on which port they are listening, computer resources they are consuming, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;nslookup&lt;/code&gt; =&amp;gt; you can get the IP address of any domain name.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ping&lt;/code&gt; =&amp;gt; checks whether a service/application is accessible.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are used to troubleshoot your network.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;And of course, there are parameters for all those commands.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>linux</category>
    </item>
    <item>
      <title>Let's learn VIM and also User Management...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Wed, 16 Mar 2022 13:27:08 +0000</pubDate>
      <link>https://dev.to/kcdchennai/linux-basics2-5dij</link>
      <guid>https://dev.to/kcdchennai/linux-basics2-5dij</guid>
      <description>&lt;p&gt;There are different text editors like emacs, nano, vim, etc. But vim text editor has gained popularity between developers and sysadmins.&lt;/p&gt;

&lt;p&gt;The main takeaway is we learn to insert text in vim and more specifically learn about quitting the vim editor🤣.&lt;/p&gt;




&lt;h3&gt;
  
  
  Working with VIM Editor
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How do we edit files in CLI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We have a built-in text editor in Linux like nano, vi/vim(Improved version of vi), etc.&lt;/p&gt;

&lt;p&gt;Use cases to use the text editor in &lt;strong&gt;CLI&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;small modifications can be faster, especially when you are currently working in CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;faster to create &amp;amp; edit at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;supports multiple formats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;when working on a remote server it speeds up the workflow.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Important VIM commands
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;vim [filename]&lt;/code&gt; =&amp;gt; opens the file with vim.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;vim&lt;/strong&gt; has two modes &lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Command Mode&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;this is the default mode and you cannot edit the text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;whatever you type is interpreted as a command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate, Search, Delete, Undo, etc. can be done in this mode.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6alt0zig14j5wuf3w1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6alt0zig14j5wuf3w1j.png" alt="vim-config-1024x462.png" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Insert Mode&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;allows you to enter text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;to &lt;strong&gt;switch&lt;/strong&gt; from &lt;strong&gt;&lt;em&gt;command&lt;/em&gt;&lt;/strong&gt; mode to &lt;strong&gt;&lt;em&gt;insert&lt;/em&gt;&lt;/strong&gt; mode, press '&lt;strong&gt;i&lt;/strong&gt;'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;and from insert to command mode, press '&lt;strong&gt;Esc&lt;/strong&gt;'.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2uzzwox2djo53zk8cpi3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2uzzwox2djo53zk8cpi3.png" alt="vim-insert-mode.png" width="763" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; All these below commands should be run in &lt;strong&gt;&lt;em&gt;command&lt;/em&gt;&lt;/strong&gt; mode.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt; =&amp;gt; writes and saves the file to &lt;strong&gt;disk&lt;/strong&gt; and &lt;strong&gt;quits&lt;/strong&gt; the vim editor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;:q!&lt;/code&gt; =&amp;gt; quits the vim editor without saving the changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;dd&lt;/code&gt; =&amp;gt; delete an entire line.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;d[number]&lt;/code&gt; =&amp;gt; delete a bunch of lines.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, &lt;code&gt;d10&lt;/code&gt; -&amp;gt; deletes the next 10 lines.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;u&lt;/code&gt; =&amp;gt; undo the changes.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;A&lt;/code&gt; =&amp;gt; jumps to the end of the line and switches to insert mode.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;0&lt;/code&gt; =&amp;gt; jumps to the start of the line(but does not switch to insert mode).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;$&lt;/code&gt; =&amp;gt; jumps to the end of the line(without switching to insert mode).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;code&gt;[number]G&lt;/code&gt; =&amp;gt; go to the line &lt;code&gt;[number]&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, &lt;code&gt;12G&lt;/code&gt; -&amp;gt; go to line 12.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;code&gt;/[pattern/word]&lt;/code&gt; =&amp;gt; search for that pattern/word.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, &lt;code&gt;/nginx&lt;/code&gt; -&amp;gt; searches for the pattern/word &lt;em&gt;'nginx'&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;Type 'n'&lt;/code&gt; =&amp;gt; jumps to the next match.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;Type 'N'&lt;/code&gt; =&amp;gt; jumps to the previous match/ in opposite direction.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;code&gt;:%s/[old]/[new]&lt;/code&gt; =&amp;gt; replace the &lt;strong&gt;old word&lt;/strong&gt; with the &lt;strong&gt;new word&lt;/strong&gt; throughout the file.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fpable07tagt2rg7xml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fpable07tagt2rg7xml.png" alt="vim-cheat-sheet-en.png" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Linux Accounts and Groups
&lt;/h3&gt;

&lt;p&gt;There are &lt;strong&gt;&lt;em&gt;three&lt;/em&gt;&lt;/strong&gt; user categories :&lt;/p&gt;

&lt;p&gt;i. superuser*&lt;em&gt;(sudo)&lt;/em&gt;* account&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;this is the root user with &lt;em&gt;unrestricted&lt;/em&gt; permissions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;used for administrative tasks*(No need to log in as a Root user or execute any commands as root*&lt;strong&gt;&lt;em&gt;(sudo command)&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;)&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ii. user account&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;a regular user, we create to login.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, username=dipanshu then it is found under &lt;code&gt;/home/dipanshu.&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;iii. service account&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;relevant for Linux server distros as each service will get its own user.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, a MySQL user will start a MySQL application(Best practice for security).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Don't run services with a root user&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always keep &lt;strong&gt;one root user&lt;/strong&gt; per computer.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Can we have multiple regular users &amp;amp; service users and why multiple standard users?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many companies use windows for their employees. Usually, employees can log in to their accounts on every computer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does this work?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Windows is able to &lt;strong&gt;centrally manage users&lt;/strong&gt;. Admins add users to the system and all computers are connected to this system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When someone tries to &lt;strong&gt;log in&lt;/strong&gt;, OS checks it with the system*(Only have access to their* &lt;strong&gt;&lt;em&gt;home&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;folder)&lt;/em&gt;&lt;strong&gt;[completely isolated system]&lt;/strong&gt;(No access to system files or &lt;strong&gt;other user's home&lt;/strong&gt; folder).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;But Linux &lt;strong&gt;doesn't&lt;/strong&gt; have this &lt;em&gt;centrally managed system&lt;/em&gt;. This is the reason why Windows is preferred in companies or universities.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Multiple Users on Linux&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;User accounts are managed on that specific hardware*(cannot access from any other hardware)*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Multiple Users on a Server&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For Linux having a multi-user is important for servers. Usually, teams administer a server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Why not just use a shared user? &amp;amp; Why having a user for each team member is important?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They need a &lt;strong&gt;non-root&lt;/strong&gt; user. Permissions can be assigned per team member.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traceability&lt;/strong&gt; =&amp;gt; who did what on the system?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Admin&lt;/strong&gt; creates a user with permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Groups and Permissions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How to manage Permissions?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;User Level =&amp;gt; give permission to the user directly.&lt;/p&gt;

&lt;p&gt;Group Level =&amp;gt; group users into Linux groups and give permissions to the group.&lt;/p&gt;

&lt;p&gt;This is the way to go is if you manage multiple users*&lt;strong&gt;(Best Practice)&lt;/strong&gt;*.&lt;/p&gt;

&lt;h3&gt;
  
  
  User management in practice
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Access Control Files :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/passwd&lt;/code&gt; =&amp;gt; stores user account information and everyone can read it but only the &lt;strong&gt;root&lt;/strong&gt; user can change the file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1647435999198%2FbPMAfvRBM.jfif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1647435999198%2FbPMAfvRBM.jfif" alt="etc-passwd.jfif" width="324" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/shadow&lt;/code&gt; =&amp;gt; contains information about the system user's passwords.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/group&lt;/code&gt; =&amp;gt; contains a list of groups and the members belonging to each group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managing users :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do not edit these access control files with a text editor. Instead, use the dedicated commands.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Commands for user/group creation and management
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;NOTE: *root&lt;/strong&gt;* user privileges are required*&lt;em&gt;.&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;&lt;code&gt;adduser [username]&lt;/code&gt; =&amp;gt; creates a new user and automatically creates a home directory with skeletal configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where does the primary group come from?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whenever we create a user using &lt;code&gt;useradd&lt;/code&gt; , by default, it creates the same group named the user and sets that as the primary group ID of the user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;passwd [username]&lt;/code&gt; =&amp;gt; changes the password of a user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;su - [username]&lt;/code&gt; =&amp;gt; login as a &lt;code&gt;username&lt;/code&gt;&lt;em&gt;( su - short for substitute or switch user)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;su -&lt;/code&gt; =&amp;gt; login as root.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;groupadd [groupname]&lt;/code&gt; =&amp;gt; creates a new group and by default, the system assigns the next available &lt;strong&gt;GID&lt;/strong&gt; from the range of group IDs specified in the login.defs file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different User and Group Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;adduser&lt;/code&gt; &lt;code&gt;addgroup&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Interactive and more user-friendly*(easier to use).* It chooses conformant &lt;strong&gt;UID&lt;/strong&gt; and &lt;strong&gt;GUID&lt;/strong&gt; values for you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creates a home directory with skeletal config automatically or asks for input in interactive mode.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;useradd&lt;/code&gt; &lt;code&gt;groupadd&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to provide the information. Low-level utilities.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Which one to use?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;adduser&lt;/code&gt; &lt;code&gt;addgroup&lt;/code&gt; =&amp;gt; when executing it manually.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;useradd&lt;/code&gt; &lt;code&gt;groupadd&lt;/code&gt; =&amp;gt; when executed in an automated way.&lt;/p&gt;

&lt;p&gt;Same goes for &lt;code&gt;deluser&lt;/code&gt;&lt;em&gt;(deletes user),&lt;/em&gt; &lt;code&gt;delgroup&lt;/code&gt;&lt;em&gt;(deletes groups)&lt;/em&gt; and &lt;code&gt;userdel&lt;/code&gt; &lt;code&gt;groupdel&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Modifying user account
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;usermod [options] [username]&lt;/code&gt; =&amp;gt; modify a user account.&lt;/p&gt;

&lt;p&gt;for changing group =&amp;gt; &lt;code&gt;usermod -g [groupname] [username]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In addition to one primary group, the user can have multiple secondary groups and as a result, the user will get all the permissions that the groups have to which it belongs*(which means we can add one user to multiple groups)*.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -G [groupsname(separated with commas)] [username]&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;add a user to multiple groups and the option will overwrite the whole secondary group's list. So, it always sets a new list of groups for the user.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you need to add a user to a new secondary group in addition to the existing ones it already belongs to we use &lt;code&gt;sudo usermod -aG [groupname] [username]&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;groups [username]&lt;/code&gt; -&amp;gt; displays the groups to which the user is added.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More efficient way&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;useradd [options] [username]&lt;/code&gt; =&amp;gt; creates a new user.&lt;/p&gt;

&lt;p&gt;the low-level command compared to &lt;code&gt;adduser&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;-G&lt;/code&gt; =&amp;gt; create a user with multiple secondary groups&lt;br&gt;&lt;br&gt;
&lt;code&gt;-d&lt;/code&gt; =&amp;gt; custom home directory&lt;br&gt;&lt;br&gt;
&lt;code&gt;sudo gpasswd -d [username] [groupname]&lt;/code&gt; =&amp;gt; removes the user from the specified group.&lt;/p&gt;




&lt;h3&gt;
  
  
  File Permissions and Ownership
&lt;/h3&gt;

&lt;p&gt;User permissions are related to reading, writing and executing files in Linux.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt; =&amp;gt; print files in a long listing format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3zu11uv21qsuendpkk8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3zu11uv21qsuendpkk8.gif" alt="ls -l.gif" width="502" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ownership =&amp;gt;&lt;/strong&gt; It means who owns the file/directory.&lt;/p&gt;

&lt;p&gt;There are two levels of a file/directory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Which user owns the file?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The owner is the user who created the file.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Which group owns the file?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The owning group is the primary group of that user.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;(should be executed with root privileges)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chown [username]:[groupname] [filename]&lt;/code&gt; =&amp;gt; changes the ownership*(in this command you can also change user by not adding* &lt;code&gt;[groupname]&lt;/code&gt;&lt;em&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chgrp [groupname] [filename]&lt;/code&gt; =&amp;gt; changes the group&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;File Permissions&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Modifying Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Symbolic values method]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chmod [flags] [filename]&lt;/code&gt; =&amp;gt; Changes the permission for that file and for all users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flags&lt;/strong&gt; &lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;+r&lt;/code&gt; -&amp;gt; add read permission&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;+w&lt;/code&gt; -&amp;gt; add write permission&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;+x&lt;/code&gt; -&amp;gt; add execute permission&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-r&lt;/code&gt; -&amp;gt; takes away read permission&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-w&lt;/code&gt; -&amp;gt; takes away writing permission&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-x&lt;/code&gt; -&amp;gt; takes away execute permission&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Adjusting permissions :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Owner(u), Group(g), Others(o) &amp;amp; All(a)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, &lt;code&gt;sudo chmod g-w config.yaml&lt;/code&gt; =&amp;gt; removes the write permission for the group.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Alternate ways to give permissions :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chmod u/g/o/a=rwx [filename]&lt;/code&gt; =&amp;gt; gives multiple permission to mentioned ones.&lt;/p&gt;

&lt;p&gt;Type out the whole &lt;code&gt;rwx&lt;/code&gt; block or &lt;code&gt;r--&lt;/code&gt;&lt;strong&gt;/&lt;/strong&gt;&lt;code&gt;rw-&lt;/code&gt; etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Numeric values method]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chmod [numeric value] [filename]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwnycw5l5cu2p08p1jom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwnycw5l5cu2p08p1jom.png" alt="777.png" width="569" height="243"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Bonus Content :)
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Input, Output and Pipes in Linux
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpn0eirs7we7fg1tuww5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpn0eirs7we7fg1tuww5.png" alt="image-55.png" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Every program has input and output. The output from one program can become the input of another command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The syntax for this is the "pipe" command &lt;code&gt;|&lt;/code&gt;. It pipes the output of the previous command as an input to the next command.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, &lt;code&gt;cat /var/log/syslog&lt;/code&gt; &lt;em&gt;(outputs log in non-user friendly way)&lt;/em&gt; &lt;code&gt;| less&lt;/code&gt; &lt;em&gt;(helps to see the output page-by-page)&lt;/em&gt;&lt;strong&gt;(to jump to the next page press 'spacebar' and to jump to the previous page press 'b')&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To filter commands for specific keywords we use &lt;code&gt;grep [keyword]&lt;/code&gt; =&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;grep stands for Globally Search for Regular expression and print-out. And it searches for a particular pattern of characters &amp;amp; displays all lines which contain that pattern.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To search for a phrase we have to enclose in (" ") double-quotes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Redirects in Linux&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It is used to save the output of another command into a file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redirection&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;&amp;gt;&lt;/code&gt; character is the redirect operator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Takes the output from the previous command and sends it to a file that you mention. For example, &lt;code&gt;history | grep sudo &amp;gt; sudo-commands.txt&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In order to add new lines in the existing file by using redirect can be done using&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt; =&amp;gt; append text to the end of the file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Standard Input and Standard Output
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc4cxo58mcig04wm088e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc4cxo58mcig04wm088e.png" alt="bl10-01-commands-without-pipes.png" width="693" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every program has 3 built-in streams&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;STDIN(0)&lt;/strong&gt; =&amp;gt; Standard Input&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;STDOUT(1)&lt;/strong&gt; =&amp;gt; Standard Output&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;STDERR(2)&lt;/strong&gt; =&amp;gt; Standard Error&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We pipe or redirect the standard output from one command to the standard output of another command. We cannot execute many commands in one line but can be done by separating them with &lt;code&gt;;&lt;/code&gt;(semi-colon).&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;clear; sleep 2; echo "Hello, welcome back"&lt;/code&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>devops</category>
    </item>
    <item>
      <title>All you need to get started with Linux...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Mon, 14 Mar 2022 13:25:25 +0000</pubDate>
      <link>https://dev.to/kcdchennai/basic-linux-18e9</link>
      <guid>https://dev.to/kcdchennai/basic-linux-18e9</guid>
      <description>&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Everything in Linux is a file. For example, text documents, pictures, directories, and devices like printers, keyboards, USBs, CDs, etc.&lt;/p&gt;

&lt;p&gt;So this article we will learn all the basics of Linux and commands to get us started to become a power-user of Linux.&lt;/p&gt;

&lt;h3&gt;
  
  
  File Manipulation, moving to different folders and removing files commands
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;em&gt;(print working directory)&lt;/em&gt; =&amp;gt; Prints the current directory in which we are present onto the terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cd [dir name]&lt;/code&gt; =&amp;gt; Change Directory means moving from the current directory to the &lt;code&gt;[dir name]&lt;/code&gt; directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cd ..&lt;/code&gt; =&amp;gt; Move one level up or to the previous directory from the current directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;mkdir [dir name]&lt;/code&gt; =&amp;gt; Make a directory of &lt;code&gt;[dir name]&lt;/code&gt; in the current directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ls&lt;/code&gt; =&amp;gt; Lists all files and directories in the present working directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ls -R&lt;/code&gt; =&amp;gt; Lists files in sub-directories as well.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ls -al&lt;/code&gt; =&amp;gt; Lists files and directories with detailed information like permissions, size, owner, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ls -a&lt;/code&gt; =&amp;gt; Shows all files &amp;amp; folders*(including hidden)*&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;touch [filename]&lt;/code&gt; =&amp;gt; creates [filename] with the provided extension.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rm [filename]&lt;/code&gt; =&amp;gt; Deletes [filename]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rmdir&lt;/code&gt; or &lt;code&gt;rm -d&lt;/code&gt; =&amp;gt; Deletes a directory&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Here &lt;code&gt;rm&lt;/code&gt; commands delete the file permanently.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rm -r&lt;/code&gt;&lt;em&gt;(recursively)&lt;/em&gt; =&amp;gt; Removes file or folder if it contains files inside it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Displaying contents of the file, moving/copying the file from one folder to another
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cat [filename]&lt;/code&gt; =&amp;gt; Displays the file content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cat file1 file2 &amp;gt; file3&lt;/code&gt; =&amp;gt; Joins two files &lt;em&gt;(file1, file2)&lt;/em&gt; and stores the output in a new file &lt;em&gt;(file3).&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;mv file "new file path"&lt;/code&gt; =&amp;gt; Moves the file to the new provided file location.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;mv filename new_file_name&lt;/code&gt; =&amp;gt; Renames the file to a new filename.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cp -r [dirname] [new_filename]&lt;/code&gt; =&amp;gt; Copy &lt;code&gt;[dirname]&lt;/code&gt; to &lt;code&gt;new_filename.&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Superuser, manual, history and some common terminal commands
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;sudo&lt;/code&gt; =&amp;gt; Allows regular users to run programs with the security privileges of the superuser or root.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;man&lt;/code&gt; =&amp;gt; Gives the whole documentation of commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;history&lt;/code&gt; =&amp;gt; Gives a list of all past commands typed in the current terminal session.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;history [number]&lt;/code&gt; =&amp;gt; Gives the previous &lt;code&gt;[numbers]&lt;/code&gt; of the command typed in the session.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;clear&lt;/code&gt; =&amp;gt; Clears the terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Ctrl + C&lt;/code&gt; =&amp;gt; Stops the current command completely instead of running in the background.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Ctrl + Shift + C&lt;/code&gt; =&amp;gt; Copies the selected text from the terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Ctrl + Shift + V&lt;/code&gt; =&amp;gt; Pastes the copied text from other terminal session or browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Ctrl + R&lt;/code&gt; =&amp;gt; Search the last history of command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;uname -a&lt;/code&gt; =&amp;gt; Shows information about system and kernel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;lscpu&lt;/code&gt; =&amp;gt; Shows information about the CPU in the machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;lsmem&lt;/code&gt; =&amp;gt; Shows information about memory in the machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;su - [name of the user]&lt;/code&gt; =&amp;gt;Switchs the user to &lt;code&gt;[name of the user].&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cat /etc/os-release&lt;/code&gt; =&amp;gt; Gives information about distribution, version, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;init 0&lt;/code&gt; =&amp;gt; To shutdown/poweroff machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;init 6&lt;/code&gt; =&amp;gt; To restart/reboot machine.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Package Manager
&lt;/h1&gt;

&lt;p&gt;In Windows, you download the installer and then installs it through the &lt;strong&gt;installation wizard&lt;/strong&gt;. But in Linux, we don't use this way, we install most of the software/apps using the &lt;strong&gt;package manager tool&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is a software package?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A compressed archive, containing all required files like the apps usually have some dependencies or required some other softwares to run.&lt;/p&gt;

&lt;p&gt;For example, Firefox Browser requires dependencies that are not packaged into the archive. These dependencies also need to be installed.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is a package manager?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Files are split across different folders. Not like Windows, where every program is installed in a &lt;strong&gt;single&lt;/strong&gt; file in Program Files. In Windows, it is also easy to uninstall programs as they are in a single folder but in Linux, managing apps uninstalling everything completely is &lt;strong&gt;more difficult&lt;/strong&gt;&lt;em&gt;(as they are split)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So there are different package managers as per the Linux distros which&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;downloads, installs, or updates existing software from a repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ensures the integrity &amp;amp; authenticity of the package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;manages &amp;amp; resolves all required dependencies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;knows where to put all the files in the Linux file system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;easy upgrading of the software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foavyhr2ln54g40aqja5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foavyhr2ln54g40aqja5z.png" alt="9451.1527705212.png" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Ubuntu, you have an &lt;strong&gt;APT&lt;/strong&gt;&lt;em&gt;(advance package tool)&lt;/em&gt; package manager available.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Commands used in package manager(commands should be used with sudo)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;apt search [package_name]&lt;/code&gt; : Search for a package of &lt;code&gt;package_name&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;apt install [package_name]&lt;/code&gt; : Installs the package with &lt;code&gt;package_name&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;apt install [package_name1] [package_name2]&lt;/code&gt; : Install multiple packages with one command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;apt remove [package_name]&lt;/code&gt; : Completely removes installed package of that &lt;code&gt;package_name&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The benefits of using a package manager are &lt;strong&gt;one central place&lt;/strong&gt; to install, upgrade, configure and remove the software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Difference b/w APT &amp;amp; APT-GET
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv7pmy45okaeapeqo081.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmv7pmy45okaeapeqo081.png" alt="download.png" width="318" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APT:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;more user-friendly, like it has a progress bar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;fewer, but sufficient command options in a more organized way(Use apt because recommended by Linux distributions).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;APT-GET:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;search command not available&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;you can achieve the same if you use additional command options.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Where do these Packages come from?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Package Manager fetches the packages from the Ubuntu registered/validated repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where do these files store?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository*(storage location)* containing thousands of repositories of programs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best practice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Always update the package index before upgrading or installing new packages.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt update&lt;/code&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;updates the package index&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;pulls the latest changes from the APT repositories&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the APT package index is basically a database&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;holding records of available packages from the repositories.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;add-apt-repository&lt;/code&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;add the repository to the official list of repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;add repository to APT sources (into /etc/apt/sources.list)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why add a repository?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When installing relatively new applications which are not in the official repository yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Repositories Types
&lt;/h3&gt;

&lt;p&gt;Repositories are of type &lt;strong&gt;PPA(Personal Package Archive)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flprrqiluvfuqy0513k36.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flprrqiluvfuqy0513k36.webp" alt="what-is-ppa.webp" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PPA's are provided by the community. Anybody can create this PPA-private repository to distribute the software. Usually used by developers to provide updates more quickly than in the official Ubuntu repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Aware of possible risks before adding a PPA:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;no guarantee&lt;/strong&gt; of quality or security&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;like any other &lt;strong&gt;unofficial&lt;/strong&gt; software package it can cause &lt;strong&gt;difficulties&lt;/strong&gt;, for example, when upgrading to new Ubuntu release.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>ubuntu</category>
      <category>devops</category>
    </item>
    <item>
      <title>Linux and its way of storing files...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Fri, 11 Mar 2022 12:26:54 +0000</pubDate>
      <link>https://dev.to/kcdchennai/linux-file-system-4idj</link>
      <guid>https://dev.to/kcdchennai/linux-file-system-4idj</guid>
      <description>&lt;h3&gt;
  
  
  What is the Linux File System?
&lt;/h3&gt;

&lt;p&gt;The file system is generally a &lt;em&gt;built-in layer&lt;/em&gt; of a &lt;strong&gt;Linux&lt;/strong&gt; operating system used to handle the data management of the storage. It helps to arrange the file on disk storage and manages the file name, file size, creation date, and much more information about a file.&lt;/p&gt;

&lt;p&gt;The Linux file system is a &lt;strong&gt;structured&lt;/strong&gt; collection of files on a disk drive or a partition. A partition is a segment of memory that contains some &lt;strong&gt;specific data&lt;/strong&gt;. In our machine, there can be various partitions of memory. Generally, &lt;em&gt;every&lt;/em&gt; partition contains a file system.&lt;/p&gt;

&lt;p&gt;The files are stored in the &lt;strong&gt;hierarchical tree structure&lt;/strong&gt;. &lt;strong&gt;Root&lt;/strong&gt; folder comes &lt;em&gt;first and then files are under root respectively&lt;/em&gt;. Whereas in &lt;strong&gt;windows&lt;/strong&gt;, files are stored in folders on different data drives like &lt;strong&gt;C: D: E:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqdiumvr44kh0qpu97nn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqdiumvr44kh0qpu97nn.jpg" alt="lfs.jpg" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Linux File System Overview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44kjfv833zbb08c1gz62.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44kjfv833zbb08c1gz62.png" alt="Filesystem Hierarchy Structure (FHS) in Linux – TecAdmin" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/&lt;/code&gt; &lt;em&gt;or&lt;/em&gt; &lt;code&gt;/root&lt;/code&gt; =&amp;gt; root user's home directory which is separate from other users&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/home&lt;/code&gt; =&amp;gt; contains the home directories of all non-root users.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;em&gt;(stands for binaries)&lt;/em&gt; =&amp;gt; executables for most essential user commands(all files are system-wide usable)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What is binary?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A binary is just a computer-readable format (a bunch of 0's &amp;amp; 1's)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/sbin&lt;/code&gt;&lt;em&gt;(system binaries)&lt;/em&gt; =&amp;gt; essential system binaries, programs that admin would use(need superuser privileges)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/lib, /lib32, /lib64, /libx32&lt;/code&gt; =&amp;gt; essential shared libraries that executables from &lt;code&gt;/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; use.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/usr&lt;/code&gt;&lt;em&gt;(user)&lt;/em&gt; =&amp;gt; this was used for user home or directories*(contains the same* &lt;code&gt;/bin&lt;/code&gt;&lt;em&gt;,&lt;/em&gt; &lt;code&gt;/sbin&lt;/code&gt;&lt;em&gt;,&lt;/em&gt; &lt;code&gt;/lib&lt;/code&gt; &lt;em&gt;folders)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Why do&lt;/em&gt; &lt;code&gt;/usr&lt;/code&gt; &lt;em&gt;contain these folders?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;historic reasons(as UNIX also had those splits)&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Because of storage limitations, it was split to root binary folders ad user binary folders.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; When we execute basic Linux commands they are executed from &lt;code&gt;/usr/bin&lt;/code&gt; folder. In other distros, &lt;code&gt;/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; contains fewer commands and &lt;code&gt;/usr/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; contains all other commands.&lt;/p&gt;

&lt;p&gt;Inside &lt;code&gt;/usr&lt;/code&gt;, there is a folder &lt;code&gt;/local&lt;/code&gt; that also contains the same files as &lt;code&gt;/usr&lt;/code&gt;(&lt;code&gt;/bin&lt;/code&gt; or &lt;code&gt;/sbin&lt;/code&gt; or &lt;code&gt;/lib&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/usr/local&lt;/code&gt; =&amp;gt; programs that you install on the computer. Third-party applications like docker, minikube, etc go here. Programs installed here will be available for all users on the computer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; If you want to install third-party applications and don't want to be accessed by all the other users then you install them on your own &lt;code&gt;/home&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/boot&lt;/code&gt;&lt;em&gt;(booting)&lt;/em&gt; =&amp;gt; contains files required for booting.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/opt&lt;/code&gt;&lt;em&gt;(optional)&lt;/em&gt; =&amp;gt; third-party programs you install(all programs will be available system-wide).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference between /usr/local &amp;amp; /opt:-&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/usr/local&lt;/code&gt;: programs that split into their components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/opt&lt;/code&gt;: programs which not split into their components.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Till now all folders are &lt;em&gt;read-only&lt;/em&gt; folders.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc&lt;/code&gt;&lt;em&gt;(et cetera)&lt;/em&gt; =&amp;gt; a place where the configuration for system-wide applications is stored. Originally for etc*(means everything else goes there)*. It emerged into the main configuration location.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/dev&lt;/code&gt;&lt;em&gt;(devices)&lt;/em&gt; =&amp;gt; location of device files like webcam, keyboard, hard drives, etc. Apps and Drivers will access this, &lt;strong&gt;NOT&lt;/strong&gt; the user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/var&lt;/code&gt;&lt;em&gt;(variable)&lt;/em&gt; =&amp;gt; contains files to which the system writes data during the course of its operation.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/var/log&lt;/code&gt; =&amp;gt; contains log files.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/var/cache&lt;/code&gt; =&amp;gt; contains cached data from application programs.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;em&gt;(temporary)&lt;/em&gt; =&amp;gt; temporary resources required for some processes kept here temporarily.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/media&lt;/code&gt;&lt;em&gt;(removable media)&lt;/em&gt; =&amp;gt; contains subdirectories where removable media devices inserted into the computer are mounted. For example, when you insert a CD, a directory will automatically be created and you can access the contents of the CD inside the directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/mnt&lt;/code&gt;&lt;em&gt;(temporary mount points)&lt;/em&gt; =&amp;gt; historically, sysadmins mounted temporary file systems there(or manually mounting folders).&lt;/p&gt;

&lt;h3&gt;
  
  
  Interacting with these folders
&lt;/h3&gt;

&lt;p&gt;Usually, you are &lt;strong&gt;not&lt;/strong&gt; interacting with these folders. Installing apps with a package manager is responsible to store the required files in the right corresponding folders.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hidden Files
&lt;/h3&gt;

&lt;p&gt;These are primarily used to help prevent important data from being accidentally deleted and are automatically generated by programs or operating system. The file name starts with &lt;code&gt;.&lt;/code&gt;&lt;em&gt;(dot)&lt;/em&gt;. These are also called &lt;em&gt;'dotfiles'&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffylf6mksaz3n12r7kh2i.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffylf6mksaz3n12r7kh2i.webp" alt="hide-folders-ubuntu-linux.webp" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>linux</category>
      <category>devops</category>
    </item>
    <item>
      <title>Why operating system and virtualization...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Fri, 11 Mar 2022 12:24:13 +0000</pubDate>
      <link>https://dev.to/kcdchennai/operating-system-virtualization-1pho</link>
      <guid>https://dev.to/kcdchennai/operating-system-virtualization-1pho</guid>
      <description>&lt;p&gt;We in this &lt;em&gt;modern&lt;/em&gt; &lt;strong&gt;era&lt;/strong&gt; are the power users of computers which contain an interface to interact and perform our &lt;em&gt;day-to-day&lt;/em&gt; tasks. But really why is there an interface and why you should care about it?&lt;/p&gt;

&lt;p&gt;Every computer is made up of hardware such as &lt;em&gt;CPU, memory, storage, and I/O&lt;/em&gt; devices like a &lt;em&gt;monitor, keyboard, and mouse&lt;/em&gt;. All the programs running on the computer need to use these hardware resources.&lt;/p&gt;




&lt;h3&gt;
  
  
  How do we run apps if there were no operating systems?
&lt;/h3&gt;

&lt;p&gt;Let us understand what it takes to run your favourite browser on your machine. Use of browsers like Chrome*(pretty heavy duty)* will require some CPU, memory &amp;amp; I/O devices to interact and do the task &lt;em&gt;(how to center a div)&lt;/em&gt;😅.&lt;/p&gt;

&lt;p&gt;Some things to keep in mind are that&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;apps don't know how to talk to the hardware,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;apps can't be installed directly on the hardware.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We need to write code for that application and configuration with the hardware in order to use the application on the hardware. Imagine doing this for every application we need to use, it will be so &lt;em&gt;inefficient&lt;/em&gt;. Writing code and configs require knowledge of programming languages, converting to machine code*(0's and 1's)* and then optimising it for better performance. Ohh god, feels like a &lt;em&gt;long TDS and inefficient process&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;As to remove this &lt;strong&gt;inefficiency&lt;/strong&gt; we use an intermediate to talk to the hardware which can handle all these for us which we call an &lt;strong&gt;Operating System&lt;/strong&gt;. The operating system can interact with hardware &amp;amp; applications so it is like a &lt;strong&gt;middleman&lt;/strong&gt; &lt;em&gt;between the two&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjc12hsinwo39j1hh56z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjc12hsinwo39j1hh56z.png" alt="A-basic-working-of-an-Operating-System.png" width="800" height="612"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What does an O.S. do to make our life easier?
&lt;/h3&gt;

&lt;p&gt;We focus on performing day-to-day without caring about managing, allocating resources and so on. But there's a lot of stuff happening behind the scenes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfhs6jq60yo0vhwn4qmx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfhs6jq60yo0vhwn4qmx.jpg" alt="taks.jpg" width="400" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above image shows the functions and tasks that are performed in order to run our next-level heavy-duty applications.&lt;/p&gt;




&lt;h3&gt;
  
  
  What is the operating system made up of?
&lt;/h3&gt;

&lt;p&gt;The operating system contains &lt;em&gt;layers&lt;/em&gt; of software that have specific tasks when a computer is powered on. It starts with the kernel, a program that consists of device drivers, dispatchers, schedulers, file systems, etc.&lt;/p&gt;

&lt;p&gt;The kernel always loads &lt;strong&gt;first&lt;/strong&gt;. It is the &lt;em&gt;heart&lt;/em&gt; of every operating system responsible for managing hardware components. It starts the process for the app, allocates the required resources and also cleans up when not needed.&lt;/p&gt;

&lt;p&gt;Linux Distros like Ubuntu, Mint, CentOS, etc, and Android are based on the Linux kernel. &lt;strong&gt;Linux Kernel is the most widely used&lt;/strong&gt;. On the other hand, macOS &amp;amp; IOS are based on different kernels known as &lt;strong&gt;Darwin&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  How to interact with the kernel?
&lt;/h3&gt;

&lt;p&gt;Graphical User Interface*&lt;em&gt;(GUI)&lt;/em&gt;* and Command Line Interface*&lt;em&gt;(CLI)&lt;/em&gt;*, both are ways to interact with the kernel and have their own importance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GUI&lt;/strong&gt; uses a combination of technologies and devices to provide a platform that users can interact with, for the tasks of gathering and producing information. A series of elements conforming to a visual language have evolved to represent information stored in computers. This makes it easier for people with few computer skills to work with and use computer software. The most common combination of such elements in GUIs is the windows, icons, text fields, canvases, menus, and pointer &lt;em&gt;(WIMP)&lt;/em&gt; paradigm, especially in personal computers.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;WIMP&lt;/strong&gt; style of interaction uses a virtual input device to represent the position of a pointing device's interface, most often a mouse, and presents information organized in windows and represented with icons. Available commands are compiled together in menus, and actions are performed by making gestures with the pointing device. A window manager facilitates the interactions between windows, applications, and the windowing system. The windowing system handles hardware devices such as pointing devices, graphics hardware, and positioning of the pointer.&lt;/p&gt;

&lt;p&gt;In personal computers, all these elements are modelled through a desktop metaphor to produce a simulation called a desktop environment in which the display represents a desktop, on which documents and folders of documents can be placed. Window managers and other software combine to simulate the desktop environment with varying degrees of realism.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmpu3ktuur0vi8a5v7fxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmpu3ktuur0vi8a5v7fxw.png" alt="Layers of a GUI-based on a windowing system" width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are three main operating systems for computers:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;macOS&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Each OS has many versions. The kernel stays the&lt;/em&gt; &lt;strong&gt;&lt;em&gt;same&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;but the application layer is being developed &amp;amp; improved.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The operating system for servers &lt;em&gt;(which are extensively used in Software Development to the apps reach the user with high availability, and no downtime).&lt;/em&gt; The servers are mostly Linux-based (more lightweight and performant).&lt;/p&gt;

&lt;p&gt;The servers use the &lt;strong&gt;command-line&lt;/strong&gt; interface &lt;em&gt;(no GUI or other user applications)&lt;/em&gt;. CLI is commonly used to debug apps that are accidentally stopped due to bugs, on the servers they are deployed on. This interface gives us the whole control of the OS with the use of commands and is also used to automate some stuff on the servers with the help of scripts*(are written using scripting languages that OS provides as Linux provides with bash as the terminal and bash scripting is used to write the scripts)*.&lt;/p&gt;

&lt;p&gt;The servers use the concept of virtualization and virtual machines to make efficient use of available resources and these are the building blocks of &lt;strong&gt;cloud computing&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Virtualization and Virtual Machines.
&lt;/h1&gt;

&lt;h3&gt;
  
  
  What is a Virtual Machine(vm)?
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;computer system&lt;/strong&gt; is created using software on a &lt;strong&gt;physical computer&lt;/strong&gt; in order to &lt;strong&gt;emulate&lt;/strong&gt; the &lt;em&gt;functionality of another separate physical computer&lt;/em&gt;. Virtual Machines are completely &lt;strong&gt;isolated&lt;/strong&gt; means if something breaks inside the &lt;strong&gt;vm&lt;/strong&gt;, it doesn't affect the host machine.&lt;/p&gt;

&lt;p&gt;And if it breaks, you can delete that &lt;strong&gt;vm&lt;/strong&gt; and create a new fresh one easily. This is achieved by using &lt;strong&gt;Hypervisor&lt;/strong&gt; &lt;em&gt;(a technology that allows multiple virtual computers on a physical computer&lt;/em&gt; &lt;strong&gt;&lt;em&gt;host&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;OS on top of the OS that is&lt;/em&gt; &lt;strong&gt;&lt;em&gt;already&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;installed).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gt428tw606j5opj9qe0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gt428tw606j5opj9qe0.png" alt="Virtualization Architecture" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VMware&lt;/strong&gt; was the one to come up with virtualization. Nowadays people can add their own &lt;strong&gt;hypervisor&lt;/strong&gt; called Oracle VirtualBox which is &lt;strong&gt;open-source&lt;/strong&gt;, in order to test different operating systems and test the &lt;em&gt;compatibility&lt;/em&gt; of their applications on different OS so that every user has a great experience while using the app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finlv7vb6u1o287vkash8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finlv7vb6u1o287vkash8.jpg" alt="Virtualbox Logo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VirtualBox takes hardware resources from the &lt;strong&gt;host&lt;/strong&gt; OS and creates a virtual CPU, virtual RAM, and virtual storage for each virtual machine. &lt;em&gt;You can only give resources that you actually have, which means hardware resources are&lt;/em&gt; &lt;strong&gt;&lt;em&gt;shared&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The benefits of using a Virtual Machine are to learn and experiment with different operating systems as you don't need to buy a new computer for that. Mainly, you don't endanger the &lt;strong&gt;main&lt;/strong&gt; &lt;strong&gt;OS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsvqztn6ivr01la15vsu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsvqztn6ivr01la15vsu.png" alt="Virtual Machine Benefits" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;There are two types of Hypervisors&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Type 1 Hypervisor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type 1 Hypervisor use cases efficient usage of hardware resources. As to use all the resources of a performant big server and users can choose any resource combination.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Some big cloud providers like &lt;strong&gt;AWS, Azure, GCP&lt;/strong&gt;, etc use this type of Hypervisor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj30p5jdtm6z7g8i77fx.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj30p5jdtm6z7g8i77fx.webp" alt="GCP Azure AWS" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Type 2 Hypervisor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;VMware and VirtualBox are examples of this type of Hypervisor which gives users flexibility for various use cases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4ab1x0361f0wr44k562.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd4ab1x0361f0wr44k562.webp" alt="Hypervisor Types" width="500" height="434"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Why are companies adopting Virtualization?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The main benefit is the &lt;strong&gt;abstraction&lt;/strong&gt; of OS from the hardware.&lt;/p&gt;

&lt;p&gt;Without Virtualization =&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Companies have their own servers and are managed by &lt;strong&gt;themselves&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OS is &lt;strong&gt;tightly coupled&lt;/strong&gt; to the hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If any part of the hardware fails, the whole data is gone*&lt;strong&gt;(one-point failure)&lt;/strong&gt;*.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Virtualization =&amp;gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OS acts as a &lt;strong&gt;portable file&lt;/strong&gt;&lt;em&gt;(Virtual Machine Image includes the operating system &amp;amp; all applications on it)&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can have backups of your own OS*(known as* &lt;strong&gt;&lt;em&gt;snapshots&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;).&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The OS is portable and &lt;strong&gt;not&lt;/strong&gt; dependent on the physical server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They can be &lt;strong&gt;secured&lt;/strong&gt; very easily.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Thanks for reading and hope you would have now understood what is Operating System, and how it works. The main takeaway is Virtualization, the backbone of the servers to make efficient use of resources.&lt;/p&gt;

&lt;p&gt;Please do share your thoughts in the comments and like the blog so that it reaches everyone who is stumbling across this topic and want to understand the idea behind it.&lt;/p&gt;

&lt;p&gt;You can find my all socials at =&amp;gt; &lt;a href="http://bio.link/dipanshutorawane" rel="noopener noreferrer"&gt;&lt;strong&gt;bio.link/dipanshutorawane&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>All you need to know about DevOps...</title>
      <dc:creator>Dipanshu Torawane</dc:creator>
      <pubDate>Wed, 09 Mar 2022 16:45:26 +0000</pubDate>
      <link>https://dev.to/kcdchennai/what-is-devops-2moi</link>
      <guid>https://dev.to/kcdchennai/what-is-devops-2moi</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.gitguardian.com%2Fcontent%2Fimages%2F2022%2F05%2FSDLC2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.gitguardian.com%2Fcontent%2Fimages%2F2022%2F05%2FSDLC2.png" alt="Software Development Life Cycle" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction to DevOps
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;DevOps&lt;/strong&gt; is a pretty hot topic since the evolution of the Software Development Life Cycle from just running &lt;strong&gt;one app per server&lt;/strong&gt; to &lt;strong&gt;virtualization&lt;/strong&gt; to &lt;strong&gt;containerised applications&lt;/strong&gt;. Most people &lt;em&gt;confuse&lt;/em&gt; it and assume this is a new field as &lt;em&gt;ML, SDE, or others&lt;/em&gt; but it is a &lt;strong&gt;set of practices&lt;/strong&gt; that help organizations innovate faster by &lt;em&gt;automating and streamlining&lt;/em&gt; the software development and infrastructure management processes. Most of these practices are accomplished with &lt;strong&gt;proper tooling&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  WATERFALL methodology
&lt;/h3&gt;

&lt;p&gt;Traditionally, the &lt;strong&gt;WATERFALL&lt;/strong&gt; method was a practice for developing &lt;em&gt;new software&lt;/em&gt; which was a linear process and took more time to implement the idea.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yotcm96i4ez1vb9qpjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yotcm96i4ez1vb9qpjg.png" alt="Waterflow Methodology" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's say a team had an idea of making a &lt;strong&gt;new&lt;/strong&gt; social media platform like &lt;em&gt;Facebook, or Instagram&lt;/em&gt;. The team will first have to &lt;strong&gt;plan&lt;/strong&gt; everything about how the app should work, and the &lt;strong&gt;features&lt;/strong&gt; it should have, and make a list of features, pages, events, etc.&lt;/p&gt;

&lt;p&gt;Then the documentation of how the business team &lt;strong&gt;envisioned&lt;/strong&gt; the app and the whole list of features, events, etc are given to the &lt;strong&gt;development team&lt;/strong&gt;. This team will then develop &lt;em&gt;one feature per time&lt;/em&gt;, and this will take &lt;em&gt;some months&lt;/em&gt; to code features, pages, etc., and develop the complete app.&lt;/p&gt;

&lt;p&gt;The next step is testing the developed app *(*&lt;strong&gt;&lt;em&gt;Testing&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;will be done only after everything has been developed)&lt;/em&gt; which is a very crucial process to implement a complex app like Facebook or Instagram. This is then hand-over to the &lt;strong&gt;testing department&lt;/strong&gt; which will test every feature, app performance, load testing, etc. They might find some bugs or compatibility issues and it will send it back to the developer team to fix it, and then it will get tested again. This cycle would continue back &amp;amp; forth till everything is ready with no issues. This will take some months depending upon the complexity.&lt;/p&gt;

&lt;p&gt;After development and testing it will be passed on to the &lt;strong&gt;Operations&lt;/strong&gt; Team. They will require some preparations to set up the app on the server. There they will have to resolve dependencies, or some things wouldn't run or break, they will &lt;strong&gt;again&lt;/strong&gt; send it to the developer's team to fix it, then to the testing team to test again and this cycle again would take a &lt;em&gt;couple&lt;/em&gt; of months.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Maybe after a couple of years, the app is ready, deployed, and running.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This method sounds like a long and ineffective process. Over time new requirements may arise, and then they need to be resolved. There will be many places of &lt;em&gt;failure and miscommunication&lt;/em&gt; as there is no fast &lt;strong&gt;feedback&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Agile methodology
&lt;/h3&gt;

&lt;p&gt;A very &lt;em&gt;effective&lt;/em&gt; method alternative to the &lt;strong&gt;WATERFALL&lt;/strong&gt; method was developed called &lt;strong&gt;Agile&lt;/strong&gt;. It is very popular among &lt;em&gt;organizations and companies&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agile&lt;/strong&gt; methodology allows for a more &lt;em&gt;dynamic, fast, and easily&lt;/em&gt; changeable development and deployment process. And it is just a &lt;strong&gt;methodology&lt;/strong&gt; or &lt;strong&gt;framework&lt;/strong&gt; that says what are the &lt;em&gt;good practices&lt;/em&gt; and efficient ways to do things. It has specific implementations like &lt;em&gt;Scrum and Kanban&lt;/em&gt;. Depending on company requirements they will use one of them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsp-ao.shortpixel.ai%2Fclient%2Fto_auto%2Cq_lossless%2Cret_img%2Cw_1120%2Ch_520%2Fhttps%3A%2F%2Fwww.soldevelo.com%2Fblog%2Fwp-content%2Fuploads%2FAgile-software-dev-1.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsp-ao.shortpixel.ai%2Fclient%2Fto_auto%2Cq_lossless%2Cret_img%2Cw_1120%2Ch_520%2Fhttps%3A%2F%2Fwww.soldevelo.com%2Fblog%2Fwp-content%2Fuploads%2FAgile-software-dev-1.jpeg" alt="Agile Methodology" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Problems solved that were lacking in the WATERFALL method :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It &lt;em&gt;increases&lt;/em&gt; the speed of development, testing, and deployment cycles. Instead of waiting for the whole application to get developed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here each feature gets &lt;em&gt;tested and deployed&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is &lt;strong&gt;immediate feedback&lt;/strong&gt; if there are bugs or deployment doesn't work and so on.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main takeaway is &lt;strong&gt;Agile&lt;/strong&gt; at the core is the &lt;em&gt;heart&lt;/em&gt; of the &lt;em&gt;Continuous Integration and Continuous Delivery&lt;/em&gt; process which has become so popular that the company strives towards making its software development and delivery processes much &lt;em&gt;more efficient&lt;/em&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  DevOps
&lt;/h3&gt;

&lt;p&gt;The introduction or adoption of &lt;em&gt;Agile&lt;/em&gt; methodology introduction or adoption by companies has supported the need for &lt;strong&gt;DevOps&lt;/strong&gt; tasks. Because DevOps is &lt;em&gt;implementing&lt;/em&gt; the best practices or most of the practices that the Agile framework introduces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjn03xf26a2ln7jy298l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjn03xf26a2ln7jy298l.png" alt="Agile Implementation" width="750" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevOps&lt;/strong&gt; is an approach or practice that combines the development team and the IT team to &lt;em&gt;collaborate&lt;/em&gt; throughout the entire software development cycle so that all the teams will be on the &lt;strong&gt;same page&lt;/strong&gt;. It helps in shortening the Software Development Life Cycle and ensures the delivery of &lt;em&gt;high-quality&lt;/em&gt; software.&lt;/p&gt;

&lt;p&gt;In simple words, DevOps is just a &lt;strong&gt;way&lt;/strong&gt; of working between &lt;em&gt;Developers &amp;amp; Operations&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foi2145a7h2esqqkiyios.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foi2145a7h2esqqkiyios.png" alt="Dev + Ops Roles" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main aim of DevOps is CI/CD*(Continuous Integration &amp;amp; Continuous Delivery)* to develop and deploy applications/features &lt;em&gt;as fast as possible and automate tasks&lt;/em&gt;.&lt;/p&gt;




&lt;p&gt;Thanks for reading and hope you would have now understood the need for DevOps and what gained it so much popularity.&lt;/p&gt;

&lt;p&gt;Please do share your thoughts in the comments and like the blog so that it reaches everyone who is stumbling across this topic and want to understand the idea behind it.&lt;/p&gt;

&lt;p&gt;You can find my all socials at =&amp;gt; &lt;a href="https://bio.link/dipanshutorawane" rel="noopener noreferrer"&gt;https://bio.link/dipanshutorawane&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
