linux基础

开机流程

bios/uefi->mbr->bootloader->kernel
其中bios和uefi是位于主板上的固件,它将是开机后第一个启动的程序,当其启动时,将会去分析计算机里面有哪些储存设备,BIOS会依据使用者的设定去取得能够开机的硬盘, 并且到该硬盘里面去读取第一个扇区的 MBR 位置,从而取得开机管理程序.

u盘方式安装系统时会先进bios把u盘启动改为最高优先级,重启后就能进u盘里刻录好的系统安装程序了

像linux的grub就是一种bootloader,bootloader的功能有:

  • 提供选单
  • 加载核心
  • 转交控制权给其他 loader
    bootloader可安装的地方有两个,主引导扇区或者分区的引导扇区,这也是多操作系统引导的基础
    bootloader加载完内核,他的任务就完成了,后面就是内核的工作了.能让计算机硬件正确无误的运作的就算内核了….

kernel基本组成

1.内存管理
2.任务调度
3.硬件驱动
4.文件系统
5.shell

login shell启动流程

shell 启动
有一个框里有三个文件,先找到那个读哪个,应该是兼容问题吧..
其中:

文件.
/etc/profilelogin shell 才会读
~/.bash_profile那三个之一login shell 才会读
~/.bashrcnon-login shell 会读

一些有用的文件


文件作用
/etc/issue, /etc/motdbash 的进站与欢迎讯息
/etc/man_db.confman page搜索的路径
~/.bash_history历史命令
~/.bash_logout注销shell执行
/etc/modules-load.d/*.conf想要内核加载的模块
/etc/modprobe.d/*.conf模块参数配置
/lib/modules/version/kernel 或 /lib/modules/$(uname -r)/kernel模块位置
/lib/modules/$(uname -r)/modules.dep记录加载模块间依赖性;depmod可更新此文件
etc/default/grubgrub环境配置文件
/etc/grub.d结合grub配置文件产生/boot/grub/grub.cfg
/boot/grub/grub.cfg真正的grub配置文件

:模块(驱动)的文件后缀名一般为.ko(kernel object)

系统守护进程与服务

服务(service):常驻在内存中的程序,且可以提供一些系统或网络功能
守护进程(daemon):完成服务的程序??
这两个不必仔细区分(真的吗。。感觉好像不是一个东东。。)
据说System V的机制被废弃了,但还是有一部分init脚本处理方式被留下来了,位置在/etc/init.d下:
如下:
这里写图片描述

这些服务的操作(daemon代表脚本名字):

  • 启动:/etc/init.d/daemon start
  • 关闭:/etc/init.d/daemon stop
  • 重新启动:/etc/init.d/daemon restart
  • 状态观察:/etc/init.d/daemon status

    就拿cron的其中一段来看:

    case "$1" in
    start)  log_daemon_msg "Starting periodic command scheduler" "cron"
        start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
        log_end_msg $?
    ;;
    stop)   log_daemon_msg "Stopping periodic command scheduler" "cron"
        killproc -p $PIDFILE $DAEMON
        RETVAL=$?
        [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
        log_end_msg $RETVAL
        ;;
    restart) log_daemon_msg "Restarting periodic command scheduler" "cron" 
        $0 stop
        $0 start
        ;;
    reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron"
    
    # cron reloads automatically
    
        log_end_msg 0
        ;;
    status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;
    *)  log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"
        exit 2
        ;;
    esac

    可见这个脚本可跟的参数有start,stop,restart,reload,force-reload,status这几个。。
    还有一个runlevel的东西。。,一共分了7个执行等级,比如第五个执行等级就是文字加图形界面,而这个等级默认启动的脚本在/etc/rc5.d下:
    这里写图片描述
    可以看到都是软连接。。
    而原先可以init 3/5切换文字/图形界面,现在虽然也可以,但实际执行的是systemd了

lrwxrwxrwx 1 root root 20 516 23:21 /sbin/init -> /lib/systemd/systemd

而现今通过init启动脚本来开机的方式已经被废弃不用了,改用 systemd (system daemon)这个启动服务管理机制,systemd仅通过systemctl就可以完成所有控制~。systemd将过去的daemon执行脚本都称为unit,并将unit进行了分类,主要类型如下:

service:文件后缀为.service,用于定义系统服务;
socket:文件后缀为.socket,用于标识进程间通信使用的socket文件;
target:文件后缀.target,用于模拟实现“运行级别”;
snapshot:文件后缀.snapshot,用于管理系统快照;
device:文件后缀.device,用于定义内核识别的设备;
mount:文件后缀.mount,用于定义文件系统挂载点;
automount:文件后缀.automount,用于定义文件系统的自动挂载点;
swap:文件后缀.swap,用于标识swap设备;
timer:文件后缀.timer,用于管理计划任务;
path:文件后缀.path,用于根据文件系统上特定对象的变化来启动其他服务;
slice:文件后缀.slice,用于资源管理;
scope:文件后缀.scope,用于外部创建的进程;

unit主要保存在:

1、/lib/systemd/systemd
2、/run/systemd/system
3、/etc/systemd/system

还有就是有一个target的概念,它就相当于systemV 的 init 的 runlevel,执行某个 target 就是执行好多个daemon脚本。。。
比如去文字界面:

systemctl isolate multi-user.target

返回图形界面:

systemctl isolate graphical.target

日志文件系统

日志就是用来记录系统产生的各种消息的,而完成日志信息记录到日志文件靠的是rsyslog.service,就是靠这个服务各种日志信息得以记录。。一般来说日志都会在/var/log下,但不同发行版关于日志文件命名可能不同,可以查看rsyslogd 这个 daemon的配置文件,位于/etc/rsyslog.conf,如下:

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#           For more information see
#           /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf

...
省略
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

好吧,接着找:

#  Default rules for rsyslog.
#
#           For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
#cron.*             /var/log/cron.log
#daemon.*           -/var/log/daemon.log
kern.*              -/var/log/kern.log
#lpr.*              -/var/log/lpr.log
mail.*              -/var/log/mail.log
#user.*             -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info          -/var/log/mail.info
#mail.warn          -/var/log/mail.warn
mail.err            /var/log/mail.err

#
# Some "catch-all" log files.
#
#*.=debug;\
#   auth,authpriv.none;\
#   news.none;mail.none -/var/log/debug
#*.=info;*.=notice;*.=warn;\
#   auth,authpriv.none;\
#   cron,daemon.none;\
#   mail,news.none      -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg             :omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#   news.=crit;news.=err;news.=notice;\
#   *.=debug;*.=info;\
#   *.=notice;*.=warn   /dev/tty8

由此,各种日志的存放位置就清楚了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值