linux内核是由linux内核项目团队统一发布

内核作用:调度底层硬件资源 ,提供文件系统,管理cpu/内存,服务进程

linux操作系统组成:内核+shell+文件系统+应用程序

用户 ---〉 shell ---〉 内核 ---〉 硬件

命令 解释 (只认识二进制 0 1)

openEuler 基于 Linux内核 企业版本的操作系统

查看系统版本信息:

cat /etc/os-release

Ctrl + C 终止当前程序命令

登录:

login

AIt + F1 ~ F2 切换控制台(防止卡死)

shutdown 安全关闭系统

reboot -n 重启保存缓存文件

网络

配置文件配置存放网卡配置文件

cd /etc/sysconfig/network-scripts/
vim /etc/sysconfig/network-scripts/

ONBOOT=yes

IPADDR=192.168.112.120

NETMASK=255.255.255.0     或者PRFIX=24

GATEWAY=192.168.112.1

DNS1=8.8.8.8

DNS2=114.114.114.114

ls -R /home 显示目录及其子目录下文件名

mv -b 文1 文2 (移动并复制备份)

cat > 覆盖

echo "this is a test getfacl" >/test

cat >> 追加到文件末尾

tail -n3 * 前3行

find ./ -name "*.c"

find -empty 查找空目录文件(-delete)

which 查看某系统命令是否存在

vim操作

按 i 快速移动光标:

上下左右键或k、j、h、l键上下左右移动光标

  • 0 移动到行首

  • g0 移到光标所在屏幕行行首

  • :n 移动到第n行

  • gg: 到文件头部

  • G: 到文件尾部

数据操作:

  • set nu 显示行

  • yy or Y: 复制整行文本

  • y[n]w: 复制一(n)个词

面向行的数据:

  • 小写p 放置数据在当前行的下面

  • 大写P 放置数据在当前行的上面

面向字符的数据:

小写p放置数据在光标的后面

大写P放置数据在光标前

d[n]w:删除(剪切)1(n)个单词

[n] dd:删除(剪切)1(n)行

/word 按n向后继续搜索,shift+n向上搜索;

?word 按n向后继续搜索,shift+n向后搜索;

source /etc/vimrc 更新环境变量

创建用户:

useradd命令可用来创建用户账号,并保存在/etc/passwd文件中

useradd [options] user_name

指令

说明

-u

指定用户UID

-o

配合“-u”属性,允许UID重复

-g

指明用户所属基本组,既可为用户组名,也可为GID(该组必须已存在)

-d

指定用户的home目录,并自动创建用户home目录

-s

指明用户的默认shell程序

-D

显示或更改默认配置

-M

创建不含有家目录的用户

usermod命令修改账号信息

usermod [options] user_name

指令

说明

-u

修改用户UID

-g

修改用户所属组

-I

修改用户账号名称

-d

修改用户home目录

-s

修改用户默认shel程序

passwd命令修改账号信息

指令

说明

-n

设置修改密码最短天数

-x

设置修改密码最长天数

-w

设置用户在密码过期前多少天收到警告信息

-i

设置密码过期多少天后禁用账户 (-I 立即让用户锁定 -u 立即解除用户的锁定)

-d

删除用户密码

-S

显示用户密码信息

创建用户组:

groupadd [options] group_name
  • -g 为新用户组所使用的GID

  • -o 允许创建有重复 GID 的组

  • -r 创建一个系统账户

查看组:cat /etc/group

修改用户组:

groupmod [options] group_name
  • -g修改为要使用的GID

  • -h显示此帮助信息并退出

  • -n修改为要使用的组名称

  • -o允许使用重复的 GID

  • -p 更改密码(加密过的)

删除用户组:

groupdel [options] group_name
  • -f 即便是用户的主组也继续删除

  • -h 显示此帮助信息并退出

关联用户和组:

 gpasswd [options]   user_name  group_name

指令

说明

-a

向组 GROUP 中添加用户 USER

-d

从组 GROUP 中添加或删除用户

-M

设置组 GROUP 的成员列表

-A

设置组的管理员列表

-r

移除组 GROUP 的密码

-R

向其成员限制访问组 GROUP

-Q

要 chroot 进的目录

查看user组的组员:groups user

  • groupadd -g 123 aaa

  • cat /etc/group

  • groupmod -g 145 aaa

  • tail -3 /etc/group

/etc/passwd:用户账号信息文件

/etc/shadow:用户账号信息加密文件(又称为“影子文件”)

文件权限chmod

格式:

chmod 选项 参数 文档

选项:

-R 针对目录递归操作

步骤 1

mkdir -p /test/file1 file2
cd /test

步骤 2

将文件 file1 设为所有人皆可读取

chmod ugo+r file1

/

chmod a+r file1

步骤 3

将文件 file1 与 file2 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入

chmod ug+w,o-w file1 file2

步骤 4

将目前目录下的所有文件与子目录皆设为任何人可读取

chmod -R a+r *

步骤 5

将文件file1 的所属用户改为jack,所属用户组改为hatest 组

前提创建用户jack,组hatest

chown jack:hatest /test/file1

步骤 6

修改文件群组属性为bin(换组)

chgrp -v bin file1

ACL的设置

步骤 1

文件file1 的所属组对其有写入权限

chmod 775 /test/file1 

步骤 2

查看file1文件下的组

getfacl /test/file1 
[root@localhost ~]# getfacl /test/file1

getfacl: Removing leading '/' from absolute path names

# file: test/file1

# owner: jack

# group: hatest

user::rwx

group::rwx

other::r-x

步骤 3

设置tony只读权限

setfacl -m u:tony:r ./file1

验证

[root@localhost ~]# getfacl /test/file1

getfacl: Removing leading '/' from absolute path names

# file: test/file1

# owner: jack

# group: hatest

user::rwx

user:tony:r--

group::rwx

mask::rwx

other::r-x

步骤 4

清除文件名为file1的文件上的ACL设置

chacl -B file1

验证

[root@localhost test]# getfacl -e file1

# file: file1

# owner: root

# group: bin

user::rwx

group::rwx

other::r-x

openEuler软件管理

步骤一:使用本地openEuler实验环境

cd /etc/yum.repos.d/
vim openeuler_x86_64.repo

步骤二:配置Yum源

vim openeuler_x86_64.repo

添加以下内容:

[openEuler]

name=openeuler

baseurl=https://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/

enabled=1

gpgcheck=1

gpgkey=https://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/

②yum仓库搭建

  1. 本地连接光盘

  2. 创建挂载目录

  3. 手动挂载mount或者自动挂载/etc/fstab

/dev/cdrom   /dvd    iso9660    defaults  0 0
vim /etc/yum.repos.d/mnt_.repo
[appstream]
name=appstream
baseurl=file:///dvd/m
enabled=1
gpgcheck=0

注意:若有一个yum不能使用,所有的yum都不能使用

输入如下命令刷新列出软件列表:

yum list all 

步骤三:用RPM命令管理软件

1.执行以下命令,通过yum和rpm方式查询openjdk包名称

 yum list all | grep 1.8.0-openjdk 
2.查询openjdk是否安装
 rpm -q java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.x86_64.rpm

RPM 安装命令

1.执行以下命令,下载openjdk和zziplib安装包

wget https://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/Packages/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.x86_64.rpm
wget https://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/Packages/zziplib-0.13.69-5.oe1.x86_64.rpm 

2. rpm安装openjdk 1.8 ,结果无法解决软件包的依赖关系(此包在当前目录下)

rpm -ivh java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1. x86_64.rpm

3.使用yum安装OpenJDK

①安装前先清除缓存,命令如下:

sudo yum clean all

②用以下命令安装

 yum -y install java-1.8.0-openjdk-1.8.0.242.b08-1.h5.oe1.x86_64.rpm

如果弹出以下报错:

You can remove cached packages by executing 'yum clean packages'.

Error: GPG check FAILED

很大可能是密钥出错,使用一下命令更新

 sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-openEuler

再清除缓存,进行安装java-1.8.0-openjdk

③验证:

java -version 

④使用rpm安装zziplib

 rpm -ivh zziplib-0.13.69-5.oe1.x86_64.rpm 

⑤RPM 升级命令

 rpm -Uvh zziplib-0.13.69-5.oe1.x86_64.rpm 

查看软件包文件列表和完整安装目录:

 rpm -ql python3-libxml2-2.9.8-9.oe1.x86_64 

查询软件包的详细信息

 rpm -qi python3-libxml2-2.9.8-9.oe1.x86_64 

RPM 卸载命令

查询(zziplib):

rpm -qa | grep zziplib

卸载(zziplib):

rpm -e zziplib-0.13.69-5.oe1.x86_64

步骤四:DNF管理软件包

DNF工具概述:(跟yum配合使用)

DNF(Dandified YUM)作为Linux软件包管理工具,可以用来管理RPM软件包

DNF可以查询软件包的信息,从指定软件库去获取所需软件包,并通过自动处理依赖关系来实现安装、卸载以及更新。

DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供的API

DNF的使用需要管理员(root)权限

1.挂载ISO

第一种方法:使用winscp工具将openEuler-20.03-LTS-x86_64-dvd.iso上传至openEuler01 虚拟机的/root 目录下,然后执行如下命令挂载ISO

 mount -o loop /root/openEuler-20.03-LTS-x86_64-dvd.iso /mnt/ 

第二种方法:使用本地光盘挂载到本地

 mount -o loop /dev/cdrom /mnt/

验证:

df -hT

2.查看dnf配置文件内容

cat /etc/dnf/dnf.conf

3.添加软件源

dnf config-manager --add-repo file:///mnt/ 

4.配置DNF参数,编辑mnt_.repo文件

vim /etc/yum.repos.d/mnt_.repo

添加以下内容

gpgcheck=1

gpgkey=file:///mnt/RPM-GPG-KEY-openEuler

5.执行以下命令,验证启用和禁用软件源

dnf repolist
dnf config-manager --set-enable mnt_
dnf repolist
dnf config-manager --set-enable mnt_
dnf repolist

6.搜索openjdk软件包

dnf search openjdk

7.列出软件包清单

dnf list install
dnf list installed
dnf list available

8.显示RPM包信息

dnf info java-1.8.0-openjdk.x86_64

9.执行以下命令,显示管理软件包组

dnf groups summary
dnf group list

10.显示已安装的软件包组信息

dnf group --installed –v

11.检测更新

dnf check-update

分区模式

lsblk 查看硬盘情况

fdisk

fdisk  /dev/sdb
  • m 帮助提示

  • p 打印分区表

  • n 新建分区

  • d 删除分区

  • q 放弃更改并退出

  • w 保存更改并退出

一个扇区=512字节

partprobe 同步

mkfs格式化

mkfs.文件系统类型 区域

blkid 查看分区格式化情况

挂载

1,临时挂载

mount 区域 目标路径

2,自动挂载(vim)

vim /etc/fstab
/dev/sdb1 /root/dir1 ext4 defaults 0 0

挂载的区域 挂载点 文件系统格式 挂载参数 备份标记 检测标记

mount -a 检查自动挂载

lvm 逻辑卷管理

1,创建物理卷 (可以省略)

pvcreate 区域1 区域2

pvs 查看物理卷信息

2,创建卷组 (PE 物理扩展单元 4M1个PE,PE值修改只能为4的倍数)

vgcreate 卷组名 物理卷1 物理卷2 [ 创建]

vgextend 卷组名 物理卷1 2 。。。。 [扩展]

vgs(vgdisplay) 查看卷组信息

3,创建逻辑卷

lvcreate -n 逻辑卷名 -L 逻辑卷大小 卷组 创建逻辑卷

lvreate -n 逻辑卷名 -l PE数量 卷组 创建逻辑卷

lvextend -L 逻辑卷大小 逻辑卷配置文件位置 (确认卷组空间是否满足)

lvs (lvdislay) 查看逻辑卷信息

4,格式化

mkfs格式化

5,挂载使用

mount

6,逻辑卷扩容(确保卷组空间是否满足)

vgextend 卷组名 物理卷1

扩容完成后要对扩容的那一部分进行扩展文件系统

ext resize2fs

xfs xfs_growfs

7,删除

  1. 删除逻辑卷 lvremove

  2. 删除卷组 vgremove

  3. 删除物理卷 pvremove

压缩包

格式:

tar 选项 /路径/压缩包名 /路径/源文挡

常用选项

指令

说明

-c

制作tar包

-C

制定解压路径

-x

解压

-f

制定归档文件的文件名,必须放在所有选项的后面

-z

调用gz工具来进行压缩

-j

调用bz2工具进行压缩

-J

调用xz工具进行压缩

-t

显示压缩包的文件清单

-P

压缩过程保留文件信息

压缩举例:

tar -xzvf tab.tar.gz
tar -xjvf tab.tar.bz2

解压例:

tar  -cjf   /root/etcbak.tar.bz2    /etc   
tar  -xf    /root/etcbak.tar.bz2  -C   /root

防火墙

常见协议

说明

端口

http

超文本传输协议

80

https

安全的超文本传输协议

443

ftp

文本传输协议

21

tftp

简单文本传输协议

69

telnet

远程管理协议

23

dns

域名解析协议

53

smtp

发邮件协议

25

pop3

收邮件协议

110

snmp

简单管理协议

161

端口关闭/打开举例:

sudo iptables -D INPUT -p tcp --dport 80 -j DROP
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

进程

ps 命令

ps -aux 操作

列出正在运行的所有进程

用户 进程id 占用cpu资源情况 内存 虚拟内存 固定内存 终端 状态 起始时间 cpu时间 程序指令

ps -elf操作

列出正在运行所有进程

强制结束进程

  • kill [-9] pid(进程id)

  • killall [-9] 进程名

  • pkill 查找条件

  • killall -9 -u lisi 强制提出用户

计划任务

1,一次性计划任务 (针对短期单次任务)

at命令

格式

at + 时间

at〉 编辑任务内容

ctrl +d 结束编写

at now +2minutes 两分钟后执行任务

at hh:ss yyyy-mm-dd

2,周期性计划任务

cron命令

软件包:cronie crontabs

系统服务名称 crond

系统日志记录 /var/log/crond

格式

crontab -e [-u 用户名] 编辑周期性计划任务

crontab -l [-u 用户名] 查看周期性计划任务内容 /var/spool/cron/

crontab -r [-u 用户名] 清除计划任务

配置文件内容

* * * * * 任务内容(涉及文件路径都要写绝对路径)

分时日月周

分:0-59

时:0-23

日:1-31

月:1-12

周:1-7

*:匹配任意时间

,:分割多个不连续的时间段

30,35,40 14 * * * reboot

-:制定连续时间

35-40 14 * * * echo 1

/n:指定时间频率

日志管理

常见日志文件

说明

/var/log/messages

记录内核消息,各种服务的公共信息

/var/log/dmesg

记录系统启动过程的各种信息

/var/log/cron

记录周期性计划任务相关信息

/var/log/maillog

记录邮件收发的相关信息

/var/log/secure

记录与访问限制相关信息

利用shell监控cpu、磁盘、内存使用率,达到警报阈值发邮件进行通知

并配合任务计划,即可及时获取报警信息


#!/bin/bash

#获取cpu使用率
cpuUsage=`top -n 1 | awk 'NR==3 {print $2}'`
#获取磁盘使用率
diskUsage=`df -h | awk '/sda[0-9]/ {printf $5}'`
logFile=/tmp/jiankong.log
#获取内存情况
mem_total=`free -m | awk 'NR==2{print $2}'`
mem_used=`free -m | awk 'NR==2{print $3}'`
#统计内存使用率
mem_used_persent=`awk 'BEGIN{printf "%.2f\n",('$mem_used'/'$mem_total')*100}'`



#获取报警时间
now_time=`date ‘+%F %T‘`
function send_mail(){
        mail -s "监控报警" *********@qq.com < /tmp/jiankong.log
}
function check(){
        if [[ "$cpuUsage" > 80 ]] || [[ "$diskUsage" > 80 ]] || [[ "$mem_used_persent" > 80 ]];then
                echo "报警时间:${now_time}" > $logFile
                echo "CPU使用率:${cpuUsage}% --> 磁盘使用率:${diskUsage}% --> 内存使用率:${mem_used_persent}%" >> $logFile
                send_mail
        fi
}
function main(){
        check
}

多用户创建

创建10个用户,随机密码15,userinfo.txt

user_00 user_09

yum install -y expect

#!/bin/bash
if
   	 [ -f /tmp/userinfo.txt ]
then
	rm -f /tmp/userinfo.txt
fi

if ! which mkpasswd

then 
	yum install -y expect
fi

for i in `seq -w 0 09`
do
	p=`mkpasswd -l 15 -s 0`

	useradd user_${i} && echo "${p}" | passwd --stdin user_${i}
	echo "user_${i} ${p}" >> /tmp/userinfo.txt
done

SMB共享文件

需求:实现Linux服务器端与Windows本地文件资源共享

安装samba服务

 yum -y install samba samba-client samba-comon

启动,并设置开机自动启动

systemctl start smb
systemctl enable smb

安装net-tools服务

yum install net-tools

查看服务运行状态

netstat -lantp

关闭防火墙

systemctl stop firewalld
setenforce 0

共享访问用户smb

 useradd -s /sbin/nologin -M smb

设置用户密码

smbpasswd -a smb

创建共享文件

mkdir /var/share /var/smb

chmod 777 /var/share/ /var/smb/

chown smb:smb /var/smb

vim /etc/samba/smb.conf
map to guest = Bad User

添加公共share目录

[share]
        comment = share
        path = /var/share
        guest ok = Yes
        writeable = Yes
        browseable = Yes

添加公共smb目录

[smb]
        comment = smb
        path = /var/smb
        write list = smb
        browseable = yes
        writeable = yes
        read list = smb
        valid users = smb
        create mask = 0777
        directory mask = 0777
systemctl restart smb

打开Windows本地文件资源管理器访问/share

\\192.168.200.11

输入用户名和密码

last #命令显示用户最近登录信息