typora-root-url: linux.assets
远程登录管理工具
ifconfig 查找IP地址
设置Linux的IP地址 ifconfig eth0 IP地址
final shell
- ssh连接
- 主机填IP地址
- 用户名:Linux的用户名
- 密码:Linux的密码
vi和vim
Linux系统会内置vi文本编辑器
vim具有程序编辑能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富。
-
正常模式
以vim打开一个档案就直接进入一般模式(默认)。这个模式中,你可以使用(上下左右)按键来移动光标,可以使用(删除字符)或(删除整行)来处理档案内容,也可以使用(复制、粘贴)来处理文件数据。
-
插入模式
按下i、I、o、O、a、A、r、R等任意一个字母之后才会进入编辑模式,一般i即可
-
命令模式
在这个模式中,可以提供你相关指令,完成读取,存盘,替换,离开vim显示行号的动作
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会把硬件映射成一个文件进行管理
-
/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 中每个文件 有所有者、所在组、其它组的概念。
- 所有者
- 所在组
- 其它组
- 改变用户所在的组
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
-
查看文件的所有者
指令:
ls –ahl
-
修改文件所有者
指令:
chown 用户名 文件名
应用案例
要求:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom
chown tom apple.txt
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)。
-
查看文件/目录所在组
基本指令:
ls –ahl
-
修改文件/目录所在的组
基本指令:
chgrp 组名 文件
应用实例
使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit
groupadd fruit
touch orange.txt
看看当前这个文件属于哪个组 -> root 组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,…]
用户和组的关系
用户和用户组的对应关系有以下 4 种:
- 一对一:一个用户可以存在一个组中,是组中的唯一成员;
- 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
- 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
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 的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
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 如果是目录 则使其下所有子文件或目录递归生
案例演示
-
请将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
-
请将 /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
单列输出或者选项可以组合使用比如
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… 回到当前目录的上一级目录
-
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 要查看的文件
快捷键
-
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 [搜索范围] [选项]
选项说明
例:
-
按文件名:根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
-
按拥有者:查找/opt目录下,用户名称为nobody的文件
find /opt -user nobody
-
查找整个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.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 数据库的备份。
基本语法:
crontab [选项]
常用选项:
设置任务调度文件:/etc/crontab
设置个人任务调度:执行 crontab –e
命令。
接着输入任务到调度文件
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt
命令
参数细节说明
5 个占位符的说明
特殊符号的说明
![image-20220208155627060](https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220208155627060.png)
特殊时间执行案例
![image-20220208155706909](https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220208155706909.png)
应用案例
案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
*/1 * * * * date >> /tmp/mydate
案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中
步骤:
(1) vim /home/my.sh
写入内容 date >> /home/mycal
和 cal >> /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 定时任务
-
at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。
-
默认情况下,atd 守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则 运行此作业。
-
at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
-
在使用 at 命令的时候,一定要保证 atd 进程的启动 , 可以使用相关指令来查看
ps -ef | grep atd
//可以检测 atd 是否在运(ps可查看进程)
示意图
![image-20220208170907835](https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220208170907835.png)
基本指令
at [选项] [时间]
Ctrl + D 结束 at 命令的输入, Ctrl + D需要输出两次
at 命令选项
![image-20220208171054730](https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220208171054730.png)
at 时间定义方法
- 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
- 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
- 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 例如:12pm
- 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指 定的日期必须跟在指定时间的后面。 例如:04:00 2021-03-1
- 使用相对计时法。指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes (分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。 例如:now + 5 minutes
- 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间
应用案例:
案例 1:2 天后的下午 5 点执行 /bin/ls /home
案例 2:atq 命令来查看系统中没有执行的工作任务
案例 3:明天 17 点钟,输出时间到指定文件内 比如 /root/date100.log
案例 4:2 分钟后,输出时间到指定文件内 比如 /root/date200.log
案例 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
![](https://gitee.com/Kawhildh/blog-image/raw/master/linux/image-20220112152002887.png)
在“password requisite pam_pwquality.so
”行尾添加具体参数
比如“minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1
”,表示最小密码长度16位,数字,大小写字母,特殊字符均至少包含1位。
#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文件中)。}
2.通过修改/etc/security/pwquality.conf参数文件,定义密码复杂度规则。
修改pwquality.conf参数文件有2种方法
**(1)**直接vi或vim编辑器 ,或者甚至用sed命令,修改/etc/security/pwquality.conf
参数与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 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录 联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
硬盘说明
- Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI硬盘
- 对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为 基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
- 对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法 一样
查看所有设备挂载情况
命令 :lsblk
或者 lsblk -f
挂载的经典案例
如何增加一块硬盘
- 虚拟机添加硬盘
- 分区
- 格式化
- 挂载
- 设置可以自动挂载
虚拟机增加硬盘步骤 1
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方 需要修改,至到完成。然后重启系统(才能识别)!
虚拟机增加硬盘步骤 2
分区命令 fdisk /dev/sdb
开始对/sdb 分区
m 显示命令列表
p 显示磁盘分区 同 fdisk –l
n 新增分区
d 删除分区
w 写入并退
说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。(Ctrl + Backspace 可以进行输入的内容删除)
虚拟机增加硬盘步骤 3
格式化磁盘 分区命令:mkfs -t ext4 /dev/sdb1
其中 ext4 是分区类型
虚拟机增加硬盘步骤 4
挂载: 将一个分区与一个目录联系起来,
mount 设备名称 挂载目录
例如: mount /dev/sdb1 /newdisk
取消挂载:
umount 设备名称 或者 挂载目
例如: umount /dev/sdb1 或者 umount /newd
用命令行挂载**,重启后会失效**
虚拟机增加硬盘步骤 5
永久挂载: 通过修改/etc/fstab 实现挂载
添加完成后 执行 mount –a
即刻生
磁盘情况查询
查询系统整体磁盘使用情况
基本语法 df -h
应用实例:
查询系统整体磁盘使用情况
查询指定目录的磁盘占用情况
基本语法 du -h
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
应用实例:
查询 /opt 目录的磁盘占用情况,深度为
磁盘情况-工作实用指令
1.统计/opt 文件夹下文件的个数
ls -l /opt | grep "^-" | wc -l
(grep
代表过滤 ^-
代表只列出 “-
”类型的文件 即“-”开头,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
安装
网络配置
原理图
指定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映射
设置主机名
- 为了方便记忆,可以给 linux 系统设置主机名, 也可以根据需要修改主机名
- 指令
hostname
( 查看主机名) - 修改文件在 /etc/hostname 指定
- 修改后,重启生效
设置hosts映射
通过ping主机名能够ping通某个主机
windows
在 C:\Windows\System32\drivers\etc\hosts 文件指定即可
案例: 192.168.200.130 hspedu10
linux
在 /etc/hosts 文件指定
案例: 192.168.200.1 ThinkPad-PC
进程管理
基本介绍
- 在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。=>windows => linux
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程 则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程
基本介绍
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)]
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
动态监控进程
介绍:
top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以 更新正在运行的的进程。
基本语法
top [选项]
选项说明
交互操作说明:
应用实例
案例 1.监视特定用户, 比如我们监控 tom 用户 top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可,
案例 2:终止指定的进程, 比如我们要结束 tom 登录
top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程 ID 号
案例 3:指定系统状态更新的时间(每隔 10 秒自动更新), 默认是 3 秒
top -d 10
服务(service)管理
介绍
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。
service 管理指令
- service 服务名 [start | stop | restart | reload | status]
- 在 CentOS7.0 后 很多服务不再使用 service ,而是 systemctl
- service 指令管理的服务在 /etc/init.d
案例
请使用 service 指令,查看,关闭,启动 network [注意:在虚拟系统演示,因为网络连接会关闭]
指令:
service network status
service network stop
service network start
查看服务名
方式 1:使用 setup -> 系统服务 就可以看到全部
setup
方式 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,否则不能正常启动
开机的流程说明:
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 基本语法
- 查看服务
chkconfig --list [| grep xxx]
(grep:过滤筛选)
chkconfig 服务名 --list
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中enable
和disable
两个命令才能永久关闭或打开该服务
而stop
和start
则是临时生效,关机重启后又会打开
打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟 服务器监听端口通讯。这时,需要打开指定的端口。比如 80、22、8080 等。
firewall 指令
- 打开端口:
firewall-cmd --permanent --add-port=端口号/协议
- 关闭端口:
firewall-cmd --permanent --remove-port=端口号/协议
- 重新载入,才能生效 :
firewall-cmd --reload
- 查询端口是否开放:
firewall-cmd --query-port=端口/协议
案例:
-
启用防火墙, 测试 111 端口是否能 telnet , 不行
-
开放 111 端口
firewall-cmd --permanent --add-port=111/tcp
; 需要 firewall-cmd --reload -
再次关闭 111 端口
firewall-cmd --permanent --remove-port=111/tcp
; 需要 firewall-cmd
监控网络状态
查看系统网络情况 netstat
基本语法
netstat [选项]
选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
应用案例
请查看服务名为 sshd 的服务的信息。
netstat -anp | grep sshd
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
细节讨论
-
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
如: $
rpm -e RPM包
removing these packages would break dependencies:foo is needed by bar-1.0-1
-
如果我们就是要删除 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)是一个在 Debian 和 Ubuntu 中的 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管道命令操作符,简称管道符。使用此管道符“|”可以将两个命令分隔开,“|”左边命令的输出就会作为“|”右边命令的输入,此命令可连续使用,第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
命令 1 的正确输出作为命令 2 的操作对象。命令 2 的正确输出作为命令 23的操作对象。这里需要注意,命令 1 必须有正确输出,而命令 2 必须可以处理命令 1 的输出结果;而且命令 2 只能处理命令 1 的正确输出,而不能处理错误输出。同理命令2和命令3的关系也是这样的。