前后台切换和启动流程

前台和后台的区别

  • 前台作业:通过终端启动,且启动后一直占据终端
  • 后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)可并行多个,节省资源

前后台更换

#前端换后端:ctrl+z,进程会进入停止状态
#查看后台进程;jobs
bg 1    选择进程编号使进程处于运行状态
fg 1    选择进程编号使进程恢复前端状态
CMD &  会直接进入后台

#同时运行多个进程
#方法1
cat all.sh
f1.sh&
f2.sh&
f3.sh&

#方法2
(f1.sh&);(f2.sh&);(f3.sh&)

#方法3
f1.sh&f2.sh&f3.sh&

#脚本中
#!/bin/bash
NET=10.0.0
cat /dev/null > hosts2.txt
for i in {1..254};do
    {
	if ping -c1 -w1 $NET.$i &> /dev/null ;then
        echo $NET.$i is up | tee -a hosts2.txt
    fi
	}&                后台并行执行,节省时间
done
wait                  加wait指令指出退出后台        

centos6启动流程init

简单化:POST加电自检>MBR引导>GRUB引导程序>加载内核>启动init进程(第一个进程)>初始化配置文件启动程序(后台执行)

具体化:POST–>GRUB1阶段MBR446–>GRUB1.5MBR之后的空间(提供grub2文件所有分区的文件系统)–>GRUB2阶段(grub.conf)–>kernel(initramfs.img)–>根分区–>/sbin/init–>/etc/inittab–>/etc/rc.sysinit(系统初始化脚本)–>/etc/rc.d/rc–>/etc/rcN.d/K,S(/etc/init.d/)–>/etc/rc.local–>login登录

GRUB启动阶段,任一阶段破坏均不可启动

  • 一阶段

    1阶段:MBR的前446字节,第一个扇区引导数据

      修复:grub-install /dev/sda
    

    1.5阶段:MBR之后的扇区,存放加载识别文件系统驱动程序

  • 二阶段:查找启动文件路径引导/boot/grub/grub.conf

#当删除/boot文件夹后
#centos6为例,进救援模式,先装内核,再修grub
chroot /mnt/sysimage/
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/kernel-xxx.rpm --force
grub-install /dev/sda
vim /boot/grub/grub.conf

default=0
timeout=5
title linux
kernel (hd0,0)/vmlinuz-xxx root=/dev/sda2(或uuid,blkid)
initrd /initramfs-xxx.img
#之后退出重启即可

centos7后system启动流程

centos7以后改用system启动,大体上包含init启动和相关启动配置文件和程序

  1. UEFi或BIOS初始化,运行POST开机自检

  2. 选择启动设备

  3. 引导装载程序, centos7是grub2,加载装载程序的配置文件:

    /etc/grub.d/

    /etc/default/grub

    /boot/grub2/grub.cfg

  4. 加载initramfs驱动模块

  5. 加载内核选项

  6. 内核初始化,centos7使用systemd代替init 此前步骤和init启动差不多

  7. 执行initrd.target所有单元,包括挂载/etc/fstab

  8. 从initramfs根文件系统切换到磁盘根目录

  9. systemd执行默认target配置,配置文件/etc/systemd/system/default.target

  10. systemd执行sysinit.target初始化系统及basic.target准备操作系统

  11. systemd启动multi-user.target下的本机与服务器服务

  12. systemd执行multi-user.target下的/etc/rc.d/rc.local

  13. Systemd执行multi-user.target下的getty.target及登录服务

  14. systemd执行graphical需要的服务

#立体观看systemd启动次序
systemd-analyze plot >boot.html

systemctl主要管理service,可多个

参数介绍
start name.service启动服务
stop name.service停止服务
status name.service查看服务状态
restart name.service重启服务
mask name.service禁用服务
unmask取消禁用
is-active只查看服务是否启用(echo $?)
cat查看service文件
list-units -t service查看以启动服务,-a查看所有服务
is-enabled只查看服务是否开机自启
enable设置服务开机自启
enable --now相当于start和enable的结合,启动服务并设置开机自启
disenable --now禁用开机自启并立即关闭服务
–failed --type=service列出失败的服务
list-dependencies查看服务依赖关系
daemon-reload加载配置文件,重新生效

服务所生成信息存放于日志文件中,/var/log/messages

service文件格式

注意大小写,[Unit]、[Service]、[Install]

#路径在/lib/systemd/system/nginx.service                  后缀.service
[Unit]
Description=The Nginx HTTP Server daemon                 #描述信息
After=network.target remote-fs.target nss-lookup.target  #指定启动nginx之前需要的其他服务,如network.target等
[Service]
Type=forking 
# Type为服务类型,仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
ExecStart=/usr/local/nginx/sbin/nginx
# 设置执行systemctl start nginx后需要启动的具体命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload
# 设置执行systemctl reload nginx后需要执行的具体命令
ExecStop=/bin/kill -s QUIT ${MAINPID}
# 设置执行systemctl stop nginx后需要执行的具体命令
[Install]
WantedBy=multi-user.target    2,3,4模式    5模式graphical.target
# 设置在什么模式下被安装,设置开机启动的时候需要
Alias=别名,可使用systemctl command Alias.service
Also=#安装本服务的时候还要安装别的相关服务

重新加载配置文件,也可选择重启

systemctl daemon-reload

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值