 Hello. Hello. Hello. Hello. Hello. Hello. Hello. Okay, friends. Myself, Akhilash. I am working as a, working as a system administrator under professor ADP Phatak. We have a five member team. I will introduce them. They are sitting in the back. One is Swadipatil. Can you raise the hand? Swadipatil. Swadipatil. And Kalyan Ram. Rahul KV. And Saurav Vimal. Okay, they are handling the system and infrastructure for this project. So I think today we are going to discuss about the Linux. I think how many of you are familiar with Linux? One, two, three, four, five. Most of the people. Which flavor you are using? Distribution. Distribution. Which flavor you are using? All of the people. How many of you are new to Linux? Raise the hand now. Only two. Three. Only four people, right? Only four people don't know Linux. Not audible. You don't know anything. You are new to Linux. You are using only Windows. How many people are only using Windows? Not reduced to Linux. Okay, fine. I think everybody knows who invented Linux. Who? Okay, fine. How many distributions are there? Tell me some names, no? Debian. How many of you have done any course in Linux like RHC or RHCA? Anyone done that course? Not here. So anybody done any course like RHC or RHCA? Anybody here know any courses is there like Red Hat courses? Anybody have any idea? You know Red Hat Linux, right? You don't know? You know Red Hat Linux? No. Because Ubuntu you know in your colleges you are using Ubuntu. That's why, right? There is a famous distribution called Red Hat Linux. Right now they are using Enterprise Linux 7. It is paid. But they are giving support. So that's why they are charging. Only for the support they are charging. Linux. So they are distributions like Fedora. Fedora is their open source community. And also there is a Linux called SendOS. Anybody heard about SendOS? SendOS is exactly RHCL 7. What they are doing is only taking the RHCL 7 and changing the logos. Rest of the things are there. If you go to inside all the files. So you will get a same feeling like this in open source community. They are only helping out. I think it's clear. Right? So in Linux I think you can see everybody is interested only in graphics. Like Windows. Everybody need Windows. Like GUIs. Right? Anybody is like to work in like a black and white interface. Only in commands. Like this one. No graphics, nothing. You want to type the command. You want to edit the files. Then only everything will work. In GUI if you want to change an IP address. If you want to change something. You want to go to the corresponding area. Right click. Change. You give the IP. Everything will change. But here how we will do? If I login then also I will get only this black and white. If you want to change an IP address. If you want to change your host name. If you want to add a new user. If you want to change password. How we will do from this? But GID will not work. No. I think everybody know in Linux is fully this configuration. Like you can change any configuration. You can go to the corresponding configuration. And you can change what are the things you need. Then restart the service. It will work. You have to know that. For that you want to learn some commands. Like creating folders, directories. Changing password, creating users. I will switch to graphics. Next is a Linux system is booting. Anybody know the boot process? Boot process. How a system is booting. When you are switching on a Linux machine. How it is booting? What are the steps? Louder. Boot loader first. Okay. Okay. Partially it is correct. I will show you. You can go through this presentation. I think I am not explaining so much. So these are the six steps. I think most of the people know. What is the first one? BIOS. I think everybody know BIOS. Right. Then MBR also most of the people know. Master boot record. Then grub. I think maybe that is a new word. Grub. What is grub? Grub. Okay. Then kernel. Then init and level. Next slide you can see what is BIOS. If you do not know. As many as system is switching on first it will check. If suppose a RAM is missing or some hardware is some problem. Is the system boot? Yes or no? No. No. How it will identify? From this part. Right. I think you understand anybody have doubt or BIOS? No. Next is MBR. I think in the there is no need to explain everything is here. If it is success then only first step is success then only it will go to second one. Otherwise it will not go. Okay. Then grub. So grub means if you install a windows as well as Ubuntu or any other distribution in a single machine. And I think when I reboot the machine you saw the screen is coming with the three four options. So that screen is called grub. In that three four options are there like first is windows then Ubuntu then Ubuntu rescue mode. If I have any other OS in my system it will show that also. So I can select from there. We can set the timing. If you want to default it will go to if you want to go to windows we can set. For that we want to change some files configuration files. Okay. Then run levels. Anybody know about the run levels? This is the run levels. Run levels you know. Suppose if I am using a terminal like I will get on a black and white screen. Right. There is no GUI or anything. I want to shut down the machine. How? Simply power of the machine. No. I want to shut down the machine. How you will do? Because we are using only desktop because we are handling with only servers. In servers there is no need for GUI. Because nobody is going to the server room and full 24 slash 7 we are not accessing it. What are the things we want to do? We directly assess it. And what are the things we want to do? We change the file. Save it. We start the service. It will work. There is no GUI because my server room is in another building. Otherwise every time I want to do some changes. How you are saying? Okay. I will do this. If I run from here to there. I will go back. I cannot do it. It is a full terminal. At least you know how it means in it is zero. If you type in it is zero. Ender the machine will go down. Okay. Understand. Next is single user mode without networking. In it one. So in what cases this using is for troubleshooting. Normal variables we are not using in it. For some emergency if the system go down. Something happens. After booting it is not booting. Otherwise you forgot the password of the system. Including root user. So if you want to change. In that case you want to go to single user. Even from the grub itself you can change the parameters. And you can directly boot to single user. It will not ask any password. Nothing. Directly you will get a back end by screen with shell. You want to type the commands. Change it. Restart it. It will work. I think everybody know single user as well as multi user. You know multi user. Okay. Then there is no need to explain. Same. Second means you will not get internet. Like dindra network you will not get. But multiple users can act. Third one is the full multi user mode. In this mode you will get all the features. But there is no GUI. X window will not come. Like GUI will not come. Only black and white screen. With the shell prompt you will get. You can login. This third word means we are using in the server. Because there is a reason for that also. Because if we load the desktop. It will take more processing as well as more RAM. From the server side there is no need for graphics. We need more processing power. Plus we need more RAM. So simply we will avoid that. Okay. Four is not using. Five means you can see X11. X11 means the graphics. Most of the these things are if you check. All of them have graphics. That means it is running in the run level file. Okay. Next is six. In it six. If you put in it six and enter the machine will remove. But you should have pseudo user. Otherwise it will not allow. So all of the run levels it is loading from the file. If you go to the files you can see these files. So to the machines you know you can see this file. In ETC or C.D you can see these files. So this is, sorry please. What is this screen? What is it? Entering commands. The same screen you are getting here also. Okay. It is taking the input from the keyboard. And giving to the Linux kernel. And giving the output. If you run some command. I think most of the people know the basic commands. Like everybody knows. CDLS, LS-L. How to hide a folder. Means everybody knows the permissions. Then I do not want to go there. Permissions. What are the permissions? Read write execute. Okay. Read write execute. Good. If I put this you can see a lot of read write executes are there. What is that then? Don't read write execute. Okay. How many of them know that? You can see a lot of read write execute. Read write execute. Around six are there right? Read write execute. Read write execute. Everybody know that? What is mean by that D? Okay. Before that I will show some basic commands. I think most of the people will go. Because they know already these things. Like LS means those who don't know they can refer this. I think most of the people know the Linux. You can learn from there. If anybody don't know how to install Linux. How to install Linux. Be honest. I will train you. I will give a training. You don't know how to install Linux. Everybody know? You don't know? Two? Three? Anyone else? You? Four. I think you four people can do one thing. By tomorrow onwards I will not be here. Monday I will be available. Monday afternoon. You can fix the time and come to ASL lab. You know ASL lab. There is a building. Air processor Portuguese. You know that. In the ground floor there is a lab called ASL lab. You can come there. For schedule and mail to me then I will give a training. How to install Linux. Five people can come together. Okay. So simple commands like my friend said already LS. Means you can explain what is LS. Loudly. At least. Or. Okay. Louder than others can use this. Five people don't know Linux. So how you will get help? You need help for a specific command. Okay. If you don't know any command. Any options you can put man. LS. It will show all the commands. Means all the options. Sorry. LS minus A. You can refer this. And you can proceed further. Then PWD. And everyone press and working directly. And what is top command? Top. Karachi running process. Karachi running process. Top. Understand what it is. What are the process currently running? And this show. It is changing. You can see now. It is changing. Real time. Then how you will check who is logged in. Then what is this? Okay. How to check the IP address? IP config. Not IP config. IF config. IF config. IP config is in windows. If you put IP config, it will give something else. Okay. IF config. How to check the host name? Host name of the machine. How to check the domain name? If you send an FQDN, how you will check? Right now it is done because we are not searching the domain name. If in the servers, you will get the domain name. Okay. Then how you check the connectivity between two machines? Ping. Everybody know. Ping command. Ping. Then the next machine's IP address. Just giving. When anybody know NS lookup. It will give the IP address of the Google server. And then you know how to add users? Not GUI commands. GUI everyone know. User privileges, normally there are three commands. User add, user mode, user delete. User add means we can add a user. User mode means you can change some features of the users. User delete means we can delete the user. User add, user mode, user delete. And we are used. Okay. Now in the server, I want to download a file because I do not have any GUI nothing. I am getting only the terminal. Black and white screen. How I will download? Wget. Wget. Alright. Wget. Wget. If you give the path, it will download that. Okay. And how to check how much memory the system is using? GUI. GUI is not memory. The GU itself, it is there now. What is GU? Disk usage. That is not related to memory. No. How you will check how much memory it is using in my machine? How much RAM is free? G part n means that is disk partitioning, not memory. Memory, we are not able to partition. How we will check the free memory? The command is free. Free minus m means it will give in megabyte. Free. How you will check the release? If you do not have any GUI nothing, you are getting only the screen. How you will get this 12.04, 13.10, how you will know? Anybody know? If GUI is there, you can go there and find it will show this is the version. No. No. If you are working in a server, no. Never, we are not able to restart. Restart. lsb release. lsb underscore release minus m. This is the command, Linux distribution. But this is only, it will only work in Ubuntu machine. If you go to Fedora or any other machine, the command is different. Which machine that is? Which distribution? SendOS 7. Right. I think these are the simple basic commands. I think you can refer, you will get a lot of commands from the net also. Next I want to talk about version control. How many people know version control? No, I am not asking the tool. What is version control? You can also understand. Okay, that is true. Anything else? I think Avinoiser explained the software development process, right. He explained that. The software development process, how it is functioned. Do you have any idea? How software is developing or how it could up to the production. No idea. I think people have already done projects, right. Projects, mini projects. No. Okay. In this case, software development, like that, we will maintain a server. It will be called version control. I think before that I will tell a story, then only you will understand. So, I think now everybody is thinking why version control? I have 5 friends. I will put 1% of everyone's machine. No problem. What is this? We are thinking like that, right. Here 50 people are there. I will copy my project to 50 different PCs. Then my source code is secure. If my machine is go down, I can retrieve that from there. Like that. Anybody is thinking like that? Okay, now I will tell a story. It's a real life. When I am also the own part of that. Don't ask who or all the characters are imaginary except me. So, when I join here, that time there is no version control. Nothing. There are 2 programmers. They are extremely good programmers. They are also like you. They have freshers. After completing their MTAC and MCA, the joint in IIT. They are doing a lot of work. Everybody is impressed. Everything is going perfect. So, what they are doing? They will come early morning and directly log into the production server. That is live server. If something is changing, within a second it will reflect the entire world. That is the thing. However, if you change something, at the same time it will reflect to everybody. So, they are coming every day and logging in and doing the things. Everything is working. All of them are happy. So, in our requirement, some of the time all the features are not needed. Like registration. Summer internship registration. It is happening in a year only once. That time you want to register. Then rest of the 10 months it is ideal. Next year around next 2016, again I want to take this code registration page code. I want to put it live. Two people are registering. Everything is working fine. One day what happened? There is no version control I already mentioned. They are doing a lot of things. Accidentally they deleted on file. That is an important file. It is an evaluation file. Because when you are entering, registering, that time it is evaluating. Nobody registered or not. Your mobile number is there, your email address is there. That part they deleted. Nobody knows that. Nobody knows that it is deleted. After an year, again the same thing comes. Okay. Okay. People log in again in the server. They are searching for the files. The file is not there. What they will do? What they will do? They put the registration page. There is no issues. They put the registration page. Registration page is there. But validation is not there. Nobody knows that. Some student is trying to register. He got some error. Immediately he called one of our PM pick the phone. If the problem goes to the PM, you know what will happen. Means you are in firing point. Why it happened? There is no version number. Still I am remembering that it is a Friday. By around 3.30. He simply called in the office. He said come up. He came up. He already learned. We took three people. He said you sit there. You sit here. I am standing here. Where is the door? Without working the code, nobody will go outside. That is the thing. If a version control is there, it is a simple thing. We can go there and search it. Otherwise we can check out one year back code. We can replace it. If you are not following that thing, the same will happen here also. I will not tell the name. We will do that. Some of the people will understand after some time. So everything should be in version control. Because most of the time we are saying like people are saying Sir, it is in my laptop. There is no problem. Sir, please show me the demo. Sir, please take my laptop. If you tell like that, same time you are in firing point. So don't do like that. What are the files you are doing? Put it in the version control. Okay. Maybe accidentally, all of them are human beings. Sometimes we will delete some files. We also don't know. Okay. If it is in version control, we can simply check it out and we can do that. Okay. What are the version control? I think you understand the story. What are the consequences? Because for that day we spend up I think around 1, 2, 3 o'clock in the night to retrieve everything. Because the because thing is the because lot of software engineers are trying to do that. They are failing. When he take the responsibility and he write the code and he told to them this is the code you can use anytime. What are the things you need? Only enable, rest of the thing you disable. If you need mobile number then enable that feature. Otherwise you need city enable that, disable this, this, this. That's all. They delete that code. Important. That's all we spend. Partially it is complete, not fully. So that is the consequence. See if it is in version control that if we maintain the version control within a second I can say like less than 30 seconds we can analyze, we can check it out we can replace the code everything will work. So now what are the version controls? What are the tools we are using? Git. Everybody know only Git. Only Git. Before Git. Some other CVS SVN Subversion Lot of tools are there. So how many of them are familiar with Git and GitHub? Familiar with the GitHub? You know how to push, how to pull everything. So I think we will, I think how many of them are working in EDX? EDX. Going to work in EDX. No idea. Project is not an allocator. Sorry. I think some of them are working on EDX, right? Open EDX. You know that? Yes, right? Okay. In Open EDX all the files are storing in GitHub early. Open EDX related files, all the updates will come in GitHub early. What we are doing is we have a branch here, we already have a repository here. We will give access to that repository. So you can download that code. You want to work on that. You will get individual user ready and password. You will get which group you are working like that you will configure. It will take some time. I don't know when they will allocate the project. I think I want to... So for a demo purpose I am giving, there is a website called gitlab.com I am not going to GitHub because GitHub has some limitation for me. We can create only public project. Private project is allowed. We want to give money then only they will give. So I think people can also... Somebody can create a project in gitlab and you can see how it is working. Some of the comments I will show you but you can see how it is working. You can add groups. You can add more files. You can create branches. You can create versions like that. I will show you some of the comments. So I have already created a project in gitlab. It is called summerender. First step is I want to clone this code in my machine. This is the command. Git clone then you want to give the full URL. This is my code, summerender. So I am cloning that summerender. You can see in the test folder summerender. There is one file. Only one file. So you can think like it is a project for your java project or python project. On that case it will get lot of files. Many files. Okay. Now I want to edit this file. I am editing this file edited by Nabila. Okay. Now I edited the file. Now the thing is in our git the file is different in my local repo the file is different. I want to change the reflect. What are the things I have done in my local machine. In your case what are the things in everyday what are the things you are doing. In your case I can say when I work in one part suppose user authentication I am doing something some modification it is working fine. What I will do next that is my local machine I want to push back I want to reflect the same in the original then only my colleague can download the code and work on that. Okay. For that what I will do first we want to add. If it is only one file that is why I use one. Otherwise you can use dot or start it will put ender files or you want to put only specific files then you want to mention the name. Okay. It is clear. I will show you. There is no concept of overwriting. That is why we are using versions and all that. If it is overwriting how you will retrieve? Vi editor. Vi is an editor. Vi, vim, geditor that is our editors. Like if you are not getting this GUI in the command line you want to work for that only. Otherwise it is the same file you can open it. Open office or anything. Oh you want to over save escape colon wq. Wq means write and quit. Now I added the file. So what is next part? Next I want to commit. When you are committing a file you want to give some messages. You want to give a comment. We will give commit minus m messages. What is the important of this message? I can simply write. Okay. Abhilash committed. Abhilash committed and dead and dying. Okay. For commit. Yes. Because in our environment most of the time I am seeing like committed by these people. If you write that line or not like that line it will automatically record. According to your user name it will take the date stamp also. Everything it will record. There is no need to mention Abhilash is committed. You can simply write this feature or this feature deleted. These many lines added. It should be clear. Then only after some time you want to retrieve that file you can simply identify. In this while I edited this thing I want to just go through the log and I can find. In this area I edited. So this is the file. I can check out that specific version. Okay. Now in the local it is reflected. Now I want to put it in the production original. In the remote server. Done. If you go here you can see. There are two commits. Less than a minute other. You can see the first commit. You can see the last commit. Who committed? The VPCSR user. If any other user is there their name will come there. Okay. Understand. So testing and adding two more files. Sorry. Okay. Only one file. So next is branch. So in software development you know in during the development cycle lot of bugs or lot of new problems or new challenges will come. How we will manage from the same report. In a software development we will get some new tasks. The same code right now only 1.txt Okay. Tomorrow Sarai is calling and saying okay I need this audio. Two more people calling and saying okay I need this audio. In this case how we will manage. It should be isolate. That case the branches is coming. Can create different branches. Suppose group 1 I am giving one task. Group 2 I am giving another. I will create two branches. Okay. Two branches I will tell you what are the people in that branches. They can work on that specific branch. Once they finish we can merge back. This is an option called merge. We can merge with the existing. Okay. How we will create branches. Okay. Then again I want to push back. Oh I want to give branch name. Okay. ABC. You can see here. Who should I new branch. From that point I created a new branch. Okay. Understand the what is branching concept. You doubt. Okay now the development is moving. So some of the modules are finished. Some of the module otherwise some team or some common modules are finished. So products are called all you guys and saying okay release that. What we will do. You want to release up to that today. What is today 12. Right. I saw release correct. You know the releases right. Releases. Anybody don't know releases. Like version. Versions. This I can say revisions. Not versions revisions. Version means version 1.0, 1.1, 1.2. So today he is saying okay release. It has version 1.0. How we will release. For that we are calling this tagging. Like minus l means it will display all the tags. Okay. Now I want to push back. That is version. Yes. Yes. Yes. Like if you go to edx they have two releases. I think aspen as well as bridge. So I think. So they are done like this only. They will tag from this day. This is the version. Topmost. What are the things you done up to today. That is version. After 5 days or 10 days after an year you are checking out version 1 means you will get today's code. What is the version. That is the tag. Most item. You will get v2.0 only. When you download v1 you will get only view. Sure. But that is latest update. Change a lot of things. You will get the updated version. I can say like that. Version 2 means you should update something. Then only you will release a version. Right. From version 1 these much things are working. Some bugs are there. You know the bugs. After that we will fix the bug and release it as version 2. They are very software doing like that. Because some of the companies they want to they are saying we will release by this day. They know it has bugs. But they will release. I say version 1. So then we will report bug. Okay. Here bug again. Here bug again. So for example anybody know open stack. Open stack. Open stack. Open stack cloud. No. No. There is no need for. You just search it in Google for open stack documentation. And see every 2 or 3 days what is the difference. You can see every 3 days they are changing the document. They are updating. But the same version is different. Even in idiots also they have 2-3 type of releases. Like they have weekly releases and they have this version kind of every week if you go to the you can see every week they have releases. Like what are the things from last week to this week. They will fix it and release. And once all the components are stable some still some bugs are there but most of the components are stable then they will release as a name release. Like aspen or this thing. But in between if you compare aspen aspen aspen there is huge difference. They are saying around 1 lakh lines of code they change their signals. That is the difference. You will get version 1. Your point is correct. That code also. But modified code. You can say like updated code. How you can see 2 commits because I committed 2 times at least that's why 2 commit. I created 2 branch. Why 2 branch? One is the master branch and second one is I already name it ABC. That is the branch and one tag. Ag means right now I created E1.0. Ag means that is a final thing. Branch you can decide. If you are checking out only the branch. If we are saying you work it on branch 1. You check out that branch and do what are the things you want to change and push back. If you are checking out only that branch when you are pushing it will go there only. It will not go anywhere. Because we will not give the original source code permission. That as it is. Because otherwise there is no point. Because tomorrow something goes wrong. At least I can check it out from there and run it will work. What are the modifications you would have? That will go. You can fix it. After that we can deploy again. We deploy. Okay. So git log. It will show the log. What are the files I committed how many times I mean that that thing it will show. So for this git log you know there are n number of options are there. Like suppose some PM want to check. In my team 5 members are there. Each commit I want to check. 5 members who is ideally I want to check. You go there and put your name it will show only your commit. It has time stamp also. So he can check regularly what is happening. He is doing or not doing. I think hope everyone understand what is the important of version control in a software development. I think everybody follow this rule. Are you going to follow or not? You should follow otherwise you will be trouble. Because most of the time I am seeing like people coming and they are showing in their laptops that will not work. So in the final Professor Fatak or any other PM asked only he said in the git up. Then send a mail to Abilash. He will send a mail to me. I will run some commands. It will deploy in the production server or run it. If it is working okay otherwise you will be trouble again. You are not going to do anything we will only do these commands like git pull. It will come there and run it. If it is working then you will claim that sorry my laptop it is working. There is some problem. It is not possible. Your laptop it is working means it should work everywhere. Otherwise maybe you missed some file to push back to the original. That is the problem. Sometimes it is happening still in our software development it is happening. They will give a request software is ready you run this command we will run the command. Our job is only run the command. We will run the command we have script so we will run the script. Everything will check out from the right now we are using SVN from the SVN it will automatically compile deploy. It will replay back okay deployment is run. Then somebody will check they will add it okay there is a big mistake. Again what is the problem? Push back one file. Again in the same process again come here I want to run the script go production everything is working fine okay. Make sure all the code should be in the git or what are the version control we are giving for your save as well as ours. Next part is documentation. I think Avinash sir discussed about the documentation importance. Yes or no? Yes, no. So follow that why documentation? Because your job is for the 2 months. After 2 months you will go back to your colleges. Then what we will do with that code? What are the things you develop? I don't know. There are millions of code. I don't know where you change what functionality you add for configuring that what are the things I want to do. So we want to follow that. I am sorry. Even that also you can keep it in the git. Document also you can keep it in the git. Regularly we can update. Only we can check. The final means that that final version of your documentation you can release like a tag. Final. You can download that and check it is working fine. Okay. I think some of them got something. Some of them didn't get anything. Deep base.