• Linux启动与登陆环境


    linux启动流程

    参考:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html

    1. 加载内核,首先读入/boot 目录下的内核文件。
    2. 启动初始化进程/sbin/init,它的作用是初始化系统环境。由于init是第一个运行的程序,它的进程编号(pid)就是1。其他所有进程都从它衍生,都是它的子进程。
    3. 确定运行级别。Linux预置七种运行级别(0-6)。
      一般来说,0是关机,1是单用户模式(也就是维护模式),6是重启。不同级别对应不同的开机启动程序,它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
      init进程首先读取文件 /etc/inittab,它是运行级别的设置文件。
      每个运行级别在/etc目录下面,都有一个对应的子目录/etc/rcN.d,N表示运行级别,指定要加载的程序。
    4. 加载开机启动程序。/etc/rcN.d目录里列出的程序,都设为链接文件,指向另外一个目录 /etc/init.d,包含程序的位置
    5. 用户登录。
      1. 从/etc/passwd中寻找输入的账号,并读取UID与GID(/etc/group存储了对应组名的关系)
      2. 从/etc/shadow中找UID对应的口令
      3. 进入shell
    6. 进入login shell,并进行shell的配置:
      首先读入/etc/profile,这是对所有用户都有效的配置;
      然后依次寻找下面三个文件之一,读取一个就忽略其他的列,这是针对当前用户的配置。
        ~/.bash_profile
        ~/.bash_login
        ~/.profile

    /etc/profile

    此文件包括:

    1. 全局或局部环境变量。便于用户及其进程和应用访问它。
    2. PATH信息。包含可执行文件,库文件及一般文本文件的目录位置,便于用户快速访问。
    3. 终端设置。使系统获知用户终端的一般特性。
    4. 安全命令。包括文件创建模式或敏感区域的双登录提示。
    5. 日期信息或放弃操作信息。是一个文本文件,保存用户登录时即将发生事件的记录或放弃登录的信息文件。

    ~/.profile

    用户的环境变量设置

    stty

    stty命令用于显示和修改终端行设置。

    命令格式为:stty SETTING CHAR

    SETTING可以是如下

    • eof:输入结束,文件结束,默认为Ctrl+D。比如:用cat>file来创建文件时,按Ctrl+D来结束输入。
    • erase:向后删除字符,擦除最后一个输入字符,默认为Ctrl+?。注意默认情况下退格键Backspace不是删除字符。
    • intr:中断当前程序,默认为Ctrl+C。
    • kill:删除整条命令,删除整行,默认为Ctrl+U。
    • quit:退出当前程序,默认为Ctrl+或Ctrl+|。
    • start:启动屏幕输出,默认为Ctrl+Q。
    • stop:停止屏幕输出,默认为Ctrl+S。有时候终端突然僵死了,可能是不小心按了Ctrl+S的缘故,因为我们习惯性的按Ctrl+S来保存文件。
    • susp:terminalstop当前程序,默认为Ctrl+Z。这样当前进程就会变成后台进程了。
    • werase:删除最后一个单词,默认为Ctrl+W。
    • stty命令还有一些其他用法,如:
    • stty-echo关闭回显。比如在脚本中用于输入密码时。
    • sttyecho打开回显。

    环境和Shell变量

    shell变量:定制用户本身的工作环境。

    本地变量:在当前shell中定义,并且在当前shell中有意义。

    环境变量:环境变量用于所有用户进程(经常称为子进程) 。登录进程称为父进程。 shell中执行的用户进程均称为子进程。
    设置时,需要用export命令导出为环境变量。

    自定义bash环境

    自定配置的文件是:~/.bash_profile 和 ~/.bashrc。这里的~只的是家目录。一般会在.bash_profile中设定可以一体适用的命令、搜索路径及环境变量,而把其他大部分的设定放在.bashrc中,比如别名等。

  • 相关阅读:
    驱动02.按键
    驱动01.LED
    更换编译器(转载)
    2.使用线程方式获取标准输入
    1.使用非阻塞方式获取标准输入
    编写一个通用的Makefile文件
    layui 中 表单 会自动刷新的问题
    layui 中弹窗的时候关闭当前页面并刷新
    ssm框架中解决 sqlserver数据库的分页问题(用的是mybatis插件)
    关于 @SuppressWarnings 的注解
  • 原文地址:https://www.cnblogs.com/qiusuo/p/5597947.html
Copyright © 2020-2023  润新知