彼方尚有荣光在|

_xiaolin

园龄:2年9个月粉丝:3关注:5

Linux

Linux

[TOC]

一、基础

一、入门

1、介绍

1、Linux主要发行版

Ubuntu乌班图、RedHat红帽、CentOS、Debain蝶变、Fedora、SuSE、OpenSUSE示意图

2、安装vm和Centos

1、先安装vm

官方网址:www.vmware.com/cn.html

其他地址:www.novmd.com/windows/740…

2、再安装Linux(CentOS7.6/CentOS8.1)

7.6网址(现在主流):vault.centos.org/7.6.1810/is…

mirrors.aliyun.com/centos/7/is…

8.1网址(未来主流):mirrors.aliyun.com/centos/8.1.…

全部版本:mirrors.163.com/centos/

3、vm和Linux的关系

图片转存失败,建议将图片保存下来直接上传

4、开始安装centos

3、网络连接的三种模式

图片转存失败,建议将图片保存下来直接上传

4、虚拟机克隆

图片转存失败,建议将图片保存下来直接上传

5、虚拟机快照

图片转存失败,建议将图片保存下来直接上传

6、虚拟机的迁移和删除

图片转存失败,建议将图片保存下来直接上传

7、安装vmtools

图片转存失败,建议将图片保存下来直接上传

图片转存失败,建议将图片保存下来直接上传

注意要使用root账号进行登录

cd/opt进入到opt目录

tar -zxvf xxx.tar.gz 解压

cd vmware...进入到解压后的目录

8、设置共享文件夹

图片转存失败,建议将图片保存下来直接上传

9、Linux目录结构

图片转存失败,建议将图片保存下来直接上传

图片转存失败,建议将图片保存下来直接上传

图片转存失败,建议将图片保存下来直接上传

图片转存失败,建议将图片保存下来直接上传

图片转存失败,建议将图片保存下来直接上传

2、实操

1、远程登录到Linux服务器

image-20220914200939593

image-20220914201000983

2、安装Xshell6(远程操作)和XFTP6(文件的上传和下载)

下载free-for-home-school版本

下载地址:www.netsarang.com/en/free-for…

目前官网7版本免费提供学生使用

image-20220914203959828

左边为window(主机)的文件系统,右边为Linux系统

image-20220914204908999

怎么解决xftp7中文乱码问题?

在文件->会话属性->选项->编码

选择utf-8即可

小tips:Xshell7中输入命令reboot,能够远程重启Linux系统

3、Vi和Vim编辑器

Linux系统会内置vi文本编辑器

Vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计,代码补完,编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

image-20220914205905009

使用vim编写一个Hello.java程序,保存,步骤说明和演示。

退出编辑模式:按esc按键

进入命令行模式:输入冒号:即可

在命令行模式下输入wq:保存并退出(write and quit)

tab键有快速补全功能

image-20220914211202458

q!强制退出并且不保存

w是保存

q是退出,如果未保存就退出,会有提醒

4、vi和vim的快捷键

image-20220914214021218

粘贴输入P即可

image-20220914215929806

5、开机、重启、和用户登录注销

image-20220914223135704

只输入shotdown默认一分钟后关机

image-20220914223712160

如果在普通用户下切换到root时,输入logout会回退到普通用户

6、用户管理

image-20220914224431770

pwd显示当前在哪个目录

passwd 用户名:为用户设置密码

image-20220914225131359

userdel 用户名 只删除用户,不删除用户家目录

userdel -r 用户名 删除用户以及其家目录

image-20220914225633910

image-20220914225750841

image-20220914230019037

只会显示第一次登录的用户

image-20220914230112349

用户组方便管理,可以统一附加权限

clear清屏

image-20220914231458835

image-20220914231651252

image-20220914232012562

bashell tcshell cshell

组内用户列表被隐藏起来了

7、实用指令

运行级别

image-20220915081556507

image-20220915082312043

找回root密码

image-20220915082917259

1、首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面。如图

2、 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh。如图

image-20220915083754673

3、 接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式

4、 接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图

image-20220915083827865

5、 在新的一行最后面输入:passwd, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(韩顺平提示: **密码长度最好8****位以上,**但不是必须的), 密码修改成功后,会显示passwd.....的样式,说明密码修改成功

6、 接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /之间有一个空格),完成后按键盘的回车键(Enter)

7、 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(韩顺平提示:这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效

image-20220915083946645

帮助指令

image-20220915084336497

在linux下隐藏文件是以 . 开头的

查看所有文件,方式: ls -a

单列查看文件(详细):ls -l 或ll

也可以组合起来用:如 ls -la 或 ls -al

后面还可以加文件路径进行定位查看 如: ls -la /home

文件目录类

image-20220915085450625

image-20220915090309369

/ 是根目录,根目录下有root和home目录,root目录是root用户的家目录,home下还有其他用户的家目录

image-20220915090834886

image-20220915090905535

创建多级目录:mkdir -p 多级目录路径

image-20220915091221940

image-20220915091454979

image-20220915091547016

cp hello.txt /home/bbb

把cp换成\cp --> 强制不覆盖

image-20220915092320047

image-20220915143316824

也可以移动并重命名

image-20220915145448173

管道命令:把前面的结果交给下一个指令

cat -n /etc/profile | more 【空格下一页,回车键下一行】

image-20220915145831832

image-20220915150059536

image-20220915150446031

输出环境变量:PATHPATH PATHHOSTNAME

image-20220915151025400

ctrl+c退出监控

image-20220915152043287

如果指令后面的文件不存在,会自动创建

cal显示当前日历

image-20220915152754228

ln -s/root /home/myroot

删除跟删除文件操作一样

image-20220915201928063

history

history 10

!5

时间日期类

image-20220915202252081

image-20220915203626306

搜素查找类

image-20220915203958020

find /home -name hello.txt

文件大小单位:kMG

find /opt -user nobody

find / size +200

ls -lh:h能够显示文件大小

image-20220915212130026

which指令,可以查看某个指令在哪个目录下,比如ls指令在哪目录

which ls

image-20220915212730660

cat /home/hello.txt | grep -n yes

grep -n yes /home/hello.txt

压缩和解压类

image-20220915213502075

image-20220915213737614

zip -r myhome.zip /home/

image-20220915214549968

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

tar -zcvf myhome.tar.gz /home/

tar -zxvf pc.tar.gz

tar -zxvf myhome.tar.gz -C /opt/tmp2/

-C指定位置

Linux组管理和权限管理

特别说明:第二个命令,用户需要有进入到新目录的权限

image-20220917165512138

赋值,添加,删除

文件为绿色代表为可执行文件,即有可执行的权限

image-20220917170220879

image-20220917170452572

修改所在组

image-20220917170858303

递归带上参数:-R

image-20220918093958276

image-20220918095548916

rwx作用于目录?

r代表可以用ls查看目录下内容

x代表可以进入该目录

w代表可以在目录下创建文件/目录,或者删除文件/目录

定时任务调度

image-20220918111154098

image-20220918111414044

每分钟执行一次 : ls -l /etc/ > /tmp/to.txt

image-20220918111743875

image-20220918112317561

image-20220918112512648

image-20220918150839774

案例2:

第一种:写两条命令

第二种:写一个脚本程序my.sh

内容如下

date >> /home/mycal
cal >> /home/mycal 

要赋予所有者文件执行权限

chmod u+x my.sh

加入到crond调度

image-20220918151444876

案例3:

crontab -e

0 2 * * * mysqldump -u root -p123456 testdb > /home/db.bak

image-20220918153015636

ps -ef | grep atd 过滤查看当前atd进程是否启动

image-20220918153636679

image-20220918153739723

image-20220918153827189

image-20220918170824829

案例1:

at 5pm + 2 days

/bin/ls /home

案例2:

atq 查看没有执行的任务

案例3:

at 5pm + 1 days

date > /root/date100.log

案例4:

at now + 2 minutes

date > /root/date200.log

案例5:

atrm 编号,删除指定编号的任务

Linux磁盘分区、挂载

image-20220918190340116

image-20220918191506784

image-20220918191524185

lsblk可以查看硬盘分区挂载到目录的情况

image-20220918191821564

带-f 参数

image-20220918192044805

uuid:分区40位唯一标识符

MOUNtPOINT:挂载点

image-20220918192248658

image-20220918192410116

添加硬盘

image-20220918192526733

分区

image-20220918192853588

image-20220918193217682

如果无法删除输入内容就按住CTRL再删除

格式化磁盘

image-20220918193340597

挂载

image-20220918193809538

设置自动永久挂载

image-20220918194148535

磁盘使用情况

image-20220918223413735

image-20220918223905624

image-20220918224453733

1、ls -l /opt | grep "^-" | wc -l

2、ls -l /opt | grep "^d" | wc -l

3、ls -lR /opt | grep "^-" | wc -l

4、ls -lR /opt | grep "^d" | wc -l

5、tree /home/

注意:如果没有tree,则使用yum install tree 安装

8、网络配置

image-20220920084200166

image-20220920084239116

image-20220920084506392

image-20220920084901660

image-20220920084923674

image-20220920085048365

image-20220920085242945

image-20220920090713338

image-20220920090729395

image-20220920090923850

image-20220920091709049

image-20220920091848725

image-20220920092337347

9、进程管理

image-20220920094313207

image-20220920094455273

top指令

image-20220920094753531

image-20220920094915869

image-20220920095345886

image-20220920095400380

image-20220920095658736

查看sshd的父进程信息

ps -ef | grep sshd

image-20220920100423177

案例1:

先查看sshd下非法用户进程对应的进程编号

kill 进程编号

案例2:

查看sshd进程对应的进程编号

kill 进程编号

恢复:/bin/systemctl start sshd.service

案例3:

killall gedit

gedit 是文本编辑器

案例4:

ps -aux | grep bash 查看bash对应进程号

kill -9 进程编号

image-20220920101841645

image-20220920102231128

image-20220920102613172

image-20220920103143106

空格修改星好,关闭自启动,tab键退出

image-20220920141323854

image-20220920141524787

image-20220920141834604

把network在3运行级别,关闭自启动

chkconfig --level 3 nerwork off

chkconfig --level 3 network on

image-20220920145751949

对3和5两个级别都生效

systemctl staus firewalld

image-20220920150658941

image-20220920151535709

netstat 可以查看端口信息

10、动态监控进程

image-20220920152312662

image-20220920152956579

image-20220920153536082

image-20220920154351169

11、RPM与YUM

image-20220920215821171

image-20220920215856509

image-20220920220133363

image-20220920220454171

image-20220920220654613

image-20220920221014339

12、搭建JavaEE环境

image-20220920222132787

image-20220920223519999

image-20220920223756583

image-20220920230907217

image-20220920232225676

word文档

  1. 新建文件夹/opt/mysql,并cd进去

  2. 运行wget dev.mysql.com/get/mysql-5…

PS:centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。

  1. 运行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

  2. 运行rpm -qa|grep mari,查询mariadb相关安装包

  3. 运行rpm -e --nodeps mariadb-libs,卸载

  4. 然后开始真正安装mysql,依次运行以下几条

    rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm

    rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm

    rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm

    rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

    7.运行systemctl start mysqld.service,启动mysql

    8.然后开始设置root用户密码

    Mysql自动给root用户设置随机密码,运行grep "password" /var/log/mysqld.log可看到当前密码

    9.运行mysql -u root -p,用root用户登录,提示输入密码可用上述的,可以成功登陆进入mysql命令行

    10.设置root密码,对于个人开发环境,如果要设比较简单的密码(生产环境服务器要设复杂密码),可以运行

    set global validate_password_policy=0; 提示密码设置策略

    (validate_password_policy默认值1,)

    11.set password for 'root'@'localhost' =password('hspedu100');

    12.运行flush privileges;使密码设置生效

大数据篇

13、Shell编程

image-20220921092625619

image-20220921093108598

image-20220921201039096

image-20220921203115220

image-20220921203347516

shell脚本的多行注释

:<<! 内容 !

image-20220921204137791

image-20220921204530408

image-20220921205039603

如果希望希望将expr的结果赋予某个变量,使用``包含起来

image-20220921205926946

image-20220921210042661

案例1:

if [ "ok" = "ok" ]
then 
   echo "equal"
fi 

案例2:

if [ 23 -ge 22]
then
    echo "大于"
fi 

案例3:

if [ -f /root/shcode/aaa.txt ]
then 
    echo  "存在"
fi 

image-20220921211321894

if [ $1 -ge 60 ]
then 
    echo "及格了"
elif [ $1 -lt 60 ]
then
    echo "不及格"
fi 

image-20220921212530590

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other..."
;;
esac 

image-20220921213136956

案例1:

for i in "$*"
do
    echo "num is $i"
done

输出一次,因为$*把全部参数当作一个整体 
for i in "$@"
do
    echo "num is $i"
done

输出多次,因为$@把全部参数分别对待 

案例1:

SUM=0
for (( i=1; i<=100; i++ ))
do
	SUM=$[$SUM+$i]
done
	echo "SUM=$SUM" 
SUM=0
for (( i=1; i<=$1; i++ ))
do
	SUM=$[$SUM+$i]
done
	echo "SUM=$SUM" 

image-20220921214207107

SUM=0
i=1
while [ $i -le $1 ]
do
	SUM=$[$SUM+$i]
	i=$[$i+1]
done
	echo "SUM=$SUM" 

image-20220921214954762

image-20220921215725047

image-20220921215657103

image-20220921220026983

basename /home/aaa/test.txt .txt

返回 test

image-20220921220239617

dirname /home/aaa/test.txt

image-20220921220342744

案例1:

#定义函数
function getSum() {
	SUM=$[$n1+$n2]
	echo "和是:$SUM"
}
 #输入两个数
read -p "请输入第一个数:" n1
read -p "请输入第二个数;" n2
 #调用函数
getSum $n1 $n2 

image-20220921221007528

image-20220921221023007

image-20220921223635997

image-20220921230632891

14、Ubuntu

image-20220922153344103

安装

image-20220922212012672

image-20220922212040216

image-20220922212605027

15、APT软件管理和远程登录

image-20220922212946720

image-20220922213943070

image-20220922214055256

image-20220922214121239

image-20220922214416624

image-20220922214432573

image-20220922214611879

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse 

image-20220922215329166

sudo apt-get update

image-20220922215559117

image-20220922215824262

image-20220922220349861

image-20220922220827692

image-20220922220844494

image-20220922221427186

16、CentOS8.1的使用

image-20220924162951743

image-20220924162934233

image-20220924165327557

二、高级

1、日志管理

image-20220924165520294

image-20220924165610174

image-20220924165700426

image-20220924170235273

image-20220924170430208

image-20220924171059068

image-20220924171127974

image-20220924171300138

image-20220924232500700

vim /etc/rsyslog.conf

image-20220924233502077

image-20220924233802854

image-20220924234354872

image-20220924234622749

image-20220924234719331

image-20220924234954145

image-20220924235159801

image-20220924235653731

2、定制自己的Linux系统

image-20220925114303539

image-20220925114339456

image-20220925114437586

image-20220925114920341

操作步骤:

image-20220925133537856

3、Linux内核源码

image-20220925142023360

image-20220925142234296

地址:www.kernel.org/

image-20220925150952509

image-20220925153526734

image-20220925153550801

image-20220925153625746

地址:www.kernel.org/

image-20220925154242230

yum info kernel -q //检测内核版本,显示可以升级的内核

查看当前内核:uname -a

yum update kernel //升级内核

yum list kernel -q 查看已安装的内核

4、Linux系统备份与恢复

image-20220925155951139

安装dump:yum -y install dump

安装restore:yum -y install restore

image-20220925160314985

image-20220925160712515

image-20220925161827233

image-20220925162320335

image-20220925162524269

image-20220925162744897

image-20220925163434679

image-20220925163728328

image-20220925164125253

5、Linux可视化管理-----webmin和bt运维工具

image-20220925224706879

image-20220925224756226

地址:download.webmin.com/download/yu…

命令:wget download.webmin.com/download/yu…

image-20220925230413573

image-20220925231313040

还有任务调度,mysql等

image-20220925232007694

yum install -y wget安装wget指令

&&先执行前面的在执行后面的

image-20220925232714030

image-20220925232903556

image-20220925234013973

6、Linux面试题---(腾讯、美团、百度、滴滴)

image-20220926203400775

1、

cut -d '/':以/为分隔符进行截取

sort 排序从小到大,加-nr :排序从大到小

uniq -c 统计次数

2、

netstat -an | grep ESTABLISHED

image-20220926204510647

awk -F " " '{print $5}':以空格为分割符,打印第五部分

image-20220926204818405

一定要先排序再统计再排序

因为uniq -c是根据连续多少个1相同的进行统计的

image-20220926205103343

1、

vim /etc/my.cnf

在【mysqld】下写入一句话:skip-grant-tables

重启mysqld服务:service mysqld restart

重新进入mysql,此时无需密码

在mysql数据库中有user表:

use mysql

update user set password=password('new_password') where user='root'; mysql> flush privileges; mysql >exit;

这样就把密码修改了, 改完了密码之后,需要恢复权限:把之前对/etc/my.cnf的 skip-grant-tables 删掉

然后执行 service mysqld restart;

然后mysql -u root -p

Enter Password :你的新密码;

image-20220926205849106

2、

access.log

192.168.130.21 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.23 aaa.html
192.168.130.20 aaa.html
192.168.130.25 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.25 aaa.html
192.168.130.20 aaa.html 

cat access.log | awk -F " " '{print $1}' |sort |uniq -c |sort -nr| head -2

head -2 查看前2行

3、

tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/interview/tcpdump.log

4、

image-20220926211011154

image-20220926211215680

image-20220926211543437

chattr(change attribute)

chattr +i /etc/passwd/ 锁定

也可以隐藏命令,改名

which命令. which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。. 也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。. 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:. which 查看可执行文件的位置。. whereis 查看文件的位置。. locate 配合数据库查看文件位置。. find 实际搜寻硬盘查询文件名称。. which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。.

image-20220926212537500

chattr -i /etc/passwd:解锁

Tripwire官网:www.tripwire.com/

image-20220926213313889

1、能读,不能修改,能删除

2、不能,进不去目录

3、能读,不能修改,不能删除

4、能读,不能修改,能删除

image-20220926214544792

看word笔记

image-20220926215440811

1、

netstat //网络状态监控

top //系统运行状态

lsblk //查看硬盘分区

find //查看

ps -aux 查看运行进程

chkconfig //查看服务启动状态

systemctl //管理系统服务器

2、

top

iotop (yum install iotop)

df -lh

netstat -tunlp

ps -aux

3、

cat t2.txt | awk -F " " '{sum+=$2} END {print sum}'

image-20220926220409895

1、

if [ -f 文件名 ] then echo "存在" else echo "不存在" fi

2、

image-20220926220928503

3、

grep -r "cat" /home | cut -d ":" -f 1

4、

find /home -name "*.*" | xargs wc -l

xargs显示行数和总行数

image-20220926222059780

1、Nginx、Haproxy、keepalived、LVS

2、

vim mail.sh

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

crontab -e

30 20 * * * /root/mail.sh

3、

①对linux的架构的优化,和原则分析(示意图)

②对linux系统本身的优化-规则

  1. 不用root,使用sudo提升权限
  2. 定时的自动更新服务升级,使用npdate npt1.aliyun.com,让crond定时更新
  3. 配置yum源,指向国内镜像(清华,163)
  4. 配置合理的防火墙策略,打开必要的端口,关闭不必要的端口
  5. 打开最大文件数(调整文件描述的数量)vim /etc/profile ulimit -SHn 65535
  6. 配置合理的监控策略
  7. 配置合理的系统重要文件的备份策略
  8. 对安装的软件进优化,比如Nginx,apache
  9. 对内核参数进行优化 /etc/sysctl.conf
  10. 锁定一些重要的系统文件 chattr /etc/passwd /etc/shadow /etc/inittab
  11. 禁用不必要的服务 setup,ntsysv

本文作者:_xiaolin

本文链接:https://www.cnblogs.com/SilverStar/p/17415627.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   _xiaolin  阅读(0)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起