工作实践总结——.md



工作实践总结——

一:常用Linux操作

1.Linux程序构成:

1.程序的组成部分

二进制程序文件 、库文件、 配置文件、 帮助文件

一般而言:
​ 二进制 、库文件 : 都是可执行文件(其中库文件不能独立执行,只能被调 用时执行)
​ 配置文件、 帮助文件: 可被查看内容的文件

多数系统自带的程序文件都放在 : /bin , /sbin , /usr/bin ,/usr/sbin , /usr/local/bin , /usr/local/sbin 下
​ 普通命令 : /bin , /usr/bin , /usr/local/bin
​ 管理命令 : /sbin , /usr/sbin, /usr/local/sbin

共享库: /lib , /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
​ 32bits的库: /lib , /usr/lib , /usr/local/lib
​ 64bits的库 :/lib64 , /usr/lib64 , /usr/local/lib64

注意: 并非所有命令都有一个在某个目录与之对应的可执行程序文件

2.命令的类型及使用帮助

命令可分为两类:
​ 由shell程序自带的命令 : 内置命令
​ 独立的可执行程序文件,文件名即是命令名 : 外部命令

shell程序是独特的程序,负责解析用户提供的命令(由环境变量来决定):
​ 环境变量:
PATH: 从哪些路径来查找用户键入的命令字符串所对应的命令文件:
​ echo $PATH(查找次序从左到右)

查看命令类型:
​ type COMMAND

获取命令的使用帮助:
​ 1.内部命令: help COMMAND
​ 外部命令:
​ 1.命令自带简要格式的使用帮助
​ COMMAND --help
​ 2.使用手册:manual
​ 位置: /usr/share/man
​ man COMMAND
​ SECTION:
​ NAME : 功能性说明
​ SYNOPSIS : 语法格式
​ DESCRIPTION : 描述
​ OPTIONS : 选项
​ EXAMPLES : 使用示例
​ AUTHOR : 作者
​ BUGS : 报告程序bug的方式
SEE ALSO : 参考
​ …

​ SYNOPSIS 中 :
​ [ ] : 可选内容
​ <> : 必须提供的内容
​ a|b|c : 多选一

​ 2.man命令打开手册以后的操作方法:
​ 翻屏:
​ 空格键:向文件尾部翻屏;
​ b键: 向文件首部翻一屏;
​ 回车键:向文件尾部翻一行;
​ k键:向文件首部翻一行;
​ G键:跳转至最后一行;
​ ?G:跳转至第几行; eg: 2G 跳到第二行

​ 文本搜索:
​ / keyword : 不区分大小写,从文件首部到尾部一次查找
​ ?keyword: 从尾部向首部查找
​ n : 与查找命令方向相同;
​ N:与查找命令方向相反;

​ 3.info COMMAND : 获取命令的在线文档

​ 4.很多应用程序会自带帮助文档: /usr/share/doc/APP-VERSION
​ README : 程序的相关信息
​ INSTALL : 程序的安装文档
​ CHANGES : 版本迭代时的改动信息

​ 5.主流发行版官方文档

​ 6.程序官方文档:官方站点的"Document"

​ 7.搜索引擎
​ Google
​ keyword filetype:pdf 搜出来的就是PDF的了
​ keyword site:domain.tld 按照站点搜索
​ …

2 .常用快捷键

​ 1.回到上次的目录 : “cd -”
​ 2.调用上一条命令的最后一个参数:
​ 1 . “ESC .” ,不用同时按
​ 2 . 字符串: “!$”
​ 这个可以在前面目录比较长,输入命令错了的时候用
​ 3.在文本里查找关键字:
​ / keyword : 不区分大小写,从文件首部到尾部一次查找
​ ?keyword: 从尾部向首部查找
​ n : 与查找命令方向相同;
​ N:与查找命令方向相反;
​ 4 . Ctrl+a : 跳转至输入的命令行首
​ Ctrl+e : 跳转至输入的命令行尾
​ Ctrl+l : 清屏 ,相当于clear

3.linux基础命令

centos7 :

​ 关机 : systemctl poweroff
重启 : systemctl reboot

—或者直接 poweroff / reboot

1 . ls -l : --long,长格式列表 ,即显示文件详细信息:
此时文件大小为 “字节"
-h : --human-readable : 对文件大小进行换算,换算后的结果可能非精确值

2 . echo -n :不进行换行
-e: 让转义符生效
​ \n :换行
​ \t: 制表符
单引号:强引用,变量引用不执行替换,输出的和输入的一样
双引号:弱引用,变量引用会被替换
​ 注意:变量引用的正则符号是 ${name}, 只是一般都没加大括号。

3 . 获取当前可用别名的定义: alias
​ 定义别名 : alias name=‘COMMAND’ ------只对当前shell有效
​ 撤销别名 : unalias name

4 . whereis [options] name
-b: 仅搜索二进制程序路径
​ -m: 仅搜索使用手册文件路径

5 . mkdir -p /usr/local/java
​ -p : 如果父目录不存在,自动创建父目录
​ -v : verbose ,显示详细过程
​ -m : MODE 直接给定权限

6 . stat file:显示文件的很多基础信息
​ access time 最后访问时间
​ modify time 最后修改时间(修改里面的内容,ls -l显示的这个时间)
​ change time 最后改动时间(更改文件属性,如chmod)

[root@weige ~]# stat songwei.sh 
  File: ‘songwei.sh’
  Size: 71        	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 67435863    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-10-05 13:06:01.504001124 +0800
Modify: 2018-09-24 11:09:30.739633485 +0800
Change: 2018-09-24 11:22:26.157700543 +0800

7 . cp命令 : 源文件 目标文件
​ 单源复制:
​ 如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中
​ 如果DEST存在:
​ 若DEST是非目录文件,则覆盖掉目标文件
​ 若DEST是目录,则会自动创建此文件,并复制源文件
​ 多源复制:
​ 如果DEST不存在: 错误
​ 如果DEST存在:
​ 如果DEST是非目录文件:错误
​ 如果DEST是目录:则分别复制每个文件到目标目录

[root@weige home]# cp /etc/{fstab,issue} ./123/ (两个一起复制)

常用选项:
​ -i :交互式复制,即覆盖之前提醒用户确认
​ -f :强制覆盖目标文件
​ -r/R : 递归复制目录
​ -d : 复制符号链接文件本身,而非其指向的源文件
​ -a : -dR --preserve=all ,archive, 用于实现归档
​ --preserve=
​ mode : 权限
​ ownership : 属主和属组
​ timestamps : 时间戳
​ context : 安全标签
​ xattr : 扩展属性
​ links : 符号链接
​ all : 上述所有属性

8 . rm 命令:
​ 危险动作:rm -rf /*
注意:生产环境中,所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站)

9 . 输出重定向
​ 标准覆盖输出重定向 “>”
​ 标准追加输出重定向 “>>”
​ 错误覆盖输出重定向 “2>”
​ 错误追加输出重定向 “2>>”
合并正常输出和错误输出
​ (1) &> 、&>>
​ (2)COMMAND > /path/to/somefile 2>&1
​ COMMAND >> /path/to/somefile 2>&1

10 . su命令 :switch user
​ 登录式切换: 会通过读取目标用户的配置文件来重新初始化,切换过去后 就到了目标用户的家目录了。
​ su - username 或 su -l username
​ 非登录式切换:不会读取目标用户的配置文件进行初始化
​ su username

4.Linux目录结构

/bin : 所有用户可用的基本命令程序文件
/sbin: 供系统管理使用的工具程序
/boot: 引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等
/dev: 存储特殊文件或设备文件
​ 设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/etc: 系统程序的配置文件,只能为静态,不能为二进制程序
/home: 普通用户家目录的位置,一般每个普通用户的家目录为/home/username
/lib: 为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
/lib64: 64位系统特有的存放64位共享库的路径
/media: 便携式设备挂载点,cdrom, floppy等
/mnt: 其他文件系统的临时挂载点
/opt: 附加应用程序(第三方应用)的安装位置:可选路径
/root: 管理员的家目录
/srv: 当前主机为服务提供的数据
/tmp: 为那些会产生临时文件的程序提供的存储目录,temporary files的简写
/usr: 全局共享的只读数据路径:
​ bin, sbin
​ lib, lib64
​ include: C程序头文件
​ share: 命令手册页和自带文档等架构特有的文件的存储位置
​ local: 另一层级目录
​ X11R6: X-window程序的安装位置
​ src: 程序源码文件的存储位置
/usr/local: 让系统管理员安装本地应用程序,也通常用来安装第三方程序
/var: 存储常发生变化的数据的目录

/proc: 虚拟文件系统,用于为内核及进程存储其相关信息,它们多为内核参数,例如net.ipv4.ip_forward ,虚拟为net/ipv4/ip_forward,存储于/proc/sys,因此其完整路径为/proc/sys/net/ipv4/ip_forward
/sys: sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,主要作用在于为管理Linux设备提供一种统一模型的接口

5.设置防火墙状态

centos 7 :

​ 临时关闭防火墙: systemctl stop firewalld.service

​ 永久关闭防火墙: systemctl disable firewalld.service

centos 6:

​ 临时关闭防火墙: service iptables stop

​ 设置防火墙开机不启动:chkconfig iptables off

6.设置脚本开机自启动

​ Linux开机启动时,有先后顺序,内核模块启动初始化后,会先根据启动级别到 /etc/rc.d/rcX.d 中确定,需要启动哪些程序,然后到 /etc/rc.local/init.d 中找到对应的启动脚本,执行;

​ 所以对应的设置程序开机自启动一般有两种方法:

1. 在init.d 添加服务

​ 把服务启动脚本放在init.d里,通过 /etc/rc.d/rcN.d/里对应的开机启动项链接过去,
然后使用

​ chkconfig --add servicename 添加开机服务

​ chkconfig --level 35 servicename on 添加启动级别

​ chkcoinfig --level 35 servicename off 关闭开机启动

2. 在 rc.local 添加启动路径

​ 对应的run-level脚本启动后,再执行 /etc/rc.d/rc.local, 在里面直接再最后面添加需要执行程序的 路径 就行,同时需要注意,确保 /etc/rc.d/rc.local具备可执行权限 ,其中就/etc/rc.local/具备可执行权限是不行的 , 这只是个软链接

7. 设置定时任务

crontab -l -----查看现有定时任务

crontab -e -----设置定时任务

8.Linux用户和组

https://blog.csdn.net/czlan91/article/details/72465730

1 . 用户类别

a.超级管理员
b.普通用户
​ 系统用户
​ 登录用户

​ 用户标识:UserID (UID)
​ 通常使用16bits二进制数字表示(0-65535)
​ a.超级管理员的用户标识:0
b.普通用户:1-65535
​ 系统用户:1-499(Centos6)、1-999(Centos7)
​ 登录用户:500-60000(Centos6)、1000-60000(Centos7)
​ 系统用户:Linux中为了能让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登录系统。

linux通过名称解析库“/etc/passwd”文件解析用户名与用户ID之间的对应关系。
/etc/passwd:用户信息库
name:password:UID:GID:GECOS:directory:shell
​ name : 用户名
​ password :可以使加密的密码,也可以是占位符x;
​ UID : 用户标识
​ GID :用户所属主组的ID号
​ GECOS :注释信息
​ directory : 用户的家目录
​ shell : 用户的默认shell , 登录时默认shell程序

2.组类别

​ 在Linux中,用户组分类方式有三种:
​ a. 管理员组、普通用户组(系统用户组,登录用户组)
b. 用户的基本组(主组)、用户附加组
c. 私有组(组名同用户名,且只有一个用户)、公共组

用户组标识:group id (GID)
​ a. 管理员的用户组标识:0
b. 普通用户组:1-65535
系统用户组:1-499(Centos6)、1-999(Centos7)
登录用户组:500-60000(Centos6)、1000-60000(Centos7)

linux通过名称解析库“/etc/group”文件解析组名与组ID之间的对应关系。
/etc/group:组的信息库
group_name:passwd:GID:user_list
user_list:该组用户的成员;以此组为附加组的用户的用户列表

3.密码认证

​ 通过比对 /etc/shadow 事先存储的,看与登录时提供的信息是否一致
(/etc/gshadow 组密码)

​ 加密算法:
​ 对称加密:加密和解密使用同一个密码
​ 非对称加密:加密和解密使用一对秘钥
​ 公钥:public key
​ 私钥 : private key
​ 单向加密:只能加密,不能解密:提取数据特征码
​ 定长输出:不论密码多大多复杂,提取出来的密码大小一样
​ 雪崩效应:密码中某一个字符改变,那么整个加密后的密钥都会改变

/etc/shadow:用户密码
​ 用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:非活动期限:过期期限:保留字段
​ 加密的密码:使用$分隔,第一个段表示使用的加密算法,第二个段表示 添加的salt。第三段表示加密后的密码.

4. 新增用户

​ useradd [选项] testuser ---------创建testuser用户
​ -u UID :指定UID,如果不指定则默认上一个UID+1
​ -g :指定基本组ID,此组要事先存在,否则默认生成跟自己同名的组
​ -G :指明用户所属的附加组,多个组之间用逗号隔开
​ -c :指明注释信息
​ -d :指定用户的家目录(通过复制/etc/skel目录并重命名实现,指定的家目录如果实现存在,则不会为用户复制环境配置文件)
​ -s :指定用户的默认shell, 可用的所有shell列表在/etc/shells文件中
​ -r 或 --system:创建系统用户

​ useradd -g groupname usernamee --------将用户添加进组

​ useradd -D:显示创建用户的默认选项配置;
​ useradd -D 选项:修改默认选项的值;
​ 修改的结果保存于/etc/default/useradd文件中;可以直接修改此文件来实现。

​ 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

​ passwd testuser ---------修改testuser用户密码

​ userdel testuser ---------删除testuser用户
​ -r : 删除用户时一并删除其家目录

5 . 新增用户组

​ groupadd testgroup --------创建testgroup组
​ -g GID:指定GID,如果不指定默认是上一个组的GID+1
​ -r :创建系统组
​ eg : groupadd -r -g 567 testgroup

​ groupmod testgroup -------修改组属性
​ -g GID : 修改GID
​ -n new_name : 修改祖名

​ groupdel testgroup ---------删除testgroup组

​ groups username ---------查看用户所在的组

6. 普通用户sudo免密

​ 编辑 /etc/sudoers ,找到下面一行,在root下面添加一行,如下所示:

chmod u+w /etc/sudoers
echo “gc-user ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers
chmod u-w /etc/sudoers

7. 密码过期时间

1. 修改全局策略,使后续创建的账号拥有永久权限

​ vim /etc/login.defs
​ PASS_MAX_DAYS 99999
​ PASS_MIN_DAYS 0
​ PASS_MIN_LEN 5
​ PASS_WARN_AGE 7
​ 找到这个,其中PASS_MAX_DAYS 99999就是永久有效啦

2. 直接使用chage

​ chage -l username -------查看密码状态

​ chage -M 99999 username ---------设置成永久有效

​ 但是这个方法在公司使用不了,不知道问什么

3. 修改shadow文件

​ 对于已经添加的账户, 如果使用chage修改不了,可以直接修改 /etc/shadow 文件,其中已分号隔开,将第四列改为 0 , 第五列改为99999 ,强制保存 wq! ,并退出.

9.加载磁盘

fdisk -l ------查看现在磁盘信息,可以看到有没有被挂载上

df -h -------看现有的分区

命令说明

mount -----挂载各种文件系统

file -------判断文件类型

parted ------适合与MBR、GPT两种模式的分区命令

fdisk ----用于磁盘分区,是Linux的磁盘分区表操作工具

mkfs -----磁盘格式化

fsck ------fsck用来检查和维护不一致的文件系统

1.对磁盘进行分区

fdisk /dev/sdb

工作中把一个磁盘分一个区,所以前面两步是直接回车的,然后,依次输入 n 创建分区 —> p 查看分区 —> w保存

参数说明:

Command (m for help): m
Command action
a toggle a bootable flag #设定可启动标记
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #删除一个分区
l list known partition types #各分区类型所对应的ID
m print this menu #菜单
n add a new partition #添加一个分区
o create a new empty DOS partition table
p print the partition table #显示该磁盘下的当前分区信息
q quit without saving changes #不保存退出
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit #保存退出

********还有个要划分逻辑卷、物理卷、卷组的,忘了,先记下来,要研究

2.磁盘格式化

mkfs.ext3 /dev/sda1 将磁盘格式化为ext3类型

3.挂载磁盘

mount /dev/sda1 /somename

df -h 查看是否挂载成功

4.设置磁盘开机自动挂载

vim /etc/fstab —在最后一行添加如下

/dev/sdc1(磁盘分区) /disk/disktwo(挂载目录) ext3(文件格式)defaults 0 0

5.Linux-LVM逻辑卷管理 (待继续研究)

​ 由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理。由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数据的情况。

​ LVM(Logic Volume Manager)是逻辑卷管理的简称。它是Linux环境下对磁盘分区管理的一种机制。对于其他的的UNIX(AIX/HP/SUM)操作系统,以及Windows系统也有类似的磁盘管理软件。LVM管理的方式非常简单,就是通过将底层的物料磁盘抽象并封装起来,然后以逻辑的方式呈现给上层应用。

​ 逻辑卷管理的3个概念:

PV(physical volume) 物料卷

VG (Volume Group) 卷组

LG (Logical volume)逻辑卷

​ 【过程】

(1)挂载物理磁盘;

(2)将物理磁盘初始化为物理卷PV;

(3)将一个或多个物理卷PV转变为一个卷组VG。

(4)从VG中创建逻辑卷。

(5)根据实际需要将逻辑卷挂载使用。

(6)根据需要对磁盘or逻辑卷进行扩展和缩减。

PE(Physical Extend) 物理扩展

其实格式化物理卷的过程就是LVM将底层的磁盘划分为一个一个PE的过程,PE默认大小为4M,可以说是LVM管理的基本单位。

命令 说明
pvcreate pvcreate 设备全路径名,物理卷的创建
pvmove 物理卷的删除
vgscan 检测系统中所有磁盘
vgck vgck [卷组名]检测卷组中卷组描述区域信息的一致性。
vgdisplay vgdisplay [卷组名] 显示卷组的属性信息
vgrename vgrename 原卷组名 新卷组名
vgchange #vgchange -a y|n [卷组名] //改变卷组的相应属性,是否可分配**#vgchange -l** 最大逻辑卷数 //卷组可容纳最大逻辑卷数**#vgchange -x y|n** [卷组名] //卷是否有效
vgexport 卷组的输入
vgimport 卷组的输出
pvs #显示PV的显示信息
vgcfgbackup vgcfgbackup [卷组名] //把卷组中VGDA信息备份到"/etc/vmconf"目录中的文件
vgcfgrestore vgcfgrestore -n [卷组名] 物理卷全路径名 //从备份文件中得到指定物理卷的信息
vgcreate 卷组创建
vgmove 卷组删除
vgextend 卷组扩展
vgreduce 卷组缩小
vgmerge 卷组合并
vgsplit 卷组拆分
vgs 显示VG简要信息
lvcreate 逻辑卷创建
lvremove 逻辑卷删除
lvextend 逻辑卷扩展
lvreduce 逻辑卷缩小
lvmdiskscan 检查所有的SCSI,IDE等存储设备
lvscan 检测逻辑卷的状态
lvdisplay 显示LV属性信息
lvchange 修改LV属性信息,-ay:标记LV为可用状态, -an:标记lv为不可用状态
lvs 显示LV 简要信息

LVM磁盘管理最常用的案例

01、创建PV、创建VG、创建LV

02、格式化LV并挂载文件系统使用

03、在线扩容,缩小文件系统

04、删除LV、删除VG、删除PV

05、使用总监

LVM添加顺序:PV–>VG–>LV

LVM删除顺序:LV–>VG–>PV

逻辑卷可在线扩展,但必须离线缩减,缩减很危险,缩减前进行备份。

扩展逻辑卷后文件系统也要扩容

缩减逻辑卷前要先缩减文件系统

5.设置时间同步服务

Linux系统启动时从硬件读取日期和时间信息,读取完后就不再与硬件相关联
​ date : 系统时钟
​ hwclock/clock: 硬件时钟
​ -s , --hctosys : 以硬件时间为准,把系统时间调整为和硬件时间一样
​ -w, --systohc : 以系统时间为准,把硬件时间调整为与系统时间一样

6.shell脚本学习

二:常用MySQL操作

1.新增MySQL用户,并分配权限

2.查询MySQL用户有哪些权限

3.修改客户端用户密码,设置密码永不过期

4.MySQL常用语句回顾

你可能感兴趣的:(工作总结,持续更新,持续更新)