Difference between revisions of "BOSS-Linux/C2/Working-with-Linux-Process/English"
Nancyvarkey (Talk | contribs) (Created page with "Pending") |
PoojaMoolya (Talk | contribs) |
||
Line 1: | Line 1: | ||
− | + | '''Title of script''': Working with Linux Processes | |
+ | |||
+ | '''Author : Anirban Roy Choudhury''' | ||
+ | |||
+ | '''Keywords: Process, shell process, PID, PPID, spawning, ps, parent, child, subshell, system process, init''' | ||
+ | |||
+ | [http://spoken-tutorial.org/wiki/index.php/File:Resources_Linux_Processes.zip Resources for the tutorial] | ||
+ | |||
+ | {| style="border-spacing:0;" | ||
+ | | style="border-top:0.035cm solid #000000;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| <center>'''Visual Cue'''</center> | ||
+ | | style="border:0.035cm solid #000000;padding:0.097cm;"| <center>'''Narration''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 1 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Welcome to this spoken tutorial on working with Linux Processes. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 2 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| I am using Linux operating system. We assume that you know how to get started with the Linux operating system and have some basic idea about commands. If you are interested, it is available through another spoken tutorial, on the following website http://spoken-tutorial.org/ http://spoken-tutorial.org]. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Also note that Linux is case sensitive. All the commands used in this tutorial are in lower case unless otherwise mentioned. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 3 | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| To understand what a process is let me give you an brief explanation. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Anything that is running in Linux is a process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The shell that is running and taking our commands is a process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The commands that we type on the terminal are processes when they are running. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The video in which you are seeing this tutorial is a process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The browser running in which you have opened the spoken tutorial website is a process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Shell scripts that are running are processes and so on. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 4 | ||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| A process can be defined as a program which is being executed i.e. which is running. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Processes are much like us. They are born, they die. They have parent and children. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 5 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Let us first learn about the shell process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The shell process is started by the Linux kernel as soon as we login to the system. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| At this point it would suffice to know that the Linux kernel is the core of the Linux operating system. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| It consists of the most essential components that makes Linux run. The shell creates or gives birth to all the other user command processes. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Open a terminal | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Let us open a terminal. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| point mouse to </$ sign | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| We can see the command prompt on the terminal in the form of a dollar sign. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the command prompt type “date” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| This is the job of the shell process. Now let us type any command, say “date” and press enter. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| As soon as we do this the shell process will create a process called date. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now since the shell process has given birth to the date process, we can say that the shell process is the parent of the date process and the date process is the child of the shell process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Once date process has shown the system date and time, it will die. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 6 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| A shell can also give birth to another shell process. Giving birth to a process or creating a process is also called spawning a process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the command prompt type | ||
+ | |||
+ | “sh” press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| To spawn another shell process, simply go to the terminal and type “sh” and press enter. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| We would see a new prompt appearing in the terminal. Now our original shell , let us call it shell 1, has given birth to a child shell or sub shell,let us call it shell 2. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now you may run a command in the new command prompt as well. Let us run ls command in this new command prompt. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the new command prompt type “ls” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now at the command prompt type “ls” and press enter. | ||
+ | |||
+ | We can see a list of files and directories. | ||
+ | |||
+ | |||
+ | Now a new process named ls is created. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Here, shell 2 is the parent of ls, while shell 1 is the grandparent of ls. ls is the child of shell 2, while shell 2 itself is the child of shell1 | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the new prompt type “exit” | ||
+ | |||
+ | press enter | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| To kill shell 2 simply type at the new prompt “exit” and press enter | ||
+ | |||
+ | This will kill shell 2 and we will get back our original command prompt. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 7 | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Continuing our analogy between us and processes ,we know that each of us have some attributes that identify us. Those attributes can be our name, parents' name , date of birth, PAN card no. etc. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Similarly processes also have attributes like PID(Process ID), PPID(Parent Process ID), Start time, etc. Most of these attributes are maintained by the kernel in a process table. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Each process is uniquely identified by a unique integer called the PID. PID is allotted by the kernel when the process is born. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The PID of the parent process that spawned a new process say P1 is called the PPID of P1 process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the command prompt type | ||
+ | |||
+ | “echo $$” | ||
+ | |||
+ | press enter | ||
+ | |||
+ | point mouse to PID number | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| To see the PID of the current shell at the prompt type | ||
+ | |||
+ | “echo space dollar dollar” and press enter | ||
+ | |||
+ | A number would be shown . This is the PID of the current shell. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 8 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The one command that we would use a lot while talking about processes is the ps command. ps or process status is a command which displays the processes running in the system. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Let us see what happens if we run this command without any options. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the command prompt type | ||
+ | |||
+ | “ps” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now at the command prompt and type “ps” and press enter | ||
+ | |||
+ | This way we would normally see the list of all the processes owned by the user running the program. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| hover mouse over CMD column]hover mouse over PID column | ||
+ | |||
+ | hover mouse over TTY column ]hover mouse over TIME column | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| You can see the name of the process under CMD heading. | ||
+ | |||
+ | Other than this you can a see the PID, TTY or the console at which the process is running ,the TIME i.e. the total processor time that has been used since the process started | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| point mouse to PID of bash and output of "echo $$" command | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| On my machine it displays two processes. One is bash, the shell process we are using. The other is the ps process itself. | ||
+ | |||
+ | The other important thing to note here is that the PID of the shell process is same as that shown by the echo space dollar dollar command. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the command prompt type | ||
+ | |||
+ | “sh” press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| If we spawn a subshell , let us see what happens. | ||
+ | |||
+ | At the terminal type “sh” and press enter. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the new command prompt type“ps” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now in the new prompt that appears on the new line, type “ps” and press enter. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now we can see 3 processes in the list . The process sh has been added. | ||
+ | |||
+ | Here again notice that the PID of the bash process is same as that before. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| ps comes with many options as we would see next. First option that we would see displays more attributes for the processes listed. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the new command prompt type “ps -f” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Now type at the prompt “ps space minus f” and press enter | ||
+ | |||
+ | This again will list three processes as in the previous case. Bash, sh and ps -f. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| point your mouse to UID, PPID and PID fields | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The only difference is now more attributes are listed. | ||
+ | |||
+ | UID gives the user name of the user who has started the process. Also it shows the PPID that is the PID of the parent process that created the process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| point your mouse to the PID of bash and PPID of sh | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| For example see that bash process is the parent of sh process , so the PID of bash is same as the PPID of sh process. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| point your mouse to PID of sh and PPID of ps -f | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Similarly since sh process is the parent of ps, the PID of sh process is the same as the PPID of the ps -f process. C stands for processor utilization. Currently, this is the integer value of the percent usage of the processor over the lifetime of the process. It will be displayed as 0 in | ||
+ | |||
+ | this case as the usage is negligible. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| point your mouse to STIME | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The STIME field gives the time at which the process started, the rest we have already seen while running ps. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display slide 9 | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Processes are of two types : First one is User processes. Those are started by the users. For example 'ps' or for that reason most commands that we run on the terminal. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Second one is system processes. Those processes are started by the system often during system startup or user login. Example of system process can be bash. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display Slide 10 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Sometimes we may want to see all the processes - both system processes as well as user processes. Then we use the -e [ minus e] or the - capital A option. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the new command prompt type “ps -e” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Go to the terminal and type at the prompt “ps space minus e” and press enter. We can see a large list of processes. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| At the new command prompt type “ps -e | more” | ||
+ | |||
+ | press enter | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| To get a multipage display just type at the prompt | ||
+ | |||
+ | “ps space minus e space vertical bar space more” and press enter. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| As we have seen before more will cause only as many processes to be listed as can fit in one window. As we press enter we scroll through the list of processes. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| The first process in this list is interesting. It is called the init process. It is the process from which almost all other processes are spawned. It has a PID of 1. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Press "q" | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| To come back to the prompt press q | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display slide 11 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| So, in this tutorial, we have learned about process, shell process, spawning of process, process attributes and different types of processes. We also learned the use of ps command. This brings me to the end of this tutorial. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:none;padding:0.097cm;"| Display slide 12 | ||
+ | | style="border-top:none;border-bottom:0.035cm solid #000000;border-left:0.035cm solid #000000;border-right:0.035cm solid #000000;padding:0.097cm;"| Spoken Tutorials is a part of the Talk to a Teacher project, supported by the National Mission on Education through ICT, MHRD, Government of India. More information on the same is available at the following link | ||
+ | |||
+ | http://spoken-tutorial.org/NMEICT-Intro. This is Prashant from IIT Bombay signing off. Thanks for joining. | ||
+ | |||
+ | |} |
Latest revision as of 16:41, 17 November 2014
Title of script: Working with Linux Processes
Author : Anirban Roy Choudhury
Keywords: Process, shell process, PID, PPID, spawning, ps, parent, child, subshell, system process, init
|
|
Display Slide 1 | Welcome to this spoken tutorial on working with Linux Processes. |
Display Slide 2 | I am using Linux operating system. We assume that you know how to get started with the Linux operating system and have some basic idea about commands. If you are interested, it is available through another spoken tutorial, on the following website http://spoken-tutorial.org/ http://spoken-tutorial.org]. |
Also note that Linux is case sensitive. All the commands used in this tutorial are in lower case unless otherwise mentioned. | |
Display Slide 3
|
To understand what a process is let me give you an brief explanation. |
Anything that is running in Linux is a process. | |
The shell that is running and taking our commands is a process. | |
The commands that we type on the terminal are processes when they are running. | |
The video in which you are seeing this tutorial is a process. | |
The browser running in which you have opened the spoken tutorial website is a process. | |
Shell scripts that are running are processes and so on. | |
Display Slide 4
|
A process can be defined as a program which is being executed i.e. which is running. |
Processes are much like us. They are born, they die. They have parent and children. | |
Display Slide 5 | Let us first learn about the shell process. |
The shell process is started by the Linux kernel as soon as we login to the system. | |
At this point it would suffice to know that the Linux kernel is the core of the Linux operating system. | |
It consists of the most essential components that makes Linux run. The shell creates or gives birth to all the other user command processes. | |
Open a terminal | Let us open a terminal. |
point mouse to </$ sign | We can see the command prompt on the terminal in the form of a dollar sign. |
At the command prompt type “date”
press enter |
This is the job of the shell process. Now let us type any command, say “date” and press enter.
|
As soon as we do this the shell process will create a process called date. | |
Now since the shell process has given birth to the date process, we can say that the shell process is the parent of the date process and the date process is the child of the shell process. | |
Once date process has shown the system date and time, it will die. | |
Display Slide 6 | A shell can also give birth to another shell process. Giving birth to a process or creating a process is also called spawning a process. |
At the command prompt type
“sh” press enter |
To spawn another shell process, simply go to the terminal and type “sh” and press enter. |
We would see a new prompt appearing in the terminal. Now our original shell , let us call it shell 1, has given birth to a child shell or sub shell,let us call it shell 2. | |
Now you may run a command in the new command prompt as well. Let us run ls command in this new command prompt. | |
At the new command prompt type “ls”
press enter |
Now at the command prompt type “ls” and press enter.
We can see a list of files and directories.
|
Here, shell 2 is the parent of ls, while shell 1 is the grandparent of ls. ls is the child of shell 2, while shell 2 itself is the child of shell1 | |
At the new prompt type “exit”
press enter
|
To kill shell 2 simply type at the new prompt “exit” and press enter
This will kill shell 2 and we will get back our original command prompt. |
Display Slide 7
|
Continuing our analogy between us and processes ,we know that each of us have some attributes that identify us. Those attributes can be our name, parents' name , date of birth, PAN card no. etc. |
Similarly processes also have attributes like PID(Process ID), PPID(Parent Process ID), Start time, etc. Most of these attributes are maintained by the kernel in a process table. | |
Each process is uniquely identified by a unique integer called the PID. PID is allotted by the kernel when the process is born. | |
The PID of the parent process that spawned a new process say P1 is called the PPID of P1 process. | |
At the command prompt type
“echo $$” press enter point mouse to PID number |
To see the PID of the current shell at the prompt type
“echo space dollar dollar” and press enter A number would be shown . This is the PID of the current shell. |
Display Slide 8 | The one command that we would use a lot while talking about processes is the ps command. ps or process status is a command which displays the processes running in the system. |
Let us see what happens if we run this command without any options. | |
At the command prompt type
“ps” press enter |
Now at the command prompt and type “ps” and press enter
This way we would normally see the list of all the processes owned by the user running the program. |
hover mouse over CMD column]hover mouse over PID column
hover mouse over TTY column ]hover mouse over TIME column |
You can see the name of the process under CMD heading.
Other than this you can a see the PID, TTY or the console at which the process is running ,the TIME i.e. the total processor time that has been used since the process started |
point mouse to PID of bash and output of "echo $$" command | On my machine it displays two processes. One is bash, the shell process we are using. The other is the ps process itself.
The other important thing to note here is that the PID of the shell process is same as that shown by the echo space dollar dollar command. |
At the command prompt type
“sh” press enter |
If we spawn a subshell , let us see what happens.
At the terminal type “sh” and press enter. |
At the new command prompt type“ps”
press enter |
Now in the new prompt that appears on the new line, type “ps” and press enter. |
Now we can see 3 processes in the list . The process sh has been added.
Here again notice that the PID of the bash process is same as that before. | |
ps comes with many options as we would see next. First option that we would see displays more attributes for the processes listed. | |
At the new command prompt type “ps -f”
press enter |
Now type at the prompt “ps space minus f” and press enter
This again will list three processes as in the previous case. Bash, sh and ps -f. |
point your mouse to UID, PPID and PID fields
|
The only difference is now more attributes are listed.
UID gives the user name of the user who has started the process. Also it shows the PPID that is the PID of the parent process that created the process. |
point your mouse to the PID of bash and PPID of sh | For example see that bash process is the parent of sh process , so the PID of bash is same as the PPID of sh process. |
point your mouse to PID of sh and PPID of ps -f
|
Similarly since sh process is the parent of ps, the PID of sh process is the same as the PPID of the ps -f process. C stands for processor utilization. Currently, this is the integer value of the percent usage of the processor over the lifetime of the process. It will be displayed as 0 in
this case as the usage is negligible. |
point your mouse to STIME | The STIME field gives the time at which the process started, the rest we have already seen while running ps. |
Display slide 9
|
Processes are of two types : First one is User processes. Those are started by the users. For example 'ps' or for that reason most commands that we run on the terminal. |
Second one is system processes. Those processes are started by the system often during system startup or user login. Example of system process can be bash. | |
Display Slide 10 | Sometimes we may want to see all the processes - both system processes as well as user processes. Then we use the -e [ minus e] or the - capital A option. |
At the new command prompt type “ps -e”
press enter |
Go to the terminal and type at the prompt “ps space minus e” and press enter. We can see a large list of processes. |
At the new command prompt type “ps -e | more”
press enter |
To get a multipage display just type at the prompt
“ps space minus e space vertical bar space more” and press enter. |
As we have seen before more will cause only as many processes to be listed as can fit in one window. As we press enter we scroll through the list of processes. | |
The first process in this list is interesting. It is called the init process. It is the process from which almost all other processes are spawned. It has a PID of 1. | |
Press "q" | To come back to the prompt press q |
Display slide 11 | So, in this tutorial, we have learned about process, shell process, spawning of process, process attributes and different types of processes. We also learned the use of ps command. This brings me to the end of this tutorial. |
Display slide 12 | Spoken Tutorials is a part of the Talk to a Teacher project, supported by the National Mission on Education through ICT, MHRD, Government of India. More information on the same is available at the following link
http://spoken-tutorial.org/NMEICT-Intro. This is Prashant from IIT Bombay signing off. Thanks for joining. |