linux笔记


typora-root-url: linux.assets


远程登录管理工具

ifconfig 查找IP地址

设置Linux的IP地址 ifconfig eth0 IP地址

final shell

  1. ssh连接
  2. 主机填IP地址
  3. 用户名:Linux的用户名
  4. 密码:Linux的密码

vi和vim

Linux系统会内置vi文本编辑器

vim具有程序编辑能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富。

  • 正常模式

    以vim打开一个档案就直接进入一般模式(默认)。这个模式中,你可以使用(上下左右)按键来移动光标,可以使用(删除字符)或(删除整行)来处理档案内容,也可以使用(复制、粘贴)来处理文件数据。

  • 插入模式

    按下i、I、o、O、a、A、r、R等任意一个字母之后才会进入编辑模式,一般i即可

  • 命令模式

    在这个模式中,可以提供你相关指令,完成读取,存盘,替换,离开vim显示行号的动作

image-20220216145738041

vi和vim快捷键
  • 在正常(一般)模式下

    拷贝当前行yy,拷贝当前行向下5行(5yy),并粘贴(输入p

    删除当前行dd,删除当前行向下的5行(5dd

    使用快捷键到该文档的最末行[G]和最首行[gg]

    撤销动作 [u]

    将光标定位到20行输入[20+shift+g]

  • 在命令行模式下

    在文件中查找某个单词[命令行下/关键字,回车查找,输入n(n代表查找下一个)]

    设置行号,取消文件的行号[命令行下 :set nu:set nonu]

Linux目录

Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/",然后在此目录下再创建其他的目录

在Linux世界里,一切皆为文件

image-20220215133412634

Linux会把硬件映射成一个文件进行管理

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr
    usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

注意

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

关机&重启命令

shutdown -h now 立刻关机

shutdown -h 1 1分钟后关机

shutdown -r now 立刻重新启动计算机

h:halt 关机

r:reboot 重启

sync 把内存的数据同步到磁盘

不管是重启系统还是关闭系统首先要运行sync命令,目前shutdown,halt,reboot都运行了sync但还是建议先运行sync

用户登录和注销

登录后尽量少用root账号登录,避免操作失误

登录后再用“su -用户名”来切换成系统管理员身份

logout注销指令在图形运行级别无效,在运行级别3下有效

用户管理

  • useradd 用户名” (添加用户)

    例:添加一个用户milan,默认该用户的家目录在/home/milan,也可以通过“useradd -d 指定目录新用户名”,给新创建的用户指定家目录

  • passwd 用户名” (给用户设置密码)

    如果不输入用户名则默认给当前登录的用户修改密码

  • passwd -l 用户名” 锁定用户(不可登录)

  • passwd -u 用户名” 解锁用户

  • pwd” 显示你当前在哪个目录下

  • userdel 用户名” 删除用户,但是保留家目录

    userdel -r 用户名“ 删除用户以及用户主目录

  • id 用户名” (查询用户信息)

  • su 切换用户名” (切换用户)

    su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了

    从权限高的用户切换到权限低的用户,不需要密码当返回到原来用户时,使用“exit/logout”指令

  • whoami/who am i” (查看当前用户)

    显示的是第一次登录的用户,期间切换的用户不算

Linux 组基本介绍

在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件 有所有者、所在组、其它组的概念。

  1. 所有者
  2. 所在组
  3. 其它组
  4. 改变用户所在的组

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

  • 查看文件的所有者

    指令:ls –ahl

  • 修改文件所有者

    指令:chown 用户名 文件名

    应用案例

    要求:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom chown tom apple.txt

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)。

  • 查看文件/目录所在组

    基本指令:ls –ahl

  • 修改文件/目录所在的组

    基本指令: chgrp 组名 文件

    应用实例

    使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit

    1. groupadd fruit
    2. touch orange.txt 看看当前这个文件属于哪个组 -> root 组
    3. chgrp fruit orange.txt

其它组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

用户组

系统可以对有共性/权限的多个用户进行统一的管理

关于组的常见命令

  • groupadd 组名” (新增组)

  • groupdel 组名” (删除组)

  • useradd -g 用户组 用户名“ (新增用户时直接加入组)

  • usermod -g 用户组 用户名 ” (修改用户的组)

    -c<备注>  修改用户帐号的备注文字。

    -d登入目录>  修改用户登入时的目录。

    -e<有效期限>  修改帐号的有效期限。

    -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

    -g<群组>  修改用户所属的群组。

    -G<群组>  修改用户所属的附加群组。

    -l<帐号名称>  修改用户帐号名称。

    -L  锁定用户密码,使密码无效。

    -s  修改用户登入后所使用的shell。

    -u  修改用户ID。

    -U  解除密码锁定。

  • usermod –d 目录名 用户名 (改变该用户登陆的初始目录)特别说明:用户需要有进入到新目录的权限。

  • groupmod -n [新名字] [旧名字](修改组名)

  • usermod -l [新名字] [旧名字](修改用户名)

  • gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
    -a:添加用户到组

    -d:从组删除用户

    -A:指定管理员

    -M:指定组成员和-A的用途差不多

    -r:删除密码

    -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

  • 组管理和权限管理

用户和组相关文件
  • /etc/passwd

    用户(user)的配置文件,记录用户的各种信息

    每行含义[用户名(login_name):口令(password):用户名标识号(uid):组标识号(gid):注释性描述(user info):主目录(home_directory):登录shell(default_shell)]

    shell:命令解析器 类似于cmd,它接受用户命令然后调用相应的应用程序。

    root用户的UID为0

    修改UID可以用 usermod -u

  • /etc/shadow

    口令配置文件

    每行的含义[登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志]

  • /etc/group

    组的配置文件,记录Linux包含的组的信息

    每行含义[组名:口令:组标识号:组内用户列表]

  • /etc/gshadow

    组的密码配置文件

    /etc/group的加密信息文件,/etc/gshadow和/etc/group是互补的两个文件

    每行含义[用户组:用户组密码:用户组管理者:组成员]

    [groupname:password:admin,admin,…:member,member,…]

image-20220110135541782

用户和组的关系

用户和用户组的对应关系有以下 4 种:

  1. 一对一:一个用户可以存在一个组中,是组中的唯一成员;
  2. 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
  3. 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
  4. 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。

image-20220216140442774

rwx权限

基本介绍

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

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

0-9 位说明

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

l 是链接,相当于 windows 的快捷方式

-就代表普通文件

d 是目录,相当于 windows 的文件夹 directory

c 是字符设备文件,鼠标,键盘

b 是块设备,比如硬盘

第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。—User

第 4-6 位确定所属组(同用户组的)拥有该文件的权限,—Group

第 7-9 位确定其他用户拥有该文件的权限 —Other

在linux中,s指的是“强制位权限”,位于user或group权限组的第三位置。如果在user权限组中设置了s位,则当文件被执行时,该文件是以文件所有者UID而不是用户UID执行程序;如果在group权限组中设置了s位,当文件被执行时,该文件是以文件所有者GID而不是用户GID执行程序。s权限位是一个敏感的权限位,容易造成系统的安全问题。

rwx 作用到文件

[ r ]代表可读(read): 可以读取,查看

[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.

[ x ]代表可执行(execute):可以被执行

rwx作用到目录

[ r ]代表可读(read):可以读取,ls查看目录内容

[ w ]代表可写(write):可以修改,目录内创建+删除+重命名目录

[ x ]代表可执行(execute):可以进入该目录

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

第一组 rwx : 文件拥有者的权限是读、写和执行

第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行

第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行

可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7

1 文件:硬连接数或 目录:子目录数

root 用户

root 组

1213 文件大小(字节),如果是文件夹,显示 4096 字节

Feb 2 09:39 最后修改日期

abc 文件名

修改权限-chmod

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

第一种方式:+ 、-、= 变更权限

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)

  1. chmod u=rwx,g=rx,o=x 文件/目录名
  2. chmod o+w 文件/目录名
  3. chmod a-x 文件/目录名

案例演示

1.给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。

chmod u=rwx,g=rx,o=rx abc

2.给 abc 文件的所有者除去执行的权限,增加组写的权限

chmod u-x,g+w abc

3.给 abc 文件的所有用户添加读的权限

chmod a+r ab

第二种方式:通过数字变更权限

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

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

相当于 chmod 751 文件/目录名

案例演示 要求:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现

chmod 755 /home/abc.txt

修改文件所有者-chown

基本指令:

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

chown newowner 文件/目录 [改变所有者和所在组]

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

案例演示

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

    chown tom /home/abc.txt

  2. 请将 /home/test 目录下所有的文件和目录的所有者都修改成 tom

    chown -R tom /home/test

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

基本指令:

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

案例演示

1.请将 /home/abc .txt 文件的所在组修改成 shaolin (少林)

groupadd shaolin

chgrp shaolin /home/abc.txt

2.请将 /home/test 目录下所有的文件和目录的所在组都修改成 shaolin(少林)

chgrp -R shaolin /home/test

实践-警察和土匪游戏

police ,bandit

jack, jerry: 警察

xh, xq: 土匪

创建组

groupadd police

groupadd bandit

创建用户

useradd -g police jack

useradd -g police jerry

useradd -g bandit xh

useradd -g bandit xq

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

登录到Jack

vim jack.txt

chmod 640 jack.txt

jack 修改该文件,让其它组人可以读, 本组人可以读写

chmod o=r,g=rw jack.txt 或者 chmod o+r,g+w jack.txt 或者 chmod 664 jack.txt

xh 投靠 警察,看看是否可以读写

usermod -g police xh

使用指令

运行级别

0:关机

1:单用户(找回丢失密码)

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用运行级别是3和5,也可以指定默认运行级别

命令:init[0123456] 通过init来切换不同的运行级别,比如从5-3,然后关机

切换到命令行界面后,在界面上只显示一个闪烁的光标,按下 Ctrl+Alt+F6(非虚拟机)或者 Alt+F6(虚拟机),显示用户登录界面。

指定运行级别

在centos7以前,/etc/inittab文件中.

进行了简化,如下:

multi-user.target:analogous (类似于) to runlevel 3

graphical.target:analogous to runlevel 5

#查看当前运行级别

systemctl get-default

#设定一个运行级别

systemctl set-default TARGET.target

帮助指令

  • man 获得帮助信息

    基本语法:man [命令或配置文件](功能描述:获得帮助信息)

    例:man ls (查看ls命令的帮助信息)

    在Linux下隐藏文件是以.开头

    image-20220109210523444

    ls -l单列输出

    image-20220109210444859

    或者选项可以组合使用比如ls -al ,比如ls -al /root(列举root目录下的文件)

  • help

    基本语法:help 命令 (功能描述:获得shell内置指令的帮助信息)

文件目录类的相关指令

  • cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

    简记:猫一下,瞄一眼,相当于查看有什么内容

    基本语法cat [选项] fileName

    -n:显示行号

    例:/etc/profile 文件内容,并显示行号

    cat -n /etc/profile

    注:cat只能浏览文件,不能修改文件,为了浏览方便,一般会带上 管道命令|more (类似于把前面得到的结果交给下一个指令处理)

    cat -n /etc/profile | more[进行交互]

    image-20220111203231252

    输入空格直接翻页

  • pwd指令

    基本语法:pwd (功能描述:显示当前工作目录的绝对路径)

  • ls指令

    基本语法:ls [选项] [目录或是文件]

    常用选项

    -a:显示当前目录所有的文件和目录,包括隐藏的。

    -l:以列表的方式显示信息

绝对路径是从最开始的位置去定位

相对路径是从当前的位置去定位

  • cd指令

    基本语法:cd [参数] (功能描述:切换到指定目录)

    cd~或者cd :回到自己的家目录,比如你是root ,cd~到/root目录

    cd… 回到当前目录的上一级目录

image-20220110115510043

  • mkdir(创建目录)

    基本语法:mkdir [选项] 要创建的目录(默认只能创建一级目录,多级目录需要加上[-p]

    -p:创建多级目录

    例:创建/home/dog

    mkdir /home/dog

    创建/home/animal/tiger

    mkdir -p /home/animal/tiger

  • rmdir(删除目录)

    基本语法:rmdir [选项] 要删除的目录

    -p 是当子目录被删除后使父目录也成为空目录的话,则顺便一并删除。

    例:删除一个目录/home/dog

    rmdir /home/dog

    例:在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。

    rmdir -p /BBB/Test

    注:rmdir删除的是空目录,如果目录下有内容则无法删除

    如果需要删除非空目录,则需要使用 rm -rf 要删除的目录

    例:rm -rf /home/animal

  • rm

    移除文件或目录

    基本语法:rm [选项] 要删除的文件或目录

    -r:递归删除整个文件夹

    -f:强制删除不提示

    例:将/home/hello.txt 删除,rm /home/hello.txt

    递归将整个文件夹删除 /home/bbb, rm -rf /home/bbb

    强制删除不提示带上[-f]即可

  • touch

    创建一个空文件

    基本语法:touch 文件名称

    例:在/home目录下,创建一个空文件hello.txt

    touch hello.txt

  • cp(拷贝)

    cp指令拷贝文件到指定目录

    基本语法:cp [选项] source destination

    source:文件 dest:文件拷贝的地方

    -r :递归复制整个文件夹

    例:将/home/hello.txt 拷贝到 /home/bbb目录下

    cp hello.txt /home/bbb

    递归复制整个文件夹,比如将/home/bbb整个目录,拷贝到/opt

    cp -r /home/bbb /opt

    强制覆盖不提示的方法:\cp (系统不会提示是否覆盖)

  • mv

    基本语法:mv oldNameFile newNameFile (重命名)

    mv /temp/movefile /targetFloder (移动文件)

    例:将/home/cat.txt 文件重新命名为 pig.txt

    mv cat.txt pig.txt

    将/home/pig.txt 文件移动到 /root目录下

    mv /home/pig.txt /root

    移动整个目录,比如将/opt/bbb 移动到 /home下

    mv /opt/bbb /home

  • more

    more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干个快捷键(交互的指令)

    基本语法:more 要查看的文件

    快捷键

    image-20220111203820434
  • less

    less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载的内容,对于显示大型文件具有较高的效率。

    基本语法:less 要查看的文件

    image-20220111210442034
  • echo

    echo输出内容到控制台

    基本语法:echo [选项] [输出内容]

    例:使用echo指令输出环境变量,比如输出$PATH $HOSTNAME

    echo $PATH echo $HOSTNAME

    使用echo指令输出hello,world!

    echo "hello,world!"

  • head

    head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

    基本语法:head 文件

    head -n 5 文件 (查看文件头5行,5可以是任意行数)

  • tail

    tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容

    基本语法:

    tail 文件

    tail -n 5 文件 (查看尾5行)

    tail -f 文件 (实时追踪该文档的所有更新)

  • >>>

    >输出重定向和>>追加

    基本语法:

    ls -l > 文件 (将列表的内容写入文件中(覆盖写))

    ls -al >> 文件 (列表内容追加到文件的末尾)

    cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)

    echo "内容" >> 文件(追加)

    例:将/home目录下的文件列表写入到/home/info.txt中,覆盖写入

    ls -l /home > /home/info.txt [如果没有info.txt文件,则会创建]

    将当前日历信息追加到/home/mycal文件中

    cal >> /home/mycal 注:cal指令显示日历

    image-20220923163801376image-20220923163815051

  • ln

    软链接也称为符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径

    基本语法:ln -s [原文件或目录] [软链接名] (给原文件创建一个软链接)

    例:在/home 目录下创建一个软链接myroot ,连接到/root目录

    ln -s /root /home/myroot

    删除软链接myroot

    rm /home/myroot

    注:当我们使用pwd指令查看目录时,仍然看到的是软链接所在的目录

  • history

    查看已执行过的历史命令

    基本语法:history (查看已经执行过的历史命令)

    例:显示最近使用过的10个指令

    history 10

    执行历史编号为5的指令

    !5

  • date指令

    显示当前日期

    基本语法:

    date (显示当前时间)

    date +%Y (显示当前年份)

    date +%m (显示当前月份)

    date +%d (显示当前是哪一天)

    date "+%Y-%m-%d %H:%M:%S"(显示年月日秒)

    设置日期

    date -s 字符串时间

    例:设置系统当前时间,比如设置成2020-11-03 20:02:10

    date -s “2020-11-03 20:02:10”

  • cal指令

    查看日历指令

    基本语法:

    cal [选项]

    例:

    显示当前日历 cal

    显示2020年日历: cal 2020

查找指令

  • find指令

    find指令将从指定目录下递归地遍历各个子目录,将满足条件的文件或者目录显示在终端。

    基本语法:

    find [搜索范围] [选项]

    选项说明

    image-20220206131743310

    例:

    1. 按文件名:根据名称查找/home目录下的hello.txt文件

      find /home -name hello.txt

    2. 按拥有者:查找/opt目录下,用户名称为nobody的文件

      find /opt -user nobody

    3. 查找整个Linux系统下大于200M的文件(+n大于 -n小于 n等于 ,单位有K,M,G)

      find / -size +200M

  • locate指令

    locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。

    基本语法:

    locate 搜索文件

    特别说明:

    由于locate指令基于数据库进行查询,相当于把文件目录储存在一个数据库中,所以第一次运行前,必须使用updatedb指令创建locate数据库

    例:

    请使用locate指令快速定位hello.txt文件所在目录

    locate hello.txt

  • grep指令和管道符号“|”

    grep过滤查找,管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。

    基本语法:

    grep [选项] 查找内容 源文件

    常用选项

    image-20220206135135396

    例:

    请在hello.txt中,查找“yes"所在行,并且显示行号

    写法一:cat /home/hello.txt | grep "yes"

    写法二:grep -n "yes" /home/hello.txt

压缩解压缩指令

  • gzip/gunzip指令

    gzip用于压缩文件,gunzip用于解压缩文件

    基本语法

    gzip 文件 (注:只能将文件压缩为*.gz文件)

    gunzip 文件.gz

    例:

    1.gzip压缩,将/home目录下的hello.txt 文件进行压缩

    gzip /home/hello.xtx

    2.gunzip解压,将/home目录下的home.txt.gz文件进行解压缩

    gunzip /home/hello.txt.gz

  • zip/unzip指令

    zip用于压缩文件,unzip用于解压,在项目打包发布中很有用

    基本语法

    zip [选项] xxx.zip 将要压缩的内容(压缩文件)

    unzip [选项] xxx.zip (解压缩)

    zip常用选项:

    -r:递归压缩,即压缩目录

    unzip常用选项:

    -d<目录>:指定解压后文件的存放目录

    例:

    1.将/home下的所有文件/文件夹进行压缩成myhome.zip

    zip -r myhome.zip /home/ [将home目录及其包含的文件和子文件夹都压缩]

    2.将myhome.zip 解压到 /opt/tmp目录下

    mkdir /opt/tmp

    unzip -d /opt/tmp /home/myhome.zip

  • tar指令

    tar指令是打包指令,最后打包后的文件是.tar.gz的文件

    基本语法:

    tar [选项] xxx.tar 打包的内容

    tar [选项] xxx.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)调用gzip

    选项说明

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhYd1FzB-1680847535197)(https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220207124640031.png)]

    -z代表的是调用gzip,所以在带有.gz的文件中需要加上z选项

    -f是使用文件,-f后一定跟的是空格加文件名

例:

调用gzip例:

1.压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

2.将/home的文件夹压缩成myhome.tar.gz

tar -zvcf myhome.tar.gz /home/

3.将pc.tar.gz解压到当前目录

tar -zxvf pc.tar.gz

4.将myhome.tar.gz 解压到/opt/tmp2目录下

(1)mkdir /opt/tmp2

(2)tar -zxvf /home/myhome.tar.gz -C /opt/tmp2(C是指解压后的文件存放的目录)

任务相关指令

crond 任务调度

crontab 进行 定时任务的设

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等

2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。

image-20220208155252265

基本语法:

crontab [选项]

常用选项:

image-20220208155343110

设置任务调度文件:/etc/crontab

设置个人任务调度:执行 crontab –e 命令。

接着输入任务到调度文件

如:*/1 * * * * ls –l /etc/ > /tmp/to.txt

意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令

参数细节说明

5 个占位符的说明

image-20220208155552611

特殊符号的说明

image-20220208155627060

特殊时间执行案例

image-20220208155706909

应用案例

案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中

*/1 * * * * date >> /tmp/mydate

案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中

步骤:

(1) vim /home/my.sh 写入内容 date >> /home/mycalcal >> /home/mycal

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

(3) crontab -e 增加 */1 * * * * /home/m

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

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

步骤(1) crontab -e

步骤(2) 0 2 * * * mysqldump -u root -p root testdb > /home/db.bak

crond 相关指令

conrtab –r:终止任务调度。

crontab –l:列出当前有那些任务调度

service crond restart [重启任务调度]

at 定时任务
  1. at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。

  2. 默认情况下,atd 守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则 运行此作业。

  3. at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了

  4. 在使用 at 命令的时候,一定要保证 atd 进程的启动 , 可以使用相关指令来查看

    ps -ef | grep atd //可以检测 atd 是否在运(ps可查看进程)

示意图

image-20220208170907835

基本指令

at [选项] [时间]

Ctrl + D 结束 at 命令的输入, Ctrl + D需要输出两次

at 命令选项

image-20220208171054730

at 时间定义方法

  1. 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
  2. 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
  3. 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 例如:12pm
  4. 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指 定的日期必须跟在指定时间的后面。 例如:04:00 2021-03-1
  5. 使用相对计时法。指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes (分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。 例如:now + 5 minutes
  6. 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间

应用案例:

案例 1:2 天后的下午 5 点执行 /bin/ls /home

image-20220208171457566

案例 2:atq 命令来查看系统中没有执行的工作任务

案例 3:明天 17 点钟,输出时间到指定文件内 比如 /root/date100.log

image-20220208171519418

案例 4:2 分钟后,输出时间到指定文件内 比如 /root/date200.log

image-20220208171641064

案例 5:删除已经设置的任务 , atrm 编号

atrm 4 //表示将 job 队列,编号为 4 的 job 删除.

基于centos7设置密码策略

Centos7开始使用pam_pwquality模块进行密码复杂度策略的控制管理。pam_pwquality替换了原来Centos6/RHEL6中的pam_cracklib模块,并向后兼容,pam_pwquality和pam_cracklib大致上意义一样

设置密码策略就有两种方法

1.直接指定pam_pwquality.so模块参数v

首先进入到文件位置,利用vim查看并编辑

vim /etc/pam.d/system-auth

在“password requisite pam_pwquality.so”行尾添加具体参数

image-20220112152503114

比如“minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1”,表示最小密码长度16位,数字,大小写字母,特殊字符均至少包含1位。

image-20220112153422979

#retry 允许重试的次数

#difok=N:新密码必需与旧密码不同的位数 difok=3 新密码必须与旧密码有3位不同

#ucredit=N 当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数

#lcredit=N 当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数

#dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字. dcredit=-1 密码中最少有1个数字

#ocredit=N:特殊字母的个数 ocredit=-1 密码中至少有1个特殊字符

#它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。

设置密码重复

可进入/etc/pam.d/system-auth中

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok后增加remember=5 {5代表这将防止5个最近使用过的密码被用来设置为新密码(通过将它们存放在/etc/security/opasswd文件中)。}

image-20220112161233636

2.通过修改/etc/security/pwquality.conf参数文件,定义密码复杂度规则。

修改pwquality.conf参数文件有2种方法

**(1)**直接vi或vim编辑器 ,或者甚至用sed命令,修改/etc/security/pwquality.conf

image-20220213220236255

image-20220213220522806

参数与system-auth中大致相同

**(2)**使用authconfig命令修改,修改后最终会体现在/etc/security/pwquality.conf文件中

以(2)为例:

1.用户不能设置小于此参数的密码长度。

authconfig --passminlen=8 --update

2.在新密码中设置同一类的允许连续字符的最大数目。

authconfig --passmaxclassrepeat=4 --update

3.在新密码中至少需要一个小写字符。

authconfig --enablereqlower --update

4.在新密码中至少需要一个大写字符。

authconfig --enablerequpper --update

5.在新密码中至少需要一个数字。

authconfig --enablereqdigit --update

6.密码包括至少一个特殊字符。

authconfig --enablereqother --update

设置密码过期期限

vi /etc/login.defs

PASSMAXDAYS 99999 #密码的最大有效期, 99999:永久有期

PASSMINDAYS 0 #是否可修改密码,0可修改,非0修改密码后下一次修改需间隔多少天后可修改

PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效

PASSWARNAGE 7 #密码失效前多少天在用户登录时通知用户修改密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vX6UTL3S-1680847535202)(https://gitee.com/Kawhildh/blog-image/raw/master/image-20220213220855774.png)]

磁盘分区、挂载

Linux 分区
原理介绍

Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。

Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录 联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

image-20220212143156215

硬盘说明
  1. Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI硬盘
  2. 对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为 基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
  3. 对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法 一样

image-20220212143316988

查看所有设备挂载情况

命令 :lsblk 或者 lsblk -f

image-20220212143349988

image-20220212143537756

挂载的经典案例
如何增加一块硬盘
  1. 虚拟机添加硬盘
  2. 分区
  3. 格式化
  4. 挂载
  5. 设置可以自动挂载
虚拟机增加硬盘步骤 1

在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方 需要修改,至到完成。然后重启系统(才能识别)!

image-20220212150122557

虚拟机增加硬盘步骤 2

分区命令 fdisk /dev/sdb

开始对/sdb 分区

m 显示命令列表

p 显示磁盘分区 同 fdisk –l

n 新增分区

d 删除分区

w 写入并退

说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。(Ctrl + Backspace 可以进行输入的内容删除)

image-20220212150254708

虚拟机增加硬盘步骤 3

格式化磁盘 分区命令:mkfs -t ext4 /dev/sdb1

其中 ext4 是分区类型

虚拟机增加硬盘步骤 4

挂载: 将一个分区与一个目录联系起来,

mount 设备名称 挂载目录

例如: mount /dev/sdb1 /newdisk

取消挂载:

umount 设备名称 或者 挂载目

例如: umount /dev/sdb1 或者 umount /newd

用命令行挂载**,重启后会失效**

虚拟机增加硬盘步骤 5

永久挂载: 通过修改/etc/fstab 实现挂载

添加完成后 执行 mount –a 即刻生

image-20220212150658691

磁盘情况查询
查询系统整体磁盘使用情况

基本语法 df -h

应用实例:

查询系统整体磁盘使用情况

image-20220212151608659

查询指定目录的磁盘占用情况

基本语法 du -h

查询指定目录的磁盘占用情况,默认为当前目录

-s 指定目录占用大小汇总

-h 带计量单位

-a 含文件

–max-depth=1 子目录深度

-c 列出明细的同时,增加汇总值

应用实例:

查询 /opt 目录的磁盘占用情况,深度为

image-20220212151734635

磁盘情况-工作实用指令

1.统计/opt 文件夹下文件的个数

ls -l /opt | grep "^-" | wc -lgrep 代表过滤 ^- 代表只列出 “-”类型的文件 即“-”开头,wc 代表统计个数)

2.统计/opt 文件夹下目录的个数

ls -l /opt | grep "^d" | wc -l

3.统计/opt 文件夹下文件的个数,包括子文件夹里的

ls -lR /opt | grep "^-" | wc -l (R表示递归查询)

4.统计/opt 文件夹下目录的个数,包括子文件夹里的

ls -lR /opt | grep "^d" | wc -l

5.以树状显示目录结构 tree 目录 , 注意,如果没有 tree ,则使用 yum install tree 安装

image-20220212153249543

网络配置

原理图

image-20220212184645230

指定IP

直接修改配置文件来指定 IP,并可以连接到外网

编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33

要求:将 ip 地址配置的静态的,比如: ip 地址为 192.168.200.130

ifcfg-ens33 文件说明

DEVICE=eth0 #接口名(设备,网卡)

HWADDR=00:0C:2x:6x:0x:xx #MAC 地址

TYPE=Ethernet #网络类型(通常是 Ethemet)

UUID=926a57ba-92c6-4231-bacb-f27e5e6a9f44 #随机 id

ONBOOT=yes #系统启动的时候网络接口是否有效(yes/no)

BOOTPROTO=static #IP 的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配 IP|BOOTP 协议|DHCP 协议)

IPADDR=192.168.200.130 #IP地址

**GATEWAY=192.168.200.2 ** #网关

DNS1=192.168.200.2 #域名解析器

重启网络服务或者重启系统生效

service network restart 或者 reboot

设置主机名和hosts映射
设置主机名
  1. 为了方便记忆,可以给 linux 系统设置主机名, 也可以根据需要修改主机名
  1. 指令 hostname ( 查看主机名)
  2. 修改文件在 /etc/hostname 指定
  3. 修改后,重启生效
设置hosts映射

通过ping主机名能够ping通某个主机

windows

在 C:\Windows\System32\drivers\etc\hosts 文件指定即可

案例: 192.168.200.130 hspedu10

linux

在 /etc/hosts 文件指定

案例: 192.168.200.1 ThinkPad-PC

进程管理

基本介绍
  1. 在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。=>windows => linux
  2. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程 则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  3. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程
基本介绍

ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qqj3C9q7-1680847535207)(https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220214125018169.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oFAAmaD2-1680847535207)(https://gitee.com/Kawhildh/blog-image/raw/master/image-20220214124850521.png)]

image-20220214125102114

ps 详解

指令:ps –aux|grep xxx ,比如我看看有没有 sshd 服

指令说明

System V 展示风格

USER:用户名称

PID:进程号

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

%MEM:进程占用物理内存的百分比

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

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

TT:终端名称,缩写 .

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

STARTED:进程的启动时间

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

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

应用实例

要求:以全格式显示当前所有的进程,查看进程的父进程。 查看 sshd 的父进程信息

ps -ef 是以全格式显示当前所有的进程

-e 显示所有进程。

-f 全格式

ps -ef|grep sshd

是 BSD 风格

UID:用户 ID

PID:进程 ID

PPID:父进程 ID

C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表 明进程是 I/O 密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU 时间

CMD:启动进程所用的命令和参数

终止进程 kill 和 killall

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完 成此项任务

基本语法

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

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

常用选项

-9 :表示强迫进程立即停止 (有时候系统会以为你关闭的进程很重要,防止你关闭)

案例

案例 1:踢掉某个非法登录用户

kill 进程号 , 比如 kill 11421

案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务

kill sshd对应的进程号; /bin/systemctl start sshd.service

案例 3: 终止多个 gedit ,

演示 killall gedit

案例 4:强制杀掉一个终端,

指令 kill -9 bash 对应的进程

查看进程树 pstre

基本语法

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

常用选项

-p :显示进程的 PID

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

应用实例

案例 1:请你树状的形式显示进程的 pid

pstree -p

案例 2:请你树状的形式显示进程的用户

pstree -u

image-20220214144107031

动态监控进程
介绍:

top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以 更新正在运行的的进程。

基本语法

top [选项]

image-20220214182639552

选项说明

image-20220214182712263

交互操作说明:

image-20220214182730319

应用实例

案例 1.监视特定用户, 比如我们监控 tom 用户 top:输入此命令,按回车键,查看执行的进程。

u:然后输入“u”回车,再输入用户名,即可,

案例 2:终止指定的进程, 比如我们要结束 tom 登录

top:输入此命令,按回车键,查看执行的进程。

k:然后输入“k”回车,再输入要结束的进程 ID 号

案例 3:指定系统状态更新的时间(每隔 10 秒自动更新), 默认是 3 秒

top -d 10

服务(service)管理

介绍

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

service 管理指令
  1. service 服务名 [start | stop | restart | reload | status]
  2. 在 CentOS7.0 后 很多服务不再使用 service ,而是 systemctl
  3. service 指令管理的服务在 /etc/init.d

image-20220214160240039

案例

请使用 service 指令,查看,关闭,启动 network [注意:在虚拟系统演示,因为网络连接会关闭]

指令:

service network status

service network stop

service network start

查看服务名

方式 1:使用 setup -> 系统服务 就可以看到全部

setup

image-20220214160412384

方式 2: /etc/init.d 看到 service 指令管理的服务

ls -l /etc/init.d

服务的运行级别(runlevel)

Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5

运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动

运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆

运行级别 2:多用户状态(没有 NFS),不支持网络

运行级别 3:完全的多用户状态(有 NFS),无界面,登陆后进入控制台命令行模式

运行级别 4:系统未使用,保留

运行级别 5:X11 控制台,登陆后进入图形 GUI 模式

运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

开机的流程说明:

image-20220214160702968

CentOS7 后运行级别说明

在 /etc/initab

进行了简化 ,如下:

multi-user.target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

init 0

#查看当前运行级别命令

systemctl get-default

#设置当前运行级别命令

systemctl set-default TARGET.target(TARGET:任一级别)

chkconfig 指令
介绍

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

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

注意: Centos7.0 后,很多服务使用 systemctl 管理

chkconfig 基本语法
  1. 查看服务 chkconfig --list [| grep xxx] (grep:过滤筛选)
  1. chkconfig 服务名 --list
  2. chkconfig --level 5 服务名 on/off (关闭/开启第几运行级别下的服务)
案例

对 network 服务 进行各种操作, 把 network 在 3 运行级别,关闭自启动

chkconfig --level 3 network off

chkconfig --level 3 network on

使用细节

chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot生效

systemctl 管理指令

基本语法:

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

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

systemctl 设置服务的自启动状态

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

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

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

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

案例:

查看当前防火墙的状况,关闭防火墙和重启防火墙。=> firewalld.service

systemctl status firewalld

systemctl stop firewalld

systemctl start firewalld

注意

systemctl中enabledisable两个命令才能永久关闭或打开该服务

stopstart则是临时生效,关机重启后又会打开

打开或者关闭指定端口

在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟 服务器监听端口通讯。这时,需要打开指定的端口。比如 80、22、8080 等。

image-20220214174413124

firewall 指令
  1. 打开端口: firewall-cmd --permanent --add-port=端口号/协议
  2. 关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
  3. 重新载入,才能生效 : firewall-cmd --reload
  4. 查询端口是否开放: firewall-cmd --query-port=端口/协议
案例:
  1. 启用防火墙, 测试 111 端口是否能 telnet , 不行

  2. 开放 111 端口

    firewall-cmd --permanent --add-port=111/tcp ; 需要 firewall-cmd --reload

  3. 再次关闭 111 端口

    firewall-cmd --permanent --remove-port=111/tcp ; 需要 firewall-cmd

监控网络状态
查看系统网络情况 netstat

基本语法

netstat [选项]

选项说明

-an 按一定顺序排列输出

-p 显示哪个进程在调用

应用案例

请查看服务名为 sshd 的服务的信息。

netstat -anp | grep sshd

image-20220214184926427

RPM 与 YUM、apt

rpm 包的管理
介绍

rpm 用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上 了 RedHat 的标志,但理念是通用的。

Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;

rpm 包的简单查询指令

查询已安装的 rpm 列表 rpm –qa|grep xx

举例: 看看当前系统,是否安装了 firefox

指令: rpm -qa | grep firefox

rpm 包名基本格式

一个 rpm 包名:firefox-60.2.2-1.el7.centos.x86_64

名称:firefox

版本号:60.2.2-1

适用操作系统: el7.centos.x86_64

表示 centos7.x 的 64 位系统

如果是 i686、i386 表示 32 位系统,noarch 表示通

rpm 包的其它查询指令
  • rpm -qa :查询所安装的所有 rpm 软件包

    rpm -qa | more

    rpm -qa |grep X 例如:rpm -qa | grep firefox

  • rpm -q 软件包名 :查询软件包是否安装

    案例:rpm -q firefox

  • rpm -qi 软件包名 :查询软件包信息

    案例: rpm -qi firefox

  • rpm -ql 软件包名 :查询软件包中的文件

    比如: rpm -ql firefox

  • rpm -qf 文件全路径名 查询文件所属的软件包

    rpm -qf /etc/passwd

    rpm -qf /root/install.log

卸载 rpm 包

基本语法

rpm -e RPM包的名称 // -e->erase

应用案例

删除 firefox 软件包

rpm -e firefox

细节讨论

  1. 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。

    如: $ rpm -e RPM包

    removing these packages would break dependencies:foo is needed by bar-1.0-1

  2. 如果我们就是要删除 foo 这个 rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依 赖于该软件包的程序可能无法运行

    如:$ rpm -e --nodeps RPM包

安装 rpm

基本语法

rpm -ivh RPM包全路径名称

参数说明

i=install 安装

v=verbose 提示

h=hash 进度条

应用实例

演示卸载和安装 firefox 浏览器

rpm -e firefox rpm -ivh firefox

yum
介绍:

Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

yum 的基本指令

查询 yum 服务器是否有需要安装的软件

yum list|grep xx 软件列表

安装指定的 yum 包

yum install xxx 下载安装

yum 应用实例

案例:

请使用 yum 的方式来安装 firefox

yum list | grep firefox

yum install firefox

yum阿里云镜像centos8

命令:wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

apt
介绍

apt(Advanced Packaging Tool)是一个在 DebianUbuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

基本指令

apt [选项] [进行的操作] [安装包名]

常用命令
  • 安装指定的软件命令:sudo apt install <package_name>
  • 卸载软件包及配置文件: sudo apt purge <package_name>
  • 列出所有可更新的软件清单命令:sudo apt update
  • 升级软件包:sudo apt upgrade
  • 列出可更新的软件包及版本信息:apt list --upgradeable
  • 列出所有可更新的软件清单命令:sudo apt update

管道符

“|”是linux管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

image-20220307205705237

命令 1 的正确输出作为命令 2 的操作对象。命令 2 的正确输出作为命令 23的操作对象。这里需要注意,命令 1 必须有正确输出,而命令 2 必须可以处理命令 1 的输出结果;而且命令 2 只能处理命令 1 的正确输出,而不能处理错误输出。同理命令2和命令3的关系也是这样的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值