前台和后台的区别
- 前台作业:通过终端启动,且启动后一直占据终端
- 后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)可并行多个,节省资源
前后台更换
#前端换后端: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启动和相关启动配置文件和程序
UEFi或BIOS初始化,运行POST开机自检
选择启动设备
引导装载程序, centos7是grub2,加载装载程序的配置文件:
/etc/grub.d/
/etc/default/grub
/boot/grub2/grub.cfg
加载initramfs驱动模块
加载内核选项
内核初始化,centos7使用systemd代替init
此前步骤和init启动差不多
执行initrd.target所有单元,包括挂载/etc/fstab
从initramfs根文件系统切换到磁盘根目录
systemd执行默认target配置,配置文件/etc/systemd/system/default.target
systemd执行sysinit.target初始化系统及basic.target准备操作系统
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务
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