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显示行号的动作

linux笔记_命令

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世界里,一切皆为文件

linux笔记_linux_02

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>  修改用户登入后所使用的shell。
    -u<uid>  修改用户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,...]

linux笔记_命令_03

用户和组的关系

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

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

linux笔记_linux_04

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下隐藏文件是以.开头

ls -l单列输出

linux笔记_命令_05

或者选项可以组合使用比如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[进行交互]

输入空格直接翻页

  • pwd指令
    基本语法:pwd (功能描述:显示当前工作目录的绝对路径)
  • ls指令
    基本语法:ls [选项] [目录或是文件]
    常用选项
    -a:显示当前目录所有的文件和目录,包括隐藏的。
    -l:以列表的方式显示信息

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

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

  • cd指令
    基本语法:cd [参数] (功能描述:切换到指定目录)
    cd~或者cd :回到自己的家目录,比如你是root ,cd~到/root目录
    cd.. 回到当前目录的上一级目录

linux笔记_命令_06

  • 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 destinationsource:文件 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 要查看的文件快捷键
  • less
    less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载的内容,对于显示大型文件具有较高的效率。
    基本语法:less 要查看的文件
  • 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指令显示日历
  • 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 [搜索范围] [选项]选项说明

例:

  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 [选项] 查找内容 源文件
    常用选项

例:

请在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.xtx2.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/tmpunzip -d /opt/tmp /home/myhome.zip
  • tar指令
    tar指令是打包指令,最后打包后的文件是.tar.gz的文件
    基本语法:
    tar [选项] xxx.tar 打包的内容tar [选项] xxx.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)调用gzip
    选项说明

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

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

例:

linux笔记_命令_07

调用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 数据库的备份。

linux笔记_命令_08

基本语法:

crontab [选项]

常用选项:

linux笔记_linux_09

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

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

接着输入任务到调度文件

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

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

参数细节说明

5 个占位符的说明

linux笔记_linux_10

特殊符号的说明

linux笔记_命令_11

特殊时间执行案例

linux笔记_linux_12

应用案例

案例 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可查看进程)

示意图

linux笔记_linux_13

基本指令

at [选项] [时间]

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

at 命令选项

linux笔记_命令_14

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

linux笔记_linux_15

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

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

linux笔记_linux_16

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

linux笔记_linux_17

案例 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

linux笔记_linux_18

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

linux笔记_linux_19

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

linux笔记_命令_20

#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文件中)。}

linux笔记_linux_21

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

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

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

linux笔记_linux_22

linux笔记_命令_23

参数与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 #密码失效前多少天在用户登录时通知用户修改密码


磁盘分区、挂载

Linux 分区

原理介绍

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

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

linux笔记_linux_24

硬盘说明
  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 硬盘的表示方法 一样

linux笔记_命令_25

查看所有设备挂载情况

命令 :lsblk 或者 lsblk -f

linux笔记_命令_26

linux笔记_linux_27

挂载的经典案例

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

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

linux笔记_linux_28

虚拟机增加硬盘步骤 2

分区命令 fdisk /dev/sdb

开始对/sdb 分区

m 显示命令列表

p 显示磁盘分区 同 fdisk –l

n 新增分区

d 删除分区

w 写入并退

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

linux笔记_命令_29

虚拟机增加硬盘步骤 3

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

其中 ext4 是分区类型

虚拟机增加硬盘步骤 4

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

mount 设备名称 挂载目录

例如: mount /dev/sdb1 /newdisk

取消挂载:

umount 设备名称 或者 挂载目

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

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

虚拟机增加硬盘步骤 5

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

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

linux笔记_命令_30

磁盘情况查询

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

基本语法 df -h

应用实例:

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

linux笔记_linux_31

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

基本语法 du -h

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

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

-h 带计量单位

-a 含文件

--max-depth=1 子目录深度

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

应用实例:

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

linux笔记_linux_32

磁盘情况-工作实用指令

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 安装

linux笔记_linux_33

网络配置

原理图

linux笔记_linux_34

指定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 系统设置主机名, 也可以根据需要修改主机名
  2. 指令 hostname ( 查看主机名)
  3. 修改文件在 /etc/hostname 指定
  4. 修改后,重启生效
设置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 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.

linux笔记_linux_35


linux笔记_命令_36

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

linux笔记_命令_37

动态监控进程

介绍:

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

基本语法

top [选项]

linux笔记_linux_38

选项说明

linux笔记_命令_39

交互操作说明:

linux笔记_命令_40

应用实例

案例 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

linux笔记_linux_41

案例

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

指令:

service network status

service network stop

service network start

查看服务名

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

setup

linux笔记_linux_42

方式 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,否则不能正常启动

开机的流程说明:

linux笔记_linux_43

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:过滤筛选)
  2. chkconfig 服务名 --list
  3. 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 等。

linux笔记_linux_44

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

linux笔记_linux_45

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

linux笔记_命令_46

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