Linux学习(四)服务与进程 | 您所在的位置:网站首页 › linux进入tty1与tty2 › Linux学习(四)服务与进程 |
一、Linux 系统启动与快捷键设置
1.Linux 系统启动过程
系统的 引导 和 初始化 是操作系统实现控制的第一步。 Linux系统的初始化主要包括 内核 和 init程序 两部分: 内核主要完成对系统硬件的检测和初始化工作。init程序主要完成对系统的各项配置。Linux启动流程图(画的有点丑将就下): 下面介绍下各部分: (1) BIOS(Basic Input/Output System):基本输入输出系统,存储于主板的ROM芯片上 BIOS主要功能是存储了磁盘的启动顺序,BIOS会按照顺序查找第一个磁盘头的MBR信息。 (2)MBR(Master Boot Record):主引导记录,存于磁盘头部,分别存储了BootLoader程序,分区表信息 以及用于有效性检查的工具。 (3)GRUB(Grand Unified BootLoader):多系统启动程序,用于查找并加载Kernel,其执行过程分为三步: == stage1==:查找并加载stage2(BootLoader程序)。 stage1.5:但若系统未启动,MBR找不到文件系统(stage2所存放位置),就得先引导位于文件系统中的stage2 。 stage2:GRUB程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并在加载到内存中,GRUB就将控制权交接给了Kernel程序。 Note:此时/boot 还未被挂载,GRUB直接识别grub所在磁盘的文件系统,应该是/grub/grub.conf (4)Kernel :内核,操作系统核心,软硬件的交互通道。 initrd(Initial RAM Disk):stage2时拷贝到内存上 ,是一个临时的根文件系统(rootfs),该文件装载了必要的驱动模块,直到真正的rootfs被挂载后,initrd将从内存中移除。 (5)init:OS初始化操作,实际上是根据/etc/inittab(定义了系统默认运行级别)设定的动作进行脚本的执行,第一个被执行的脚本为/etc/rc.d/rc.sysinit,这个是真正的OS初始化脚本,简单讲下这个脚本的任务(可以去看看实际脚本,看看都做了什么): 激活udev和selinux;根据/etc/sysctl.conf文件,来设定内核参数;设定系统时钟;装载硬盘映射;启用交换分区;设置主机名;根文件系统检测,并以读写方式重新挂载根文件系统;激活RAID和LVM设备;启用磁盘配额;根据/etc/fstab,检查并挂载其他文件系统;清理过期的锁和PID文件执行完后,根据配置的启动级别,执行对应目录底下的脚本,最后执行/etc/rc.d/rc.local这个脚本,至此,系统启动完成。 2.关于系统运行级别CentOS Linux7中,每个运行级别都有属于自己的target文件,都是链接文件,运行级别的设置由/etc/system/system/default.target文件控制。 在运行级别对应的目录中,所有文件的命名都是Knn… 和 Snn… S开头的文件是系统启动时调用的服务进程,K相对的就是终止时balabla. 系统图形界面的运行级别是5,文本界面是3 使用Systemctl set-default name.target来修改默认的运行级别。 //将系统的默认运行级别修改为图形界面 system set-default graphical.target reboot如何关闭Ctrl + Alt + Del 重启系统的组合件呢? vim编辑这个文件,全部注释/usr/lib/systemd/system/ctrl-alt-del.target 文件的内容,保存退出,执行init q重新加载配置文件。 二、使用systemctl管理NFS服务 1.什么是服务?简单来说就是执行某系统功能的程序来支持其他更加底层的程序。例如:打印服务,HTTP服务,FTP服务。一般的服务管理有启动、查询、停止等操作。 Linux系统的服务分为独立运行的服务和受xinetd管理的服务两大类。 独立运行的服务一般与运行级别有关,在系统启动后就直接运行和管理; xinetd本身就是一个独立运行的服务,负责管理一些不常用的服务,其启动和停止都由xinetd控制。 在管理服务时,Linux中的每个服务都由相应的启动脚本,用于设置启动、停止、重启和查询服务等功能。所有服务的脚本都放在 /etc/rc.d/init.d 目录中,可用less命令查看。 2.那么什么是NFS服务?NFS (Network FileSystem ) ,主要功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)。可以简单看做是一个文件服务器 (file server) 。 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区槽一样 (partition) 3.systemctl命令Linux中对服务的管理可以通过systemctl命令来实现。 (1)服务的启动与停止 systemctl start(启动)/stop(停止)/status(查看运行)/restart(重启)/reload(重载) XXX.service例如:管理network服务 注:服务一般以 “ .service ” 结尾。 (2)设置服务自启动 ntsysv --back --level或者systemctl命令也可以设置 例如:查看network服务的开机自启动状态,并设置为开机不启动。 (3)查看所有的服务 systemctl //列出所有的系统服务 systemctl list-units //列出所有启动unit systemctl list-unit-files //列出所有启动文件 systemctl list-units -type=service -all //列出所有service类型的unit systemctl list-units -type=service -all grep cpu //列出CPU电源管理机制的服务 systemctl list-units -type=target -all //列出所有目标单元target 三、进程的延迟与周期调度 1. 进程是什么?首先来看一下程序是怎么定义的:程序是为了完成某种任务二设计的软件,包含可执行的代码和数据,而进程是指开始执行但是还没有结束的程序的实例。 一个运行的程序可能有多个进程。 进程一般分为交互进程、批处理进程和守护进程3类。 交互进程:shell下通过执行程序产生的进程,可在前台和后台运行。 批处理进程:进程的序列,执行时不需要人机交互。 守护进程:一直运行,一般在后台运行。 2.进程调度Linux下的进程调度一般用 at 和 crontab . (1)延迟性调度:at at 命令在指定时刻执行指定的命令,实际是一组命令的集合。使用前需要确保atd服务是开启的,使用 #systemctl start atd.service 开启,并用 #systemctl enable atd.service 确认一下。atq命令可用于查询已设定的命令序列,atrm命令用于删除已设定的命令序列。 //基本格式就是: at time at> 动作 at>ctrl +d 其他at的命令at -l #查看任务的编号(任务已完成则没有显示) at -c 任务编号 #查看这个任务的内容 at -r 任务编号 #删掉这个任务 下面就来举个栗子啦~ //两天后的17:30执行文件data中指定的作业 # at -f data 17:30+2 days //一分钟后再tty1中提示"hello!" # at now+1 minutes at>echo"hello!">/dev/tty1 at>ctrl+D //明天凌晨2点将正在登陆的用户写入/tmp/users.log # at 2:00 tomorrow at> w>/tmp/users.log //一分钟后在主目录中建立目录at # at now+1 minutes at>mkdir at at>ctrl+D(2)周期性调度:crontab crontab命令可以在指定的日期和时间周期执行。 //基本格式 #crontab minute hour day month dayofweek command ctrl+D举例: //每周四早上8:30,提醒用户10:00开会 # crontab 30 8 * * 4 echo "meeting at 10:00 am">/dev/tty1 ctrl+D可以#crontab -e进入vim修改调度任务。 3.进程查看ps是最基本的进程查看命令。可以确定哪些进程在运行、挂起、运行了多久、在使用的资源、进程相对优先级及进程的标识号(PID)。 ps aux //查看终端上所有用户进程的所有信息 ps aux|less //分页查看 ps aux|grep glenda //查看用户glenda所有进程信息pstree还可以以树状结构显示系统进程的继承关系。 4.进程终止终止前台运行的进程一般用:Ctrl + C; 终止后台进程,必须用 kill、killall 之类的进程终止命令。 (1)kill 一般和ps、grep结合使用 ps -A|grep sshd //查询sshd服务进程的pid是1097 kill 1097对于僵尸进程,用信号代码-9强行终止。 (2)killall:通过进程的名字,直接终止。 killall sshd //终止所有sshd进程 5.作业控制正在执行的一个或多个相关进程称为一个作业,作业控制是指控制当前正在运行的进程的行为,用户可以同时运行多个作业。 |
CopyRight 2018-2019 实验室设备网 版权所有 |