1、Shell
1、Linux系统内核负责对硬件资源的分配、调度等管理任务。与windows注册表类似
2、用户与硬件:用户 > 服务程序 > 系统调用接口 > 内核 > 硬件
3、shell:核、终端程序、Linux默认的 bash
4、Bash的优势:
4.1)、通过上下方向键调取执行过的Linux命令
4.2)、使用Tab键进行命令补全
4.3)、强大的批处理脚本
4.4)、实用的环境变量功能
2、执行命令
1、Linux 执行命令格式:命令名称 [命令参数] 命令对象
2、Linux命令的长格式与短格式:
1)、man --help
2)、man -h
3、快捷键/组合键 小技巧
1)、Tab:在Bash解释器中,用于命令行补全
2)、Ctrl+C:终止当前正在运行的程序
3)、Ctrl+D:键盘输入结束
4)、Ctrl+Z:将终端上运行的程序放入到后台运行
5)、Ctrl+L:清屏
3、系统常用工作命令
1、echo:在终端及shell脚本输出字符串或变量或文本, echo $变量名
2、date:显示或设置当前系统时间
1)、10月1日10点1分:date 10011001
2)、2020年10月1日:date -s '2021-10-01 10:01'
3、timedatectl:设置系统时间与时区
1)、设置时间为2021年10月1日:timedatectl set-time 2021-10-01
2)、设置时区为东八区:timedatectl set-timezone Asia/Shanghai
4、reboot:重启系统
5、poweroff:关闭系统
6、wget:下载网络文件,Linux中的小迅雷 (wget www.baidu.com -O /root/hello.html)
7、ps:查看系统进程状态
1)、查看详细信息:ps -aux
2)、查看父子进程:ps -ef
8、pstree:树状结构查看进程
9、top:动态监控进程活动及系统负载
10、nice:用于调整进程的优先级
1)、优先级10启动vim:nice -n 10 vim 1.txt
2)、查看优先级:ps -al
11、pidof:查看服务的 PID号 > pidof 服务名
1)、查看服务的PID:pidof kube-apiserver
12、kill:中止服务进程 > kill PID号
1)、默认使用关闭服务:kill -15 PID号
2)、强制停止:kill -9 PID号
3)、重载服务:kill -1 PID号
13、killall:终止该服务所对应的全部进程 > killall nginx
4、系统状态检测命令
1、ifconfig:获取网卡配置与网络状态
2、uname:查看系统内核与系统架构
3、uptime:查看系统负载(5分钟 10分钟 15分钟)
4、who:当前登入主机的用户及所使用的终端
5、free:查看系统内存使用量
6、last:调取主机被访记录
7、netstat:显示网络连接、路由表、接口状态等网络相关信息
8、ping:测试主机之间、主机与外网之间的连通性
9、history:查看执行的历史命令
10、tracepath:显示到达目的主机经过的路由信息 (tracepath www.baidu.com)
11、sosreport:收集系统配置及架构信息并输出诊断文档
5、查找定位文件命令
1、find:指定条件查找文件及目录 (find / -maxdepth 3 -iname 'mysql')
2、locate:快速查找文件及目录所在的位置 (locate mysql)
3、whereis:按照名称搜索二进制程序、源代码及帮助文档所在位置 (whereis nginx)
4、which:按照名称搜索二进制程序所在位置 (which nginx)
6、文本编辑命令
1、cat:查看纯文本内容 (cat 1.txt)
2、more:翻页查看纯文本内容 (more 1.txt)
3、head:查看纯文本内容的前N行 (head -10 1.txt)
4、tail:查看纯文本内容的尾部N行 (tail -10 1.txt)
5、tr:对纯文本内容进行替换(tr a b <1.txt)
6、wc:统计文件的 行数(wc -l)、字数(wc -w)、字节数(wc -c)
7、less:使用光标/j k键 进行上下滚动查看文件内容 (less 1.txt)
8、grep:指定字符串查询文件内容 (grep 'root' /etc/passwd)
9、cut:指定字符,按列进行截取文本 (cut -f1 -d":" /etc/passwd)
10、diff:比较多文件之间的差异 (diff 1.txt 2.txt)
11、uniq:去掉文件重复的行
12、sort:对文本中的内容进行排序,默认升序
1)、按列排序:sort -k2 1.txt
2)、静默输出:sort -k2 -n 1.txt
3)、倒序排列:sort -r -k2
7、文件目录管理
1、touch:创建空白文件、设置文件时间(重新创建一遍)
2、mkdir:创建空白的目录,-p批量创建
3、cp:复制文件及目录 > cp -r 源文件 目标路径
4、mv:移动、重命名文件及目录 > mv 源文件 目标路径
5、rm:删除文件或目录
6、dd:抄送、指定大小与个数的数据块来复制文件或转化文件 > dd if=要抄送的文件 of=抄送到的目录 bs=1M count=10
7、file:查看文件的类型 > file 文件名称
8、tar:对文件进行压缩或打包
8、Vim 文本编辑器
1、1991年发布的vim,vi的提升版本
2、模式
2.1)、命令模式:控制光标进行复制、粘贴、删除和查找
2.2)、输入模式:正常的文件录入 (a、i、o)
2.3)、末行模式:保存于退出文档、设置编辑环境 (:)
8.1、命令模式
常用命令(键入):
dd:删除/剪切 光标所在行
5dd:删除/剪切 5行
yy:复制 光标所在行
5yy:复制 5行
n:使用末行模式 :/搜索的内容,搜索下一个匹配项
N:搜索上一个匹配项
u:撤销上一步操作
p:将 dd或yy的行 粘贴到光标后
8.2、末行模式
常用命令(键入 shift + :)
w:保存
q:退出
q!:强制退出
wq!:强制保存退出
set nu:显示行号
set nonu:取消行号
命令:执行该命令
整数:跳转到改行
s/要替换的值/替换后的值/:替换光标所在行的第一个
s/要替换的值/替换后的值/g:将光标所在行的全部替换
% s///:全文搜索替换
?字符串:从最后一个开始搜索,从下到上
/字符串:从光标所在行后第一个开始搜索,从上至下
9、主机配置
9.1、主机名 Hostname
1、配置文件修改,需重启主机:vim /etc/hostname
2、命令行修改(永久生效):hostnamectl set-hostname 主机名
9.2、网络 Network
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet #设备类型
BOOTPROTO=static #地址分配模式 > dhcp(动态获取) static(静态) none(不获取)
IPADDR=192.168.178.51 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.178.2 #网关
DNS1=192.168.178.2
DNS2=223.5.5.5 #DNS地址
DNS3=223.6.6.6
NAME=ens33 #网卡名称
DEVICE=ens33 #设备名称
ONBOOT=yes #自启动
9.3、软件仓库 Repo
# vim /etc/yum.repos.d/dvd.repo
[dvd] #仓库名
name=Dvd repo #描述信息
baseurl=file:///mnt #使用本地挂载目录
baseurl=Ftp://192.168.178.131/MySQL-repo/ #使用Ftp的远程仓库
baseurl=http://aliyunc.com/Centos7-Base/ #使用网络镜像源
gpgcheck=0/1 #是否进行校验
enabled=0/1 #是否开启该仓库
gpgkey=http://www.centos.org/ #GPG公钥校验
# vim /etc/fstab 进行开机自启挂载
# yum repolist 查看仓库加载信息
10、定时任务与计划任务
10.1、at 定时单任务
# yum -y install at
# systemctl --now enable at
1、指定时间点:
# at 时间点(10:01)
#输入要执行的命令 Ctrl + D 结束输入
2、当前时间之后分钟
# at now+6minute
3、查看任务
# at -l
# atq
4、删除任务
# at -r 序列号(通过 atq 查看的序列号)
10.2、计划任务 Crond
# 语法格式
* * * * * /usr/sbin/ntpdate ntp1.aliyum.com
分 时 日/号 月 周 执行命令
# 示例
*/5 * * * * 每5分钟执行一次
0 2 1,4,6 * * 在每月的 1、4、6号 的凌晨2点
0 2 5-9 * * 在每月的 5至9号份 的凌晨2点
0 * * * * 每天的0点整
0 2 14 * * 在 每月的14号的 凌晨2点整
0 2 * * 5 在 每周5 的凌晨2点
0 0 9 1,5,8 0 在 每年的 1、5、8月份的9号 0点整
0 2 2 6 5 在每年的 6月份的2号及每周五 的凌晨2点
"================================================="
# systemctl --now enable crond
1、编写任务
# crontab -e
2、查看计划任务
# crontab -l
3、删除计划任务
# crontab -r 序列号(通过 crontab -l查看到的序列号)
11、用户身份及权限
11.1、UID 分配
0:系统管理员用户
1-999:系统用户
1000- :普通用户,日常工作的用户
11.2、useradd 解析
id:显示指定用户的UID、GID > id root
useradd:创建指定用户 > useradd pengge
1):指定目录进行创建:useradd peng1 -d /peng1
2):指定过期时长:useradd peng2 -e '2021-12-12' > 使用 chage -l peng2 查看用户过期时长
3):指定UID创建:useradd peng3 -u 111111
4);指定初始基本组:useradd peng4 -g wheel
5):指定一个或多个扩展组:useradd peng5 -G group1 -G group2
6):创建自定义名称基本组:useradd peng6 -N
7):指定用户的默认shell解释器:useradd peng7 -s /sbin/nologin
11.3、groupadd 解析
1、创建一个新组
# groupadd 组名
2、创建一个系统工作组
# groupadd -r -g 666 sys1
# -r :创建系统工作目录
# -g :指定 GID 创建
11.4、usermod 解析
1、用户添加备注
# usermod 用户 -c 描述
# usermod peng1 -c 'test1'
2、修改用户过期时间
# usermod -e 时间 用户
# usermod -e 2021-12-12 peng1
3、修改用户基本组
# usermod 用户 -g 修改后的组名
# usermod peng1 -g penge
4、修改用户扩展组
# usermod 用户 -G 组名
# usermod peng1 -G penge
5、锁定用户禁止其他用户登录
# usermod -L 用户
# usermod -L peng1
6、解锁用户
# usermod -U peng1
7、更改用户shell终端
# usermod 用户 -s 终端
# usermod peng1 -s /sbin/nologin
8、修改用户的UID
# usermod 用户 -u UID
# usermod peng1 -u 666666
11.5、passwd 命令
1、锁定用户,禁止其他用户登录
# passwd -l 用户
2、解锁用户
# passwd -u 用户
3、通过标准输入修改密码
# echo '密码' | passwd --stdin 用户
# echo '123456' | passwd --stdin peng1
4、用户免密登录系统
# passwd -d peng1
5、强制用户下一次登录时修改密码
# passwd -e peng1
6、显示用户是否被锁,密码采用的加密算法名称
# passwd -S peng1
11.6、userdel 操作
1、删除用户,保留家目录数据
# userdel peng1
2、强制删除用户
# userdel -f peng1
3、删除用户及用户家目录
# userdel -rf peng1
11.7、文件权限与归属
a、文件的基本权限
| file 文件 | dirct 目录 |
---|
读取(r 4) | cat | ls |
写入(w 2) | vim | touch |
执行(x 1) | ./script | cd |
1、解析文件权限
# -rw-r--r-- 1 root root 0 Nov 16 19:30 1.txt
- rw- r-- r-- 1 root root 0 Nov 16 19:30 1.txt
文件类型 属主 属组 其他用户 链接 属主 属组 大小 创建时间 文件或目录
2、文件类型
- 文件
d 目录
l 链接
p 管道
b 块设备
c 字符设备
b、文件特殊权限
SUID(c)4:对二进制程序进行特殊权限,二进制程序执行者拥有临时属主的权限
SGID(s)2:
1、对二进制程序设置,让执行者临时获取文件所有组的权限
2、对目录进行设置,目录内新建文件自动继承该目录原有组的名称
SBIT(t)1:
1、确保用户只在自己的目录中执行,不能对其他目录进行
2、权限为 rwt chmod o+t /limit-local
c、文件的隐藏属性
chattr:设置文件的隐藏权限
1、给文件上锁,禁止文件被修改
# chattr +i 文件名
2、给文件解锁
# chattr -i 文件名
3、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
# chattr +a /var/log/文件名
lsattr:查看文件的隐藏权限
# lsattr 文件名
d、文件访问控制列表
参数 | 作用 |
---|
-m | 修改权限 |
-M | 从文件中读取权限 |
-x | 删除某个权限 |
-b | 删除全部权限 |
-R | 递归子目录 |
setfacl:用来管理文件的 ACL 权限
1、给用户设置权限
# setfacl -m u:用户名:权限 文件或目录
# setfacl -m u:peng1:rwx 1.txt
2、查看权限列表
# getfacl 1.txt
11.8、su 与 sudo 服务
a、su 命令
su:切换系统中存在的用户
- :把当前环境变量信息变更为新用户的相应信息
# su - peng1
b、sudo 命令
sudo:给 普通用户 提权进行完成原本只有 root 才能完成的任务
1、打开授权页面(2种方法)
# vim /etc/sudoers
# visudo
2、给普通用户进行命令授权
# 用户名 网络中的主机=(执行命令的目标用户) 执行的命令
peng1 ALL=(root) NOPASSWD:/usr/bin/yum,/usr/bin/systemctl
peng2 ALL=(root) NOPASSWD:ALL