linux学习week4+5

news2024/11/15 9:21:00

linux学习

十四.shell编程

9.单分支多分支

基本语法:

if [ 条件 ]
then
  代码
elif [ 条件 ]
then
  代码
fi

10.case语句

基本语法:

case $变量名 in
"值1")
程序1(如果变量的值等于值1,则执行程序1)
;;
"值2")
;;
*)
(当值不等于以上值,则执行此程序)
;;
esac

11.for循环

基本语法:

for 变量 in 值1 值2 值3..或者for ((初始值;循环控制条件;变量变化))
do
程序
done

12.while循环

基本语法:

while [ 条件 ]
do
程序
done

注意:while和[之间有空格

13.read读取控制台输入

基本语法:read(选项)(参数)
选项:
-p:指定读取值时的提示符
-t:限制读取时间,超过时间自动退出
参数为指定读取值的变量名
如:read -t 10 -p “请输入一个数NUM=” NUM

14.系统函数

basename:返回完整路径最后/的后面部分,常用于获取文件名
基本语法:basename 完整路径 [suffix](suffix为后缀,若suffix被指定,则自动将路径中的suffix去掉)

dirname:返回完整路径最后/的前面部分
基本语法:dirname 路径

15.自定义函数

基本语法:

[function] 函数名[()]
{
  程序;
  [return int;]
}

在编写函数时,我们可以用$1,$2等来传参,这样更简洁
案例:

my_function {
    echo "Hello, \$1! Welcome to \$2."
}

# 调用函数并传递参数
my_function Alice Wonderland

十五.Ubuntu

1. 安装

ubuntu也是基于linux的,所以大部分命令和centos差不多
ubuntu一般是Python开发者用的
安装的步骤:

  1. 检查是否开启虚拟网络支持
  2. 在VMware中新建虚拟机
  3. 将下载的镜像文件安装
  4. 以下略

2.中文支持

步骤:
请添加图片描述

3.ubuntu的root用户

ubuntu安装后都是普通用户权限
一般用su命令来直接切换到root用户,但是如果没有给root设置密码,就会抛出问题
给root设置密码:

  1. sudo passwd命令,输入一般用户密码并设置root密码
  2. 设置后用su命令切换到root用户
  3. 输入exit命令,就可以退出

4.Python程序开发

①vi hello.py:编写Python程序
②Python3 hello.py:运行Python程序

5.APT原理

apt是安装包管理工具,类似于Windows的软件管理工具
原理图:
请添加图片描述

6.软件操作的相关命令

图片消失了

备份系统文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakup

7.远程登录

ssh:Secure Shell,SSH为建立在应用层和传输层基础上的安全协议
与centos不同,ubuntu没有默认的SSHD的服务,需要安装(使用netstate -anp | more命令查看,apt install net-tools安装)
安装SSH:sudo apt-get install openssh-server(安装SSH的服务端和客户端)
启动:service sshd restart(启动sshd服务,会监听端口22)

创建服务器集群时,会使用到从一台linux系统远程登录另一个linux系统的技术
基本语法:ssh 用户名@IP,如:ssh hspedu@192.168.200.222
使用ssh访问,如果出现错误,可查看是否有该文件 ~ /.ssh/known_ssh尝试删除该文件解决,一般不会有问题
登出:exit或者logout

十六.日志管理

1.基本介绍

日志文件记录了许多重要的系统事件,/var/log就是系统日志文件存放的位置
系统常用的日志:
请添加图片描述

2.日志服务原理

centos7.6的日志服务是rsyslogd,centos6.x的日志服务是syslogd
请添加图片描述

3.日志管理配置文件

查询linux中的rsyslogd是否启动:ps aux | grep “rsyslog” | grep -v “grep”
查询rsyslogd服务的自启动状态:systemctl list-units-files | grep rsyslog
配置文件:/etc/rsyslog.conf
编辑文件的格式为*.*,其中第一个*代表日志类型,第二个*代表日志级别
日志类型:
请添加图片描述

日志级别:
请添加图片描述

由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:

  1. 事件产生的时间
  2. 产生事件的服务器的主机名
  3. 产生事件的服务名或程序名
  4. 事件的具体信息

如:
请添加图片描述

4.日志轮替

日志轮替就是把旧的文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存范围时就会进行删除
日志轮替文件命名:
请添加图片描述

logrotate配置文件:/etc/logrotate.conf为logrotate的全局配置文件
文件示例:
请添加图片描述

5.自定义轮替

配置文件中的参数说明:

  1. daily:日志轮替的周期是每天
  2. weekly:日志轮替的周期是每周
  3. monthly:日志轮替的周期是每月
  4. rotate 数字:保留的日志文件的个数。0指没有备份
  5. compress:日志轮替时,对旧的日志进行压缩
  6. create mode owner group:建立新日志,同时指定新日志的权限与所有者和所属组
  7. mail address:当日志轮替时,输出内容通过邮件发送到指定的邮件地址
  8. missingok:如果日志不存在,则忽略该日志的警告信息
  9. notifempty:如果日志为空文件,则不进行日志轮替
  10. minsize 大小:日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替
  11. size 大小:日志只有大于指定大小才进行日志轮替,而不是按照时间轮替
  12. dateext:使用日期作为日志轮替文件的后缀
  13. sharedscripts:在此关键字之后的脚本只执行一次
  14. prerotate/endscript:在日志轮替之前执行脚本命令
  15. postrotate/endscript:在日志轮替之后执行脚本命令

自定义日志文件方法:
①直接在/etc/logrotate.conf配置文件中写入该日志的轮替策略
②在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被"include"到主配置文件中,所以可以把日志加入轮替
推荐第二种方法,第一种文件的可管理性差
案例:直接在/etc/logrotate.d/下创建文件log并编写如下内容
请添加图片描述

6.日志轮替机制

日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。在/etc/cron.daily/目录,就会发现有个目录中有logrotate文件(可执行),logrotate通过这个文件依赖定时任务执行的

7.内存日志

系统用于记录内存的使用情况的日志就是内存日志
journalctl:可以查看内存日志
常用选项:
journalctl -n 3:查看最新的3条
journalctl --since 19:00 --until 19:10:10:查看起始时间到结束时间的日志,可追加日期
journalctl -p err:报错日志
journalctl -o verbose:日志详细内容
journalctl_PID=1234 _COMM=sshd:查看包含这些参数的日志
后者journalctl | grep sshd
注意:journalctl查看的是内存日志,重启清空

十七.定制linux

1.基本原理

linux启动流程:

  1. 自检:检查硬件有没有故障
  2. 如果有多块启动盘的话,需要在BIOS中选择启动盘
  3. 启动MBR中的bootloader引导程序
  4. 加载内核文件
  5. 执行所有进程的父进程、老祖宗进程systemd
  6. 欢迎界面

加载内核文件时的关键文件:
1)kernel文件:vmlinuz
2)initrd文件:initramfs

思路:
请添加图片描述

十八.阅读源码

1.好处

阅读linux内核,会对整个计算机体系有一个更深刻的认识
面试找工作需要

2.linux0.0.1内核源码

linux的内核源码可以从网上下载,解压缩后文件一般也都位于linux目录下
内核源码版本很多,可以从linux0.0.1入手,总共1w行左右

3.技巧

图片消失了

4.内核升级

内核地址:https://www.kernel.org/查看
下载的命令:wget https…/linux-版本号.tar.gz
解压:tar -zxvf 上面下载的文件
升级相关命令:
yum info kernel -q:检测内核版本,显示可以升级的版本
uname -a:查看当前的内核版本
yum update kernel:升级内核
yum list kernel -q:查看已经安装的内核
注意:需要重启后选择新安装的内核

4.备份与恢复

实体机无法做快照,如果系统出现异常或数据损坏,后果严重,所以需要备份和恢复
如果没有dump和restore指令,需要先安装:yum -y install dump和yum -y install restore(安装dump时可能会附带安装restore)

(1)dump备份

基本介绍:
dump支持分卷和增量备份(所谓增量备份是指每次备份时只备份自上次完整备份或增量备份以来发生更改的数据,也称差异备份)
语法:
dump [-cu] [-123456789] [-f<备份后文件名] [-T<日期>] [目录或文件系统]
选项说明:
请添加图片描述

案例:
dump -0uj -f /opt/book.bak0.bz2 /boot:将boot分区压缩并备份到指定目录下,备份层级为0
dump -1uj -f /opy/boot.bak1.bz2 /boot:将boot分区剩下的文件压缩并备份
技巧:通过dump命令和crontab可以实现无人值守备份
dump -W:显示需要备份的文件及其最后一次备份的层级、时间、日期
查看备份时间文件:cat /etc/dumpdates
注意:dump只支持增量备份分区,不支持增量备份目录,只能使用0级备份

如果是重要的文件,比如数据区,建议将其上传到其它服务器保存

(2)restore恢复

restore用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件
基本语法:restore [模式选项] [选项]
模式选项(只能选择其中一种):
-C:使用对比模式,将备份的文件与已存在的文件相互对比
-i:使用交互模式,在进行还原操作时,restore指令将依序询问用户
-r:进行还原模式
-t:查看模式,看备份文件有哪些

选项:
-f<备份设备>:从指定的文件中读取备份数据,进行还原操作

案例:
restore -C -f boot.bak1.bz2:将文件还原到boot.bak1.bz2并将对比信息打印出来
restore -t -f boot.bak0.bz2:将文件还原到boot.bak0.bz2并将备份文件打印出来
对于还原模式,如果有增量备份,则需要把增量备份的文件也进行恢复,按顺序恢复:
restore -r -f boot.bak0.bz2:恢复到第一次完全备份状态
restore -r -f boot.bak1.bz2:恢复到第二次增量备份状态

十九.可视化管理

1.webmin

管理员可以通过浏览器访问webmin的各种管理功能进行管理操作
下载并在linux安装后要重置密码和修改端口号(出于安全目的)
修改后重启webmin,并让防火墙对修改后的端口放开
登录:http://ip:修改后的端口号

2.常用功能

修改密码、任务调度、进程管理、MySQL数据库管理、执行脚本

3.bt宝塔

bt宝塔linux面板是提升运维效率的服务器管理软件
安装:yun install -y wget && wget -O install.sh 下载地址
如果bt用户名密码忘了,可以使用bt default命令查看

二十.面试题

1.统计访问量和连接数


请添加图片描述

解:cat t.log(打印) | cut -d ‘/’ -f 3(按/分割并选择第三段) | sort(排序) | uniq -c(统计,需要先排序) | sort -nr(倒序排序)


请添加图片描述

解:netstate -an(打印连接情况) | grep ESTABLISHED(筛选出有ESTABLISHED字样的行) | awk -F " " ‘{print $5}’(按空格分割并输出第五段) | cut -d “:” -f 1(按:分割并选择第一段) | sort | uniq -c | sort -nr

2.找回MySQL的root密码

①在/etc/my.cnf中写入skip-grant-tables
②重启mysqld服务
③直接用空密码登入root用户
④将数据库mysql中的user表中的authentication_string修改为新密码
⑤刷新权限
⑥退出mysqld服务
⑦将①中写入的删除然后用新密码登录

3.访问量排名和tcpdump


请添加图片描述

解:cat access.log | awk -F " " ‘{print $1}’ | sort | uniq -c | sort -nr | head -2(前两位)

请添加图片描述

解:tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/tcpdump.log
③常用的Nginx模块,用来做什么
解:
请添加图片描述

4.系统权限划分

进行系统权限划分时,应考虑哪些因素
解:
首先阐述linux权限的对象:文件权限的rwx,目录的rwx,权限修改方式
注意权限分离,系统权限和数据库权限不要在一个部门
权限最小原则,不给多余的权限
减少使用root用户,尽量使用普通用户+sudo提权
重要的系统文件,用chattr锁定
使用SUID、SGID、Sticky设置特殊权限
用chkrookit/rookit hunter等检测rookit脚本(rootkit是入侵者使用工具)
用Tripwire检测文件系统完整性

5.权限思考题

图片消失了

解:

  1. 可以读、不能改、可以删
  2. 不能读、不能改、不能删
  3. 可以读、不能改、不能删
  4. 可以读、不能改、可以删

6.centos7启动流程详解

问:说明centos7启动流程,并说明与6的不同

linux7启动过程
1.硬件引导启动阶段
2.GRUB2启动引导阶段
3.内核引导阶段
4.systemd初始化阶段
Power on
BIOS
POST:初始化硬件
查找启动介质
MBR
Boot.img
Core.img
*.mod
grub.cfg
/boot/vmlinuz
/boot/initramfs
内核初始化
/user/lib/systemd/systemd

启动流程:
请添加图片描述

区别:centos7用的是grub2

7.io读写监控

问:列举linux高级命令
解:netstat、top、lsblk、find、ps -aux、chkconfig、systemctl
问:linux查看内存、io读写、磁盘存储、端口占用、进程查看命令是什么
解:top、iotop(yum install iotop)、df -lh、netstat -tunlp、ps -aux
问:用linux命令计算t2.txt的第二列的和并输出
解:cat t2.txt | awk -F " " ‘{sum+=$2}’ END {print sum}

8.统计文件数和行数

问:shell脚本里如何检查一个文件是否存在,并给出提示
解:if [ -f 文件名 ] then echo “存在” else echo “不存在” fi
问:shell脚本里如何将文本文件中的一列数字倒序排序,并将总和输出
解:sort -nr t3.txt | awk ‘{sum+=$0; print $0} END {print “和=sum”}’
问:用指令写出查找当前文件夹(/home)下所有文本文件内容中包含有字符"cat"的文件名称
解:grep -r “cat” /home | cut -d “:” -f 1
问:写出统计/home下所有文件个数和所有文件总行数的指令
解:find /home/test -name “*.*” | wc -l和find /home/test -name “*.*” | xargs wc -l

9.无人值守备份目录

问:列出你了解的web服务器负载架构
解:Nginx、Haproxy、Keepalived、LVS
问:每晚10点30分,打包站点目录/var/spool/mail备份到/home目录下(每次备份产生不同的备份包)
解:

#!/bin/bash
cd /var/spool/ && /bin/tar zcf /home/mail- `date +Y-%m-%d_%H%M%S`.tar.gz mail/

chmod u+x mail.sh
crontab -e

30 20 * * * /root/mail/sh

10.如何优化linux系统

需要解决的问题:网络带宽、磁盘IO、文件连接数、安全性、防火墙、内存

  1. 对linux的架构的优化
  2. 对linux系统本身的优化-规则:
  3. 不用root用sudo
  4. 定时的自动更新服务时间,使用nptdate npt1.aliyun.com,让croud定时更新
  5. 配置合理yum源,指向国内镜像
  6. 只打开必要的端口
  7. 打开最大文件数
  8. 配置合理的监控策略
  9. 配置合理的系统重要文件备份策略
  10. 对安装的软件进行优化
  11. 内核参数进行优化
  12. 锁定一些重要的系统文件
  13. 禁用不必要的服务:setup,ntsysv

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

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

相关文章

LeetCode刷题记录(第三天)55. 跳跃游戏

题目&#xff1a; 55. 跳跃游戏 标签&#xff1a;贪心 数组 动态规划 题目信息&#xff1a; 思路一&#xff1a;动态规划 确定dp数组含义&#xff1a; dp[i] 第[i]个位置能否达到确定递推公式&#xff1a; dp[i] 能不能达到&#xff0c;取决于前面d[i-j]&#xff0c;d[i-j…

Linux TFTP服务搭建及使用

1、TFTP 服务器介绍 TFTP &#xff08; Trivial File Transfer Protocol &#xff09;即简单文件传输协议是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。端口号为 69 2、TFTP 文件传输的特点 tftp…

【博主推荐】HTML5实现简洁的实用的个人网站、个人主页七个页面源码

文章目录 1.设计来源1.1 个人主页界面1.2 关于我界面1.3 我的技能界面1.4 我的经验界面1.5 我的教育界面1.6 我的项目界面1.7 联系我界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;…

【MQTT(2)】开发一个客户端,ubuntu版本

基本流程如下&#xff0c;先生成Mosquitto的库&#xff0c;然后qt调用库进行开发界面。 文章目录 0 生成库1 有界面的QT版本2 无界面版本 0 生成库 下载源码&#xff1a;https://github.com/eclipse/mosquitto.git 编译ubuntu 版本很简单&#xff0c;安装官方说明直接make&am…

1分钟带你了解等保测评流程

常言道&#xff1a;“安全无小事&#xff0c;防患于未然。” 在信息化高速发展的今天&#xff0c;网络安全已成为国家安全的重要组成部分&#xff0c;等级保护&#xff08;简称“等保”&#xff09;测评作为网络安全防护的重要手段&#xff0c;对于确保信息系统安全、稳定运行…

总台数430!2023年度各省燃机台数及装机容量一览

重型燃气轮机发电作为清洁能源战略的核心&#xff0c;将持续被强化以推动“双碳”目标的达成。鉴于其高度复杂的设计与制造流程&#xff0c;它成为了国家高端制造水平的象征。近年来&#xff0c;在科技强国战略的推动下&#xff0c;我国重型燃气轮机行业正迈向自主研发、创新突…

Elasticsearch基础(五):使用Kibana Discover探索数据

文章目录 使用Kibana Discover探索数据 一、添加样例数据 二、数据筛选 三、保存搜索 使用Kibana Discover探索数据 一、添加样例数据 登录Kibana。在Kibana主页的通过添加集成开始使用区域&#xff0c;单击试用样例数据。 在更多添加数据的方式页面下方&#xff0c;单击…

AJAX复习总结

AJAX复习总结 AJAX即“Asynchronous JavaScript and XML”&#xff08;异步的JavaScript与XML技术&#xff09;,是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。简单来说&#xff0c;AJAX就是让网页变得更快、更灵活的一种方法 举个例子&#xff1a…

昇思25天学习打卡营第4天 | 网络构建

在学习和实践MindSpore神经网络模型构建的过程中&#xff0c;我深刻理解了MindSpore中如何通过nn.Cell类来构建和管理复杂的神经网络模型。通过这次的实践&#xff0c;我对神经网络的基本构建和应用有了更加全面的认识&#xff0c;以下是我学习过程中所总结的几点心得&#xff…

一行Python代码实现数据清洗的18种方法

目录 1. 去除字符串两边空格 2. 转换数据类型 3. 大小写转换 4. 移除列表中的重复元素 5. 快速统计元素出现次数 6. 字符串分割成列表 7. 列表合并 8. 数据填充 9. 提取日期时间 10. 字符串替换 11. 快速排序 12. 提取数字 13. 空值处理&#xff08;假设是列表&am…

powe bi界面认识及矩阵表基本操作 - 1

powe bi界面认识及矩阵表操作 1. 界面认识1.1 选择数据源1.2 选择相关表及点击加载1.3 表字段显示位置1.4 表属性按钮位置1.5 界面布局按钮认识 2. 矩阵表基本操作2.1 选择矩阵表2.2 创建矩阵表2.3 设置字体大小2.4 行填充&#xff1a;修改高度2.5 列宽&#xff1a;设置列的宽度…

内置华为视频终端API接口的中央控制系统

内置华为视频终端API接口的中控系统是一种高度集成化的智能控制系统&#xff0c;它通过将华为视频终端的控制功能集成到中控系统中&#xff0c;实现了对华为视频终端的远程控制和集中管理。以下是对该系统的详细介绍&#xff1a; 一、系统概述 该系统通过调用华为视频终端提供…

自建网站统计工具 Umami 替代 Google Analytics

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 Umami 是一款开源的网站统计工具,与 Google Analytics 相比更加的轻量,且不会收集网站用户的个人信息。同时,Umami 的仪表盘界面简洁,UI 精美,方便我们查看网站的历史统计数据。 Umami 使用方式也与 Google Ana…

2024 微信小程序 学习笔记 第二天

1. WXML 模板语法 数据绑定 事件绑定 条件渲染 列表渲染 2. WXSS 模板样式 rpx 样式导入 全局和局部样式 3. 全局配置 window tabBar 配置tabBar案例 4. 网络数据请求 Get请求 Post 请求 加载时请求 5. 案例 -本地生活&#xff08;首页&#xff09; 导航栏 轮播图 九宫格效果…

MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~

一、基础操作与库命令 首先来介绍一些关于MySQL基础操作的命令&#xff0c;以及操作数据库相关的命令&#xff0c;MySQL中的所有命令默认是以;分好结尾的&#xff0c;因此在执行时一定要记得带上分号&#xff0c;否则MySQL会认为你这条命令还未结束&#xff0c;会继续等待你的…

mathtype7.4.4产品密钥mathtype7.4破解版mathtype 7.4.10密钥

“在数学中&#xff0c;符号是重要的。” 这是著名数学家陈省身的名言。对于很多科研人员来说&#xff0c;他们常常需要使用到各种复杂的公式和符号来描述他们的研究工作。然而&#xff0c;很多时候&#xff0c;这些公式和符号并不能很好地在文档或者网页上显示出来。 MathTyp…

【论文共读】【翻译】ShuffleNet v1:一种用于移动设备的极其高效的卷积神经网络

[原文地址] https://arxiv.org/pdf/1707.01083 [翻译] 0. 摘要 我们介绍了一种计算效率极高的CNN架构&#xff0c;称为ShuffleNet&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如&#xff0c;10-150 MFLOPs&#xff09;而设计。新架构利用了两个新操作&am…

Fastjson解析JSON时key对应的value存在多个英文双引号解决

情景 如上图所示&#xff0c;经常在解析json时会出现因双引号报错的问题。 fastjson解决方案 JSONObject jsonfile JSONObject.parseObject(json, Feature.OrderedField);JSONArray jsonArray jsonfile.getJSONObject("result").getJSONArray("items");…

c++最小生成树实现

文章目录 参考文章目的c实现 参考文章 点击访问 目的 实现参考文章中的图结构&#xff0c;并计算它的最小生成树 c实现 #include<iostream> #include<vector> #include<map>class Node { public:Node(const int val) :value(val) {}int value;std::map&…

Ubuntu 查询未更新的包 进行手动更新

lsb_release -a 查询ubuntu的版本号&#xff0c;我这边是20.04 apt list --upgradable 查询未更新的包 sudo apt --only-upgrade install php/focal 中间遇到输入选择&#xff0c;输入y即可