Linux 终端及终端登录过程简介

来源:互联网 发布:java基础游戏开发实例 编辑:程序博客网 时间:2024/05/30 04:31

Linux 终端及终端登录过程简介

   

      shell是系统的用户界面,它提供了用户与内核交互的接口。它接收用户输入的命令并把它送入内核执行,再将执行结果显示给用户。
   
Linux终端使用基础:

    显示器和键盘合称为终端,因为它们可以对系统进行控制,所以又称为控制台(物理控制台)。如果在一台计算机上用软件的方法实现了多个互不干扰、独立工作的控制台界面,就是实现了多个虚拟控制台。用户以文本方式登录的话,用户通过键盘输入命令,通过Linux终端对系统进行控制。通常情况下,Linux默认启动6个虚拟终端(tty1~6)。如果启动方式选择直接启动X Window,那么X Window在第7个虚拟终端上。
    假设用户现在处于图形界面下,虚拟控制台的选择可以通过按下Ctrl+Alt键和功能键Fn(n=1~6)来实现。例如,用户登录后,按Ctrl+Alt+F2组合键,用户又可以看到“login:”提示符,此时看到的是第二个虚拟控制台。如果此时再按Alt+F1组合键,就可以回到第一个虚拟控制台。
    虚拟控制台使得Linux成为一个真正的多用户操作系统。在不同的控制台上,可以同时接受多个用户登录,也允许一个用户进行多次登录。用户可以在某一个虚拟控制台上的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。
    在X Window图形操作界面中按Alt+Ctrl+Fn组合键(n=1~6)就可以进入控制台字符操作界面。这就意味着用户可以同时拥有X Window以及6个控制台操作界面,在控制台操作界面中按Alt+Ctrl+F7组合键即可回到刚才的X Window图形操作界面。也就是说,用Alt+Ctrl+Fn组合键即可实现字符界面与X Window界面的快速切换。

Linux终端登录简介:
1. 当系统启动时,内核创建进程ID为1的进程也就是init进程,init进程使系统进入多用户状态。init进程根据配置文件/etc/inittab确定需要打开哪些终端,对每一个允许登录的终端设备,init调用一次fork,它所生成的子进程则执行getty(exec)程序。(不同操作系统配置文件可能不同)

2.getty为终端设备调用open函数,以读写方式将终端打开。然后getty输出“longin:”之类的信息,并等待用户键入用户名。

3.当用户键入用户名后,getty工作完成。然后调用login程序:execle(“/bin/login”,”login”,”-p”,username,(char *)0,envp)

4.密码验证无误后,login将切换目录到用户的home目录,改变该终端设备的权限,login进程改变为登录用户ID并调用改用户的登录shell:execl(“/bin/sh”,”-sh”,(char *)0)

5.登录shell读取其启动文件(Bourne shell)和Korn shell。

    从getty开始exec到login,再exec到bash,其实都是同一个进程,因此控制终端没变,文件描述符0、1、2也仍然指向控制终端。由于fork会复制PCB信息,所以由Shell启动的其它进程也都是如此。

原创粉丝点击