Linux开发 安装JDK8、mysql8.0、shell脚本编写、Ubuntu安装 p4
前面的笔记:
Linux 学习笔记1 安装linux详细教程_linux系统 setting_O丶ne丨柒夜的博客-CSDN博客
Linux 学习笔记2 常用命令_O丶ne丨柒夜的博客-CSDN博客
Linux 学习笔记3 权限管理 定时任务 网络配置_O丶ne丨柒夜的博客-CSDN博客
目录
目录
安装配置
安装配置JDK8
安装python
tomcat的安装
安装配置mysql8.0
shell编程
快速入门
Shell的变量
位置参数变量
预定义变量
运算符
条件判断
case、for、while语句
定时备份数据库
python开发
ubuntu安装
安装ifconfig、ssh、修改镜像源
设置Ubuntu支持中文
Ubuntu的root用户
Ubuntu下开发Python
APT原理机制图
远程登录Ubuntu
日志管理
日志介绍和实例
日志管理服务rsyslogd
编辑 定制自己的Linux
基本原理
linux内核
为什么要阅读linux内核?
备份与恢复
使用dump完成备份
使用restore完成恢复
webmin安装和配置
bt(宝塔)
面试
安装配置
安装配置JDK8
Java Downloads | Oracle
查看环境变量:echo $PATH
安装步骤
1. mkdir /opt/jdk
2. 通过xftp6上传到/opt/jdk下
3. cd /opt/jdk
4. 解压tar-zxvf jdk-8u261--linux-x64.tar.gz
5. mkdir /usr/local/java
6. mv /opt/jdk/jdk1.8.0_261 /usr/local/java
7. 配置环境变量的配置文件 vim /etc/profile
8. export JAVA_HOME=/usr/local/java/jdk1.8.0_261
9. export PATH=$JAVA_HOME/bin:$PATH
10. source /etc/profile [让新的环境变量生数]
测试是否安装成功
编写一个简单的Hello,java输出"hello,world!"
安装python
1.下载python3
https://img.zeruns.tech/down/source/Python-3.10.6.tgz
2.进入安装路径
cd /root/opt/python3
如果没有 可以用mkdir创建
3.解压
tar -zxvf Python-3.10.6.tgz
4.准备编译环境
yum -y install libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
5.编译安装
cd Python-3.10.6
./configure --prefix=/opt/python310
make && make install
解释:
./configure --prefix=你的安装路径
6.配置环境变量
vim /etc/profile
export python_HOME=/opt/python310 export PATH=$python_HOME/bin:$PATH
刷新配置
source /etc/profile
7.验证是否安装成功
python3
pip3 install --upgrade pip -i Simple Index
tomcat的安装
步骤:
Apache Tomcat® - Apache Tomcat 10 Software Downloads
1.上传安装文件,并解压缩到/opt/tomcat
2进入解压目录/bin,启动tomcat/startup.sh
3.开放端口8080
●测试是否安装成功:
在windows、Linux下访 http://linuxip:8080
firewall-cmd --permanent --add-port=8080/tcp
systemctl start firewalld
systemctl stop firewalld
firewall-cmd-reload
firewall-cmd --query-port=8080/tcp
tar -zxvf apache-tomcat-10.1.7.tar.gz
cd /root/test/html1/apache-tomcat-10.1.7/bin/
./startup.sh
安装配置mysql8.0
centos8安装mysql8.0.22教程(超详细)_上善若水滴世界的博客-CSDN博客
mysql8.0.22设置远程连接
pwd
是Linux系统中常用的一个命令,全称为Print Working Directory
,用于显示当前所处的工作目录的路径名称。
shell编程
为什么要学习Shell编程
1.Linuxi运维工程师在进行服务器集群管理时,需要编写Shel程序来进行服务器管理。
2.对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
3.对于大数据程序员来说,需要编写Shell程序来管理集群。
Shell是什么
Shell是一个命令行解释器,它为用户提供了一个向Liux内核发送请求以便运行程序的界面系统级程序,
用户可以用Shl来启动、挂起、停止甚至是编写一些程序。看一个示意图
快速入门
Shell脚本的执行方式
●脚本格式要求
1.脚本以#!/bin/bash开头2.
脚本需要有可执行权限
编写第一个Shell脚本
需求说明:创建一个Shell脚本,输出hello world!
脚本的常用执行方式
方式1(输入脚本的绝对路径或相对路径)
说明:首先要赋予helloworld.sh脚本的+x权限,再执行脚本
√方式2(sh+脚本)
说明:不用赋予脚本+x权限,直接执行即可。
[root@localhostlinux1 shell]# vim hello.sh
[root@localhostlinux1 shell]# sh hello.sh
hello shell
Shell的变量
●Shell变量介绍
1.Linux Shellr中的变量分为,系统变量和用户自定义变量。
2.系统变量:$HOME、$PWD、$SHELL、$USER等等,比如:echo $HOME等等
3.显示当前shellt中所有变量:set
●shell变量的定义
基本语法
1.定义变量:变量=值
2.撤销变量:unset 变量
3.声明静态变量:readonly 变量,注意:不能unset
a=100
echo $a
a+=1
echo $a
echo a=$a
echo "a=$a"
100
1001
a=1001
a=1001
1.A=`date`反引号,运行里面的命令,并把结果返回给变量A
2.A=$(date)等价于反引号
b=`date`
echo $b
[root@localhostlinux1 shell]# sh a1.sh
Sat Mar 11 02:30:35 PST 2023
设置环境变量
基本语法
1.export 变量名=变量值
(功能描述:将she变量输出为环境变量/全局变量)
2.source 配置文件
(功能描述:让修改后的配置信息立即生效)
3.echo $变量名
(功能描述:查询环境变量的值)
●快速入门
1.在/etc/profile文件中定义TOMCAT_HOME:环境变量
2.查看环境变量TOMCAT HOME的值
3.在另外一个shell程序中使用TOMCAT_HOME
注意:在输出TOMCAT HOME环境变量前,需要让其生效source /etc/profile
#使用环境变量TOMCAT HOME
echo "tomcat_home=$STOMCAT_HOME"
多行注释
:<<! !
单行注释 #
位置参数变量
·介绍
当我们执行一个shl脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
比如:/myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数
信息
●基本语法
$n (功能描述:为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的
参数需要用大括号包含,如${10})
$* (功能猫述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$# (功能描述:这个变量代表命令行中所有参数的个数)
位置参数变量
案例:编写一个shell脚本position.sh,在脚本中获取到命令行的各个参数信息。
echo "$0 $1 $2 $3"
echo "$*"
echo "$@"
echo "$#"
[root@localhostlinux1 shell]# sh a2.sh 1 2 3
a2.sh 1 2 3
1 2 3
1 2 3
3
预定义变量
●基本介绍
就是shel设计者事先已经定义好的变量,可以直接在shell脚本中使用
●基本语法
$$ (功能描述:当前进程的进程号(PID))
$! (功能描述:后台运行的最后一个进程的进程号(PID))
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;
如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
●应用实例
在一个shell脚本中简单使用一下预定义变量
preVar.sh
echo "$$"
echo "$!"
echo "$?"
运算符
·基本介绍
学习如何在shellr中进行各种运算操作。
●基本语法
1.“$((运算式))”或“$[运算式]”或者expr m+n
2.注意expr运算符间要有空格
3.expr m n
4.expr \*,/,%乘,除,取余
应用实例
案例1:计算(2+3)X4的值
案例2:请求出命令行的两个参数[整数]的和
1.算术运算符:(推荐用$[])
a=10
b=5
echo $((a + b)) # 输出 15
echo $((a - b)) # 输出 5
echo $((a * b)) # 输出 50
echo $((a / b)) # 输出 2
echo $((a % b)) # 输出 0
2.关系运算符:
a=10
b=5
if [ $a -eq $b ]
then
echo "a 等于 b"
else
echo "a 不等于 b"
fi
3.逻辑运算符:
a=10
b=5
if [ $a -gt 8 ] && [ $b -lt 6 ]
then
echo "条件成立"
else
echo "条件不成立"
fi
4.字符串运算符:
str1="hello"
str2="world"
echo $str1$str2 # 输出 helloworld
if [ "$str1" = "$str2" ]
then
echo "字符串相等"
else
echo "字符串不相等"
fi
5.文件测试运算符:
file="test.txt"
if [ -e "$file" ]
then
echo "$file 存在"
else
echo "$file 不存在"
fi
- 小于:less than
- 小于等于:less than or equal to
- 等于:equal to
- 大于:greater than
- 大于等于:greater than or equal to
- 不等于:not equal to
有读的权限:
- read permission
有写的权限:
- write permission
有执行的权限:
- execute permission
文件存在并且是一个常规的文件:
- file exists and is a regular file
文件存在:
- file exists
文件存在并是一个目录:
- file exists and is a directory
条件判断
注意事项:[条件判断式],中括号和条件判断式之间必须有空格
应用实例ifCase.sh
案例:请编写一个shl程序,如果输入的参数,大于等于60,则输出"及格了”,如果小于60,则输出"不及格”
if [ $1 -ge 90 ]
then
echo "优秀"
elif [ $1 -ge 60 ]
then
echo "及格了"
else
echo "不及格"
fi
case、for、while语句
case "$1" in
start)
echo "启动服务"
# 启动服务的代码
;;
stop)
echo "停止服务"
# 停止服务的代码
;;
restart)
echo "重启服务"
# 重启服务的代码
;;
*)
echo "使用方法:$0 {start|stop|restart}"
exit 1
;;
esac
遍历一个数组
fruits=("apple" "banana" "orange" "grape")
for fruit in "${fruits[@]}"
do
echo "当前水果:$fruit"
done
遍历文件、目录等
for file in *
do
echo "当前文件:$file"
done
for 循环遍历数字
for i in $(seq 1 5)
for i in {1..5}
do
echo "当前数字:$i"
done
for ((i=1; i<=5; i++))
do
echo "当前数字:$i"
done
求和
sum=0
for((i=1;i<=5;i++))
do
sum=$[sum+i]
done
echo $sum
count=1
while [ $count -le 10 ]
do
echo "Count is: $count"
((count++))
done
双括号(())中才可以使用一些c的语法
read读取控制台输入
基本语法
read (选项) (参数)
选项:
-p : 指定读取值时的提示符;
-t : 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
参数
变量:指定读取值的变量名
应用实例testRead.sh
案例1:读取控制台输入一个num值
案例2:读取控制台输入一个num值,在10秒内输入。
read -p "请输入NUM1=" num1
echo "num1=$num1"
read -t 10 -p "请输入NUM2=" num2
echo "num2=$num2"
函数介绍
shell编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个。
系统函数
basename基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
basename [pathname] [suffix]
basename [string] [suffix] 功能描述:basename命令会删掉所有的前缀包括最后
一个('/')字符,然后将字符串显示出来。
选项:
suffix为后缀,如果suffix被指定了,basenames会将pathname或string中的suffix:去掉.
应用实例
案例1:请返回/home/aaa/test.txt的"test.txt"部分
basename /home/aaa/test.txt .txt
dirname 基本语法
功能:返回完整路径最后/的前面的部分,常用于返回路径部分
dirname 文件绝对路径
(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
应用实例
案例1:请返 /home/aaa/test.txt 的 /home/aaa
dirname /home/aaa/test.txt
自定义函数
基本语法
function funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]
√应用实例
案例1:计算输入两个参数的和,getSum
# 自定义函数
function greet {
echo "Hello, $1!"
}
# 调用函数
greet "world"
定时备份数据库
vi /etc/my.cnf
datadir=/var/lib/mysql
# 备份文件保存路径
backup_dir="/root/test/saves/mysql1"
# MySQL用户名和密码
mysql_user="root"
mysql_password="123456"
# 要备份的数据库名称
database_name="sys"
# 备份文件名
backup_file="$backup_dir/$database_name-$(date +%Y-%m-%d-%H-%M-%S).sql"
# 运行备份命令
mysqldump -u $mysql_user -p$mysql_password $database_name > $backup_file
# 删除旧的备份文件(保留最近7天的备份文件)
find $backup_dir -type f -name "$database_name*.sql" -mtime +7 -exec rm {} \;
可以使用crontab定期运行备份脚本。打开crontab文件:
crontab -e
然后添加以下行:
0 0 * * * /root/test/shell/mysqlbeifen.sh
这个命令将在每天午夜(0小时0分)运行备份脚本。可以根据需要更改crontab的时间表达式。
Shell编程综合案例
需求分析
1.每天凌晨2:30备份数据库hspedu到/data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如:2021-03-12230201.tar.gz
4.在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。
- `find $backup_dir`:在指定目录`$backup_dir`下查找文件。
- `-type f`:只查找普通文件,不包括目录和符号链接等。
- `-name "$database_name*.sql"`:指定文件名模式,匹配以`$database_name`开头,以`.sql`为扩展名的备份文件。
- `-mtime +7`:查找最后修改时间超过7天的文件。
- `-exec rm {} \;`:对于每个找到的文件,执行`rm`命令来删除它。`{}`代表文件名,`\;`表示命令的结束。
python开发
ubuntu安装
安装好后,检查能不能上网
安装ifconfig、ssh、修改镜像源
ifconfig是一个Linux/Unix系统的命令,用于查询和配置网络接口的信息。在Ubuntu中,ifconfig命令默认是没有安装的,需要安装net-tools包才能使用。 安装net-tools包的命令如下:
sudo apt-get update
sudo apt-get install net-tools
要在Ubuntu上启用SSH服务并设置用户名和密码,请按照以下步骤操作:
1. 打开终端(Ctrl+Alt+T)。 2. 安装OpenSSH服务器软件:
sudo apt update
sudo apt install openssh-server
3. 启动SSH服务:
sudo systemctl start ssh
4. (可选)设置SSH服务为开机启动:
sudo systemctl enable ssh
5. 创建新的Ubuntu用户。在终端中输入以下命令:
sudo adduser username
其中,“username”是您要创建的新用户的用户名。按照提示,为新用户设置密码和其他信息。 6. 确定新用户具有连接SSH的权限。在终端中输入以下命令:
sudo usermod -aG ssh username
其中,“username”是您要授权连接SSH的用户的用户名。
修改清华源
vi /etc/apt/source.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
sudo apt-get update
sudo apt-get upgrade
设置Ubuntu支持中文
默认安装的ubuntu中只有英文语言,因此是不能显示汉字的。要正确显示汉字,需要安装中文语言包。
安装中文支持步骤:
1.单击左侧图标栏打开Language Support菜单,点击打开Language Support(语言支持)选项卡。
2.点击Install/Remove Languages,在弹出的选项卡中下拉找到Chinese(Simplified,即中文简体,在后面的选项框中打勾。然后点击Apply Changes提交,系统会自动联网下载中文语言包。(保证ubuntu是联网的)
3.这时“汉语(中国)”在最后一位因为当前第一位是”English”,所以默认显示都是英文。我们如果希望默认显示用中文,则应该将“汉语(中国)”设置为第一位。设置方法是拖动,鼠标单击“汉语(中国)”,当底色变化(表示选中了)后,按住鼠标左键不松手,向上拖动放置到第一位。
4.设置后不会即刻生效,需要下一次登录时才会生效。
Ubuntu的root用户
介绍
安装ubuitu成功后,都是普通用户权限,并没有最高root权限,如果需要使用root权限的时候,通常都会在命令前面加上sudo。有的时候感觉很麻烦。(演示)
我们一般使用su命令来直接切换到root用户的,但是如果没有给root设置初始密码就会抛出su:Authentication failure这样的问题。所以,我们只要给root用户设置一个初始密码就好了。
●给root用户设置密码并使用
1.输入sudo passwd命令,输入一般用户密码并设定root用户密码。
2.设定root 密码成功后,输入su 命令,并输入刚才设定的root密码,就可以切换成root了。提示符$代表一般用户,提示符#代表root用户。
3.以后就可以使用root用户了
4.输入exit命令,退出root并返回一般用户
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes
sudo service ssh restart
su
vi /etc/pam.d/gdm-autologin
注释行 “auth requied pam_succeed_if.so user != root quiet success”
vi /etc/pam.d/gdm-password
注释行 “auth requied pam_succeed_if.so user != root quiet success”
Ubuntu 系统如何使用 root 用户登录实例-CSDN博客
Ubuntu下开发Python
●说明
安装好buntul后,默认就已经安装好Pythonl的开发环境。
●在Ubuntu下开发一个Pythoni程序
1)vi hello.py·
[编写hello..py]
2)python:3 hello.py[运行hello.py]
APT原理机制图
apt是Advanced Packaging Tool的简称,是一款安装包管理工具。在Jbuntu下,我们可以使用apt命令进行软件包的安装、删除、清理等,类似于Vindowst中的软件管理工具。
Ubuntu软件操作的相关命令
sudo apt-get update更新源
sudo apt-get install package安装包
sudo apt-get remove package删除包
sudo apt-cache search package搜索软件包
sudo apt-cache show package获取包的相关信息
如说明、大小,版本等
sudo apt-get install package --reinstall
重新安装包
sudo apt-.get-f install修复安装
sudo apt--get remove package-purge删除包,包括配置文件等
sudo apt-get build-.dep package安装相关的编译环境
sudo apt-get upgrade更新已安装的包
sudo apt--get dist-upgrade升级系统
sudo apt-cache depends package了解使用该包依赖那些包
sudo apt--cache rdepends package查看该包被哪些包依赖
sudo apt-get source,I ckage下载该包的源代码
Ubuntu:软件安装,卸载的最佳实践
案例说明:使用apt完成安装和卸载vim软件,并查询vim软件的信息:(因为使用了镜像
网站,速度很快)
sudo apt-get remove vim
sudo apt-get install vim -y
sudo apt-cache show vim
远程登录Ubuntu
ssh介绍
SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录。几乎所有UNIX/LInux平台都可运行SSH。
使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。
和CentOS不一样,Ubuntu默认没有安装SSHD服务(使用netstat指令查看:apt install net-tools),因此,我们不能进行远程登录。
从一台linux系统远程登陆另外一台linux系统
在创建服务器集群时,会使用到该技术
基本语法:
ssh 用户名@IP
例如:ssh hspedu@192.168.200.222
使用ssh访问,如访问出现错误。可查看是否有该文件~
/.ssh/known_ssh尝试删除该文件解决,一般不会有问题
登出
登出命令:exit或者logout
生产环境,可以选最小安装
centos7 vs centos8
日志管理
日志介绍和实例
基本介绍
1.日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包活用户的登绿信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。
2.日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,·或者受到攻击时攻击者留下的痕迹。
3.可以这样理解日志是用来记录重大事件的工具
/var/log/ 目录就是系统日志文件的保存位置
使用root用户通过xshell6登陆,第一次使用错误的密码,第二次使用正确的密码登录成功
看看在日志文件/War/Iog/secure里有没有记录相关信息
日志管理服务rsyslogd
Centos7.6日志服务是rsyslogd,Centos6.x日志服务是syslogd。rsyslogd功能更强大。
rsyslogd的使用、日志文件的格式,和syslogd服务兼容的。
√查询Linux中的rsyslogd服务是否启动
ps aux | grep "rsyslog" | grep -v "grep"
√查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog
由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:
1.事件产生的时间
2.产生事件的服务器的主机名
3.产生事件的服务名或程序名
4.事件的具体信息
日志如何查看实例
查看一下var/log/secure日志,这个日志中记录的是用户验证和授权方面的信息来分析如何查看
定制自己的Linux
基本介绍
通过裁剪现有Linuix系统(Centos7.6),创建属于自己的minLinux小系统,可以加深我们对linux的理解
基本原理
启动流程介绍:
制作Linux小系统之前,再了解一下Linux的启动流程:
1.首先Linux要通过自检,检查硬件设备有没有故障
2.如果有多块启动盘的话,需要在BIOS中选择启动磁盘
3、启动MBR中的bootloader引导程序
4、加载内核文件
5.执行所有进程的父进程、老祖宗systemd
6、欢迎界面
在Linux的启动流程中,加载内核文件时关键文件:
1)kernel文件:vmlinuz-3.10.0-957.el7.x86_64
2) initrd文件:initramfs-3.10.0-957.el7.x86_64.img
制作minlinux思路分析
1.在现有的Linux系统(centos7.6)上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,一个是/,并将其格式化。需要明确的是,现在加的这个硬盘在现有的Linux系统中是/dev/sdb但是,当我们把东西全部设置好时,要把这个硬盘拔除,放在新系统上,此时,就是/dev/sda
2.在/dev/sdb硬盘上,将其打造成独立的Linux系统,里面的所有·文件是需要拷贝进去的
3.作为能独立运行的Linux系统,内核是一定不能少,要把内核文件和initramfs文件也一起拷到/dev/sdb上
4.以上步骤完成,我们的自制Linux就完成,创建一个新的linux虚拟机,将其硬盘指向我们创建的硬盘,启动即可
https://www.cnblogs.com/RobertYu666/p/16047108.html
linux内核
为什么要阅读linux内核?
爱好,就是喜欢linux(黑客精神)
想深入理解linux底层运行机制,对操作系统有深入理解
阅读linux内核,你会对整个计算机体系有一个更深刻的认识。作为开发者,不管你从事的是驱动开发,应用开发还是后台开发,你都需要了解操作系统内核的运行机制,这样才能写出更好的代码。作为开发人员不应该只局限在自己的领域,你设计的模块看起来小,但是你不了解
进程的调用机制,你不知道进程为什么会阻塞、就绪、执行几个状态。那么很难写出优质的代码。
找工作面试的需要
老韩忠告,作为有追求的程序员,还是应该深入的了解一个操作系统的底层机制,(比如linux/unix)最好是源码级别的,这样你写多线程高并发程序,包括架构,优化,算法等,高度不一样的,当然老韩也不是要求小伙伴儿把一个非常庞大的Li山x内核每一行都读懂。我觉得。你至少能看几个核心的模块把。
linux0.01内核源码
●基本介绍Liux的内核源代码可以从网上下载,解压缩后文件一般也都位于linux目录下。内核源代码有很多版本,可以从linux0.01内核入手,总共的代码1w行左右,最新版本5.9.8总共代码超过700w行,非常庞大.
内核地址:https://www.kernel.org/
GitHub - bolanlaike/Linux-0.01: Linux 0.01源码及注释
linux0.01内核源码
linux0.01内核源码目录&阅读
老韩提示阅读内核源码技巧
1.linux0.01的阅读需要懂c语言
2.阅读源码前,应知道Linux内核源码的整体分布情况。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux内核源码的各个目录大致与此相对应.
3.在阅读方法或顺序上,有纵向与横向之分。所谓纵向就是顺着程序的执行顺序逐步进行;所谓横向,就是按模块进行。它们经常结合在一起进行。
4.对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。实际上这是一个反复的过程,不可能读一遍就理解
linux内核源码阅读&目录介绍&main.c说明
linux内核最新版和内核升级
内核地址:https://www.kernel.org/查看
●下载&解压最新版
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.16.tar.gz
tar -zxvf linux-5.8.16.tar.gz
linux内核最新版和内核升级
linux内核升级应用实例
将Centos系统从7.6内核升级到7.8版本内核(兼容性问题)
具体步骤,看老师演示
uname -a /查看当前的内核版本
yum info kernel -q /检测内核版本,显示可以升级的内核
yum update kernel /升级内核
yum list kernel -q /查看已经安装的内核
备份与恢复
基本介绍
实体机无法做快照,如果系统出现异常或者数据损坏,后果严重,要重做系统,还会造成数据丢失。所以我们可以使用备份和恢复技术
linux的备份和恢复很简单,有两种方式:
1.把需要的文件(或者分区)用TAR打包就行,下次需要恢复的时候,再解压开覆盖即可
2.使用dump和restore命令
使用dump完成备份
●dump应用案例1
将/boot目录所有内容备份到/opt/boot.bak.bz2文件中,备份层级为"0”
dump -0uj -f /opt/boot.bak.bz2 /boot
●dump应用案例2
在/boot目录下拷贝一个文件,备份层级为“1”(只备份上次使用层次“0”备份后发生过改变的数据),注意比较看这次生成的备份文件boot1.bak有多大
dump -1uj -f /opt/boot.bak1.bz2 /boot
老韩提醒:通过dump命令在配合crontab可以实现无人值守备份
使用restore完成恢复
●基本介绍
restore命 令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件
restore 基本语法
restore [模式选项] [选项]
说明下面四个模式,不能混用,在一次命令中,只能指定一种。
-C :使用对比模式,将备份的文件与已存在的文件相互对比。
-i :使用交互模式,在进行还原操作时,restors指令将依序询问用户
-r :进行还原模式
-t :查看模式,看备份文件有哪些文件
选项
-f <备份设备>:从指定的文件中读取备份数据,进行还原操作
webmin安装和配置
基本介绍
webmin是功能强大的基于Web的Unix/inux系统管理工具。管理员通过浏览器访问Vebmin的各种管理功能并完成相应的管理操作。除了各版本的linux以外还可用于:AIX、HPUX、Solaris、Unixware、.Irix和FreeBSD等系统
Downloading and Installing | Webmin
下载压缩包
tar xvf webmin-2.013.tar.gz
sh setup-repos.sh
dnf install webmin --nobest
sudo firewall-cmd --add-port=10000/tcp --permanent
sudo firewall-cmd --reload
bt(宝塔)
基本介绍
bt宝塔Liux面板是提升运维数率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/jAVA等多项服务器管理功能。
安装和使用
1安装 : yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
2.安装成功后控制台会显示登录地址,账户密码,复制浏览器打开登录,
Centos安装脚本:
yum install -y wget && wget -O install.sh http://bt.cxinyun.com/install/install_6.0.sh && sh install.sh
外网面板地址:
内网面板地址:
username:
password:
If you cannot access the panel,
release the following panel port [37596] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[37596]端口
如果bt的用户名,密码忘记了,使用bt default可以查看
面试
142_韩顺平Linux_统计访问量和连接数_哔哩哔哩_bilibili
Mo Maek98: 第八题第7、8行第一个list可以不加吗
深圳王哥: 这篇文章挺全面的,从WebAssembly的基础到用C/C++、Rust、Go编译WASM都有涉及,示例清晰,对新手很友好。通过编译不同语言的代码,还展示了如何在浏览器里运行和调用,挺实用的。最后的总结也挺到位,整体看下来收获满满。
m0_46135444: 设置环境变量那部分命令写错了,应该是emsdk_env.bat
O丶ne丨柒夜: 私信吧
墨薪炎: 那请问改如何写呢?