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
-
0 halt(关机) 1 Single user mode(单用户模式) 2 Multiuser,without NFS(多用户模式,但是无网络状态) FS–>FileSystem 3 Full multiuser mode(多用户完整版模式) 4 unuserd(保留模式) 5 X11(用户界面模式) 6 reboot(重启模式) -
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期间执行
- cd /etc/rc3.d
系统服务
可以使用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
```
### 虚拟机初始化脚本