Linux操作系统(笔记)

Linux操作系统

1.计算机硬件软件体系

1.1 冯诺依曼体系结构

1.计算机处理的数据和指令一律用二进制数表示
2.顺序执行程序
3.计算机硬件由运算器、控制器、存储器、输入设备、输出设备五部分组成

1.2 计算机硬件组成

1.输入设备
	键盘鼠标
2.输出设备
	显示器,音响
3.存储器
	1)RAM(random access memory)随机存储,即内存:
		容量小,速度快
		停电丢失数据
		逻辑IO
	2)ROM(Read-Only Memory)只读内存,即磁盘
		速度慢,容量大
		持久化存储
		物理IO
4.CPU(中央处理器)
	1)控制器
		控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果(如输出)
	2)运算器
		运算器主要运行算术运算和逻辑运算,并将中间结果暂存到运算器中

1.3 硬盘的分类

1.机械硬盘
2.固态硬盘

随机读写  效率相对慢,但内存消耗相对较低

1.4 网络连接概念

IP地址 IP addr

IP地址是一种逻辑地址,用来标识网络中的一个个主机
	IP地址 = 网络地址 + 主机地址
	IP地址是一个4*8bit由0/1组成的数字串(二进制情况下)

子网掩码 NETMASK

分割IP地址
	IP地址和子网掩码做与运算,拿到的结果就是网络地址
	192.168.206.8
	255.255.255.0
	255 1111 1111
	192 1100 0000
		1100 0000 192

网关GATEWAY

连接两个不同的网络的设备都可以叫网关设备,网关的作用就是实现两个网络之间通信
网关地址就是网关设备的IP地址

域名服务器DNS

DNS是域名服务器,用来解析域名的
通过DNS解析域名进行访问某个网站 比如百度

1.5 网络连接模式

host-only(主机模式)

在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时可以采用
在host-only模式中,所有的虚拟系统可以相互通信,但和真实网络隔离开
在host-only模式中,虚拟系统的TCP/IP配置信息都是由VMnet1虚拟网络的DHCP服务器来动态分配的

bridged

VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,他可以访问网内任何一台机器
使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑
当前主机IP为192.168.8.100 
虚拟机 192.168.8.xxx
学习期间为了防止IP冲突,不使用这种模式

NAT(网络地址转换模式)

使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机所在的网络来访问公网
NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的
虚拟系统也就无法和本局域网中的其他真实主机进行通讯,只能和当前真实主机进行通讯

2.配置linux系统

修改网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33

dhcp -> static
最后yes -> no
删除UUID
添加IPADDR NETMASK GATEWAY DNS1

关闭软件安装检查

vi /etc/selinux/config

SELINUX = disabled

3.Linux命令

常用命令

type

查看命令类型
type [命令]

help

查看命令帮助文档
help [命令]

whereis

查找命令文件位置
whereis [命令]

file

查看命令的文件详细信息
file [命令路径]

who

查看所有正在使用系统的用户

whoami

查看当前用户  who am i 我是谁

pwd

查看当前用户位置  我在哪

uname -a

查看当前系统内核

echo

打印语句

clear

清屏

history

查看历史使用命令
history -c 清除历史命令 c->clear

特殊字符

点 .

ll -a全部文件
点开头的文件是隐藏文件
仅一个点是当前目录
两个点是上一层

$

$开头表示变量
name=zhangsan
echo $name
通配符
ll /etc/a*

~

家目录 当前用户的root目录

/

整个Linux的文件根目录

– 和 -

命令参数全称用--
简写用 -

4.Linux文件系统

Linux系统维护树状结构的文件模型
路径磁盘不够用时可以挂载磁盘
mount /dev/disk1 /usr/download
disk1 1T

根目录下文件夹作用

bin 可执行文件
boot 引导分区 启动系统时的引导程序
dev 设备信息
etc 配置文件
home 一般用户家目录
lib 类库
media 多媒体
mnt 硬盘挂载
opt 一般软件安装到opt
proc 进程信息
root root用户家目录
sbin 管理员使用命令
tmp 临时文件目录 重启清除
usr	类似windows中的window目录
var 临时文件目录 不清除

5.Linux文件系统命令

cd ll mkdir rmdir

cd:切换文件夹目录
ll:当前文件列表详细信息
	第一个字段:-普通文件,d目录
	其他九个字段表示文件的存储权限
	前三个表示文件主
	中间三个表示组用户
	后三个表示其他用户
	rwx读写执行
mkdir:创建文件夹
	-p创建多层文件夹
	-m --mode 指定读写权限,后跟八进制数字
	mkdir -p a{b,c,d}创建多个文件夹,ab,ac,ad
	mkdir -p a/{a,b,c}创建多个子文件夹
rmdir:删除文件夹
	-p递归删除
	-v诊断错误

cp

拷贝
cp 当前文件 终点位置
	-r 迭代复制

mv

剪切与重命名
mv 当前文件 终点位置(可以在原来位置修改名称)
mv abc.txt cba.txt

rm

删除
rm 文件/文件夹
	-f 强制删除 不需要询问
	-r 迭代删除

touch

1.创建文件
stat 查看文件状态
2.修改文件状态 将三个时间改变成相同

ln

创建文件的链接 类似快捷方式
	-s 软链接
	ln -s 文件名 slink
	使用slink就可以使用文件,别名
	不加参数是硬链接
	ln 文件名 hink
	硬链接可以独立存在,软链接不能脱离源文件
	
	硬链接 Links会增加
	软连接 Links不会显示 
	stat查看状态,可以看到

cat tac more less

cat:输出文件内容
tac:倒序输出文件内容
more:分页输出文件内容
	回车一行一行出,空格一页一页翻,b回,h退
less:与more类似

head前n行 tail尾n行

head 10 文件名
tail 3 文件名

显示指定行
head -8 profile | tail -1
将第八行在最后一行输出出来

tail -f 文件名 实时监测追加内容
	-f 监控Inode 文件删除,就停止监听
	-F 监控文件名 文件删除再添加还会监听

find

find / -name 文件名

vi编辑器

vi

参数:
	+8 在第八行打开文件
	+  在最后一行打开文件
	+/if 定位到第一个if	n 下一个
三种模式:
	编辑模式 使用快捷键
	输入模式 insert  
		a追加后移一位开启模式
		I行首开启
		A行尾开启
		o下一行开启
		O上一行开启
	底行模式  :加命令

编辑模式快捷键

15gg 跳到15行
shift+g 最后一行
dd 删除一行
3dd 删除三行 4dd四行
w向后移一位
dw删除一位 3dw删除三位
yy复制一行
p粘贴
10p粘贴10遍
yw 复制一个单词
u撤销
.回退撤销
shift+6行首
shift+4行尾
shift+zz保存退出
x剪切 3x
r + 替换字母   直接替换
2r 3r
ctrl s锁屏
ctrl q解锁

末行模式

:wq保存退出
:q退出(保存的情况下允许)
:q!强制退出
:set nu 添加行号
:set nonu 取消行号
:/ 找指定单词
:s/old单词/new单词  替换,只对一个起作用
:s/old单词/new单词/g  替换一行中
:g/old单词/s//new单词/g  替换全部

ATTENTION问题

直接退出窗口,再次进入,删除隐藏文件

6.计算机间的数据传输

windows–Linux

lrzsz

手动安装
yum install lrzsz -y

rz 
	将文件从windows上传到Linux
sz 
	将文件从Linux传输到windows

ftp

Linux–Linux

scp 源数据地址 目标数据地址
	scp -r 文件名 root@IP:/目标地址
	scp -r root@IP:/目标文件 ./

df分区 du大小

df -h
du -h --max-depth=1 文件名

解压缩

tar

tar -zxvf  *.tar.gz			#解压缩

tar -zcf 压缩后名称  文件夹.tar.gz   #压缩 

-zx解压 v过程  f文件
-zc压缩

zip

zip -r 文件夹名 压缩包.zip  #压缩
unzip 压缩包.zip			#解压

7.Linux网络命令

主机名

# 临时修改
hostname school
# 长久修改
vi /etc/hostname

DNS解析

域名劫持
修改主机域名
vi /etc/hosts

网络相关命令

ifconfig

yum install net-tools -y

netstat

查看当前主机的网络状态信息
一个机器默认有65536个端口号[0,65535]
netstat -anp
netstat -r 核心路由表 == route

ping

telnet

查看与目标IP的指定端口是否能够连通
yum install telnet -y
telnet 192.168.229.100 22

curl

restful风格 资源定位符
curl -X GET http://www.baidu.com

防火墙

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

firewall-cmd --state #查看状态
	--reload	#重新载入配置
	--get-zones	#列出需要支持的zone
	--get-services	#列出支持的服务
	--query-service ftp #查看ftp服务是否支持
	--add-service=ftp	#临时开放ftp服务
	--add-service=ftp --permanent	#永久开放ftp服务
	--remove-service=ftp --permanent	# 永久移除ftp服务
	--add-port=80/tcp --permanent #永久添加80端口

开启一个端口

# 添加
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 重新载入
firewall-cmd --reload

# 查看
firewall-cmd --zone=public --query-port=80/tcp

# 删除
firewall-cmd --zone=public --remove-port-80/tcp --permanent

不可逆加密算法

Hash加密
MD5加密

对称加密算法

加密和解密使用相同的密钥
#优点
	生成密钥算法公开
	计算量小、加密速度快
	加密效率高、密钥较短
#缺点
	双方共同密钥,有一方密钥被窃取,双方都影响
	如果为每个客户生成不同密钥,密钥数量巨大,管理难度大
# 代表性算法
	DES、3DES、Blowfish、IDEA、RC4、RC5、AES

非对称加密算法

需要两个密钥
	公开密钥(publickey)和私有密钥(privatekey)
	公钥加密只能用对应私钥进行解密,同理私钥加密只能用对应公钥进行解密
# 优点
	安全高(几乎很难破解)
# 缺点
	加密速度相对较慢,密钥长,计算量大,效率低
# 应用场景 
	HTTPS(SSL)证书制作,CRS请求证书、金融通信加密、蓝牙等硬件信息加密配对传输
# 代表性算法
	RSA、ECC、Diffie-Hellman、El Gamal、DSA(数字签名用)

主机间的相互免密钥

可以通过ssh命令免密钥连接到其他主机
1.如果是第一次建立连接需要输入yes
	在~/.ssh/known_hosts文件中记录了以前访问地址(ip hostname)的信息
	在访问地址的时候如果没有收录到known_hosts文件中,就需要输入yes
	如果以前收录到known_hosts中,直接输入密码即可
2.需要输入密码
	生成密钥
		ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
	将生成的公钥放在目标主机的~/.ssh/authorized_keys
		ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.229.101

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7L9VBQz8-1664108915650)(C:\Users\zwj\AppData\Roaming\Typora\typora-user-images\image-20220924191937760.png)]

主机名与Host校验

错误原因
Cannot determine realm for numeric host
# 解决方案 本次
	ssh -v -o GSSAPIAuthentication=no root@192.168.229.101
# 解决方案 永久
	修改/etc/ssh/ssh_config文件的配置
	最后添加
	StrictHostKeyCheching no
	UserKnownHostsFile /dev/null

8.日期与时间

修改日期
date -s yyyy-mm-dd
date -s hh:mm:ss
date -s yyyy-MM-dd hh:mm:ss
日期自动同步
yum install ntp -y
ntpdate cn.ntp.org.cn

本地搭建NTP服务

# 开启本地NTP服务器
	service ntpd start
# vi /etc/ntp.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a9iOSErh-1664108915651)(C:\Users\zwj\AppData\Roaming\Typora\typora-user-images\image-20220924201512563.png)]

9.Linux用户组权限

用户

# 新增用户
	useradd 用户名
	passwd 用户名
# 删除用户
	userdel -r 用户名
# 修改用户信息
	usermod -l 新用户名 旧用户名 # 修改用户名 不改变家目录和组名称
	usermod -L 用户名 #锁定用户名
	usermod -U 用户名 #解锁用户名
	
	
# 常用文件
	cat /etc/shadow # 用户名和密码
	cat /etc/passwd
		用户名,编号,组编号,家目录,命令
		
# 切换用户
	su 用户名

# 创建组
	groupadd 组名
# 删除组
	groupdel 组名
# 修改组名
	groupmod -n 新组名 旧组名
# 查看用户对应的组
	groups
	groups 用户
	创建用户时,默认创建同名组
# 修改用户的组
	usermod -g 用户名 组名(主组)
	usermod -G 用户名 组名(附属组)

权限rwx

chmod
u 用户
g 组
o 其他用户
a 全部用户
+表示添加某个权限
-取消某个权限
=赋予某个权限
r可读
w可写
x可执行
chmod u=r,ug=x 文件名

10.管道与重定向

管道

# 将前面的命令的结果作为参数传递给后面的参数
	grep 
		强大的文本搜索工具
		cat profile | grep if
		ls / | grep ^t

重定向

# 改变数据输出的位置 方向
	0 in 
	1 out 	标准输出
	2 err	错误输出
		ls / 1 > lucky 标准输出
		ls / > lucky 标准输出
		ls abcd 2 > lucky 错误输出
		
	> 替换  >> 追加
		ls / 1 >> lucky
		ls / 1 > lucky
	结合使用
		ls /etc/abc > lucky 2>&1
		ls /etc/abc >> lucky 2>&1
	信息黑洞
		ls /etc/abc >> /dev/null 2>&1

11.Linux系统进程

进程信息

ps -ef
	UID 所属用户
	PID 当前进程编号
	PPID 当前进程编号父进程编号
	
ps -ef | grep redis
ps -aux 所有信息
ps -aux --sort -pcpu
top 当前服务器内存使用率

后台进程

只需要在命令后添加一个&符号
	ping www.baidu.com >>baidu &
jobs -l 
	可以查看当前的后台进程
	但是只有当前用户界面可以获取到
nohup 可以防止后台进程被挂起
	nohup ping www.baidu.com >> baidu 2>&1 &

杀死进程

kill -9 PID

12.Linux的软件安装

环境变量

执行命令时,默认从当前路径开始查找
如果当前路径找不到对应命令文件,从环境变量$PATH查找
$PATH的配置文件在/etc/profile
window路径与路径之间用;连接
linux路径与路径之间用:连接
linux每次修改完成之后,需要重新加载文件 source /etc/profile

三种软件安装方式

解压

tar -zxvf  *.tar.gz			#解压缩

tar -zcf 压缩后名称  文件夹.tar.gz   #压缩 

-zx解压 v过程  f文件
-zc压缩

zip -r 文件夹名 压缩包.zip  #压缩
unzip 压缩包.zip			#解压

rpm安装包

# 安装
rpm -ivh *.rpm   [--nodeps --force 忽略依赖关系]
# 查询
rpm -qa | grep jdk
rpm -q jdk
# 卸载
rpm -e --nodeps *
# 配置java环境变量
	vim /etc/profile
	export JAVA_HOME=/usr/java/jdk1.8
	export PATH=$JAVA_HOME/bin:$PATH

通过源码安装

yum
	search 查询命令或者软件
	info 查看包的信息
	list 

mysql

# 修改密码
set global validate_password.policy=LOW
set global validate_password.length=6
# 更改加密方式
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER
# 更改用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'
# 刷新权限
FLUSH PRIVILEGES

# 修改mysql链接地址
use mysql
update user set host='%' where user = 'root'
commit
exit

systemctl restart mysqld

13.Linux三剑客

cut sort wc

# 用制定的规则切分文本
cut -d '切割符' -f1,2,3 passwd
	-d :自定义分隔符,默认为制表符。
	-f :与-d一起使用,指定显示哪个区域。
	
# 排序
sort
	sort 文件名 #对文件中的行进行排序
	sort -t '' -k2 文件名 # 对每一行的数据进行切分,按照第二列进行排序
	sort -t '' -k2 -r 文件名  # 逆序
	sort -t '' -k2 -n 文件名  # 按照数值大小进行排序,如果有字母,字母在前边
	
# 统计单词数量
	wc 文件名
		76  253 1819 profile
		行	词	字符
		-l 查询行数
		-w 查询词数(以空格进行划分)
		-c 查询字符数

剑客1 grep

# 查询
grep [word] [file]
	-n显示行号
	-nvi忽略大小写 
	-E 使用正则表达式匹配

剑客2 sed

# 增删改查
sed '内容' 文件名 # 增加内容(控制台)
	-i修改源文件
	行的选择模式
	10第十行
	m,n从第m行到第n行
	m,+n从第m行到第m+n行
	m~n从m行开始,依次累加n
	m,$ 从m到最后一行
	/school/匹配到school的行
	/u1/,/u4/从匹配u1到匹配u4
	
# 增	a
	sed '2a luckyisgood' passwd
	sed -i '2a luckyisgood' passwd
# 删 d
	sed ‘3,10d’ passwd
# 改 c整行 s字符
	sed '3,20c hahaha' passwd
	sed '1,5s aaa' passwd

剑客3 awk

# 一种语言 文本的各种操作

14.shell编程

名词解释

kernel

Linux内核主要是为了与硬件打交道

shell

1.命令解释器(command interpreter)
2.Shell是一个用C语言编写的程序,shell既是一种命令语言,也是一种程序设计语言
3.Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核服务

shell两大主流

sh

Bourne shell(sh) Solaris,hpux 默认shell
Bourne-again shell(bash) linux默认shell

csh

C shell (csh)
tc shell(tcsh)
#! 声明shell脚本解释器
#! /bin/bash
echo "Hello World!!"

Shell脚本的执行

# 1.绝对路径或相对路径
	/root/*.sh
# 2. bash或sh  + 脚本文件
	bash/sh *.sh
	x执行权限
# 3.source + 脚本文件
	source *.sh
	
# 区别
	第一种和第二种多个操作会新开子进程,不同进程之间的变量不能共享 可以使用export
	第三种多个操作在同一个进程中执行
# export
	可以将当前进程的变量传递给子进程去使用
	profile文件所有的变量前都要加export

Shell基础入门

shell变量
1.定义变量时,变量名不加美元符号
	命名只能使用英文字母,数字和下划线,首个字母不能以数字开头
	中间不能有空格,可以使用下划线
	不能使用标点符号
	不能使用bash中的关键字(help命令查看关键字)

变量的类型

# 1. 局部变量
	局部变量在脚本或命令中定义,仅在当前shell实例中有效
# 2.环境变量
	所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要配置环境变量来运行
# 3.Shell变量
	shell变量是由shell程序设置的特殊变量,shell变量有一部分是环境变量,有一部分是局部变量
变量的使用
name=zhangsan
echo $name/${name}
readonly name #只读
unset name 删除变量
shell的字符串

字符串可以用单引号,也可以用双引号,也可以不用引号

双引号中可以出现转义字符和变量

引号中可以出现空格

# 声明字符串
str="hello world1"
str2='hello world2'

# 字符串拼接--双引号
name='sunwukong'
name1="hello, ${name}"
name2="hello,"$name""
echo $name1  # hello,sunwukong

# 字符串拼接--单引号
passwd='123456'
passwd1='hello,'$passwd''
passwd2='hello,${passwd}'
echo passwd2 # hello.${passwd}

# 字符串的长度
email="123465@qq.com"
echo ${#email}
# 切割字符串
echo ${email:1:4}
shell的数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小

数组的下标由0开始编号,下标可以是整数或算数表达式

# 定义数组,括号来表示数组,数组元素用空格分开
数组名=(value1 value2 value3)
favs=("足球","篮球")

#读取数组
fav=${favs[0]}

# 使用@符号可以获取数组中的所有元素
echo ${favs[@]}

# 获取数组的长度
echo ${#favs[@]}
echo ${#favs[*]}
shell的注释

以#开头的行就是注释行

# 多行注释
1.多个#
2.:<<EOF
	...
	...
	EOF
	
	:<<!
	...
	...
	!
shell的参数传递

执行shell脚本时,向脚本内传递参数,脚本内获取参数的格式为 $n,n代表一个数字

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$? 显示最后命令的退出状态。0表示没有错误,其他值表示有错误
$0 执行最后的文件名
#! /bin/bash
echo "Shell 传递参数实例"
echo "执行的文件名: $0"
echo "传递的第一个参数: $1"
echo "传递的第二个参数: $2"

~: ./hello.sh 11 22

Shell进阶

shell的运算符

关系运算符

#! /bin/bash
a=10
b=20

# -eq equals等于
if[ $a -eq $b ]		# -eq 等于
then
	echo "$a -eq $b : a 等于 b"
else
	echo "$a -eq $b : a 不等于 b"
fi
	
# -ne no equals 不等于
if[ $a -ne $b ] 	# -ne 不等于
then
	echo "$a -ne $b : a 不等于 b"
else
	echo "$a -ne $b : a 等于 b"
fi

# -gt 大于
# -lt 小于
# -ge 大于等于 great equals
# -le 小于等于 less equals

布尔运算符

$a == $b
$a > $b
$a != $b
$a < $b

逻辑运算符

$$
||

字符串运算符

$a = $b
$a != $b
-z $str #字符串长度为0
-n $str #字符串长度不为0
$str #字符串不为空

文件测试运算符

-r #读权限
-w #写权限
-x #操作权限
-f #普通文件
-d #文件目录
-s #文件不为空
-e #文件存在

-r $file
-e $file

算数运算符

# expr 表达式计算工具
+ - * / %
`expr $a + $b`  # 运算符两边必须有空格

``

`里面的内容会被看成整体的命令`
echo打印数据
# \ 转义
echo "\"Hello world\""
# 显示变量
echo "$name"
# 显示换行
echo -e "OK! \n"
echo "hello"
# 显示不换行
echo -e "OK! \c"
echo "hello"
# 显示结果重定向至文件
echo "hello world" >> hello
# 原样输出字符串
echo '$name\"‘
# 显示命令执行结果
echo `date`
test命令

Shell中的test命令用来检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

数字

-eq # 等于则为真
-ne # 不等于则为真
-gt
-lt
-ge
-le
# 和上边运算符类似
num1=100
num2=200

if test $[num1] -eq $[num2]
then
	echo
else
	echo
fi
if 和case

if

if then else fi

case

read num # 读取数据
case $num in
	模式1) 
		command1
		command2
	;;
	模式2)
		command1
		command2
	;;
	*)
		command1
		command2
	;;
esac
for
for i in array
do
	echo $i
done

for var in 1,2,3,4,5
do 
	echo $var
done

for str in "this is for"
do
	echo $str
done
while
while condition
do 
done

while(( $int<=5 ))
do 
	echo $int
	let "int++"  # let执行表达式不需要 $
done

while true
do 
done
break
continue
Shell函数

shell用户定义函数,可以在shell脚本中随便调用

可以带function fun()定义,也可以fun()定义

参数返回,可以加return返回,如果不加,以最后一条命令作为结果返回,return后跟数值(0-255)

demoFun(){
	echo "第一个函数"
}

demoFun  # 执行

funWithReturn(){
	return 100
}

funWithReturn 
echo $?  # $?接收最近返回值

15.系统任务设置

系统启动流程

  • 启动计算机的硬件(BIOS)

    • 读取时间
    • 选择对应的启动模式
  • 如果是linux系统,会去找/boot目录,引导这个系统启动

  • 计算机系统开始启动,读取初始化配置文件

    • vim /etc/inittab

    • 启动时控制着计算机的运行级别 runlevel

    • 0halt(关机)
      1Single user mode(单用户模式)
      2Multiuser,without NFS(多用户模式,但是无网络状态) FS–>FileSystem
      3Full multiuser mode(多用户完整版模式)
      4unuserd(保留模式)
      5X11(用户界面模式)
      6reboot(重启模式)
    • id:3:initdefault:默认runlevel为3

    • 以runlevel=3开始启动对应的服务和组件

  • 开始默认引导公共的组件或者服务

    • vim /etc/rc.d/rc.sysinit
  • 开始加载对应的runlevel服务

    • cd /etc/rc3.d
      • s 表示开启
      • k表示杀死
    • vi /etc/rc.local
      • 修改执行权限,开机会在boot期间执行

系统服务

可以使用chkconfig查看当前虚拟机的服务

开机自启动服务

rc.local

1.首先创建脚本存放的文件夹
	mkdir -p /usr/local/scripts
2.在文件夹中创建脚本文件
	vim hello.sh
	给予执行权限
3.去/etc/rc.d/rc.local文件中添加脚本的绝对路径
	给予rc.local执行权限

chkconfig

1.创建开机自启动脚本文件
	vim initdate.sh
		#! /bin/bash
		#chkconfig: 2345 88 99
		#description:auto_run
		
		# 开机自启动时间
		yum info ntp && ntpdate cn.ntp.org.cn
2.设置执行权限
	chmod a+x initdate.sh
3.将脚本拷贝到/etc/init.d目录下
	cp initdate.sh /etc/init.d/
4.添加服务
	chkconfig --add /etc/init.d/initdate.sh
5.重启
	reboot

定时任务

  • 在系统服务中心,crond负责周期任务

    • systemctl start crond.service
  • 添加任务,编辑当前用户的任务列表

    • crontab -e
  • 编辑任务

    • 星 星 星 星 星 command

      分 时 日 月 周 命令

      第一列表示分钟1~59 每分钟用*或 */2表示

      第二列表示小时1~23(0表示0点)

      第三列表示日期1~31

      第四列表示月份1~12

      第五列表示星期0~6(0表示星期天)

      第六列表示要运行的命令

      *表示任意时间

      -表示区间范围 17-19

      ,表示分割时段 30 3,19,21 * * * cmd,表示每天3点,19点,21点30分执行命令

      / 表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次

      # 每晚21:30重启apache
      30 21 * * * /usr/local/etc/rc.d/lighttpd restart
      
      
      # 每月1、10、22日的4:45重启apache
      45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
      
      # 每周六、周日的1:10重启apache
      10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
      
      # 每天18:00至23:00之间每隔30分钟重启apache
      0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
      
      # 每周六11:00pm重启apache
      * 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
      
      # 晚上11点-早上7点之间,每隔一个小时重启apache
      * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
      
      # 显示年月日时分秒
      date "+%Y%m%d%H%M%S"
      
      
      # 重启crond,使配置生效
      systemctl restart crond.service
      # 查看定时任务列表
      crontab -l
      # 查看定时任务历史
      vim /var/spool/mail/root
      # 清楚任务
      crontab -r
      

      虚拟机初始化脚本

      #description:auto_run

      # 开机自启动时间
      yum info ntp && ntpdate cn.ntp.org.cn
      

2.设置执行权限
chmod a+x initdate.sh
3.将脚本拷贝到/etc/init.d目录下
cp initdate.sh /etc/init.d/
4.添加服务
chkconfig --add /etc/init.d/initdate.sh
5.重启
reboot


### 定时任务

- 在系统服务中心,crond负责周期任务

  - systemctl start crond.service

- 添加任务,编辑当前用户的任务列表

  - crontab -e

- 编辑任务

  - 星 星 星 星 星 command

    分 时 日 月 周  命令

    第一列表示分钟1~59 每分钟用*或 */2表示

    第二列表示小时1~23(0表示0点)

    第三列表示日期1~31

    第四列表示月份1~12

    第五列表示星期0~6(0表示星期天)

    第六列表示要运行的命令

    *表示任意时间

    -表示区间范围  17-19

    ,表示分割时段 30 3,19,21 * * * cmd,表示每天3点,19点,21点30分执行命令

    / 表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次

    ```bash
    # 每晚21:30重启apache
    30 21 * * * /usr/local/etc/rc.d/lighttpd restart
    
    
    # 每月1、10、22日的4:45重启apache
    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
    
    # 每周六、周日的1:10重启apache
    10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
    
    # 每天18:00至23:00之间每隔30分钟重启apache
    0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
    
    # 每周六11:00pm重启apache
    * 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
    
    # 晚上11点-早上7点之间,每隔一个小时重启apache
    * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
    
    # 显示年月日时分秒
    date "+%Y%m%d%H%M%S"
    
    ```

    ```bash
    # 重启crond,使配置生效
    systemctl restart crond.service
    # 查看定时任务列表
    crontab -l
    # 查看定时任务历史
    vim /var/spool/mail/root
    # 清楚任务
    crontab -r
    ```

    ### 虚拟机初始化脚本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值