init rc加日志方法

合集下载

开机第四阶段:init进程对系统初始化流程图

开机第四阶段:init进程对系统初始化流程图

/sbin/init|--->/etc/init/rcS.conf|--->exec /etc/rc.d/rc.sysinit 执行第一个脚本(Ubuntu中为/etc/init/rc-sysinit.conf) |--->/bin/hostname 获取主机名(设置$HOSTNAME)|--->/etc/sysconfig/network 配置网络基本参数|--->/proc/mounts 检测并挂载procfs,sysfs到/proc,/sys|--->/etc/init.d/functions 包含一些通用函数,会被/etc/init.d(是到rc.d/init.d的链接)下的脚本用到 |--->/etc/sysconfig/i18n设置终端字符集|--->/etc/sysconfig/init设置终端和图形界面的一些参数|--->deamon(),killproc(),pidofproc()一些通用函数|--->status(),echo_success()等|--->update_boot_stage(),strstr()等|--->/selinux/enforce 检查SELinux的状态|--->/etc/system-release 打印熟悉的发行版信息“Welcome to SentOS ..."|--->/proc/cmdline 获取内核启动的命令行参数|--->/proc/sys/kernel/modprobe 获取modprobe的位置(为/sbin/modprobe)|--->/sbin/sysctl初始化硬件(通过sysctl设置运行时内核参数)|--->kill $nashpid 杀死所有的nash进程(我们在initrd中使用的shell)|--->/sbin/start_udev 启动udev(动态设备管理进程)|--->/bin/taskset 设置进程的默认CPU亲合值(即优先使用哪个CPU,用在多处理器环境中) |--->/etc/sysconfig/modules/*.modules 加载其他用户自定义的模块|--->sysctl -e -p /etc/sysctl.conf 配置内核参数|--->/proc/devices 获取设备号及相应设备名,以便进行设备初始化|--->/sbin/dmraid 激活software raid|--->/sbin/kpartx “/dev/mapper/..." 为software raid上的每块硬盘创建设备映射|--->/.autofsck 是否自动执行文件系统检查|--->sulogin 若为单用户模式,执行单用户登录程序|--->plymouth --show-splash显示启动时的背景画面|--->/etc/sysconfig/readonly-root 设置root文件系统挂载方式|--->从/etc/fstab挂载暂存设备|--->/etc/rwtab, /etc/rwtab.d/* 挂载其他有卷标的分区|--->ip addr show 获取并设置网上ip地址|--->从/etc/fstab挂载持久数据的存储设备|--->/etc/statetab, /etc/statetab.d/* 持载其他持久数据的存储设备|--->/sbin/fsck 检查文件系统|--->umount -a & reboot -f 如果检查失败,卸载文件系统并重启|--->如果文件系统检查没有失败,以读写方式重新挂载root文件系统|--->挂载所有其他的文件系统|--->cat /var/lib/random-seed >/dev/urandom 初始化伪随机数生成器|--->/usr/sbin/system-config-keyboard,passwd,...配置机器相关参数(如果有需要的话) |--->/etc/sysconfig/network 重新读取网络配置数据,并重设hostname|--->清除相关的/, /var,/tmp数据|--->/sbin/swapon 开启各个交换区分(根据/proc/swaps)|--->/usr/sbin/system-config-network-cmd 执行引导时的网络配置(传递内核启动的netprofile参数) |--->dmesg -s 131072 > /var/log/dmesg 转储内核启动的消息信息|--->/etc/inittab|--->id:5:initdefault:查找initdefault定义的运行级别(为5,图形用户界面)|--->telinit $runlevel 切换到对应级别运行|--->/etc/init/rc.conf|--->exec /etc/rc.d/rc $RUNLEVEL|--->/etc/profile.d/lang.sh 设置语言环境|--->/etc/rc.d/rc5.d/KNxxxx 先关闭相关服务(在关闭系统时也会执行)--->/etc/rc.d/init.d/xxxx|--->/etc/rc.d/rc5.d/SNxxxx 再开启相关服务|--->etc/rc.d/rc5.d/xxxx|--->/etc/rc.d/rc.local 在所有init脚本运行完之后运行,可在些添加自己的初始化命令(Ubuntu中为/etc/rc.local) |--->/etc/init/start-ttys.conf 启动tty1-tty6设备|--->/etc/sysconfig/init 指定tty设备,通常为/dev/tty1-/dev/tty6|--->/etc/init/tty.conf|--->exec /sbin/mingetty $TTY 在每个tty设备上启动mingetty|--->成功后就可以通过Ctrl+Alt+F1..F6在各个不同的tty之间切换######################################### 字符界面 ####################################|--->fork()--->/sbin/mingetty 运行mingetty程序,出现字符登录界面|--->/etc/issue 在登录界面上显示发行版信息|--->exec("/bin/login",...) 运行/bin/login程序,验证用户名和口令|--->/etc/passwd 读取passwd文件核对用户名和口令|--->everzhou:x:500:500:everzhou:/home/everzhou:/bin/bash|--->切换到工作目录/home/everzhou|--->初始化环境变量$HOME,$PATH等|--->/etc/motd 显示当天的消息|--->检查新邮件|--->exec("/bin/bash",...) 运行bash程序|--->/etc/profile 执行这些脚本中的命令|--->.bash_profile或.bashrc|--->ENV=$HOME/.anyfilename; export ENV 运行$ENV指向的脚本(如果设置了的话) |--->bash运行中 mingetty,login最后替换成了bash,登录成功########################################## 图形界面 ####################################### |--->/etc/init/prefdm.conf|--->exec /etc/X11/prefdm -nodaemon 准备启动指定的X图形界面(X Display Manager)|--->/etc/sysconfig/i18n 设置语言环境|--->/etc/sysconfig/desktop 读取指定的DM配置(如果有的话)|--->exec /usr/sbin/gdm 启动指定的DM(gdm, kdm, wdm或xdm,默认为/usr/sbin/gdm) |--->启动X server窗口|--->/etc/gdm/custom.conf 根据配置在X窗口中显示登录界面|--->用户选择语言、键盘布局、会话等|--->/usr/share/xsessions/gnome.desktop 读取会话要显示的名称--->Exec=gnome-session 指定默认的会话程序|--->用户输入用户名和密码|--->用/bin/login验证用户名和密码|--->/etc/gdm/PreSession/* 执行会话前的一些任务(比如更改X窗口的默认背景)|--->/etc/gdm/PostLogin/* 执行一些登录后立即需要运行的命令|--->/etc/gdm/Xsession gnome-session--->/etc/X11/xinit/Xsession启动GNOME会话 |--->/etc/X11/xinit/xinitrc-common导入Xsession与xinitrc共用的代码|--->/etc/profile.d/lang.sh 设置i18n环境|--->/etc/X11/Xresources 读取用户登录时需要载入的全局资源 |--->/etc/X11/Xmodmap 读取的全局的键盘配置(用于xdm和xinit,用startx启动图形界面时要用到) |--->/etc/X11/xinit/xinitrc.d/* 运行所有的xinitrc脚本 |--->exec -l $SHELL -c gnome-session执行特定的环境设置(以前是执行 ./Xclients.d/Xclients.gnome-session.sh) |--->/etc/X11/xinit/Xclients 运行各个X客户端的脚本(或者$HOME/.xsession,或者$HOME/.Xclients) |--->/etc/sysconfig/desktop 读取指定的会话程序配置(如果有的话)|--->exec "$(type -p gnome-session)" 默认运行gnome-session,进入GNOME桌面 |--->GNOME桌面运行中 ,mingetty,login最后替换成了gnome程序,登录成功|--->/etc/gdm/PostSession/* GNOME会话结束时运行的脚本########################## 在字符界面下通过startx启动图形界面 ############################## |--->/bin/bash 在字符界面的Shell下|--->/usr/bin/startx|--->记录$HOME目录和/etc/X11/xinit下的.xinitrc和.xserverrc文件以$HOME目录下的为优先|--->解析用户指定的client、server、display参数及其选项|--->没有指定参数时就设为前面记录的.xinitrc和.xserverrc文件|--->XAUTHORITY=$HOME/.Xauthority 设置XAUTHORITY环境变量|--->设置X server的权限信息|--->xinit $client $clientargs -- $server $display $serverargs 启动X server和第一个X client |--->/etc/X11/xinit/xinitrc 用来运行各个X client(上面没有指定第一个client时) |--->/etc/X11/xinit/xinitrc-common 导入Xsession与xinitrc共用的代码|--->/etc/profile.d/lang.sh 设置i18n环境|--->/etc/X11/Xresources 读取用户登录时需要载入的全局资源|--->/etc/X11/Xmodmap 读取全局的键盘配置|--->/etc/X11/xinit/xinitrc.d/* 运行所有的xinitrc脚本|--->/etc/X11/xinit/Xclients 运行各个X client的脚本(或者$HOME/.Xclients) |--->/etc/sysconfig/desktop 读取指定的会话程序配置(如果有的话)|--->exec "$(type -p gnome-session)" 默认运行gnome-session,进入GNOME桌面|--->GNOME桌面运行中 mingetty,login最后替换成了gnome程序,登录成功|--->/etc/gdm/PostSession/* GNOME会话结束时运行的脚本。

android的init.rc文件的语法

android的init.rc文件的语法

android的init.rc文件的语法Android初始化脚本语言包含四种类型的语句:* 动作(Actions)* 指令(Commands)* 服务(Services)* 选项(Options)该语言的语法包括下列约定:* 所有类型的语句都是基于行(line-oriented)的,一个语句包含若干个tokens,token 之间通过空格字符分隔. 如果一个token中需要包含空格字符,则需要通过C语言风格的反斜线('/')来转义,或者使用双引号把整个token引起来。

反斜线还可以出现在一行的末尾,表示下一行的内容仍然属于当前语句。

* 以'#'开始的行是注释行。

* 动作(Actions)和服务(Services)语句隐含表示一个新的段落(section)的开始。

所有的指令(commands)和选项(options)归属于上方最近的一个段落。

在第一个段落之前的指令(commands)和选项(options)是无效的。

* 动作(Actions)和服务(Services)拥有唯一性的名字。

如果出现重名,那么后出现的定义将被作为错误忽略掉。

动作(Actions)动作(Actions)是一个有名字的指令(commands)序列。

每个动作(Actions)都定义一个触发条件(trigger),用于指示什么时候执行这个动作。

当与动作的触发器匹配的事件发生时,该动作将被添加到一个即将被执行的队列的队尾(除非它已经在队列中)。

队列中的每一个动作被依次取出执行,动作中的每一个指令也将依次执行。

初始化程序(Init)在执行一个动作的各项指令的期间,还需要处理其它操作(比如,设备创建/销毁,属性设置,进程重启)。

一个动作定义的形式如下:on <trigger><command><command><command>服务(Services)服务是初始化程序需要启动的一些程序,初始化程序还有可能会在这些程序退出之后重启它们。

informix常用命令的用法说明

informix常用命令的用法说明
onmode -m 将系统从quiescent模式变为on-line模式
onmode -s 执行graceful shutdown
onmode -u 执行immediate shutdwon
onmode -y 对提示自动回答yes
命令不会进行磁盘I/O操作,也不会对系统资源加锁,所以它对系统性能的影响减少到最小。简言之,onstat是informix提供的一种交互式的系统监控工具。
onstat 的一些常用选项:
onstat -- 列出所有选项
onstat -i 设置进入交互模式
onstat - 显示运行模式和数据库引擎状态
例如可以用如下命令为数据空间增加chunk:
onspaces -a -d datadbs1 -0 60002 -p /dev/rrvol3 -s 60000
再如可以用如下方式从数据空间中删除chunk:
onspaces -d datadbs1 -o 60002 -p /dev/rrvol3 -s 60000
onmode 命令同样用于改变动态服务器的运行模式。除了上述选项外,onmode还有很多与改变系统运行模式无关的选项。
利用onspaces命令创建数据空间
语法: onspaces -c [-b] [-d] [-z] [-m] [-o] [-p] [-s] [-t]
-c 创建blobspace或dbspace
即按所需大小创建逻辑日志,同时创建一个较小的物理日志,系统初始化完毕后,再将物理日志移至其它设备。关于如何确定所需的物理日志的大小,将在以后的章节详述。
利用onstat
-l命令可以看出系统中所有新增的逻辑日志被标识为A。这些逻辑日志只有在系统进行归档后才会真正被使用。为了激活这些逻辑日志有一种简单的方法:执行一次“伪”归档。具体步骤如下:将参数TAPEDEV设置为/dev/null然后运行一次ontape

数据库复习要点2

数据库复习要点2

SQL部分复习要点每个事务的处理必须满足ACID原则,即原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability.SQL中可被锁定的资源从小到大分别是行、页、扩展盘区、____表_________ 和______数据库___________。

Sql提供了6中锁定模式分别是:排他、共享、更新、意向、架构、键范围如果允许用户对视图进行更新和插入操作,但又要防止用户将不符合视图约束条件的记录添加到视图,应当在定义视图时指定下列哪个子句?在表中插入数据的语句是在表中创建视图的语句是为了去除结果集中的重复的行,可在select语句中使用以下哪个关键字?下列关于游标的说法,不正确的是(d )A)是从数据表中提取出来的数据B)以临时表的形式存放在内存中C)在游标中有一个数据指针D)利用goto语句可以移动该指针利用“fetch”游标的操作不包括(C )A)openB)fetchC)quitD)close12、不属于存储过程的优点有(D )A)存储过程的能力大大增强了SQL语言的功能和灵活性。

B)可以降低网络的通信量C)在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案D)存储过程可以使没有权限的用户不能直接或间接存取数据库数据,从而保证数据的安全。

系统安全性是指在系统级控制数据库的存取和使用的机制,包含:⑴有效的用户名/口令的组合。

⑵一个用户是否授权可连接数据库。

⑶用户对象可用的磁盘空间的数量。

⑷用户的资源限制。

⑸数据库审计是否是有效的。

⑹用户可执行哪些系统操作。

1.掌握sqlserver2005中用户的创建、删除和权限管理方法.(1)创建SQL SERVER登录名例如:以命令方式创建SQL SERVER认证方式登录名,登录名使用yan,密码是123456Create login yan with password=’123456’;(2)用户的创建例如:使用命令方式创建YGGL的数据库用户,用户名是yan,登录名是yanUse ygglGoCreate user yan for login yan(3)删除用户例如:使用命令方式删除YGGL的数据库用户yanUse ygglGoDrop user yan(4) 权限授予用户例如:以命令方式授予用户yan在YGGL数据库上salary表中的select,delete 权限。

.net 日志记录方法

.net 日志记录方法

在.NET 中,有几种常见的日志记录方法:1.使用System.Diagnostics.Trace类:这是.NET中最简单的日志记录方式,可以用于记录应用程序的运行情况。

Trace类提供了一种静态方法,可以全局地记录应用程序的执行过程。

你只需要在你的代码中添加Trace.WriteLine()方法即可。

这种方法的使用非常简单,但功能比较有限。

示例:csharp复制代码Trace.WriteLine("This is a log message");1.使用System.Runtime.Logger类:这是.NET Core中推荐使用的日志记录方式。

Logger类提供了一种更加灵活和强大的日志记录方式,可以配置不同的日志输出目标,例如控制台、文件、甚至是数据库。

示例:csharp复制代码using System.Runtime.Logging;public class Program{private static readonly ILogger<Program> _logger;static Program(){_logger = LogManager.GetLogger<Program>();}public static void Main(){_logger.LogInformation("This is a log message");}}1.使用第三方日志库:有许多第三方日志库可供选择,如Log4Net、NLog、Serilog 等。

这些库提供了更多的功能和灵活性,例如日志级别、日志旋转、异步日志等。

你可以根据你的需求选择适合的库。

2.使用ILogger接口:在 Core中,我们通常使用ILogger接口来记录日志。

ILogger接口是Microsoft.Extensions.Logging命名空间的一部分,它提供了一种可插拔的日志记录方式。

androidlogd原理及实现

androidlogd原理及实现

androidlogd原理及实现⼀、logd介绍logd 是Android L版本提出来的概念,其作⽤是保存Android运⾏期间的log(⽇志)。

在Android L之前,log由kernel的ring buffer 保存,在Android L之后,log保存在⽤户空间。

1) logd进程启动系统启动到init函数时会解析init.rc⽂件,启动logd进程和logd-reinit(重新初始化logd)进程,init.rc⽂件中的相关内容如下:onload_persist_props_actionload_persist_propsstart logdstart logd-reinit在system/core/logd中的logd.rc⽂件中,启动logdservice和logd-reinit service,具体内容如下:service logd /system/bin/logdsocket logd stream 0666logd logdsocket logdr seqpacket0666 logd logdsocket logdw dgram 0222logd logdgroup root system readprocwritepid/dev/cpuset/system-background/tasksservice logd-reinit /system/bin/logd --reinitoneshotdisabledwritepid/dev/cpuset/system-background/tasks注:logd-reinit只会执⾏⼀次,logd和logd-reinit都会调⽤system/core/logd/main.cpp中的main函数,但logd-reinit通过netlink给logd进程发送reinit命令后就会退出。

2) logd 实现log管理主要原理是:上层应⽤(Android层)通过调⽤Log/Slog/Rlog中的v/d⽅法打印log,最终log会通过netlink传递给logd,logd会将log保存在内存中(由C++中的list容器管理,后续会介绍),logcat等log获取⼯具同样通过netlink⽅式从logd获取log。

嵌入式linux下inittab详解

嵌入式linux下inittab详解

嵌入式linux启动时运行的inittab文件嵌入式系统下的linux启动配置文件,不同与普通的PC linux启动配置,启动相关文件与文件的内容也要少得多。

嵌入式系统下的linux启动过程一般是:1 在bootloader中制定各种要求传给linux内核的参数,制作ramdisk或ramfs 文件系统,并在开机后首先mount上,该文件系统主要负责包含启动运行的配置文件,嵌入式系统主要是/etc/inittab和/etc/rc文件;2 在init进程启动后,进程首先执行/etc/inittab文件,该文件语法下面介绍,一般包括三项内容就可以启动。

其中主要的一项内容就是::sysinit:/etc/rc,目的是制定初始化要执行的脚本配置文件,在/etc/rc中则主要是配置系统;另一项内容是::respawn:-/usr/sbin/xxx,xxx一般为shell,最后一个重要的项是::shutdown:/bin/umount -a -r接下来的部分为转载/kernel_32/archive/2009/02/03/3860756.aspx首先介绍点背景知识,关于inittab的:init 进程是系统中所有进程的父进程,init进程繁衍出完成通常操作所需的子进程,这些操作包括:设置机器名、检查和安装磁盘及文件系统、启动系统日志、配置网络接口并启动网络和邮件服务,启动打印服务等。

Solaris中init进程的主要任务是按照inittab 文件所提供的信息创建进程,由于进行系统初始化的那些进程都由init创建,所以init 进程也称为系统初始化进程。

下面具体说明inittab文件的格式。

inittab文件中每一记录都从新的一行开始,每个记录项最多可有512个字符,每一项的格式通常如下:id:rstate:action:process,下面分别解释。

1.id字段是最多4个字符的字符串,用来唯一标志表项。

2.rstate(run state)字段定义该记录项被调用时的运行级别,rstate可以由一个或多个运行级别构成,也可以是空,空则代表运行级别0~6。

linux系统及编程基础课后答案

linux系统及编程基础课后答案

linux系统及编程基础课后答案第1章习题答案1.什么是Linu某?答:Linu某是一款优秀的计算机操作系统,支持多用户、多进程、多线程,实时性好,功能强大且稳定。

同时,它又具有良好的兼容性和可移植性,被广泛应用于各种计算机平台上。

作为Internet的产物,Linu 某操作系统由全世界的许多计算机爱好者共同合作开发,是一个自由的操作系统。

2.Linu某的主要特点是什么?答:Linu某具有UNI某的所有特性并且具有自己独特的魅力,主要表现在以下几个方面:开放性多用户多任务出色的稳定性能良好的用户界面:Linu某向用户提供了两种界面:用户界面和系统调用界面。

设备独立性:设备独立性是指操作系统把所有外部设备统一当作文件来看,只要安装它们的驱动程序,任何用户都可以像使用文件那样操作并使用这些设备,而不必知道它们的具体存在形式。

丰富的网络功能:完善的内置网络是Linu某的一大特点,Linu某在通信和网络功能方面优于其他操作系统。

其他操作系统不包含如此紧密的内核结合在一起的联接网络的能力,也没有内置这些联网特性的灵活性。

而Linu某为用户提供了完善的、强大的网络功能。

可靠的安全性良好的可移植性:可移植性是指将操作系统从一个平台转移到另一个平台,使它仍然能按其自身的方式运行的能力。

3.Linu某的主要组成包括什么?答:Linu某主要组成为:Linu某内核(Kernel):内核(Kernel)是系统的心脏,是运行程序和管理硬件设备的内核程序,决定着系统的性能和稳定性,实现操作系统的基本功能。

Linu某的Shell:Shell是系统的用户界面,提供用户与内核进行交互操作的一种接口。

Shell是一个命令解释器,它解释由用户输入的命令并且把他们送到内核执行。

Shell编程语言具有普通编程语言的很多特点,用这种编程语言编写hell程序与其他应用程序具有同样的效果。

Linu某文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

init rc加日志方法
在Linux系统中,init是系统的第一个进程,它负责启动和管理系统中的所有其他进程。

init进程的配置文件通常是位于/etc目录下的init/rc文件,不同的Linux发行版可能会有不同的命名方式,比如Ubuntu使用的是upstart或者systemd。

要给init/rc添加日志方法,你可以使用syslog服务来记录系统日志信息。

syslog是一个系统日志服务,它可以帮助你收集、记录和管理系统的各种日志信息。

你可以在init/rc脚本中调用syslog服务来记录特定事件或者输出信息。

另一种方法是在init/rc脚本中直接调用logger命令来记录日志。

logger命令可以将指定的消息写入系统日志中,你可以在
init/rc脚本中使用logger命令来记录系统启动、关闭或者其他重要事件的日志信息。

此外,你还可以在init/rc脚本中使用echo命令将日志信息输出到特定的文件中,这样可以方便你查看和分析系统的运行日志。

总的来说,要给init/rc添加日志方法,你可以使用syslog服
务、logger命令或者echo命令来记录系统日志信息,这样可以帮助你更好地监控和管理系统的运行情况。

相关文档
最新文档