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
usermod命令修改账号信息
usermod [options] user_name
passwd命令修改账号信息
创建用户组:
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
查看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仓库搭建
本地连接光盘
创建挂载目录
手动挂载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,删除
删除逻辑卷 lvremove
删除卷组 vgremove
删除物理卷 pvremove
压缩包
格式:
tar 选项 /路径/压缩包名 /路径/源文挡
常用选项
压缩举例:
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
防火墙
端口关闭/打开举例:
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:指定时间频率
日志管理
利用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 #命令显示用户最近登录信息