目录
1. centos6配置chkconfig开机自启nginx
检测硬件是否正常,根据bios中的启动项设置去寻找内核文件;boot是开机启动程序,可以把内核文件放在:
也可以称为grupd第一阶段,因为grup太大第一个扇区存不下所有的grup程序,所以分为两部分,mbr的前446个字节 指引硬件找到内核
根据grup配置文件中记录的位置,去找到内核文件;mbr之后的扇区,让上一阶段中的bootloader(引导加载器,引导硬件去找到内核,操作系统的核心)能识别下一阶段所在的分区上的文件系统
把内核运行到内存中,启动第一个“祖宗”进程
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─anacron───run-parts─┬─awk
│ └─man-db.cron───mandb
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
……
systemd进程是系统级的程序,代为管理系统上的程序。比如:rpcbind启动会监听111端口,在sleep状态下,如果有需要,systemd会将其唤醒。?
加电后bios程序会自检硬件,硬件无故障,会根据第一启动项去找内核,一般来说第一启动项是硬盘;找到硬盘后,会根据mbr的指引找到完整的grup程序,再根据grup的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。
在centos7中,yum及rpm安装的软件可以直接使用systemctl(centos6中使用chkconfig)去启动、关闭、重启、开机自启等功能;编译安装不可以直接使用systemctl命令去管理程序,需要手写配置文件,路径命名:/usr/lib/systemd/system/程序.service
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。systemd即为system daemon,是linux下的一种init软件。在systemd中不同类型的systemd对象被统一称为单元(unit:描述这个软件是做什么的,以及基本信息),是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。systemd方便管理程序,将程序按照特定的功能分成了很多单元。
runlevel:查看当前运行级别(如输出3 5,表示之前是级别3,现在是级别5)
systemctl get-default:查看默认的运行级别
systemctl set-default?:设置默认级别
补充:如何调整默认级别?
利用init n命令,仅能临时修改运行级别。若想永久修改,需修改默认的运行级别设置。则需要修改配置文件:Centos7 系统之前的版本是通过/etc/inittab文件来定义系统,而 CentOS7 用的是target,centos7修改默认启动级别如下:
[root@localhost ~]# systemctl set-default multi-user.target
#设置默认第三启动级别
[root@localhost ~]# systemctl set-default graphical.target
#设置默认第五启动级别
?
[root@localhost ~]# mount /dev/sdb1 /mnt
[root@localhost ~]# dd if=/dev/sda of=/mnt/mbr count=1 bs=512 #备份mbr第一个扇区
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000177847 秒,2.9 MB/秒
?
[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=512 #zero空格写0
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000353442 秒,1.4 MB/秒
[root@localhost ~]# hexdump -C -n 512 /dev/sda
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
?
[root@localhost ~]# cd /boot/grub2
[root@localhost grub2]# ls
device.map fonts grub.cfg grubenv i386-pc locale
[root@localhost grub2]# mv grub.cfg /opt #移除配置文件
tip:重启读条迅速按一次Esc,后续参考1.4选项
同上步骤读条迅速按Esc,选择CD-ROM,“321”选项,输入命令chroot? /mnt/syssimage切根
直接输入命令passwd修改密码,完成后exit,重启reboot
?
注:以下案例均已默认编译安装了nginx
[root@localhost ~]# cd /etc/init.d/
[root@localhost init.d]# vim nginx #写入配置
[root@localhost init.d]# chmod +x nginx #添加权限
[root@localhost init.d]# chkconfig --add nginx #将服务加入chkconfig
[root@localhost init.d]# chkconfig --level 35 nginx on #开启3和5级别自动启动
[root@localhost init.d]# service nginx start #启动服务
[root@localhost init.d]# ss -natp | grep 80
LISTEN 0 128 *:80 *:* users:(("nginx",pid=5032,fd=6),("nginx",pid=5031,fd=6))
[root@localhost init.d]# chkconfig --list #查看服务
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
nginx 0:关 1:关 2:关 3:开 4:关 5:开 6:关
配置脚本如下:
#!/bin/bash
#chkconfig: - 99 20 #-代表运行级别全开,第99个启动,第20个关闭
#description:Nginx Service Control Script
PROG="/ky35/nginx/sbin/nginx"
PIDF="/ky35/nginx/logs/nginx.pid"
case "$1" in #如果命令里面有start,调用变量RPOG
start) $PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop $0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*) echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
#描述软件的功能,web服务
[Service]
PIDFile=/apps/nginx/logs/nginx.pid
# 方便使用pid号进行操作,明进程的 pid 号
ExecStart=/apps/nginx/sbin/nginx
#使用绝对路径启动
ExecStop=/usr/bin/kill -s TERM $MAINPID
#杀死进程 发信号
ExecReload=/apps/nginx/sbin/nginx -s reload
#重新加载 发信号 重新加载
[Install]
WantedBy=multi-user.target
安装子字符界面
systemctl daemon-reload #重新加载配置
systemctl start nginx #开机自启ngixn
systemctl status nginx #查看状态
nginx -s stop #关闭
service 服务程序 start:开启
service 服务程序 stop:关闭
service 服务程序 restart:重启
service 服务程序 reload:重新加载
service 服务程序 status:状态
systemctl start 服务名(1,2,3……):开启,后面可以跟多个服务
systemctl stop 服务名:关闭
systemctl restart 服务名:重启(关闭开启的过程)
systemctl reload 服务名:重新加载
systemctl status 服务名:状态
4. 服务程序补充
① 一旦运行一直运行不会退出
②? 一般是后台运行,不会影响前台的操作