试述shell的启动过程详情

试述shell的启动过程详情,第1张

  Linux用户启动一个进程的通用方法是在shell中执行命令,命令中包括可执行程序的路径以及启动所需参数。新启动的进程是shell进程的子进程,shell使用wait系列函数等待用户进程的结束,在进程结束后wait函数会返回,从而shell收到通知并回收资源。本文主要说明shell如何启动用户进程,Linux系统中可执行文件格式ELF以及通过execve系统调用启动用户进程的过程。

  试述shell的启动过程详情,试述shell的启动过程详情,第2张

  shell的启动过程

  1)内核(/unix,/vmunix,/boot/zImage等)将加载至内存,直到系统关机;

  2)init将扫描/etc/inittab(inittab列出可用的终端及其属性),一旦找到活动的终端,mingetty会给出login提示符和口令,mingetty提示输入用户及口令;

  3) 将用户名及口令传递给login, login验证用户及口令是否匹配,如果身份验证通过,login将会自动转到其$HOME;

  4)将控制权移交到所启动的任务(在移交之前分别完成setgid,setuid)。 如在/etc/passwd文件中用户的shell为/bin/sh。

  5)读取文件/etc/profile和$HOME/.profile中系统定义变量和用户定义变量,系统给出shell提示符$PROMPT,对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。

  6)在shell提示符,就可以键入命令名称(或shell程序)及所需要的参数。

  7)当用户准备结束登录对话进程时,可以键入logout命令、exit命令或按ctrl+d,结束后控制权将交给init。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2717147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存