【linux】基础知识及命令

linux系统入门级命令

在这里插入图片描述

linux系统目录

一级目录功能(作用)
/bin/存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/设备文件保存位置
/etc/配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
/lib/系统调用的函数库保存位置
/media/挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清理

FHS 针对根目录中包含的子目录仅限于上表,但除此之外,Linux 系统根目录下通常还包含下面几个一级目录。

一级目录功能(作用)
/lost+found/当系统意外崩溃或意外关机时,产生的一些文件碎片会存放在这里。在系统启动的过程中,fsck 工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如,/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录
/proc/虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的…
/sys/虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息

切换用户

# su - root
Password:123456
[root@localhost ~]# 切换成功

扩展:-横杠作用是什么?答:-横杠代表切换用户的同时,切换用户的家目录

uname命令

[root@server01 ~]# uname -a
Linux server01 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
选项说明:
-a :all缩写,代表显示所有信息,获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)

查看系统发行版本

[root@server01 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

ls命令

-l:以长格式显示,显示详细信息
-h:提供易读的容量单位(K、M等)
-d:显示目录本身(而不是内容)的属性
-A:显示所有内容包含隐藏数据
-R:递归显示内容

pwd命令

主要功能:pwd=print working directory,打印当前工作目录(告诉我们,我们当前位置)

cd命令

主要功能:cd全称change directory,切换目录(从一个目录跳转到另外一个目录)

clear命令

主要功能:清屏
快捷键 ctl+L

reboot命令

主要功能:立即重启计算机

shutdown命令

主要功能:立即关机或延迟关机
在Linux系统中,立即关机除了使用shutdown -h 0以外还可以使用halt -p命令

# shutdown -h 0或now
# shutdown -h 0
# shutdown -h now
选项说明:
-h :halt缩写,代表关机

延迟关机基本语法:
# shutdown -h 分钟数
代表多少分钟后,自动关机

光标一直不停的闪,取消关机
# 按Ctrl + C(CentOS6,中断关机。CentOS7中还需要使用shutdown -c命令)
# shutdown -c

type命令

主要功能:主要用来结合help命令,用于判断命令的类型(属于内部命令还是外部命令)
type 命令
内部命令:命令 is a shell builtin
外部命令:没有显示以上信息的就是外部命令

history命令

主要功能:显示系统以前输入的前1000条命令

hostnamectl命令

主要功能:用于设置计算机的主机名称(给计算机起个名字),此命令式CentOS7新增的命令。

  • Centos7中主机名分3类,静态的(static)、瞬态的(transient)、和灵活的(pretty)。
    ① 静态static主机名称:电脑关机或重启后,设置的名称亦然有效
    ②瞬态transient主机名称:临时主机名称,电脑关机或重启后,设置的名称就失效了
    ③ 灵活pretty主机名称:可以包含一些特殊字符

CentOS 7中和主机名有关的文件为/etc/hostname,它是在系统初始化的时候被读取的,并且内核根据它的内容设置瞬态主机名。

更改主机名称,让其永久生效?① 使用静态的 ② 改/etc/hostname文件

① 瞬态主机名称(临时设置)

# hostnamectl --transient set-hostname 主机名称
主机名称 建议遵循 FQDN协议(功能+公司域名)
web01.itcast.cn
web02.itcast.cn

② 静态主机名称(永久生效)

# hostnamectl --static set-hostname 主机名称
温馨提示:--static也可以省略不写

③ 灵活主机名称(主机名称可以添加特殊字符)

# hostnamectl --pretty set-hostname 主机名称(包含特殊字符)

date

基本语法:

date +"时间格式"
%F : 年--%T : 小时:分钟:秒
%Y : Year,%m : month,%d : day,%H : Hour,小时
%M : Minute,分钟
%S : Second,

基本语法:

date -s "年-月-日 小时:分钟:秒"

案例:把当前系统时间设置为2020-04-10

date -s "2020-04-10"

案例:获取计算机的系统时间

date

案例:获取年月日信息

date +""

ntpdate手工同步时间

如果时间错乱了,没有关系,只需要使用ntpdate手工重置一下即可。
国内时间ip地址池

ntpdate cn.ntp.org.cn

别名

在这里插入图片描述

Linux文件管理

目录创建

mkdir 目录名称

主要功能:就是根据目录的名称创建一个目录

mkdir -p递归创建目录

-p:递归创建,从左边的路径开始一级一级创建目录,直到路径结束

使用mkdir同时创建多个目录

mkdir 目录名称1 目录名称2 目录名称3 …

目录删除(必须是空目录)

rmdir移除空目录

rmdir 目录名称
rmdir = remove directory,移除目录

rmdir -p递归删除空目录

rmdir -p 目录名称1/目录名称2/目录名称3/…
主要功能:从右向左一级一级删除空目录

使用rmdir同时删除多个空目录

rmdir 目录名称1 目录名称2 目录名称3 …

文件创建

touch创建文件

touch 文件名称
主要功能:在Linux系统中的当前目录下创建一个文件

使用touch命令同时创建多个文件

touch 文件名称1 文件名称2 文件名称3 …

{1…5}根据序号同时创建多个文件

touch 文件名称{开始序号…结束序号}
含义:
根据提供的开始序号~结束序号,一个一个创建文件

dd扩展命令

基本语法:

dd if=/dev/zero of=文件名称 bs=1M count=1

选项说明:
if代表输入文件
of代表输出文件
bs代表字节为单位的块大小。
count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节。

主要功能:在Linux操作系统中,生成某个大小的测试文件!

案例:使用dd创建一个1M大小的sun.txt文件

dd if=/dev/zero of=moon.txt bs=1M count=1

案例:使用dd创建一个5M大小的moon.txt文件

dd if=/dev/zero of=moon.txt bs=5M count=1

if = input file
of = output file

文件删除

普通删除

rm [选项] 文件或文件夹的名称
选项说明:
-r :针对文件夹,代表递归删除,先把目录下的所有文件删除,然后在删除文件夹
-f :强制删除,不提示,初学者一定要慎重!!!

扩展:rm -rf /*,一定要慎重

rm -rf /* => 代表删除根目录下的所有文件(如果没有备份,恢复的几率不高)
rm :删除
-r :递归删除(无论文件夹是否为空)
-f :强制删除不提示
/ :代表根分区
* :所有

复制操作

cp复制操作

cp [选项] 源文件或文件夹 目标路径
选项说明:
-r :递归复制,主要针对文件夹
cp readme.txt /tmp/

cp复制并重命名文件

cp readme.txt /tmp/readme.txt.bak

cp复制文件夹到指定路径

cp -r 源文件夹名称 目标路径/
cp -r shop /tmp/

剪切操作

mv 源文件或文件夹 目标路径/
mv = move,剪切、移动的含义
mv shop /usr/local/nginx/

重命名操作

mv 源文件或文件夹名称 新文件或文件夹的名称

scp命令

下载文件或目录
基本语法:

scp [选项] 用户名@linux主机地址:资源路径  linux本地文件路径
选项说明:
-r :代表递归操作,主要针对文件夹

案例:从10.1.1.17服务器下载/root路径下的video.mp4文件到本地的/root目录下

10.1.1.16:

# scp root@10.1.1.17:/root/video.mp4 ./
The authenticity of host '10.1.1.17 (10.1.1.17)' can't be established.
ECDSA key fingerprint is SHA256:Wcxibo2ZQulm6bV+jEakz8IniwFgE6CUHopCxYjexrI.
ECDSA key fingerprint is MD5:48:25:21:93:ef:2b:22:25:5f:95:39:56:0c:8e:ff:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.1.1.17' (ECDSA) to the list of known hosts.
root@10.1.1.17's password:123456

案例:从10.1.1.17服务器下载/root路径下的shop文件夹到本地的/root目录下

# scp -r root@10.1.1.17:/root/shop ./
root@10.1.1.17's password:123456

上传文件或目录
基本语法:

# scp [选项] linux本地文件路径 用户名@linux主机地址:远程路径
选项说明:
-r :递归操作

案例:把10.1.1.16服务器上的/root/video.mp4上传到10.1.1.17服务器的/root目录下

10.1.1.16:

scp /root/video.mp4 root@10.1.1.17:/root/

案例:把10.1.1.16服务器上的/root/shop文件夹上传到10.1.1.17服务器的/root目录下

10.1.1.16:

scp -r /root/shop root@10.1.1.17:/root/

打包压缩与解压缩

Linux打包操作

# tar [选项]  打包后的名称.tar  多个文件或文件夹
选项说明:
-c :打包
-f :filename,打包后的文件名称
-v :显示打包的进度
-u :update缩写,更新原打包文件中的文件(了解)
-t :查看打包的文件内容(了解)

tar -cvf abc.tar a.txt b.txt c.txt

tar -tf以及tar -uf

tar -tf 打包后的文件名称
主要功能:查看tar包中的文件信息
tar -tf abc.tar

tar -uf 打包后的文件名称
u = update,更新,如果还想往tar包中更新或追加内容都可以通过-u选项
# touch d.txt
# tar -uf abc.tar d.txt
查看是否添加成功
# tar -tf abc.tar

如何把tar包中的文件释放出来

打包
# tar -cf  abc.tar  a.txt  b.txt  c.txt

打包 => 释放(-c 变成 -x)

释放
# tar -xf  abc.tar

打包并压缩

tar [选项]  压缩后的压缩包名称  要压缩的文件或文件夹
选项说明:
-cf :对文件或文件夹进行打包

-v  :显示压缩进度

-z	:使用gzip压缩工具把打包后的文件压缩为.gz
-j  :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J	:使用xz压缩工具把打包后的文件压缩为.xz

压缩速度:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz
100M   90M     80M	  70M

tar -zcf abc.tar.gz a.txt b.txt c.txt

对压缩包进行解压

*.tar.gz格式的压缩包
# tar -zxf 名称.tar.gz

*.tar.bz2格式的压缩包
# tar -jxf 名称.tar.bz2

*.tar.xz格式的压缩包
# tar -Jxf 名称.tar.xz

tar -zxf abc.tar.gz

zip压缩与解压缩

zip压缩

zip [选项] 压缩后的文件名称.zip  文件或文件夹
选项说明:
-r :递归压缩,主要针对的是文件夹

zip abc.zip a.txt b.txt c.txt

unzip解压缩

unzip 压缩包名称		=>     解压到当前目录
unzip 压缩包名称 -d 指定路径		=>   解压到指定路径下

VIM编辑器

☆ 命令模式

使用VIM编辑器时,默认处于命令模式。在该模式下可以移动光标位置,可以通过快捷键对文件内容进行复制、粘贴、删除等操作。

移动光标到首行或末行
移动光标到首行 => gg
移动光标到末行 => G
翻屏

向上 翻屏,按键:ctrl + b (before) 或 PgUp

向下 翻屏,按键:ctrl + f (after) 或 PgDn

向上翻半屏,按键:ctrl + u (up)

向下翻半屏,按键:ctrl + d (down)

快速定位光标到指定行

行号 + G,如150G代表快速移动光标到第150行。

复制/粘贴

① 复制当前行(光标所在那一行)
按键:yy
粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键

② 从当前行开始复制指定的行数,如复制5行,5yy
粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键

剪切/删除

① 剪切/删除当前光标所在行
按键:dd (删除之后下一行上移)
粘贴:p
注意:dd 严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。

② 剪切/删除多行(从当前光标所在行开始计算)
按键:数字dd
粘贴:p

③ 剪切/删除光标所在的当前行(光标所在位置)之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)

④ 剪切/删除光标所在的当前行(光标所在位置)之后的内容
按键:D + g (删除之后当前行之后的所有行会被删除)

撤销/恢复

撤销:u(undo)
恢复:ctrl + r 恢复(取消)之前的撤销操作【重做,redo】

☆ 编辑模式或输入模式

在命令模式下输入小写字母a或小写字母i即可进入编辑模式,在该模式下可以对文件的内容进行编辑

命令模式 + i : insert缩写,代表在光标之前插入内容
命令模式 + a : append缩写,代表在光标之后插入内容
在编辑模式中,直接按Esc,即可从编辑模式退出到命令模式。

☆ 末行模式

在命令模式下输入冒号:即可进入末行模式,可以在末行输入命令来对文件进行查找、替换、保存、退出等操作

  • 进入末行模式
    在命令模式下使用冒号:的方式进入。

  • 保存/退出

:w => 代表对当前文件进行保存操作,但是其保存完成后,并没有退出这个文件

:q => 代表退出当前正在编辑的文件,但是一定要注意,文件必须先保存,然后才能退出

:wq => 代表文件先保存后退出(保存并退出)

如果一个文件在编辑时没有名字,则可以使用:wq 文件名称,代表把当前正在编辑的文件保存到指定的名称中,然后退出

:q! => 代表强制退出但是文件未保存(不建议使用)

  • 查找/搜索
  • 切换到命令模式,然后输入斜杠/(也是进入末行模式的方式之一)
  • 进入到末行模式后,输入要查找或搜索的关键词,然后回车
  • 如果在一个文件中,存在多个满足条件的结果。在搜索结果中切换上/下一个结果:N/n (大写N代表上一个结果,小写n代表next)
  • 如果需要取消高亮,则需要在末行模式中输入:noh【no highlight】
  • 文件内容的替换
①只替换光标所在这一行的第一个满足条件的结果(只能替换1次)
:s/要替换的关键词/替换后的关键词   +  回车

② 替换光标所在这一行中的所有满足条件的结果(替换多次,只能替换一行)
:s/要替换的关键词/替换后的关键词/g		g=global全局替换

③ 针对整个文档中的所有行进行替换,只替换每一行中满足条件的第一个结果
:%s/要替换的关键词/替换后的关键词

④ 针对整个文档中的所有关键词进行替换(只要满足条件就进行替换操作)
:%s/要替换的关键词/替换后的关键词/g
  • 显示行号
:set nu
取消行号 => :set  nonu

☆ 可视化模式

进入到可视化模式

在命令模式中,直接按ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑ ↓ ← →方向键来选中需要复制的区块,按下y 键进行复制(不要按下yy),最后按下p 键粘贴
退出可视模式按下Esc

可视化模式复制操作

第一步:在命令模式下,直接按小v,进入可视化模式

第二步:使用方向键↑ ↓ ← →选择要复制的内容,然后按y键

第三步:移动光标,停在需要粘贴的位置,按p键进行粘贴操作

为配置文件添加#多行注释

第一步:按Esc退出到命令模式,按gg切换到第1行

第二步:然后按Ctrl+v进入到可视化区块模式(列模式)

第三步:在行首使用上下键选择需要注释的多行

第四步:按下键盘(大写)“I”键,进入插入模式(Shift + i)

第五步:输入#号注释符

第六步:输入完成后,连续按两次Esc即可完成添加多行注释的过程

为配置文件去除#多行注释

第一步:按Esc退出到命令模式,按gg切换到第1行

第二步:然后按Ctrl+v进入可视化区块模式(列模式)

第三步:使用键盘上的方向键的上下选中需要移除的#号注释

第四步:直接按Delete键即可完成删除注释的操作

退出vim编辑器

除了上面的这个语法之外,vim 还支持另外一个保存退出(针对内容)方法:x

:x在文件没有修改的情况下,表示直接退出(等价于:q),在文件修改的情况下表

示保存并退出(:wq)

② 如果文件没有被修改,但是使用wq 进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x 进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。

查看文件的内容

cat命令

cat 文件名称
主要功能:正序输出文件的内容

合并多个文件内容
cat 文件名称1  文件名称2  ... > 合并后的文件名称
主要功能:把文件名称1、文件名称2、...中的内容的合并到一个文件中

tac命令

tac 文件名称
主要功能:倒序输出文件的内容

head命令

 head -n 文件名称
 主要功能:查看一个文件的前n 行,如果不指定n,则默认显示前10 行

tail命令

tail -n 文件名称
主要功能:查看一个文件的最后n 行,如果不指定n,则默认显示最后10 行

tail -f命令

tail  -f  文件名称
主要功能:动态查看一个文件内容的输出信息(主要用于将来查询日志文件的变化)

more分屏显示文件内容

more 文件名称
特别注意:more命令在加载文件时并不是一点一点进行加载,而是打开文件时就已经把文件的全部内容加载到内存中了。如果打开文件较大,则可能会出现卡顿情况。

more命令拥有一些交互功能,可以通过快捷键进行操作这个more的阅读器。

回车键向下移动一行。
d向下移动半页。
空格键向下移动一页。
b向上移动一页,后期引入功能,早期more只能前进不能后退
q退出 more。

less分屏显示文件内容

less 文件名称
特别注意:less命令不是加载整个文件到内存,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。

另外:less可以通过上下方向键显示上下内容,退出时不会在Shell中留下刚显示的内容
less 命令的执行也会打开一个交互界面,下面是一些常用交互命令(和more类似):

按键功能
回车键向下移动一行。
d向下移动半页。
空格键向下移动一页。
b向上移动一页。
上下方向键向上与向下移动,less命令特有功能键
less -N 文件名称显示行号
/ 字符串搜索指定的字符串。
q退出less

cat,more,less三者的对比:

catmoreless
作用显示小文件(一屏以内)显示大文件(超过一屏)显示大文件(超过一屏)
交互命令
上下键翻行

文件统计命令

wc命令

wc [选项] 文件名称
选项说明:
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数(空格,回车,换行)

[root@server01 ~]# cat a
ewfab fasdvnof afrnvoa
avofiejfp
vampof awrvmwa
pvareomf'o
movpae[bfep'ak
vmaeio [n'apw
nieoan pk-avrk kar] apfr
avnroiia

[root@server01 ~]# wc -l a
8 a
[root@server01 ~]# wc -c a
123 a
[root@server01 ~]# wc -w a
15 a
[root@server01 ~]# wc -lcw a
  8  15 123 a

du命令

du [选项] 统计的文件或文件夹
选项说明:
-s :summaries,只显示汇总的大小,统计文件夹的大小
-h :以较高的可读性显示文件或文件夹的大小,(KB/MB/GB/TB)
主要功能:查看文件或目录(会递归显示子目录)占用磁盘空间大小


[root@server01 ~]# du a
4       a
[root@server01 ~]# du -h a
4.0K    a


[root@server01 ~]# du -sh /etc
26M     /etc
[root@server01 ~]# du -s /etc
26592   /etc
[root@server01 ~]# du -h /etc
12K     /etc/cloud/cloud.cfg.d
88K     /etc/cloud/templates
108K    /etc/cloud
8.0K    /etc/lsm/pluginconf.d
16K     /etc/lsm
56K     /etc/bash_completion.d
8.5M    /etc/selinux/targeted/policy
4.0K    /etc/selinux/targeted/logins
1.4M    /etc/selinux/targeted/contexts/files
32K     /etc/selinux/targeted/contexts/users
···························略

tree命令

Windows和Linux都有tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来

yum install tree -y

案例:以树状结构显示当前目录下的文件信息

# tree 

案例:以树状结构显示/var/log目录下的文件信息

# tree /var/log

文件处理命令

find命令

find 搜索路径 [选项]
选项说明:
-name:指定要搜索文件的名称,支持*星号通配符(Shift + 8)
-type:代表搜索的文件类型,f代表普通文件,d代表文件夹=>加快检索速度
主要功能:当我们查找一个文件时,必须使用的一个命令。

find / -name "ssh" -type d 
特别注意:实际工作时,尽量减少全盘检索,比较消耗资源

find /var/log -name "*.log" -type f
* :通配符,代表任意个任意字符。如*.log代表以.log结尾的文件,apache\*代表搜索以apache开头的文件信息
根据文件修改时间搜索文件

在这里插入图片描述

☆ 使用stat命令获取文件的最后修改时间
# stat 文件名称
Modify: 2020-03-31 10:25:20.609010605 +0800
☆ 创建文件时设置修改时间以及修改文件的修改时间

基本语法:

# touch -m -d "日期时间格式" 文件名称

作用:
① 如果文件不存在,则自动创建该文件,然后设置其最后的修改时间

② 如果文件存在,touch命令就是只修改文件的最后修改时间

案例:创建一个a.txt文件,设置最后修改时间为2020-03-30 00:00

# touch -m -d "2020-03-30 00:00" a.txt

案例:创建一个b.txt文件,然后在设置文件的最后修改时间为2020-03-29 00:00

# touch b.txt
# touch -m -d "2020-03-29 00:00" b.txt

案例:创建一个c.txt文件,设置最后修改时间为2020-03-28 00:00

# touch -m -d "2020-03-28 00:00" c.txt
☆ 根据文件的最后修改时间搜索文件
find 搜索路径 -mtime +days/-day3

-mtime :根据文件的最后修改时间搜索文件
+ :加号,代表搜索几天之前的文件信息
- :减号,代表搜索几天以内的文件信息

案例:搜索3天以前的文件信息(不包含第3天的,而且只搜索.txt格式)
在这里插入图片描述

find ./ -name "*.txt" -mtime +3

案例:搜索3天以内的文件信息(只搜索.txt格式)
在这里插入图片描述

find ./ -name "*.txt" -mtime -3
根据文件的大小搜索文件

基本语法:

find 搜索路径 -size [文件大小,常用单位:k,M,G]

size值  : 搜索等于size值大小的文件
-size值 : [0, size值)
+size值 : (size值,正无穷大)

案例:搜索/root目录下大小为5M的文件信息

find ./ -type f -size 5M

案例:搜索/root目录下大小为5M以内的文件信息(5M>size>=0)

find ./ -type f -size -5M

案例:搜索/目录中,文件大小大于100M的文件信息(size>100M)

find / -type f -size +100M

grep命令

grep [选项] 要搜索的关键词 搜索的文件名称
选项说明:
-n :代表显示包含关键词的行号信息
主要功能:在文件中直接找到包含指定关键词的那些行,并把这些信息高亮显示出来

grep 要搜索的关键词 多个文件的名称
主要功能:在多个文件中查找包含指定关键词的那些行,并高亮显示出来

echo命令

echo "文本内容"
主要功能:在终端中输入指定的文本内容

输出重定向

>:标准输出重定向 : 覆盖输出,会覆盖掉原先的文件内容

>>:追加重定向 : 追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

用户和组

用户组的添加

groupadd [选项]  用户组的组名称
选项说明:
-g :创建用户组时指定用户组编号GID,0代表超级管理员root组,1-999代表系统用户组,1000以后代表普通用户组

groupadd -g 1100 test

我们添加的用户组都会放在一个系统文件中,文件位置=>/etc/group
[root@server01 ~]# tail -3 /etc/group
docker:x:984:
cgred:x:983:
www:x:1000:

案例:在系统中创建一个admin组

# groupadd admin

案例:在系统中创建一个itcast组,并指定用户组的编号为1200

# groupadd -g 1200 itcast

问题:用户组创建完成后,如何判断是否创建成功?

# tail -1 /etc/group

与用户组相关的/etc/group文件解析

由以上命令的执行结果可知,在/etc/group文件中,其一共拥有三个冒号,共四列。每列含义:
第一列:用户组的组名称
第二列:用户组的组密码,使用一个x占位符
第三列:用户组的组ID编号,1-999代表系统用户组的组编号,1000以后的代表自定义组的组编号
CentOS6 => 1-499,500...
CentOS7 => 1-999,1000...
第四列:用户组内的用户信息(如果一个用户的附属组或附加组为这个组名,则显示在此位置)

用户组的修改

groupmod [选项 选项的值] 原来组的组名称
选项说明:
-g :gid缩写,设置一个自定义的用户组ID数字,1000以后
-n :name缩写,设置新的用户组的名称


把hr用户组更名为szhr
groupmod -n szhr hr

把test用户组的组编号由1100更改为1003
groupmod -g 1003 test

用户组的删除

groupdel 用户组名称
注意:在Linux操作系统中,如果想删除某个用户组,必须要保证这个组不能是某个用户的主组。

附属组管理

基本语法:

gpasswd [选项 选项的值] 用户组的名称
-a :添加用户到组,append追加
-d :从组中删除成员,delete移除
-A :指定管理员,Admin管理员
-M :指定组成员,可以批量添加用户到组中

问题解析:-a与-M到底有啥区别?
-a一次只能追加一个用户到附属组中(-a,append,追加的形式,原有用户不覆盖)
-M一次可以追加多个用户到附属组中(覆盖追加,先把原有用户删除,然后添加我们的用户)

案例:创建3个用户user01~user03,将user01添加到sysadmin组里(附属组)

useradd user01
useradd user02
useradd user03
groupadd sysadmin

① 方案1
# usermod -G sysadmin user01
② 方案2
# gpasswd -a user01 sysadmin

案例:把user02、user03添加到sysadmin组中

① 方案1
gpasswd -a user02 sysadmin
gpasswd -a user03 sysadmin

② 方案2
gpasswd -M user02,user03 sysadmin

案例:从附属组中移除某个账号

gpasswd -d 移除的用户名称 附属组名称
gpasswd -d user03 sysadmin
Removing user user03 from group sysadmin

用户的类别

① root超级管理员,在Linux系统中拥有至高无上的权力

② 系统用户,CentOS6=> 1 ~ 499,CentOS7=> 1 ~ 999,系统账号默认不允许登录

# useradd -s /sbin/nologin 系统用户

③ 普通用户,大部分是由root管理员创建的,UID的取值范围:CentOS6=> 500 ~ 60000,CentOS7=> 1000 ~ 60000,对系统进行有限的管理维护操作

总结

① 用户指的是操作系统上管理系统或服务,是人,就有相关的属性信息

② 用户的属性信息包括但不限于,如:家目录、唯一身份标识(UID)、所属组(GID) 等

③ 今天我们讨论的用户指的是普通用户,即由管理员创建的用户

useradd用户的添加

useradd [选项 选项的值] 用户名称
选项说明:
-g :代表添加用户时指定用户所属组的主组,唯一的组信息(重要)
-s :代表指定用户可以使用的Shell类型,默认为/bin/bash(拥有大部分权限)还可以是/sbin/nologin,代表账号创建成功,但是不能用于登录操作系统。
/bin/bash => 给人使用的(运维工程师)
/sbin/nologin => 给软件使用的

-G :代表添加用户时指定用户所属组的附属组或附加组,可以指定多个,用逗号隔开即可(了解)
-u :代表添加用户时指定的用户ID编号,CentOS6从500开始,CentOS7中从1000开始(了解)
-c :代表用户的备注信息,cqw:123456:(陈权伟的账号)
-d :代表用户的家目录,默认为/home/用户名称。可以使用-d进行更改
-n :取消建立以用户名称为名的群组(了解)

扩展:
-r  指定用户为系统用户,如创建一个系统账号mysql

案例:在Linux系统中创建一个账号lisi,指定用户的家目录为/rhome/lisi

# mkdir /rhome
# useradd -d /rhome/lisi lisi

当我们为用户自定义家目录时,其上级目录必须是真实存在的,如/rhome

案例:在Linux系统中创建一个mysql账号,要求真实存在的,但是其不允许登录操作系统

# useradd -s /sbin/nologin mysql

案例:在Linux系统中创建一个mysql系统账号,要求真实存在,但是不允许登录操作系统

# userdel -r mysql
# useradd -r -s /sbin/nologin mysql

用户信息查询

 id 用户名称
 主要功能:查询某个指定的用户信息
 [root@server01 ~]# id root
 uid=0(root) gid=0(root) groups=0(root)
 
 uid:用户编号
 gid:用户所属的主组的编号
 groups:用户的主组以及附属组信息,第一个是主组,后面的都是附属组或附加组信息

与用户相关的用户文件

组:/etc/group文件

用户:/etc/passwd文件,每创建一个用户,其就会在此文件中追加一行

vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
由上图可知,一共拥有7列
第1列:用户名称
第2列:用户的密码,使用一个x占位符,真实密码存储在/etc/shadow(1-用户名,2-加密密码)
第3列:数字,用户的ID编号
第4列:数字,用户的主组ID编号
第5列:代表注释信息,useradd -c "备注信息" 用户名称
第6列:用户的家目录,默认在/home/用户名称
第7列:用户可以使用的Shell类型,useradd -s /bin/bash或/sbin/nologin 用户名称

用户修改操作

usermod [选项 选项的值] 用户名称
选项说明:
-u	指定用户uid,唯一标识,必须唯一	
-g :修改用户所属的主组的编号
-l :login name修改用户的名称
-s :修改用户可以使用的Shell类型,如/bin/bash => /sbin/nologin

扩展:
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock

了解:
-G :修改用户附属组的编号信息
-d :修改用户的家目录
-c :修改用户的备注信息

Linux系统除了默认的图形化界面,其实还有5个隐藏的字符界面,按Ctrl + Alt + F1~F6
有些电脑开启Fn功能键,所以如果Ctrl + Alt + F1~F6不生效,则可以按Ctrl + Alt + Fn + F1~F6

案例:修改zhangsan账号的主组为itheima组(只能指定一个)

① 可以获取itheima组的编号信息GID

② 使用usermod -g GID编号修改某个用户的主组信息

其实在usermod修改用户的主组中,usermod -g 可以使用GID编号也可以使用组名称

cat /etc/group |grep itheima
usermod -g 1000 zhangsan

usermod -g itheima zhangsan

案例:修改lisi账号的附加组,将其添加到itheima中

usermod -G 1000 lisi

usermod -G itheima lisi

案例:创建一个itcast组,在创建一个wangwu的账号,修改wangwu的附加组为itcast与itheima

groupadd itcast
useradd wangwu
usermod -G itcast,itheima wangwu

问题:如果一个用户同时拥有多个附属组,怎么查看呢?

答:使用id命令即可

案例:修改用户zhangsan的家目录为/rhome/zhangsan(默认/home/zhangsan)

mkdir /rhome/zhangsan
usermod -d /rhome/zhangsan zhangsan
su - zhangsan
-bash-4.2$
出现以上问题的主要原因在于:我们迁移用户的家目录时,没有迁移家目录中的配置文件"家具"

解决方案:
① 家目录已经迁移,我们把/etc/skel中的文件,copy到新家中
cp -a /etc/skel/. /rhome/zhangsan/
选项说明:
-a :all所有,复制时,保留文件的原有属性
② 家目录还没有迁移,准备迁移时,使用usermod -md /rhome/zhangsan 用户名
-m :move,迁移家目录时,把"家具"一起迁移到新的家目录
usermod -md /rhome/zhangsan zhangsan

注:要求/rhome/zhangsan必须是真实存在的!

案例:当我们创建了某个账号,但是不希望这个账号登录操作系统

usermod -s /sbin/nologin 用户名称

userdel用户的删除

userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家目录
-f :强制删除用户(即使用户处于登录状态)

案例:删除zhangsan这个账号

userdel zhangsan

案例:删除zhangsan这个账号,同时删除这个账号的家

userdel -r zhangsan

案例:删除某个正在使用的账号(强制删除)

userdel -f zhangsan

passwd修改用户密码

说明:
1.管理员root可以给任何用户修改密码
2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范(大小写、特殊字符、长度)

修改自己的密码
[root@yunwei ~]# passwd

为linux账号添加一个密码,密码:123456
[root@yunwei ~]# passwd linux

--stdin修改用户密码
echo 123 |passwd --stdin itheima
history -c 						=>    			     清除history历史记录

特别注意:在Linux操作系统中,如果一个账号没有密码,则无法登录操作系统。
以上方式操作非常简单,但是以上命令会留在history历史命令中!

chage更改用户的账号信息

背景:很多公司运维工程师刚入职,都会默认得到一个服务器的管理账号,密码默认,如123456,我们有没有办法让运维工程师在第一次登陆操作系统后,强制要求其更新密码。

# chage --help
-l:列出用户的详细密码状态;
-d 日期:修改 /etc/shadow 文件中指定用户密码信息的第3个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
-m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第4个字段;
注:几天后才能修改一次密码
-M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第5个字段;
注:每隔多少天更新一次密码
-W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第6个字段;
-i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第7个字段;
注:过期后还可以使用的天数,达到这个天数后,账号失效

-E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第8个字段;

案例:新创建一个账号lamp,设置初始化密码为123456。要求用户第一次登陆后必须强制修改用户的密码。

解决思路:把密码的最后修改时间重置为0(回到1970年1月1日)

useradd lamp
echo 123456 |passwd --stdin lamp

chage -d 0 lamp

运行效果:
在这里插入图片描述

案例:设置lamp账号的过期时间为2010-04-10

chage -E "2020-04-10" lamp

案例:设置lamp账号的10天后过期(延伸)

chage -E $(date +%F -d '+10 days') lamp
%F:YYYY-mm-dd,格式2020-04-01
-d:多少天以后的日期

案例:设置mysql用户60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息

useradd mysql
echo 123456 |passwd --stdin mysql

chage -M 60 -m 7 -W 7 mysql

su命令

su [-] root
选项:

  • :横杠(减号),代表切换用户的同时,切换目录到用户的家

主要功能:切换用户的账号

从超级管理员切换到普通用户,root => itheima,不需要输入itheima的密码

从普通账号切换到超级管理员,itheima => root,需要输入root的密码

从普通账号切换到普通账号,itheima => linuxuser,也需要输入linuxuser密码

wheel组

Linux系统中,理论上只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效

用户删除操作

userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家(默认不删除)

删除账号流程:① 删除账号 ② 确认是否删除用户家 ③ 删除用户主组(没有其他用户)

要删除某个账号时,系统提示当前账号正在被某个进程所使用
第一种方案:找到登录的这个用户,然后将其直接注销
第二种方案:

kill [-9] 进程的ID编号
选项说明:-9代表强制结束某个进程
主要功能:用于结束某个进程的继续运行

管道

1、管道符

“|”,竖线

作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)
在这里插入图片描述
0 : 标准输入,程序或命令需要外部的某些程序传递相应的参数,才能正常运行

1 :标准输出,程序或命令正确的执行结果,我们就称之为标准输出

2 :标准错误,程序或命令错误的执行结果,我们就称之为标准错误

2、过滤(筛选)功能

# ls / | grep y
解析:
| :管道符号,作用=>把ls /的正确的执行结果作为参数传递给grep命令
ls / :管道左边的命令
grep y :管道右边的命令

rpm -qa | grep mariadb
-q :query,查询
-a :all,所有

ps -ef | grep itheima
ps -ef :查询系统中所有正在运行的进程

3、特殊功能

通过管道的操作方法来实现less 的等价效果

less initial-setup-ks.cfg

更改为管道命令
cat initial-setup-ks.cfg | less

4、统计功能

wc [选项] 文件名称
选项说明:
-l : 统计总行数
-w : word,总单词数
-c : 统计总字节数

统计/根目录下一共有多少个文件
ls / | wc -l

用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息(一个用户一行)
cat /etc/passwd | wc -l

5、xargs命令扩展

能用到这个命令,关键是由于很多命令不支持 | 管道来传递参数,而日常工作中又有这个必要,所以就有了 xargs 命令。

简单来说,xargs命令就相当于对管道命令进行了一个扩展,让所有命令都支持管道

ls命令之前添加一个xargs命令,这样ls命令就支持管道了,可以用于接收前一个命令的执行结果
find /etc -name "*.conf" | xargs ls -l

6、扩展选项-exec选项

案例:删除Linux系统中/var/log目录下10天以前的日志信息(日志文件格式*.log结尾)

# find /var/log -name "*.log" -mtime +10

第一种解决方案:使用管道命令|

find /var/log -name "*.log" -mtime +10 |rm -rf

以上命令并不能正确的执行删除操作,原因在于rm命令和ls命令一样,都不支持管道。

find /var/log -name "*.log" -mtime +10 |xargs rm -rf

第二种解决方案:使用find命令 + -exec选项

基本语法:

find /var/log -name "*.log" -mtime +10 -exec rm -rf {} \;

网络管理

1、获取计算机的网络信息

ifconfig
Windows => ipconfig Linux => ifconfig

ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.16  netmask 255.255.255.0  broadcast 10.1.1.255
        inet6 fe80::e472:7b78:c871:8e12  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:48:bf:f9  txqueuelen 1000  (Ethernet)
        RX packets 254  bytes 54837 (53.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 287  bytes 42006 (41.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
解析:inet 10.1.1.16  netmask 255.255.255.0  broadcast 10.1.1.255
inet 10.1.1.16 :代表ens33网卡的IP地址,将来远程连接就是用这个IP
netmask :子网掩码,一般为255.255.255.0
broadcast :广播地址,10.1.1.255

CentOS6 => eth0 , CentOS7 => ens33

2、与网卡相关的配置文件

Linux系统中,一切皆文件。所以保存网络信息的也是通过一个文件来完成的。

vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
UUID="6c809893-d12c-46af-9987-4c05b2773c91"
DEVICE="ens33"
ONBOOT="yes"

参数解析:
TYPE :网络类型,Ethernet以太网
BOOTPROTO:IP的获取方式,dhcp代表自动获取,static/none代表手工设置
NAME :网卡的名称(名字),ens33
UUID :代表网卡的UUID编号(必须是唯一的)
DEVICE :设备名称
ONBOOT :代表网卡是否随计算机开启启动,yes随计算机开机启动,no代表不启动

3、查询计算机的网络状态

systemctl  status  network

systemctl = system + control = 系统控制

centos8 已经替换了原来的network, 新版的叫:NetworkManager

[root@server01 ~]# systemctl status  NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-11-17 15:23:22 CST; 2 weeks 3 days ago
     Docs: man:NetworkManager(8)
 Main PID: 981 (NetworkManager)
    Tasks: 3 (limit: 11994)
   Memory: 3.4M
   CGroup: /system.slice/NetworkManager.service
           └─981 /usr/sbin/NetworkManager --no-daemon

Active : active(正常)或 inactive(dead,网络状态不正常没有连接)

4、systemctl启动/重启/停止网络

# systemctl start network
# systemctl stop network
# systemctl restart network

选项解析:
start :启动
stop :停止
restart :重启

5、sshd服务

当我们在计算机中安装了sshd软件,启动后,就会在进程中产生一个sshd进程,其遵循计算机的SSH协议。默认情况下,sshd服务随系统自动安装的。

systemctl status sshd
SSH协议,其规则了远程连接与传输的端口号,所以sshd服务启动后,就会占用计算机的22号端口。

6、连接Linux服务器

Putty
PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。

SecureCRT
官网
SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。(颜色方案不是特别好看)

XShell
官网
Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
缺点:收费

MobaXterm
官网

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值