1 其他远程网络命令
1.1 scp跨服务器数据拷贝
从本机拷贝数据到远程的服务器上
要求:必须知道对方的账户和密码,且具备相应的权限。
语法:scp [-r] 要拷贝的文件 用户名@主机ip:目标位置
例如:
scp /root/install.log root@192.168.89.128:/home
从远程服务器上拷贝数据到本机:
scp 用户名@主机ip:目标文件 本机位置
例如:
scp root@192.168.89.128:/home/install.log /root
1.2 ssh远程登录
登录远程服务器:
ssh {UserName}@Host_IP
例如:
ssh root@192.168.89.128
回车之后,如果首次访问,会提示是否继续连接。接下来要求输入远程服务器的密码。
2 免密码登录
免密码登录方式一:
免密码登录方式二:
Linux免密登录使用的RSA算法。
RSA本身是一种非对称加密算法,会生成公钥和私钥。
公钥 | 使用公钥对内容进行加密 | 天王盖地虎 |
---|---|---|
私钥 | 持有私钥的PC才能正常访问公钥加密的内容 | 宝塔镇河妖 |
只要持有私钥就能访问公钥加密的内容,这种事情本身就是存在风险的。一旦私钥丢失,那么服务器上的数据就存在被窃取的风险。
但是Linux生成公钥和私钥的时候支持对私钥证书文件添加密码。
2.1 证书的生成:
ssh-keygen
第一次提示:你的证书文件存放位置
第二次提示:对私钥加密,输入密码。如果不需要输入密码,直接回车。
第三次提示:私钥证书的密码确认操作。
证书文件会存放在当前账户的家目录下的隐藏目录".ssh"目录下,在该目录下会有以下4个文件:
id_rsa | 私钥 | 执行证书生成命令才会有 |
---|---|---|
id_rsa.pub | 公钥 | 执行证书生成命令才会有 |
known_hosts | 曾经访问过的服务器信息 | 每次ssh、scp、ssh-copy-id到远程服务器时就会保存记录到此文件中,以后再此访问该服务器时就不会再提示那一句"你确定要继续访问吗 yes/NO?" |
authorized_keys | 记录来访服务器的公钥文件内容 | 该文件会记录访问本机的远程服务器的公钥证书文件内容,只有对应的私钥才能进行验证。 |
2.2 证书注册:
将本机的公钥证书文件注册到远程服务器上,此后就可以使用私钥证书进行登录。
ssh-copy-id {UserName}@Host_IP
执行此命令,会要求输入远程服务器的对应账户的密码。
这一步就是向远程服务器注册本机的id_rsa.pub文件(公钥)内容。此后只有本机上与公钥文件共同生成的私钥才能够进行免密登录。
3 进程管理
3.1 概念
进程通俗来说,运行中的程序
程序被加载为进程的示意图:
1)用户执行程序。
2)程序加载到内存中。
a)给程序一个临时的pid;
b)查看执行的权限,如果用户没有执行权限,那么拒绝操作,如果有,开始加载程序执行的相关资料;
c)确认临时的PID;
3.2 静态查看进程:ps
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程.。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
命令格式:ps [选项]
命令功能:
用来显示当前进程的状态。
示例:
1)列出目前所有的正在内存当中的程序
#查看系统中所有的进程,使用BS操作系统格式(带CPU和内存信息)
[root@localhost ~]# ps -aux
#查看系统中所有的进程,使用Linux标准命令格式(带父ID)
[root@localhost ~]# ps -ef
2)ps -aux 命令说明
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
VSZ 进程使用的虚拟內存量(KB);
RSS 该进程占用物理内存(KB);
TTY 若为pts/0等,则表示由网络连接主机进程
stat 进程状态
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程)
START 該進程被觸發启动时间;
TIME 該进程实际使用cpu的时间;
COMMAND 命令的名称和参数;
3)ps -ef 命令说明
其中各列的内容意思如下:
UID :用户ID、但输出的是用户名
PID :进程的ID
PPID :父进程ID
C :进程占用CPU的百分比
STIME :进程启动的时间
TTY :该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
TIME:进程已经占用的CPU的时间
CMD :命令的名称和参数
4)ps 与grep 常用组合用法,查找特定进程
#查询sshd相关进程
ps -aux|grep sshd
3.3 终止进程:kill
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。
通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/top等工具获取进程PID,然后 使用kill命令来杀掉该进程。
# 等待执行完后并终止进程(不强制),这种方式如果程序死循环则无法退出
kill 进程号
# 强制终止进程
kill -9 进程号
示例:
1)查看指定进程,并终止进程
ps -aux | grep xxx
kill 查出来的指定进程号
2)查看指定进程,并强制终止进程
ps -aux | grep xxx
kill -9 查出来的指定进程号
3.4 实时监控进程:top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。
该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
命令格式:top
命令功能:
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。
示例:
1)显示进程信息
说明:前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
1)当前系统时间
2)系统运行时间
3)当前登录系统用户数
4)load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行,Tasks — 任务(进程),具体信息说明如下:
1)系统现在总进程数
2)处于运行中的进程数
3)处于休眠的进程数
4)处于停止状态的进程数
5)处于僵尸状态的进程数
第三行,cpu状态信息,具体属性说明如下:
5.9%us — 用户空间占用CPU的百分比。
3.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
90.4% id — 空闲CPU百分比0.0%
wa — IO等待占用CPU的百分比0.0%
hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.2% si — 软中断(Software Interrupts)占用CPU的百分比
第四行,内存状态,具体信息如下:
1)物理内存总量(32GB)
2)空闲内存总量(18GB)
3)使用中的内存总量(14GB)
4)缓存的内存量 (169M)
第五行,swap交换分区信息,具体信息说明如下:
1)交换区总量(32GB)
2)空闲交换区总量(32GB)
3)使用的交换区总量(0K)
4)缓冲的交换区总量(3.6GB)
第六行,空行。
第七行以下:各进程(任务)的状态监控,项目列信息说明如下:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
2)高亮显示当前运行进程
敲击键盘“b”(打开/关闭加亮效果)
3)进程字段排序
默认进入top时,各进程是按照CPU的占用量来排序的,敲击键盘“x”(打开/关闭排序列的加亮效果)
通过”shift + >”或”shift + <”可以向右或左改变排序列
4 查看内存情况
free:
可以查看系统内存和 swap 交换分区的使用情况,其输出和 top 命令的内存部分非常相似。
命令格式:free [选项]
其中:
选项如下:
-b:以字节为单位显示;
-k:以 KB 为单位显示,默认显示;
-m:以 MB 为单位显示;
-g:以 GB 为单位显示;
例如:
[root@localhost data]# free
total used free shared buff/cache available
Mem: 995892 143696 698852 7816 153344 682556
Swap: 2097148 0 2097148
其中:
taotal | 总计物理(swap)内存的大小 |
---|---|
used | 已使用物理内存(swap)的大小 |
free | 可用的物理内存(swap)大小 |
shared | 多个进程共享的内存总额 |
buff/cache | 磁盘的缓存大小 |
available | 可以被新应用程序使用的内存大小 |
一般free命令可以查看现在内存的使用量,此时大家需要注意一个问题就是交换区内存的使用,一般情况下交换区的内存都是不会使用的,除非物理内存已经被占满才会使用交换区内存,那么这个时候你就需要使用进程管理工具 ps 或者 top 来查看到底是谁占用了大量内存资源,然后通过 kill命令来杀死进程,释放资源(当然杀死之前需要判断是否为重要进程!)
5 如何查看端口的占用情况
在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况。
比如Tomcat使用8080端口,但当再次启动Tomcat 时,却发现此端口正在使用。
此时需要查看究竟哪个进程占用了端口,来决定进一步的处理方法。
#根据端口号,找到对应的执行进程
netstat -apn | grep 端口号
#再根据进程,找到对应的进程执行信息
ps -aux | grep 进程号
# 如果命令不存在,需要安装
yum install -y net-tools.x86_64
6 硬盘管理
6.1 查看系统中磁盘使用情况
df 命令,用于显示 Linux系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。
命令格式:df -h
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 1.4G 17G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 497M 155M 343M 32% /boot
tmpfs 98M 0 98M 0% /run/user/0
其中:
文件系统:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
容量:此列表示文件系统的总大小,按照习惯单位显示;
已用:表示用掉的硬盘空间大小;
可用:表示剩余的硬盘空间大小;
已用%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;
挂载点:文件系统的挂载点,也就是硬盘挂载的目录位置。
6.2 统计文件或目录所占磁盘空间大小
如果想看指定目录或指定文件文件所占磁盘空间大小,那就用du
命令格式:du -s -h 文件或目录
其中:
-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量;
# 查看 /root 目录所占空间大小
du -s -h /root
# 查看 /root/ip_file 文件所占空间大小
du -s -h /root/ip_file
7 linux的用户与用户组
7.1 概述
Linux是一个多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。为了让系统更加安全,可以针对文件数据设置不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限。比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理.另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组
说白了用户组就是对linux中同一类对象进行统一管理一种技术手段,将同一类用户放到一个组中去,封装成一个更大的整体;
就好比 同一类学生封装到一个班级里面,学生就是用户,班级就是组;对班级进行操作其实就是对这个班级的所有学生的操作;
7.2 用户与组的关系
用户和用户组的对应关系有:一对一、一对多、多对一;下图展示了这种关系:
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
7.3 User, Group 及 Others
根据上面讲的用户与用户组的关系,可以将权限分为三种:
1)所有者权限(User)
2)属组权限(Group)
3)其他人权限(others)
下面举例说明:
其中:
天神:root 用户,无所不能。
王大毛家:某个用户组
王大毛:某个用户组中的用户
王大毛房间的所有者是王大毛,里面的东西,其他人不能乱动,表示为所有者权限 (User)。
王大毛家内公共区域三兄弟可以共享,表示为属组权限(Group)。
对于王大毛来说,张小猪就不是他们家的人,表示为其他人权限(others)。
7.4 linux的用户管理
创建一个用户的时候,默认情况下,会为其创建一个同名的用户组
执行 :
[root@localhost ~]# cat /etc/passwd
是的,没有错,不要怀疑,这个就是查看用户信息的文件 叫 passwd
内容如下
内容说明 :
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
用户名:
是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。
口令:
一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
用户标识号:UID
用户标识号(User ID),是一个整数,系统内部用它来标识用户。
0是系统管理员账号,1-999是系统保留账号,1000+即一般账号。useradd 命名默认生成UID=1000。
组标识号:GID
GID:用户组标识号(Group ID),是一个整数,系统内部用它来标识用户组。
注释性描述:
字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。
主目录:
也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
登录Shell:
用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。
7.4.1 创建用户:
语法:useradd [选项] {UserName}
选项:
-c | 指定一段注释性描述 |
---|---|
-d 目录 | 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。 |
-g 用户组 | 指定用户所属的主用户组。 |
-G 用户组,用户组 | 指定用户所属的附加组。 |
-s Shell程序 | 指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户。 |
-u 用户ID | 指定用户的用户号 |
#添加用户tom
useradd tom
#添加用户jerry并指定家目录为/hainiu/jerry 主组为root,附加组为tom和adm
useradd -d /hainiu/jerry -g root -G tom,adm jerry
#添加用户test1指定shell程序为/bin/sh 用户id为80000
useradd -s /bin/sh -u 80000 test1
#添加用户test2 指定shell程序为/sbin/nologin
useradd -s /sbin/nologin test2
7.4.2 修改用户
语法:usermod [选项] {UserName}
选项:
-c | 指定一段注释性描述 |
---|---|
-d | 目录 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。 |
-g 用户组 | 指定用户所属的用户组。 |
-G 用户组,用户组 | 指定用户所属的附加组。如果想要在原有的基础上追加附加组,使用-aG的方式。 |
-s Shell文件 | 指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户。 |
-u 用户号 | 指定用户的用户号 |
#修改test1的uid为9000
usermod -u 9000 test1
#修改jerry的附加组为test,和test1
usermod -G test,test1 jerry
#给jerry追加附加组
usermod -aG root,adm jerry
#修改test2的shell程序为/bin/bash
usermod -s /bin/bash test2
7.4.3 删除用户
语法:userdel [选项] {UserName}
选项:
-r | 删除账户的同时删除该账户的家目录 |
---|---|
7.4.4 密码管理
passwd 可以不跟选项、用户名,默认是修改自己的帐号密码。
修改他人密码,必须是root用户
普通账户,只能修改自己的密码。
管理员修改他人的密码,不需要满足密码策略。
普通账户修改密码时,必须满足密码安全策略。
语法:passwd [选项] {UserName}
选项:
-l | 锁定账户 |
---|---|
-u | 解锁账户 |
-d | 删除密码 |
管理员修改他人密码:
passwd {UserName}
修改自己的密码
passwd
案例:
#锁定zhangsan账户
passwd -l zhangsan
#解锁zhangsan账户
passwd -u zhangsan
#删除zhangsan账户密码
passwd -d zhangsan
案例中,锁定账户和删除账户密码都是可以达到不允许账户远程登录的效果。
7.4.5 用户身份切换
su {UserName} | 表示切换用户之后,依然停留在当前目录 不切换环境变量 |
---|---|
su - {UserName} | 表示切换用户之后,去到该用户的家目录 并切换环境变量 |
8 linux用户组操作
因为用户组与用户是一对多的关系,用户肯定是要从属于某个组的,所以我们先从用户组操作起来
8.1 查询用户组
8.1.1 用户组信息的查询
执行 :
#cat 命令,查看某个文件的内容 /etc(配置文件目录)/group(配置文件)
[root@localhost ~]# cat /etc/group
用户组的所有信息都存放在/etc/group文件中。
此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
组名:口令:组标识号:组内用户列表
具体解释:
组名:
组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:
口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*,有口令默认是x。
因为涉及到对组的管理所以linux的组也是有自己的密码的
组标识号 主键ID(可以重复的):
组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表:
是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
8.2 添加、修改,删除用户组
# 添加用户组
groupadd group1
groupadd group2
# 查看用户组文件,能看到这两个组
cat /etc/group
#修改用户组
groupmod -g 15000 ghoup3
# 删除用户组
groupdel group1
# 注意:删除用户组时,用户组必须存在,如果有组中的任一用户在使用中的话,则不能删除。
# 查看用户组文件,只能看到group2
cat /etc/group
9 权限
9.1 权限介绍
在Linux系统对于权限的设定非常的敏感,如果某个用户执行一个操作时,提示权限不足,那么根据Linux系统的权限设定的思想(没有权限绝对不会睁一只眼闭一只眼),就能够判断出该用户不具备此文件的执行权限。
在Linux系统中,有以下的权限表示。业内人士称之为:
- 逻辑权限
- 物理权限
- 普通用户的root的权限。
逻辑权限:
在Linux系统中不管是文件还是目录。(在Linux系统中,将所有的东西都视为文件。)都有固定权限表示。
例:
drwxr-xr-x. 2 root root 4096 5月 13 15:27 home
-rw-r--r--. 1 root root 45537 5月 13 11:15 install.log
两个文件分别是:第一个是目录,第二个是普通文件
根据信息的第一个字母(文件类型)来查看,d表示该文件是一个目录文件,-表示该文件是一个普通文件。
后面每三个权限成为一组,每组中分别有三个权限:
字符 | 权限 | 数字 |
---|---|---|
r | 读 | 4 |
w | 写 | 2 |
x | 执行 | 1 |
除了第一个字母不参与权限的表示,其他的都为权限标识符。
每三个为一组,共有三组:
第一组 | 用户 | user |
---|---|---|
第二组 | 用户组 | group |
第三组 | 其他人 | other |
说明:Linux系统中,不管是什么系统,权限的标识符号的位置是不会发生任何的改变,也就是说,
第1个永远是文件类型,
第2-4(第一组)永远是读、写、执行,用户的权限,
第5-7(第二组)永远是读、写、执行,用户组的权限,
第8-10(第三组)永远是读、写、执行,其他人的权限。
如果某个文件权限标识为----------,那么则说明此文件不允许任何的读取、写入、执行
9.2 修改文件/夹的权限
chmod命令可以用来修改某个文件或文件夹的权限。
选项
-R | 递归处理 |
---|---|
修改文件/文件夹的权限时,可以使用字符权限,也可以使用数字权限。
案例:
touch test_1 # 当前文件的权限是-rw-r--r--
#将此文件的权限修改为----------
chmod 000 test_1
#为此文件,每组都增加一个读的权限
chmod 444 test_1
or
chmod +r test_1
# a=all,u=user,g=group,o=other
#为此文件的用户增加一个rw-,组增加一个r-x,其他人---。
chmod u+rw,g+rx test_1
or
chmod 650 test_1
#0表示没有权限
#?“:。chmod在修改文件权限的时候,哪个便捷用哪个方法。
比如:
如果要是给三组增加执行权限的时候,+x就数字计算要快。字符权限就比数字要便捷(不需要计算)
如果是为每组增加不同权限的时候,用数字比较便捷(书写便捷)。
9.3 物理权限
9.3.1 添加物理权限
修饰某个文件/夹不允许被修改。注意:不能给/ /tmp /dev /var 加保护
即便是root权限也不一定所有的文件都可以删
语法:chattr [选项] file/dir
选项:
i | 表示不能以任何方式进行文件/夹的修改,增加,删除 |
---|---|
a | 表示文件/夹只能追加,不能修改,删除 |
+ <属性> | 表示开启某文件/夹的权限 |
- <属性> | 表示关闭某文件/夹的权限 |
R | 表示递归处理。 |
案例:
touch big1902
chattr +i big1902 # 表示该文件不允许修改,删除,增加。
# 如果命令找不到,需要执行下载安装包
yum install e2fsprogs-1.42.9-19.el7.x86_64
touch big 1902_1
chattr +a big1902_1 # 表示该文件只允许追加内容,不允许删除和修改。
a、i的使用场景:
通常情况,log文件用a的属性。如果是cfg(配置文件)文件用i的属性。
9.3.2 查看文件的物理权限(属性)
语法:lsattr [选项] 文件/夹
选项:
R | 表示递归处理 |
---|---|
a | 表示查看所有文件的属性,包括隐藏 |
d | 显示目录的属性,而不是目录下的文件的属性 |
9.4 修改文件的所有者和属组
用于缺点文件归哪个用户以及哪个用户组所有。
用法:chown 所有者:属组 文件名
#修改 /opt/aaa 文件的所有者为bin
chown bin /opt/aaa
#修改 /opt/aaa 文件的属组为adm
chown :adm /opt/aaa
#修改 /opt/aaa 文件的所有者为root 属组为root
chown root:root /opt/aaa
9.5 普通用户的超级权限
sudo(SuperUser Do),它可以让普通用户执行root的权限。sudo可以限制用户执行部分root的权限。
sudo会记录用户执行过的每一条命令,便于查阅服务起出事之前的状态。
好处:
使用自己配置好的用户环境
不需要知道root密码,保证root的密码安全
可以限制用户执行有限的root权限
sudo执行的每条命令都会被记录,便于日后的日志审计,例如用户执行过高危操作命令。
设置tom用户具备root超级权限
使用sudo获取root权限执行
10 打包压缩与解压缩
压缩:
指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。
将多个文件(或目录)合并成一个文件,方便传递或部署。
在Linux系统中,文件的后缀名不重要,但是针对于压缩文件的后缀名是必须的,因为可以让其他的程序员根据文件的后缀名使用对应的算法进行解压。
Linux常见的压缩文件后缀名:
*.gz | gzip程序压缩的文件 |
---|---|
*.tar | tar命令打包的数据,并没有压缩过 |
*.tar.gz | tar程序打包的文件,并且经过 gzip 的压缩 |
10.1 gzip文件压缩与解压缩
语法:
# 不保留源文件的压缩
gzip 文件名
# 保留源文件的压缩
gzip -c 文件名 > 压缩文件名(.gz)
# 不保留压缩文件的解压缩
gzip -d 压缩文件名(.gz)
# 保留压缩文件的解压缩
gzip -cd 压缩文件名(.gz) > 解压后文件名
示例:
压缩不保留源文件
压缩保留源文件
不保留解压文件解压
保留压缩文件解压
10.2 tar 文件打包与解包
语法:
# 打包文件
tar -cvf 打包文件名(.tar) 要打包的文件名
# 查看打包文件
tar -tvf 打包文件名(.tar)
# 解包到指定目录
tar -xvf 打包文件名(.tar) -C 要解压的目录
示例:
单个文件打包
多个文件打包
解包
10.3 tar.gz文件压缩与解压缩
语法:
# 打包压缩文件
tar -czvf 压缩文件名(.tar.gz) 要打包压缩的文件名
# 查看压缩文件
tar -tzvf 压缩文件名(.tar.gz)
# 解压缩到指定目录
tar -xzvf 压缩文件名(.tar) -C 要解压的目录
示例:
打包并且压缩:
查看打好包并且压缩文件的信息
解压压缩好的tar包到指定的路径
11 包管理工具 之 RPM
RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。
优点:
1)RPM 内含已经编译过的程序与配置文件等数据,可以让使用者免除重新编译的困扰;
2)RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;
3)RPM 文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件;
4)由于软件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与卸载;
缺点:
1) 软件文件安装的环境必须与打包时的环境需求一致或相当;
2) 需要满足软件的相依属性需求;
3)卸载时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!
由于RPM只是记录依赖关系信息,但不是自动安装依赖软件
语法:
#安装一个包
rpm -ivh
#升级安装包
rpm -Uvh
#卸载一个包
rpm -e
#查询安装包
rpm -qa
实操:
#查询所有系统安装过的rpm包
rpm -qa|grep jdk
#安装dejagnu-1.4.2-10.noarch.rpm包
rpm -vih dejagnu-1.4.2-10.noarch.rpm
#删除dejagnu-1.4.2-10.noarch.rpm包
rpm -e dejagnu-1.4.2-10.noarch.rpm
安装和卸载时有依赖时就会报错
可以使用yum安装解决
12 用yum安装常用软件
12.1 yum 简介
yum 是一个在Fedora 和RedHat 以及SUSE 中的Shell 前端软件包管理器。
基于RPM 包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
机制:
1)yum有自己的仓库,也叫源;将RPM 里面的软件都下载到yum库里。
2)RPM提供了每个软件的信息及依赖关系, yum分析每个软件的信息及依赖关系,生成一个安装软件的清单。
3)当你要装某个软件的时候,它会根据清单,来先安装依赖,再安装自己。
所有的yum源都存放在/etc/yum.repos.d/目录下
默认的yum源是国外源,网速慢,需要修改yum源为国内的源。
yum命令格式:
yum [options] [command] [package ...]
options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
command:要进行的操作。
package操作的对象。
yum 常用命令:
1)列出所有可更新的软件清单命令:yum check-update
2)更新所有软件命令:yum update
3)仅安装指定的软件命令:yum install
4)仅更新指定的软件命令:yum update
5)列出所有可安裝的软件清单命令:yum list
6)删除软件包命令:yum remove
7)查找软件包 命令:yum search
8)清除缓存,并生成新的缓存命令:
yum clean all
yum makecache
12.2 配置阿里云 yum 源
1)安装sz rz工具,用于以后用rz sz上传下载文件
yum install -y lrzsz
2)下载 repo 文件
文件下载地址: http://mirrors.aliyun.com/repo/Centos-7.repo
3)用 rz 将下载的 Centos-7.repo 文件上传到Linux系统的某个目录下
4)备份并替换系统的repo文件
cp Centos-7.repo /etc/yum.repos.d/
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv Centos-7.repo CentOS-Base.repo
5)执行yum源更新命令
yum clean all
yum makecache
yum update -y
配置完毕。
13 Vim 编辑器
13.1 安装vim
# root 用户执行
yum install -y vim
13.2 vim 常用命令
按Esc 键进入一般模式:
执行复制和粘贴
# 复制光标所在行数据,粘贴到光标所在行的下一行
yy + p
# 复制光标所在行数据,粘贴到光标所在行的上一行
yy + P
# 复制包含光标所在行的3行数据, 粘贴到光标所在行的下一行
3yy + p
执行删除
# 删除光标所在行数据
dd
# 删除包含光标所在的3行数据
3dd
#删除光标所在处后面的字符
10 x
#删除光标所在处前面的字符
20 X
#进入文件的最后一行
G
#进入文件的第一行
gg
: 进入行命令模式
搜索和替换:
# 替换当前行,你的光标要定位到要替换的行
:s/目标/替换/g
#替换全文,光标不需要定位到要替换的行
:%s/目标/替换/g
:set nu 开启显示行号
:set nonu 关闭显示行号
一般模式
#从光标所在处插入数据
i
#从光标所在下一行插入
o