【Linux进阶篇】启动流程和服务管理

news2024/11/15 9:52:28

 

目录

🍁系统启动

🍃Init和Systemd的区别

🍃运行级别和说明

🍁Systemd服务管理

🍃6和7命令区别

🍃systemd常用命令

🍁系统计划调度任务

🍃一次性任务-at

🍃batch

🍃crond

🍃计划任务实例

🍃xfs备份/恢复实例


  🦐博客主页:大虾好吃吗的博客

  🦐专栏地址:Linux从入门到精通

1. centos6

bios加电自检--mbr引导系统--grub菜单--加载内核--init进程初始化

2. centos7

bios加电自检--mbr引导系统--grub2菜单--加载内核--systemd进程初始化

系统启动

1、BIOS(Basic Input Output System 基本输入输出系统 )加电自检、硬件初始化、引导操作系统

2、读取并且执行第一个开机设备中的MBR(Master Boot Record 主引导记录 )的 bootloader(grub程序:Grand unified bootloader 大统一启动加载器 )

3、依据bootloader设置去加载内核,内核开始侦测硬件并加载驱动程序

        boot loader主要功能如下: 提供选单:用户可以选择不同的开机项目 载入核心文件:直接指向可开机的程序区域来开始操作系统 转交其他loader:将开机管理功能转交给其他Loader负责

        内核在Linux中的存放位置为/boot分区下,主要有2个文件要被加载:

vmlinuz-3.10.0-514.el7.x86_64 #内核文件

initramfs-3.10.0-514.el7.x86_64.img #虚拟文件系统

可以使用:lsinitrd 命令查看虚拟文件系统。

[root@localhost ~]# lsinitrd /boot/initramfs-3.10.0-1160.el7.x86_64.img 

1. sysvinit启动程序(linux6版本)

1、内核启动init进程

2、系统初始化

3、init找到/etc/inittab文件,决定系统的运行级别(X)

4、触发相应的运行级别的事件,运行/etc/rcX.d下的脚本

5、执行/etc/rc.local文件,来到登录界面

6、输入用户名密码,进入到系统中

2. systemd启动程序(Linux7版本)

        GRUB2相较于GRUB一代的提升:更健壮、可移植、更强大。支持BIOS、uEFI和OpenFirmware,支持GPT和MBR分区表。支持非Linux系统,如苹果HFS文件系统和Windows的NTFS文件系统systemd 是 linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd 和ubuntu 的 upstart 是竞争对手,但是时至今日 ubuntu 也采用了

1、在硬件驱动加载成功后,内核会主动呼叫systemd程序,并以default.target流程开机

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

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

4、systemd执行multi-user.target下的/etc/rc.d/rc.local文件

5、systemd执行multi-user.target下的getty.target及登录服务

6、systemd执行graphical需要的服务

Init和Systemd的区别

一、init

1、启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程

2、启动脚本复杂,Init进程只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长

3、由Linux内核加载运行,位于 /sbin/init ,是系统中第一个进程,PID永远为1对于支持 service 的程序,安装的时候,会自动的在 /etc/init.d 目录添加一个配置文件。当我们使用 service 控制程序时,比如执行开启httpd的服务:service httpd start 。那么我们的 service 就会开启 /etc/init.d/httpd配置文件里面指向的 /usr/sbin/httpd 可执行文件

二、systemd

1、按需启动服务,减少系统资源消耗。

2、尽可能并行启动进程,减少系统启动等待时间

3、由Linx内核加载运行,位于 /usr/lib/systemd/system,是系统中第一个进程,PID永远为1

        对于支持 systemd 的程序,安装的时候,会自动的在/usr/lib/systemd/system 目录添加一个配置文件。当我们使用 systemctl 控制该程序时,比如执行开启httpd服务:systemctl start httpd.service 。那么我们的 systemctl 就会开启 httpd.service 配置里面指向的 /usr/sbin/httpd 可执行文件

        如果我们想让该程序开机启动,我们可以执行命令 systemctl enablehttpd,这个命令相当于在 /etc/systemd/system 目录添加一个软链接,指向 /usr/lib/systemd/system 目录下的 httpd.service 文件。这是因为开机时,Systemd只执行 /etc/systemd/system 目录里面的配置文件。

三、配置文件的区别

Init                                            #进程的配置文件
/etc/init.d/                                    #服务启动脚本配置文件存放目录
/etc/inittab                                    #默认运行级别配置文件
/etc/init/rcS.conf                              #系统初始化配置文件
/etc/init/rc.conf                               #各运行级别初始化的配置文件-
/etc/init/rcS-sulogin.conf                      #单用户模式启动 /sbin/sushell 环境的配置文件
/etc/init/control-alt-delete.conf               #终端下的 ctrl+alt+del 热键操作的配置文件
/etc/sysconfig/init                             #tty终端的配置文件
/etc/init/start-ttys.conf                       #配置tty终端的开启数量、设备文件
/etc/init/tty.conf 或 etc/init/serial.conf      #控制tty终端的开启

Systemd进程的配置文件

/etc/systemd/system/default.target      #取代/etc/inittab文件配置,通常符号链接到 /lib/systemd/system/graphical.target
/run/systemd/system/                    #系统执行过程中所产生的服务脚本所在目录
/etc/systemd/system/                    #里面存放着不同级别的开启自启服务 
/usr/lib/systemd/system/                #/lib/systemd/system/,两个文件完全一样,因为lib是/usr/lib的软链接 每个服务最主要的启动脚本设置,类似于之前的 /etc/init.d/

运行级别和说明

运行级别Rehl 6/7 命令Rhel7 命令
0 关机状态init 0poweroff
1 系统救援模式init 1systemctl isolate rescue.target
2 字符界面的多用户模式(不可访问网络)init 2systemctl isolate mutil-user.target
3 字符界面的完整多用户模式init 3systemctl isolate mutil-user.target
4 未分配使用init 4systemctl isolate mutil-user.target
5 图形界面的多用户模式init 5systemctl isolate graphical.target
6 重新启动主机init 6reboot
注:图形切字符 ctrl+alt+F2(F2-F6) 字符切回图形 alt + F1

查看运行级别

runlevel         #显示切换前的运行级别 和当前运行级别

systemctl get-default         #显示当前运行级别  

永久设置开机模式

vim /etc/inittab                                     #centos6
systemctl set-default {multi-user.target|runlevel3}    #开机默认为文本模式{centos7|centos6}
systemctl set-default {graphical.target|runlevel5}     #开机默认为图形模式{centos7|centos6}
#注:centos7:multi-user.target
    certos6:runlevel3
    5:图形;3字符

Systemd服务管理

        Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd和ubuntu的 upstart是竞争对手,从15.04版本开始,Ubuntu也已经采systemd作为其标准的系统初始化系统.

        系统初始化需要做的事情非常多。需要启动后台服务,比如启动 SSHD 服务;需要做配置工作,比如挂载文件系统。这个过程中的每一步都被systemd 抽象为一个配置单元,即 unit。可以认为一个服务是一个配置单元;一个挂载点是一个配置单元;一个交换分区的配置是一个配置单元;

Service unit:系统服务,最常见的类型
Target unit:多个 Unit 构成的一个组,执行环境类型
Device Unit:硬件设备
Mount Unit:文件系统的挂载点
Automount Unit:自动挂载点
Path Unit:侦测特定文件或目录类型的
Scope Unit:不是由 Systemd 启动的外部进程
Slice Unit:进程组
Snapshot Unit:Systemd 快照,可以切回某个快照
Socket Unit:进程间通信的 socket服务
Swap Unit:swap 文件
Timer Unit:循环执行的服务

        Rhel6 用 service 和 chkconfig 来管理服务,它是 SystemV 架构下的一个工具。

        Rhel7 是用 systemctl 来管理服务,它融合了之前的 service 和 chkconfig 的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。systemctl 是 systemd 架构下的一个工具。

6和7命令区别

动作                     Rhel6 旧指令                            Rhel7新指令
启动某服务                service  httpd   start                     systemctl  start   httpd
停止某服务                service  httpd   stop                      systemctl  stop   httpd
重启某服务                service  httpd   restart                   systemctl  restart  httpd
检查服务状态              service  httpd  status                     systemctl  status  httpd
删除某服务                chkconfig  --del  httpd 
使服务开机自启动           chkconfig  --level   5  httpd   on         systemctl   enable  httpd
使服务开机不自启动          chkconfig  --level   5  httpd   off        systemctl   disable  httpd
显示所有已启动的服务        chkconfig  --list                           systemctl list-unit-files | grep enabled
加入自定义服务             chkconfig  --add  test                      systemctl   load  test
查询服务是否开机自启        chkconfig --list | grep httpd               systemctl  is-enabled   httpd
查看启动失败的服务                                                     systemctl  --failed

systemd常用命令

列出所有可用单元 : systemctl  list-unit-files
列出所有运行的单元: systemctl list-unit-files | grep enabled 
列出所有可用服务:  systemctl list-unit-files  --type=service
列出所有运行的服务: systemctl list-unit-files  --type=service | grep enabled 
屏蔽httpd服务:systemctl  mask httpd
取消屏蔽httpd: systemctl unmask httpd

        RHEL7的服务systemctl脚本存放在:/usr/lib/systemd/目录,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],每个部分内部是一些等号连接的键值对,注意,键值对的等号两侧不能有空格。

[root@localhost ~]# vim /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
​
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
​
[Install]
WantedBy=multi-user.target

        [Unit] [Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。它的主要字段如下。

Description:简短描述
Documentation:文档地址
Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit会启动失败
Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit不会启动失败
BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前Unit 停止运行
Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动
Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
Condition...:当前 Unit 运行必须满足的条件,否则不会运行
Assert...:当前 Unit 运行必须满足的条件,否则会报启动失败

[Service]

[Service]部分是服务的关键,是服务的一些具体运行参数的设置,只有Service 类型的 Unit 才有这个区块。它的主要字段如下。

Type:定义启动时的进程行为。它有以下几种值。
Type=simple:默认值,执行ExecStart指定的命令,启动主进程
Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
Type=dbus:当前服务通过D-Bus启动
Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
Type=idle:若有其他任务执行完毕,当前服务才会运行
ExecStart:启动当前服务的命令
ExecStartPre:启动当前服务之前执行的命令
ExecStartPost:启动当前服务之后执行的命令
ExecReload:重启当前服务时执行的命令
ExecStop:停止当前服务时执行的命令
ExecStopPost:停止当前服务之后执行的命令
RestartSec:自动重启当前服务间隔的秒数
Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on abort、on-watchdog
TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
Environment:指定环境变量

[install]

[Install]通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。它的主要字段如下。
WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target名 + .wants后缀构成的子目录中
RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
Alias:当前 Unit 可用于启动的别名
Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit
注意: 如果服务没有Install段落,一般意味着应该通过其它服务自动调用它们

        Target 简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target 这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。 传统的init启动模式里面,有 RunLevel 的概念,跟 Target 的作用很类似。不同的是,RunLevel 是互斥的,不可能多个RunLevel同时启动,但是多个Target可以同时启动。

#查看当前系统的所有 Target 
$ systemctl list-unit-files --type=target
#查看一个 Target 包含的所有 Unit 
$ systemctl list-dependencies multi-user.target
#查看启动时的默认 Target 
$ systemctl get-default
#设置启动时的默认 Target 
$ sudo systemctl set-default multi-user.target
#切换 Target 时,默认不关闭前一个 Target 启动的进程
$ systemctl isolate 命令改变这种行为
#关闭前一个 Target 里面所有不属于后一个 Target 的进程
$ sudo systemctl isolate multi-user.target

系统计划调度任务

一次性任务-at

#下载at并启动
[root@localhost ~]# yum -y install at
#省略部分内容
[root@localhost ~]# systemctl start atd
[root@localhost ~]# systemctl enable atd
​
[root@localhost ~]# at 18:00            #创建18:00的任务
at> tar zcf /backup/etc_boot_$(date +%F).tar.gz /etc /boot          #18点会创建一个tar包备份/etc 和/boot 加上时间戳
at> <EOT>                       #按键Ctrl+d保存退出
job 1 at Wed Mar 15 18:00:00 2023
​
[root@localhost ~]# atq                     #列出所有at任务
1   Wed Mar 15 18:00:00 2023 a root
[root@localhost ~]# atrm 1              #删除id为1的at任务
[root@localhost ~]# at -c 2             #查看第二条at任务
Cannot find jobid 2     #因为没有创建第二条任务,所以为空

batch

        batch直接调用at运行计划任务;但是batch与at不同于的地方仅在于其所生成的任务计划是在系统空闲时执行的,故batch命令后不能指定时间。

[root@localhost ~]# batch           #创建任务
at> tar zcf /backup/etc-boot_$(date +%F).tar.gz /etc /boot
at> <EOT>                               #按键Ctrl+d保存退出
job 2 at Wed Mar 15 18:02:00 2023

crond

周期性计划任务

[root@localhost ~]# yum -y install crontabs 
crontab -e [-u 用户名]             #crontab -e执行周期性任务,-u可指定用户
*   *   *   *   * 命令             #五个星分别表示分、时、日、月、周

通常表示时间技巧:

 *      #表示任何时刻都接受的意思,所有时间段位上不能同时为* 数字:表示具体某一小时某一分钟等,如 8 8 8 8 * 表示每年的8月 8日8时8分
 ,      #表示分隔时段,表示一段时间范围,如 8 9,13 * * * 表示每天9:08和13:08
 */     # 在对应的时间位的有效取值上每#一次,如 */8 * * * * 表示每8分钟一次
 -      #某个时间位上的连续区间,如 10-50/8 * * * * 表示第10分和第50分之间每8分钟一次

计划任务实例

mysql数据库 要求:每周日晚上23:30做一次完整备份;

1.安装mysql5.7编译安装mysql

2.改密码

mysql_secure_installation
或
mysqladmin -uroot password

3.登录数据库

[root@localhost ~]# mysql -uroot -p123          #登录mysql
#省略部分内容
mysql> create database bbs;                     #创建bbs库
Query OK, 1 row affected (0.01 sec)
mysql> use bbs;                                 #进入bbs库
#省略部分内容
mysql> create table a1(                         #创建a1表
    -> id int,
    -> name varchar(20));
Query OK, 0 rows affected (0.05 sec)

4.查看库,切换库,查看表

show databases;             #查看数据库
create database test;       #创建数据库
drop database test;         #删除数据库   
use test;                   #切换数据库
show tables;                #在库里面查看表
select * from stu;          #查看表内容
create table stu(id int,name varchar(20),age int);          #创建表 stu 增加三个列(id,name,age)i nt 数字 varchar(20) 表示20个字符
insert into stu values(1,'zhangsan',19);                    #添加一条记录
drop table stu;             #删除表stu
desc student;               #查看表结构

5.创建备份脚本

[root@localhost ~]# mkdir /backup /sh                       #创建两个文件夹
[root@localhost ~]# vim /sh/backup.sh                       #编辑备份脚本,脚本表示备份所有数据库到backup目录并且名字为mysql_时间戳.sql
/usr/local/mysql/bin/mysqldump -uroot -p123 --all-databases > /backup/mysql_$(date +%F).sql
[root@localhost ~]# sh /sh/backup.sh                        #执行脚本
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@localhost ~]# ls /backup                              #查看backup下是否生成
mysql_2023-03-15.sql
[root@localhost ~]# mysql -uroot -p123                      #登录mysql
#省略部分内容
mysql> drop database bbs;                                   #删除bbs数据库(刚才创建的a1表也不见了)
Query OK, 1 row affected (0.01 sec)
​
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
​
mysql> source /backup/mysql_2023-03-15.sql          #执行source命令恢复库备份
mysql> use bbs;                                     #进入bbs库,如果进不去查看一下是否恢复成功
Database changed
mysql> show tables;                                 #查看所有表,发现a1已经恢复
+---------------+
| Tables_in_bbs |
+---------------+
| a1            |
+---------------+
1 row in set (0.00 sec)
​
mysql> desc a1;                                     #查看表结构,确认是刚才创建的
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

6.创建计划任务

[root@localhost ~]# crontab -e                  #创建周期性计划任务
30 23 * * 0 /bin/bash /sh/backup.sh             #每周的周日晚上11点三十执行脚本(备份脚本)
​
[root@localhost ~]# crontab -l                  #查看计划任务
30 23 * * 0 /bin/bash /sh/backup.sh 
[root@localhost ~]# crontab -r                  #删除计划任务
[root@localhost ~]# crontab -l                  #再次查看,已经删除
no crontab for root

xfs备份/恢复实例

        实战:xfs文件系统的备份与恢复 环境:添加第二块磁盘,挂载到/bak【格式化磁盘方式找上面的磁盘分区】

[root@localhost /]# mkdir /bak          
[root@localhost /]# mount /dev/sdb1 /bak            #挂载目录
[root@localhost /]# touch /bak/file{1..100}         #创建file1-100的文件
[root@localhost /]# xfsdump -f /opt/dump1 /dev/sdb1         #备份磁盘分区(交互式,适用于命令行下;如果脚本备份执行下面的命令)
[root@localhost /]# rm -rf /bak/*                           #删除bak目录文件
[root@localhost /]# ls /bak                                 #查看确认删除
[root@localhost /]# xfsrestore -f /opt/dump1 /bak           #恢复备份
[root@localhost /]# ls /bak                                 #查看是否恢复
#省略部分内容#注意:下面为免交互创建备份命令
[root@localhost /]# xfsdump -f /opt/dump2 /dev/sdb1 -L sdb1_opt_v1 -M sdb1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文 : Multi-Channel EEG Based Emotion Recognition Using TCNBLS

Multi-Channel EEG Based Emotion Recognition Using Temporal Convolutional Network and Broad Learning System 本文设计了一种基于多通道脑电信号的端到端情绪识别模型——时域卷积广义学习系统(TCBLS)。TCBLS以一维脑电信号为输入&#xff0c;自动提取脑电信号的情绪相关…

自然语言处理 —— 01概述

什么是自然语言处理呢? 自然语言处理就是NLP,全名为Natural Language Processing。 一、NLP的困难 1. 歧义 (1)注音歧义 (2)分词歧义 (3)结构歧义 (4)指代歧义 (5)语义歧义 (6)短语歧义

javascript简单学习

简介&#xff1a; javascript 是脚本语言 javascript是轻量级的语言 javascript是可插入html页面的编程代码 javascript插入html页面后&#xff0c;可由所有现代浏览器执行 以下是JavaScript的一些基本概念&#xff1a; 1. 变量&#xff1a;变量用于存储数据值&#xff0…

每日学术速递4.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Slide-Transformer: Hierarchical Vision Transformer with Local Self-Attention(CVPR 2023) 标题&#xff1a;Slide-Transformer&#xff1a;具有局部自注意力的分层视觉变换器 …

一、vue之初体验-两种方式引入vue

一、Vue引入方式-CDN <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-width, initial-s…

开源问答社区软件Answer

什么是 Answer &#xff1f; Answer 是一个开源的知识型社区软件。您可以使用它快速建立您的问答社区&#xff0c;用于产品技术支持、客户支持、用户交流等。 Answer是国内SegmentFault 思否团队开发的技术问答社区&#xff0c;Answer 不仅拥有搭建问答平台&#xff08;Q&A…

界面控件DevExtreme使用指南 - 折叠组件快速入门(一)

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序&#xff0c;该套件附带功能齐…

MySQL - C语言接口-预处理语句

版权声明&#xff1a;本文为CSDN博主「zhouxinfeng」的原创文章&#xff0c;原文链接&#xff1a;https://blog.csdn.net/zhouxinfeng/article/details/77891771 目录 MySQL - C语言接口-预处理语句预处理机制特点&#xff1a;预处理机制数据类型函数:预处理机制步骤&#xff1…

集群聊天服务器项目(三)——负载均衡模块与跨服务器聊天

负载均衡模块 为什么要加入负载均衡模块 原因是&#xff1a;单台服务器并发量最多两三万&#xff0c;不够大。 负载均衡器 Nginx的用处或意义**&#xff08;面试题&#xff09;** 把client请求按负载算法分发到具体业务服务器Chatserver能和ChatServer保持心跳机制&#xf…

机器学习实战5-天气预测系列:利用数据集可视化分析数据,并预测某个城市的天气情况

大家好&#xff0c;我是微学AI&#xff0c;最近天气真的是多变啊&#xff0c;忽冷忽热&#xff0c;今天再次给大家带来天气的话题&#xff0c;机器学习实战5-天气预测系列&#xff0c;我们将探讨一个城市的气象数据集&#xff0c;并利用机器学习来预测该城市的天气状况。该数据…

迈入Java,一文告诉你学习Java的原因

前言 Java是一种流行的编程语言&#xff0c;由Sun Microsystems于1995年首次发布。自那时以来&#xff0c;Java已成为全球最广泛使用的编程语言之一。Java具有许多优点&#xff0c;包括跨平台、面向对象和安全性等&#xff0c;使其成为开发企业软件、Web应用程序和移动应用程序…

Consul TTL健康检查方式

consul比较常用的健康检查方式为http健康检查方式&#xff0c;也还有使用TTL方式来进行健康检查的&#xff0c;下面从spring-cloud-consul-discovery这个SDK来着手分析。 构建ConsulAutoRegistration&#xff0c;这里的工作是组成服务注册的报文&#xff0c;有一个setCheck方法…

【应急响应】战中溯源反制对抗上线CSGoby蚁剑Sqlmap等安全工具

文章目录 溯源反制-Webshell工具-Antsword正常情况下&#xff0c;PHP后门上线发现PHP后门&#xff0c;修改webshell进行反制 溯源反制-SQL注入工具-SQLMAP溯源反制-漏洞扫描工具-Goby&Awvs溯源反制-远程控制工具-CobaltStrike1、伪造流量批量上线&#xff08;欺骗防御&…

(IPC)进程间通信的常用的两种方式——管道、共享内存

前言&#xff1a; 众所周知&#xff0c;不同的进程之间&#xff0c;在正常情况下&#xff0c;由于其拥有独立的PCB、上下文等原因&#xff0c;每个进程都是独立且互不干扰&#xff0c;这不仅保证了进程的安全&#xff0c;也降低了OS对于进程的管理成本。 但是通常情况下&…

第04讲:实战掌握 Byte Buddy,体验代码生成的顺畅

为什么需要运行时代码生成 我们知道&#xff0c;Java 是一种强类型的编程语言&#xff0c;即要求所有变量和对象都有一个确定的类型&#xff0c;如果在赋值操作中出现类型不兼容的情况&#xff0c;就会抛出异常。强类型检查在大多数情况下是可行的&#xff0c;然而在某些特殊场…

猴子分桃与反转部分单链表

目录 一、编程题 1.猴子分桃 2.反转部分单向链表 二、选择题 1.如果希望监听 TCO 端口 9000&#xff0c;服务器端应该怎样创建 socket&#xff1f; 2. jre 判断程序是否执行结束的标准是&#xff08; &#xff09; 一、编程题 1.猴子分桃 链接&#xff1a;猴子分桃__…

C# 平台调用过程

(1&#xff09;调用LoadLibrary加载非托管DLL到内存中,并调用GetProcAddress 获得内存中非托管函数的指针。 (2) 为包含非托管函数地址的托管签名生成一个DllImport存根&#xff08;stub)。 (3) 压入被调用方保存的寄存器。 (4&#xff09;创建一个DllImport帧&#xff08;fr…

Node.js—http模块

目录 1、HTTP 协议1.1 概念1.2 请求报文的组成1.3 HTTP 的请求行1.4 HTTP 请求头1.5 HTTP 的请求体1.6 响应报文的组成 2、创建 HTTP 服务2.1 操作步骤2.2 测试2.3 注意事项 3、获取 HTTP 请求报文3.1 请求方法 request.method3.2 请求版本 request.httpVersion3.3 请求路径 re…

shell 初级

判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 [rootlocalhost ~]# bash c.sh c.sh: line 7: echo剩余内存:1GB,小于20GB 判断web服务是否运行&#xff08;1、查看进程的方式判断该程序是…

ctfshow_愚人杯WEB之easy_flask

1、easy_flask 百度了下什么是flask&#xff0c;flask是一款非常流行的python web框架。 2、尝试步骤 &#xff08;1&#xff09;、搜索博文&#xff0c;查看该题是如何破解的 先注册账号&#xff0c;登录自己注册的账号&#xff0c;查看可访问内容&#xff08;可以查看到部…