Linux知识体系总结(2024版)

2、组的创建

创建组:groupadd 组名

创建一个用户tom,并将其放入moster组中

useradd -g monster tom

3、权限的基本介绍

ls -l中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

指令描述
r读read
w写write
x

可被执行

0-9位说明

(1)第0位确定文件类型(d,-,l,c,b)

指令描述
b表示块设备,比如硬盘
d表示目录,相当于Windows的文件夹
c表示字符设备文件,比如键盘鼠标
l表示链接,相当于Windows的快捷方式
-表示普通文件

(2)第1-3位确定所有者的权限

(3)第4-6位表示所在组对该文件的权限

(4)第7-9位表示其他用户对该文件的权限

4、修改权限

通过chmode指令,可以修改文件或目录的权限

(1)+,-,= 变更权限

u:所有者

q:所在组

o:其它人

a: 所有人

chmod u=rwx,g=rx,o=x 文件/目录名

chmod o+w 文件/目录名

chmod a-x 文件/目录名

(2)通过数字变更权限

r=4 w=2 x=1  rwx = 4+2+1=7

chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751文件名

5、修改文件所有者-chown

基本介绍

chown newowner 文件/目录名 改变所有者

chown newowner:newgroup 文件/目录名 改变所有者和所在组

-R 如果是目录 则使其下所有子文件或目录递归生效

例如:

(1)请将/home/abc.txt文件的所有者修改为tom

chown tom /home/abc.txt

(2)请将/home下所有文件的所有者修改为tom

chown -R tom /home

6、修改文件/目录所在组-chgrp

-chgrp newgroup 文件/目录  改变所在组

7、最佳实践

警察和土匪游戏

police,bandit

Jack,Jerry:警察

zs,ls:土匪

(1)创建组

groupadd police;groupadd bandit

(2)创建用户

useradd -g police jack;

useradd -g police jerry;

useradd -g bandit zs;

useradd -g bandit ls;

(3)jack创建一个文件,自己可以读写,本组人可以读,其它组没任何权限

vim jack.txt;

chmod u=rwx,g=rx,o=x jack.txt

(4)jack修改该文件,让其他组人可以读,本组人可以读写

chmod o=r,g=r jack.txt

(5)zs投靠警察,看看是否可以读写

usermod -g police zs

(6)测试,看看zs是否可以读写,ls是否可以

六、定时任务调度与进程服务管理


1、定时任务调度

(1)、简介

crondtab进行定时任务的设置

基本语法:crontab [选项]

常用选项:

-e编辑crondtab定时任务
-l查询crondtab任务
-r删除当前用户所有的crondtab任务

crond相关指令:

  1. crontab -r :终止任务调度

  2. crontab -l:列出当前有哪些任务调度

  3. service crontab restart:重启任务调度

(2)、举例说明

*/1 * * * * ls -l /etc/ > /tmp/to.txt

定时每分钟执行,将etc的ls内容重定向到tmp下to.txt文件中。

项目含义
第一个*一小时中的第几分钟
第二个*一天中的第几小时
第三个*一个月中的第几天
第四个*一年中的第几月
第五个*

一周中的星期几 

特殊符号:

特殊字符含义
*代表时间,比如第一个*,代表每小时中的每分钟都执行一次

代表不连续的时间,比如0 8,12,16 * * *  代表每天的8点0分,12点0分,16点0分都执行一次

-代表连续的时间范围,比如0 5 * * 1-6  代表在周一到周六的凌晨5点0分执行命令
*/n代表每隔多久执行一次,比如*/10 * * * *  代表每隔十分钟执行一遍命令

(3)应用实例

  • 每隔一分钟,就将当前的日期信息追加到/tmp/mydate文件中

*/1 * * * * date >> /tmp/mydate.txt

  • 每隔一分钟,将当前日期和日历都追加到/tmp/mydate文件中

步骤:

vim /home/my.sh 写入内容 date >> /home/mydate 和 cal >> /home/mydate

给my.sh增加执行权限,chmod u+x /home/my.sh

crontab -e 增加 */1 * * * *  /home/my.sh

  • 每天凌晨2:00将mysql数据库testdb,备份到文件中。

指令:mysqldump -u root -p密码 数据库 > /home/db.bak

crontab -e

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

(4)at定时任务

  • at:一次性定时执行任务

  • at命令格式

at [选项][时间]

Ctrl + D 结束at命令的输入

2、进程管理

(1)进程号

在Linux中,每个执行的程序都称为一个进程,每一个进程都会分配一个ID号(pid,进程号)。

(2)ps指令

显示系统执行的进程

属性:

-a:显示当前终端的所有进程信息

-u:以用户的格式显示进程信息

-x:显示后台进程运行的参数

分页显示:ps -aux | more

过滤显示:ps -aux | grep sshd

(3)ps显示信息详解

USER:用户名称

PID:进程号

%CPU:进程占用CPU的百分比

VSZ:进程占用的虚拟内存大小(单位:KB)

RSS:进程占用的物理内存大小(单位:KB)

TT:终端名称,缩写

STAT:进程状态(S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等)

STARTED:进程的启动时间

TIME:CPU时间,即进程使用CPU的总时间

COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

(4)终止进程

kill和killall

基本语法:

kill [选项] 进程号(功能描述:通过进程号杀死进程)

killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

常用选项:-9 表示强制停止进程。

(5)查看进程树

pstree [选项],可以更加直观的查看进程信息

常用选项:

-p:显示进程的pid

-u:显示进程的所属用户

2、服务管理

(1)简介

服务本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysql、sshd、防火墙等,因此我们又称之为守护进程,是Linux中非常重要的知识点。

(2)service管理指令

service 服务名[start | stop | restart | reload | status]

在centos7.0后,很多服务不再使用service,而是使用systemctl

service指令管理的服务在/etc/init.d查看

(3)chkconfig指令

通过chkconfig可以给服务的各个运行级别设置自启动/关闭。

基本语法:

chkconfig --list [| grep xxx]

chkconfig 服务名 --list

chkconfig --level 5 服务名 on/off

(4)systemctl指令

基本语法:

systemctl [start | stop | restart | reload | status] 服务名

systemctl指令管理的服务在/us/lib/systemd/system查看

systemctl设置服务的自启动状态

systemctl list-unit-files [|grep 服务名](查看服务开机启动状态,grep可以进行过滤)

systemctl enable 服务名(设置服务开机启动)

systemctl disable 服务名(关闭服务开机启动)

systemctl is-enabled 服务名(查询某个服务示范是自启动的)

应用案例:

查看当前防火墙的状况,关闭防火墙和重启防火墙。

systemctl status firewalld;

systemctl stop firewalld;

systemctl start firewalld;

(5)firewall指令

打开端口:firewall-cmd --permanent --add-port=端口号/协议

关闭端口:firewall-cmd --permanent --remove-port=端口号/协议

重新载入,才能生效:firewall-cmd --reload

查询端口是否开放:firewall-cmd --query-port=端口号/协议

七、Linux磁盘分区和挂载


1、分区命令:fdisk /dev/sdb

2、磁盘情况查询

基本语法:df -h

3、磁盘情况实用指令

八、Linux中安装jdk和MySQL


1、安装JDK

(1)jdk下载路径

(2)mkdir /opt/jdk

(3)通过xftp7上传jdk到 /opt/jdk下

(4)解压tar -zxvf jdk-8u144-linux-x64.tar.gz

(5)mkdir /usr/local/java

(6)mv /opt/jdk/jdk1.8.0_144 /usr/local/java

(7)配置环境变量的配置文件 vim /etc/profile

(8)source /etc/profile  使配置文件生效

(9)输出hello Linux

2、安装Tomcat

(1)下载Tomcat

(2)mkdir /opt/tomcat

(3)通过xftp7上传jdk到 /opt/tomcat下

(4)解压tar -zxvf apache-tomcat-8.5.65.tar.gz

(5)启动tomcat

(6)访问浏览器无效

(7)将8080端口加入到Linux防火墙,开放8080端口

(8)浏览器访问8080

(9)编写一个简单的html文件,并在浏览器访问

3、安装MySQL

(1)新建文件夹/opt/mysql

(2)下载MySQL安装包

运行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

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

友好提示:Linux中可以在输入长的存在的字符串时按键盘左侧tab键补全。

(4)Linux下安装MySQL必须卸载centos自带的mariadb数据库

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

  2. 运行rpm -e --nodeps mariadb-libs卸载mariadb相关包

(5)开始安装MySQL

依次运行以下几条,顺序不能乱:

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

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

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

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

(6)启动MySQL

  • 启动MySQL

systemctl start mysqld.service

  • 获取初始密码,登录

  • 更改密码

(7)测试MySQL

create database gooReey;

use gooReey;

create table user(id int, name varchar(50), password varchar(50), sex int, address varchar(500));

insert into user(id, name, password, sex, address) values (1, ‘gooReey’, ‘123456’, 1, ‘dalian’);

select * from user;

九、通过Shell编程实现定时备份数据库


1、为什么要学习Shell编程

  1. Linux运维工程师在进行服务器集群管理时,需要编写Shell程序进行服务器管理。

  2. 对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序进行服务器的维护,比如编写一个定时备份数据库的脚本。

  3. 对于大数据程序员来说,需要编写Shell程序来管理集群。

2、Shell是什么

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

3、编写第一个Shell脚本

(1)脚本格式要求

  • 脚本以#!/bin/bash开头

  • 脚本需要有可执行权限

(2)用Shell脚本输出hello shell

4、Shell的变量

(1)Shell变量简介

Linux Shell中的变量分为系统变量和用户自定义变量。

系统变量: H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER等,比如echo $HOME

显示当前shell中所有变量:set

(2)shell变量的定义

  • 基本语法:

定义变量:变量名=值

撤销变量:unset 变量

声明静态变量:readonly变量,注意,不能unset

  • 定义变量的规则:

变量名称可以由字母、数字和下划线组成,但是不能以数字开头。

等号两侧不能有空格

变量名称一般习惯为大写,这是一个规范,遵守即可。

  • 将命令的返回值赋给变量

NAME=`date`反引号,运行里面的命令,并将结果赋给变量NAME

NAME=$(date)等价于反引号

5、代码实例

6、备份数据库

(1)需求分析

  1. 每天凌晨2:30备份数据库gooReey到/data/backup/db

  2. 备份开始和备份结束能够给出相应的提示信息

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

,size_16,color_FFFFFF,t_70)

6、备份数据库

(1)需求分析

  1. 每天凌晨2:30备份数据库gooReey到/data/backup/db

  2. 备份开始和备份结束能够给出相应的提示信息

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-62Qjvdfc-1712847977219)]
[外链图片转存中…(img-zH7hShwZ-1712847977220)]
[外链图片转存中…(img-yAhg5S97-1712847977220)]
[外链图片转存中…(img-BxdD6Yue-1712847977221)]
[外链图片转存中…(img-WQVIkD4O-1712847977221)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
[外链图片转存中…(img-FROBG8GT-1712847977221)]

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值