Linux基础必知必会(二)

2022-01-07 08:33:35 浏览数 (1)

文章目录

  • 一、Linux文件权限管理
  • 二、vi/vim编辑器讲解
  • 三、find命令讲解
  • 四、Linux常用的符号
  • 五、sudo权限管理
  • 六、Linux时间命令
  • 七、at命令
  • 八、Linux系统服务命令
  • 九、Linux文件压缩与解压
  • 十、Linux软件管理
  • 十一、crontab定时器

一、Linux文件权限管理

1、dr-xr-xr-x. 4 root root 4096 Jul 22 09:24 boot

  • 第一列:不同用户对boot文件可以做哪些操作
  • 第二列:文件的链接数
  • 第三列:文件归哪一个用户所有,通常称作文件的所有者
  • 第四列:文件归哪一个用户组所有,通常称作文件的所属组
  • 第五列:文件的大小,单位是字节。 1kb=1024byte, 1mb=1024kb
  • 第六列:文件的创建日期或者最后修改的日期
  • 第七列:文件的名称

2、Linux文件系统会根据用户对文件的操作权限分为三类

  • 文件的所有者(user)
  • 文件的所属组(group)
  • 其他用户(other)

3、d rwx r-x r-x

  • 第一字符表示文件的类型
    • “d” 表示是一个目录
    • “-” 表示是一个文件
    • “l” 表示是一个链接文件
  • 后面9个字符,每3个字符是一组,一共分3组
    • 第一组:描述的是文件的所有者对该文件拥有哪些操作权限
    • 第二组:描述的是文件的所属组用户对该文件拥有哪些操作权限
    • 第三组:描述的是其他用户对该文件拥有哪些操作权限
  • 权限代表的意义
    • “r” 表示拥有读权限,read的简拼
    • “w” 表示拥有写权限,write的简拼
    • “x” 表示拥有执行权限,execute的简拼
    • “-” 表示所对应的位置权限是没有的

4、修改权限的命令

  • 使用chmod命令修改文件的权限
  • chmod命令文件的所有者或文件的所属组用户以及root用户有权限使用
  • chmod u r file1 #给文件的所有者添加读权限
  • chmod g-w file1 #文件的所属组用户去掉写权限
  • chmod o x file1 #文件的其他用户添加执行权限
  • chmod a r file1 #给所有用户添加读权限
    • “u” -> 表示文件的所有者
    • “g” -> 表示文件的所属组用户
    • “o” -> 表示其他用户
    • “a” -> 表示所有用户

5、文件权限的数字表示法

  • “r” - 4
  • “w” - 2
  • “x” - 1
  • “-” - 0
代码语言:javascript复制
# 举例:
rwxrwxr-- 774
rwxrw-r-- 764
  • 使用数字法修改文件的权限
    • chmod 774 file1
    • chmod 764 file1

6、修改文件的所有者用户

  • 示例1:chown zhangsan file1
  • 示例2:chown root:root file1 #同时修改文件的所有者和所属组
  • chown命令只有root用户才有权限使用

7、修改文件的所属组

  • chgrp zhangsan file1
  • chgrp命令只有root用户才有权限使用

二、vi/vim编辑器讲解

1、功能类似于windows操作系统里的记事本,用于编辑文件

2、vi和vim的操作是一样的,vim只不过是vi的升级版本

3、vi编辑器有三种模式

  • 命令行模式(默认打开一个文件时,就是处于命令行模式)
  • 编辑模式(在命令行模式下,按下字母i就会进入编辑模式,在最底端显示"–INSERT–"字样。按esc退出编辑模式)
  • 最后行模式(在命令行模式下,按shift :就会进入最后行模式,在最底端显示":"字样)

4、命令行模式下的操作

  • 删除:连续按两下d字母,删除光标所在的这行内容
  • 撤销:按字母u撤销操作
  • 复制:连续按两下y字母,复制光标所在的这行内容
  • 粘贴:按字母p粘贴复制的内容
  • 剪切:连续按两下d字母,剪切光标所在的这行内容
  • 复制多行:使用复制命令之前,先按下要复制的行数
  • 删除多行:使用删除命令之前,先按下要删除的行数
  • 快速移动光标
  • 连续按两下g光标移动到文件头部
  • 按G(shift g)光标移动到文件末尾
  • 进入编辑模式
    • 按i进入编辑模式
    • 按A(shift a)进入编辑模式,并且光标移动到该行的末尾
  • 保存并退出:按shift zz

5、在编辑模式下的操作

  • 编辑模式和使用记事本编辑文件是一样的
  • 按Esc退出编辑模式

6、最后行模式下的操作

  • 显示行号:set nu 或 number
  • 文本替换:1,$s/nologin/666/g
    • 1 表示起始行
    • $ 表示末尾行
    • s 表示替换
    • /nologin 表示待替换的内容
    • /666 表示替换内容
    • /g 全部替换
  • 退出:q
  • 强制退出:q!
  • 保存并退出:wq
  • 退出最后行模式(进入命令行模式)
    • 按Esc键

三、find命令讲解

1、功能:根据搜索条件查找文件

2、根据文件名称搜索

代码语言:javascript复制
#命令格式:find [搜索范围] [-name -iname] 关键字
#示例1:#搜索根目录下,文件名是init的所有文件(注意:这里不是模糊搜索)
find / -name init	 	
#示例2:#搜索根目录下,文件名包含init的所有文件(模糊搜索)
find / -name *init*	
#示例3:#搜索根目录下,文件名以init开头的所有文件(模糊搜素)
find / -name init*	
#示例4:#搜索根目录下,文件名以init结尾的所有文件(模糊搜素)
find / -name *init	
#示例5:#搜索根目录下,文件名是init的所有文件(注意:严格区分大小写,忽略大小写使用-iname选项)
find /tmp -name init	
#示例6:##搜索根目录下,文件名是init的所有文件(注意:忽略大小写)
find /tmp -iname init	

3、根据文件大小搜索文件

  • 命令格式:find 搜索范围 文件大小(单位是数据块)
  • 单位数据块
    • 一个数据块大小是512字节
    • 假设我们要搜索大于100MB的文件
    • 1MB = 1024KB, 100MB = 102400KB
    • 1KB = 1024字节,512字节=文件块,1024字节=2个文件块,1KB = 2个文件块
    • 102400KB = 204800个文件块
    • 命令:find / -size 204800

4、根据文件类型搜索

代码语言:javascript复制
# 命令格式:find [搜索范围] [-type] [d(目录) 或 f(文件)]
#示例1:搜索根目录下,文件名包含init的所有文件,并且文件类型是目录
find / -name *init* -a -type d 
#示例2:#搜索根目录下,文件名包含init的所有文件,并且文件大于10MB
find / -name *init* -a -size  20480	

四、Linux常用的符号

1、| 管道符号

管道符号通常和grep命令一起使用

grep是过滤命令,可以筛选搜索内容

示例:

管道符号可以把左侧输出的内容传递给右侧的命令继续使用

2、> 输出重定向符号(覆盖)

  • 把原本要输出的内容进行重定向(比如写入到指定的一个文件里)
  • echo命令相当于其他编程语言里的print函数,输出调试
代码语言:javascript复制
# 示例1:
echo "Hello World" > /tmp/file1
# 示例2:#之前写入的Hello World会被覆盖
echo "My name is zhangsan" > /tmp/file1	

3、>> 输出重定向符号(追加)

代码语言:javascript复制
#示例:之前吸入的My name is zhangsan不会被覆盖,追加写入
echo "I'm 18 years old." >> /tmp/file1		

五、sudo权限管理

1、sudo权限管理是针对命令的

2、权限配置文件:/ect/sudoers

3、配置格式:用户名 操作主机=执行命令的用户身份 执行命令

  • 配置的示例:root ALL=(ALL) ALL
  • 示例1:zhangsan server1=(ALL) reboot

4、要想编辑/etc/sudoers配置文件,必须使用visudo命令打开这个配置文件,然后就可以编译了

5、演示赋予zhangsan用户重启计算机命令

代码语言:javascript复制
#配置信息:zhangsan	ALL=(ALL)	/usr/sbin/reboot
#使用su命令切换到zhangsan用户,
su - zhangsan
#命令重启计算机
sudo reboot

6、查看用户拥有哪些sudo命令

代码语言:javascript复制
sudo -l

7、查看命令的绝对路径

代码语言:javascript复制
which reboot

六、Linux时间命令

1、查看系统时间:date

2、修改系统时间:date -s “2019-07-23 14:43:00”

七、at命令

1、定时任务,执行一次之后命令就结束了

2、格式:at 执行任务的时间

3、举例:

代码语言:javascript复制
at 14:49
at> echo "hello world" > /tmp/at.txt
ctrl   d 结束输入

八、Linux系统服务命令

1、查看系统服务命令是否启动

代码语言:javascript复制
systemctl status [network(网卡服务) 或 atd(定时任务) 或 firewalld(防火墙)]

2、启动系统服务命令

代码语言:javascript复制
systemctl start [系统服务]

3、关闭系统服务命令

代码语言:javascript复制
systemctl stop [系统服务]

4、设置系统服务开机启动

代码语言:javascript复制
systemctl enable [系统服务]
systemctl enable firewalld	#开机启动防火墙服务

5、禁止系统服务开机启动

代码语言:javascript复制
systemctl disable [系统服务]
systemctl disable firewalld	#开机禁止启动防火墙服务

九、Linux文件压缩与解压

1、压缩和解压缩的命令

  • 压缩文件
    • gzip只能压缩文件,不能压缩目录
    • 格式:gzip 待压缩的文件
    • 示例:gzip file1
    • gzip压缩的时候,原文件不会保留
  • 解压文件
    • 格式:gunzip 待解压的文件
    • 示例:gunzip file1.gz

2、另一种压缩算法bzip2(作为了解就行了)

  • 压缩文件
    • 格式:bzip2 待压缩的文件
    • 示例:bzip2 file1
  • 解压文件
    • 格式:bunzip2 待解压的文件
    • 示例:bunzip2 file1.bz2 3、打包和解包命令
  • 打包就是把目录变成一个文件,没有任何压缩算法
  • 打包命令
    • 格式:tar -选项 待打包的文件
    • 示例:tar -cvf dir.tar dir
    • 注意:-f参数一定要放在最后
    • “-c” 打包
    • “-v” 显示过程
    • “-f” 签名档(打包后文件的名称)
  • 解包命令
    • 格式:tar -选项 解包路径
    • 示例1:tar -xvf dir.tar ./ #解压到当前目录
    • 示例2:tar -xvf dir.tar -C /opt/ #解压到其他目录,必须加-C(注意:C是大写的)
    • “-x” 解包

4、打包的同时进行压缩

代码语言:javascript复制
tar -zcvf dir.tar.gz dir

5、解包的同时进行解压缩

代码语言:javascript复制
tar -zxvf dir.tar.gz -C ./

十、Linux软件管理


1、CentOS系统的软件包格式为.rpm

2、linux有2种软件管理方式

  • rpm命令
  • yum命令 3、rpm命令的使用
  • 查看
    • 示例:rpm -qa | grep ‘python’ #查看系统是否有安装python软件
  • 安装
    • 示例:rpm -ivh /media/Packages/zlib-devel-1.2.7-17.el7.x86_64.rpm
  • 卸载
    • 示例:rpm -e --nodeps zlib-devel-1.2.7-17.el7.x86_64

4、yum命令的使用

  • 使用yum命令的前提,保证网络是畅通的,属于在线安装软件
  • 查看
    • 示例:yum list | grep ‘python’
  • 安装
    • 示例:yum install -y lrzsz
  • 卸载
    • 示例:yum remove -y lrzsz

5、我们通常使用yum安装软件,使用rpm -e --nodeps 卸载软件

十一、crontab定时器

1、crontab是周期性定时任务

2、在使用之前需要把crond服务开启

  • 检查是否已经开启
代码语言:javascript复制
systemctl status crond
  • 如果没开启,则需要开启此服务
代码语言:javascript复制
systemctl start crond

3、crontab命令的参数

  • -u 可以指定某一个用户执行此任务,通常不需要加
  • -e 编辑定时任务
  • -l 查看当前有哪些定时任务
  • -r 删除定时任务,注意:会把所有定时任务全部删除

4、一个简单的定时任务案例

代码语言:javascript复制
* * * * * echo hello > /tmp/crontab.txt

5、定时任务时间解读

如果时间是时间段,可以

使用横杠(-)来表示一段连续的时间;

使用(,)表示若干不连续的时间;

使用星号(*)表示所有的时间;

使用除号(/)表示间隔时间。

6、定时任务练习题

代码语言:javascript复制
10 21 * * * 命令			每天的21点10分执行命令
0 5 * * 1 命令			每周一的凌晨5点0分整执行命令
30 4 15,16 * * 命令		每月15号和16号的凌晨4点30分执行命令
*/5 4 * * * 命令			每天凌晨4点,每隔5分钟执行一次命令
0 4 * * 1-5 命令			每周一到周五的凌晨4点0分执行命令
0 0 1,15 * 1 命令		每月1号和15号,每周1的0点0分都会执行命令

7、删除某一个定时任务,使用crontab -e打开定时任务,然后使用dd删除保存即可

8、纠正虚拟机时间sudo date -s “2019-07-26 14:27:10”

上一篇:《Linux基础必知必会(一)》

0 人点赞