目录
Linux概述
Linux特点
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打 包。
3、SuSE Linux
4、Gentoo Linux
5、其他 Linux 发行版
Linux应用领域
1、IT服务器
2、嵌入式
Linux和Windows区别
Linux下载安装
安装VMWare虚拟机
VMware是一个老牌的虚拟化软件。虚拟机指通过 软件 模拟的具 有完整 硬件 系统功能的、运行在一个完全隔离环境中的完整。
下载CentOS
如需遇到下载慢可以访问阿里镜像地址
https://mirrors.aliyun.com/centos-vault/?spm=a2c6h.136
51104.0.0.5f6612b2O7Cy9G
安装CentOS
Linux三种网络配置
背景
桥接模式
NAT
让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件 模拟 的主机可以通过物理主机访问外网,在真机中 NAT 虚拟机网 卡对应的物理网卡是 VMnet8。
Host-only
注意: NAT和host–only 不会占用一个ip地址,只能和你的本机进行通 讯。NAT和host–only还有一个区别就是,host–only只能和你的 本机进行通讯,不可以访问。
host–only(主机模式): A可以和A1,A2互通,A1,A2 -> B不可以, B -> A1,A2不行
Linux 远程登录
配置Nat网络模式
设置虚拟交换机网关
管理员授权
设置子网打开NAT设置
设置网关
配置vmware8网卡
设置IPV4
配置网络和DNS服务
登录到Linux编辑网卡文件
vim /etc/sysconfig/network-scripts/ifcfgens33
#修改为静态ip地址
#BOOTPROTO=none
BOOTPROTO=static
#修改为开机自启动网卡
#ONBOOT=NO
ONBOOT=yes
#配置ip
IPADDR=192.168.66.100
NETMASK=255.255.255.0
GATEWAY=192.168.66.1
DNS1=223.5.5.5
DNS2=223.6.6.6
# 保存退出 :wq
# 重启网卡 service network restar
设置XShell连接
连接主机
Linux系统目录结构
文件系统组织结构
1、/lib
系统开机所需要最基本的动态链接共享库,其作用类似于 Windows里的DLL文件。几乎所有的应用程序都需要用到这些 共享库。
一般情况下是空的,当系统非法关机后,这里就存放了一些文 件。
3、/etc
4、/usr
5、/bin
6、/sbin (usr/sbin、/usr/local/sbin)
sbin就是per user的意思,这里存放的是系统管理员使用的系统 管理程序
7、/home
存放普通用户的主目录,在Linux中的每个用户都有一个自己的 目录,一般该目录一用户的账号名命名
8、/root
9、/boot
存放的启动Linux时使用的一些核心文件,包括一些链接文件和 镜像文件
10、/proc
service 的缩写,该目录是存放一些服务启动之后需要提取的数 据
12、/sys
Linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现 的一个文件系统
13、/tmp
存放临时文件
14、/dev
类似于 windows的设备管理器,把所有的硬件用文件的形式存储
15、/media
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别 后,Linux 会把识别的设备挂载到这个目录下。
16、/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可 以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的 内容了。d:/ myshare
17、/opt
这是给主机额外安装软件所摆放的目录。如安装 ORACLE数据 库就可放到该目录下。默认为空。
这是另个给主机额外安装软件所安装的目录。一般是通过编译 源码方式安装的程序。
19、/var
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目 录放在这个目录下。包括各种日志文件。
ls /
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不 要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
Linux用户和用户组
用户管理概述
用户账号和用户组
用户概念
通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户 (user)
用户组概念
用户组(group)就是具有相同特征的用户(user)的集合体; 比如有时我们要让多个用户具有相同的权限,比如查看、修改 某一文件或执行某个命令,这时我们需要用户组,我们把用户 都定义到同一用户组,我们通过修改文件或目录的权限,让用 户组具有一定的操作权限,这样用户组下的用户对该文件或目 录都具有相同的权限,这是我们通过定义组和修改文件的权限 来实现的;
Linux用户和组的关系
Linux用户管理
Linux 系统的管理员之所以是 root,是因为该用户的身份号码即 UID的数值为 0,UID 就相当于我们的身份证号码一样具有唯一性, 因此可通过用户的 UID 值来判断用户身份。
添加用户 useradd
参数
示例 1
下面我们创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器。在下面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别。 一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中:
[root@itbaizhan ~]# useradd -d /home/linux -u
8888 -s /sbin/nologin linuxprobe
[root@itbaizhan ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe)
groups=8888(linuxprobe)
修改用户 usermod
有些时候不小心在useradd的时候加入了错误的设定数据,此时我们当然可以直接到/etc/passwd或/etc/shadow中去修改相对应字段的数据。
示例1
id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe)
然后将用户 linuxprobe 加入到 root 用户组中,这样扩展组列表中 则会出现 root 用户组的 字样,而基本组不会受到影响:
[root@itbaizhan ~]# usermod -G root
linuxprobe
[root@itbaizhan ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
再来试试用-u 参数修改 linuxprobe 用户的 UID 号码值。除此之 外,我们还可以用-g 参数 修改用户的基本组 ID,用-G 参数修改用 户扩展组 ID。
[root@linuxprobe ~]# usermod -u 8888
linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
用户账号口令管理
示例1
用root帮linuxpro修改密码
passwd linuxpro
示例2
假设您有位同事正在度假,而且假期很长,那么可以使用 passwd 命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该 命令允许用户登录系统,而不是将其删除。 这样既保证了这段时间 内系统的安全,也避免了频繁添加、删除用户带来的麻烦。
[root@itbaizhan ~]# passwd -l linuxprobe
Locking password for user linuxprobe.
passwd: Success
[root@itbaizhan ~]# passwd -S linuxprobe
linuxprobe LK 2017-12-26 0 99999 7 -1
(Password locked.)
[root@itbaizhan ~]# passwd -u linuxprobe
Unlocking password for user linuxprobe.
passwd: Success
[root@itbaizhan ~]# passwd -S linuxprobe
linuxprobe PS 2017-12-26 0 99999 7 -1
(Password set, SHA512 crypt.)
删除用户 userdel
参数:-r : 连同用户的家目录也一起删除。
示例1
下面使用 userdel 命令将 linuxprobe 用户删除,其操作如下:
[root@itbaizhan ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
[root@itbaizhan ~]# userdel -r linuxprobe
[root@itbaizhan ~]# id linuxprobe
id: linuxprobe: no such user
Linux用户组管理
添加新组groupadd
示例1
groupadd -g 334 bigdata
修改群组groupmod
示例1
把建立bigdata组改为bigdata2并设置GID改为506
groupmod -g 506 -n bigdata2 bigdata
删除群组groupdel
Linux超级用户与伪用户
用户身份切换
由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统 管理任务,必须用到超级权限。
语法:su [-fmp] [-c command] [-s shell] [–help] [- –version] [-] [USER [ARG]]
示例1
[root@itbaizhan ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@itbaizhan ~]# su - linuxprobe
Last login: Wed Jan 4 01:17:25 EST 2017 on
pts/0
[linuxprobe@linuxprobe ~]$ id
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe) context=unconfined_
u:unconfined_r:unconfined_t:s0-s0:c0.c1023
注意: 上面的 su 命令与用户名之间有一个减号(-),这意味着完全 切 换到新的用户,即把环境变量信息也变更为新用户的相应信 息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)。
Sudo 的全称为: super user do 。 顾名思义:干超级用户才能干的事! 所以Sudo最常用的功能就是提升一个命名的执行权限。
示例1
配置baizhan拥有root的权限
visudo
baizhan ALL=(ALL) ALL
示例2
[root@location opt]$ touch a.info
#切换用户
[baizhan@location ~]# su baizhan
#删除a.info文件
[baizhan@location ~]# rm -rf a.info
rm: cannot remove ‘a.info/’: Permission
denied
[baizhan@location ~]# sudo rm -rf a.info
这样,当切换到普通用户后再执行命令时,就不用再频繁地验证密 码了,我们在日常工 作中也就痛快至极了。
visudo
baizhan ALL=NOPASSWD: ALL
Linux文件基本属性
显示文件属性
ls命令
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内 容(列出目前工作目录所含之文件及子目录)。
语法:ls [参数]
文件与目录操作
Linux文件类型
文件权限
所谓的文件权限,是指对文件访问权限,包括对文件的读、写、删 除、执行操作。Linux是一个多用户操作系统,它运行多个用户同时登陆和工作,因此Linux将一个文件或者目录与一个用户和组联系起来。
例如,我们以 root 的身份登陆 Linux,并执行如下指令:
[root@localhost ~]# ls -al
total 156
drwxr-x---. 4 root root 4096 Sep
8 14:06 .
drwxr-xr-x. 23 root root 4096 Sep
8 14:21 ..
Linux权限字与权限操作
改变所属群组chgrp
改变一个文件的群组很简单,直接用chgrp命令,这个命令是 change group的缩写。
语法:chgrp [-R] 属组名 文件名
改变文件属性chmod
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
文字设定法
基本上就九个权限分别是:
那么我们就可以使用 u, g, o 来代表三种身份的权限。 此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
数字设定法
我们必须首先了解用数字表示的属性的含义:
1表示可执行权限,
2表示可写权限,
所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u) (g)(o)。 例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可 读)+2(可写)=6(读/写)。 先复习一下刚刚上面提到的数据:文件的权限字符为: – rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使 用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要 累加的,例如当权限为:
- rwx r-- r-x
分数则是:
所以等一下我们设定权限的变更时,该文件的权限数字就是 770。 变更权限的指令 chmod 的语法是这样的:
示例1
如果我们需要将文件权限设置为 – rwx r-x r– 。
示例2
改变文件拥有者chown
更改文件属主,也可以同时更改文件属组
语法: chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
示例:
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@itbaizhan ~] cd ~
[root@itbaizhan ~]# chown bin install.log
[root@itbaizhan ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53
install.log
将install.log的拥有者与群组改回为root:
[root@itbaizhan ~]# chown root:root
install.log
[root@itbaizhan ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53
install.log
Linux路径
绝对路径
绝对路径是指从“根”开始的路径。例如/usr/local,/etc/hosts,如果一 个路径是从“/”开始它一定是绝对路径。
相对路径
相对路径是以 “ . ” 或者 ” .. “开始的。. 表示用户操作所处的位置 .. 表示上级目录。
Linux处理文件目录的常用命令
pwd (显示目前所在的目录)
[root@www ~]# pwd [-P]
选项与参数:
-P :显示出确实的路径,而非使用连结 (link) 路径。
pwd示例:
[root@itbaizhan ~]# pwd
/root <== 显示出目录啦~
mkdir (创建新目录)
如果想要创建新的目录的话,那么就使用mkdir (make directory) 吧。
选项与参数:
mkdir示例
[root@itbaizhan ~]# cd /tmp
[root@itbaizhan tmp]# mkdir test <==创建一
名为 test 的新目录
[root@itbaizhan tmp]# mkdir
test1/test2/test3/test4
[root@itbaizhan ~]# mkdir -m 711 test2
rmdir (删除空的目录)
选项与参数:
-p :从该目录起,一次删除多级空目录
删除 runoob 目录
rmdir示例:
[root@itbaizhan tmp]# rmdir itbaizhan/
cp (复制文件或目录)
语法:
[root@itbaizhan ~]# cp [-adfilprsu] 来源档 目标档
cp示例:
[root@itbaizhan ~]# cp ~/.bashrc /tmp/bashrc
[root@itbaizhan ~]# cp -i ~/.bashrc
/tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为
覆盖
rm (删除文件或者目录)
语法:
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
rm示例:
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的
档名!
mv (移动文件与目录,或修改名称)
语法:
[root@itbaizhan ~]# mv [-fiu] source
destination
[root@itbaizhan ~]# mv [options] source1
source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
mv示例:
[root@itbaizhan ~]# cd /tmp
[root@itbaizhan tmp]# cp ~/.bashrc bashrc
[root@itbaizhan tmp]# mkdir mvtest
[root@itbaizhan tmp]# mv bashrc mvtest
Linux文件编辑工具vi/vim
vi/vim 的使用
vi或vim是Linux最常用的文本编辑器工具,vi或vim没有图形界面编辑器那样单机鼠标的简单操作,但vi编辑器在系统管理、服务器管理中,永远是图形界面的编辑器所不能比的。
基本上 vi/vim 共分为三种模式 :
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
输入模式
在命令模式下按下i、o、a就进入了输入模式。
在输入模式中,可以使用以下按键:
2、ENTER,回车键,换行
3、BACK SPACE,退格键,删除光标前一个字符
4、DEL,删除键,删除光标后一个字符
6、HOME/END,移动光标到行首/行尾
7、Page Up/Page Down,上/下翻页
8、Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
9、ESC,退出输入模式,切换到命令模式
底线命令模式
主要保存或者退出文件,以及设置Vim编辑器的工作环境,还可以 让用户执行外部的Linux命令或跳转所编写文档的特定行数。
shift+zz 保存退出
vi/vim 使用实例
编辑模式
在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法 编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入 编辑模式。
常用语法
1)进入编辑模式 (1)i 当前光标前 (2)a 当前光标后 (3)o 当前光标行的下一行
2)退出编辑模式 按『Esc』键
指令模式
在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!
常用语法
1 基本语法
: 选项
w 保存
q 退出
! 感叹号强制执行
/ 查找,/被查找词,n是查找下一个,shift+n是往上查找
? 查找,?被查找词,n是查找上一个,shift+n是往下查找
示例:
:w 保存
:q 退出
:wq! 强制保存退出
:set nu 显示行号
:命令 执行该命令
命令操作
Linux文件内容查看命令
cat(显示文件内容)
语法:cat [-AbEnTv]
cat示例:
[root@itbaizhan ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel r on an m
tac(倒着显示文件内容)
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
[root@itbaizhan ~]# tac /etc/issue
Kernel r on an m
CentOS release 6.4 (Final)
nl(显示行号)
语法:nl [-bnw] 文件
nl示例:
[root@itbaizhan ~]# nl /etc/issue
1 CentOS release 6.4 (Final)
2 Kernel r on an m
more(一页一页的显示文件内容)
more示例:
[root@itbaizhan ~]# more /etc/man_db.config
#
# Generated automatically from man.conf.in by
the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行喔!你的光标也会在
这里等待你的命令
less(往前翻页)
一页一页翻动,以下实例输出/etc/man.config文件的内容:
示例:
[root@itbaizhan ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by
the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!
head(只看头几行)
选项与参数:
1、-n :后面接数字,代表显示几行的意思
head示例:
head -n 20 /etc/man.config
tail(只看尾几行)
取出文件后面几行
语法:tail [-n number] 文件
tail示例:
[root@itbaizhan ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20
行,就得要这样:
[root@itbaizhan ~]# tail -n 20
/etc/man.config
Linux打包压缩与搜索命令
tar 命令
语法:tar [选项] [文件]
选项:
-v 显示详细信息
示例1
压缩多个文件
tar -zcvf XXX.tar.gz n1.txt n2.txt
示例2
压缩目录
tar -zcvf test.java.tar.gz test1
示例3
解压到当前目录
[root@itbaizhan opt]# tar -zxvf test.tar.gz
解压到/opt目录
[root@itbaizhan opt]# tar -zxvf test.tar.gz –
C /opt
gzip/gunzip压缩
语法:
gzip+文件 (功能描述:压缩文件,只能将文件压缩为 *.gz文件) gunzip+文件.gz (功能描述:解压缩文件命令)
示例1
gzip压缩
[root@itbaizhan opt]# ls
test.java
[root@itbaizhan opt]# gzip test.java
[root@itbaizhan opt]# ls
示例2
[root@itbaizhan opt]# gunzip test.java.gz
[root@itbaizhan opt]# ls
test.java
搜索命令
grep 命令
grep 命令用于在文本中执行关键词搜索,并显示匹配的结果。
示例1
[root@itbaizhan ~]# grep /sbin/nologin
/etc/passwd
find命令
示例1
按文件名:根据名称查找/目录下的filename.txt文件。
find /opt/ -name *.txt
示例2
按拥有者:查找/opt目录下,用户名称为-user的文件
find /opt/ -user atguigu
Linux常用系统工作命令
reboot 命令
由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用 root 管理员来重启,其命令如下:
[root@linuxprobe ~]# reboot
poweroff 命令
poweroff 命令用于关闭系统,其格式为 poweroff。
该命令与 reboot 命令相同,都会涉及硬件资源的管理权限,因此默认只有 root 管理员才可以关闭电脑,其命令如下:
[root@linuxprobe ~]# poweroff
wget 命令
示例1
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
1
报错:
ERROR: cannot verify dlcdn.apache.org's
certificate, issued by ‘/C=US/O=Let's
Encrypt/CN=R3’:
解决:
yum install -y ca-certificates
Linux管道符、重定向与环境变量
输入输出重定向
把多个 Linux 命令适当地组合到一起,使其协同工作,以便我们更加高效地处理数据。
示例1
比如我们分别查看两个文件的属性信息,其中第二个文件是不存在的,虽然针对这两个文件的操作都分别会在屏幕上输出一些数据信 息,但这两个操作的差异其实很大:
[root@itbaizhan ~]# touch itbaizhan
[root@itbaizhan ~]# ls -l itbaizhan
-rw-r--r--. 1 root root 0 Aug 5 05:35
itbaizhan
[root@itbaizhan ~]# ls -l xxxxxx
ls: cannot access xxxxxx: No such file or
directory
输入重定向作用表
输出重定向作用表
示例2
[root@itbaizhan ~]# ls -l xxxxxx
cannot access xxxxxx: No such file or
directory
[root@itbaizhan ~]# ls -l xxxxxx >
/root/stderr.txt
cannot access xxxxxx: No such file or
directory
[root@itbaizhan ~]# ls -l xxxxxx 2>
/root/stderr.txt
[root@itbaizhan ~]# cat /root/stderr.txt
ls: cannot access xxxxxx: No such file or
directory
管道命令符
管道命令符其执行格式为“命令 A | 命令 B”。命令符的作用也可以 用一句话来概括“把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入”。
示例1
找出被限制登录用户的命令是 grep "/sbin/nologin"
/etc/passwd
统计文本行数的命令则是 wc -l
现在要做的就是把搜索命令的输出值传递给统计命令,即把原本要 输出到屏幕的用户信息列表再交给 wc 命令作进一步的加工,因此只需要把管道符放到两条命令之间即可,具体如 下。这简直是太方便了!
grep "/sbin/nologin" /etc/passwd | wc -l
这个管道符就像一个法宝,我们可以将它套用到其他不同的命令上,比如用翻页的形式查看/etc 目录中的文件列表及属性信息(这 些内容默认会一股脑儿地显示到屏幕上,根本看不清楚):
ls -l /etc/ | more
在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和 passwd 命令的–stdin 参数相结合,我们可以用一条命令来完成密码重置操作:
echo "linuxprobe" | passwd --stdin root
命令行的通配符
通配符就是通用的匹配信息的符号,比如星号(*)代 表匹配零个 或多个字符,问号(?)代表匹配单个字符,中括号内加上数字[0-9] 代表匹配 0~9 之间的单个数字的字符,而中括号内加上字母[abc] 则是代表匹配 a、b、c 三个字符中的任意一个字符。
示例1
[root@itbaizhan ~]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 May 4 15:55
/dev/sda
brw-rw----. 1 root disk 8, 1 May 4 15:55
/dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55
/dev/sda2
如果只想查看文件名为 sda 开头,但是后面还紧跟其他某一个字符的文件的相关信息, 该怎么操作呢?这时就需要用到问号来进行通配了。
[root@itbaizhan ~]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 May 4 15:55
/dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55
/dev/sda2
除了使用[0-9]来匹配 0~9 之间的单个数字,也可以用[135]这样的方式仅匹配这三个指定数字中的一个,若没有匹配到,则不会显示出来:
[root@itbaizhan ~]# ls -l /dev/sda[0-9]
brw-rw----. 1 root disk 8, 1 May 4 15:55
/dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55
/dev/sda2
[root@itbaizhan ~]# ls -l /dev/sda[135]
brw-rw----. 1 root disk 8, 1 May 4 15:55
/dev/sda1
重要的环境变量
自然而然地,环境变量的配置文件也相应的被分成了系统级和用户级两种。
系统级
/etc/profile
在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配 置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。
用户级
~/.profile(推荐首选)
当用户登录时执行,每个用户都可以使用该文件来配置专属于自己使用的shell信息。
示例1
配置tomcat环境变量
vim /etc/profile
export TOMCAT_HOME=
export PATH=$PATH:$TOMCAT_HOME/bin
Linux磁盘管理
分区的方式
Linux分区原理
Linux的文件系统是树形的,安装的系统必须是在 / 目录下,因为/ 目录下挂载了一个主分区。/目录是树形的根,其他所有目录都是他的子节点。
df命令
用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。
语法:df [选项] [目录或文件名]
示例1:
lsblk命令
lsblk命令来自于英文词组”list block“的缩写,其功能是用于查看系统的磁盘使用情况。
参考实例
显示系统中所有磁盘设备的使用情况信息:
fdisk命令
Linux fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。
参考实例
[root@localhost ~]# fdisk -l
Linux挂载硬盘
虚拟机添加硬盘
分区
设置分区
fdisk /dev/sdb
查看分区
lsblk -f
格式化
mkfs -t ext4 /dev/sdb1
挂载
先创建目录 /home/itbaizhan
mount /dev/sdb1 /home/itbaizhan
永久挂载
vim /etc/fstab
mount -a
Linux系统状态检测命令
ip addr 命令
uname 命令
uname -a
Linux zk3 3.10.0-1160.el7.x86_64 #1 SMP Mon
Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64
GNU/Linux
注意:在使用 uname 命令时,一般会固定搭配上-a 参数来完整地查看当前系统的内核名称、主 机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
顺带一提,如果要查看当前系统版本的详细信息,则需要查看 redhat-release 文件,其命令以及相应的结果如下:
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
free 命令
free -h
last 命令
语法:last [参数]
[root@zk3 opt]# last
history 命令
history 命令用于显示历史执行过的命令。
语法:history [-c]
uptime 命令
uptime 用于查看系统的负载信息,格式为 uptime。
[root@zk3 opt]# uptime
17:56:03 up 7:14, 2 users, load average:
0.02, 0.02, 0.05
注意:uptime 命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以 及平均负载值等信息。平均负载值指的 是系统在最近 1 分钟、5 分钟、15 分钟内的压力情 况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5。
Linux下软件安装的命令
源码安装
以源代码安装软件,每次都需要配置操作系统、配置编译参数、实际编译,最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。
RPM软件包管理
RPM安装软件的默认路径:
常用的 RPM 软件包命令
软件安装
如你需要安装一个jdk,首先要到网上下载一个jdk的rpm包,如jdk-8u171-linux-x64.rpm。最简单的安装命令如下:
rpm -i jdk-8u171-linux-x64.rpm
不过,这样的参数其实无法显示安装的进度,所以通常我们执行的命令是这样:
rpm -ivh package-name
卸载软件
使用rpm的卸载过程一定要由最上层往下卸载,以rp-pppoe为例, 这个软件主要是依据ppp这个软件来安装的,所以当你要卸载ppp 的时候,就必须先卸载rp-pppoe才行! 删除的命令非常简单,通过-e参数就可以完成。不过,很常发生软件属性依赖导致无法山洼某些软件的问题。
rpm -e gcc
YUM
YUM的配置文件
容器说明
虽然yum是你在联网后就能直接使用,不过,由于你系统的站点镜像没选择好,会导致连接速度非常慢!所以,这时候就需要我们去手动修改yum的设置文档了。
容器查询
首先,可以先查询一下目录yum server所使用的容器有哪些。 使用命令:yum repolist all,查询结果如下:
配置文件修改
打开配置文件:vi /etc/yum.repos.d/CenOS-Base.repo,内容如下
示例1
配置阿里yum源
1:安装wget
yum install -y wget (如果已经安装了则省
略)
2:备份 /etc/yum.repos.d/CentOS-Base.repo文件
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOSBase.repo.back
3:下载阿里云的Centos-7.repo文件
wget -O CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
4:重新加载yum
yum clean all
yum makecache
5:检查配置的源是否是阿里的
cat /etc/yum.repos.d/CentOS-Base.repo
YUM使用手册
小技巧:
使用参数-y,当遇到需要等待用户输入时,这个选项会提供yes的响应,如上面的例子可以写成:
yum install -y emacs
Linux下常用软件安装_JDK和Tomcat安装
Jdk 安装
解压jdk安装包
tar -zxvf jdk-8u201-linux-x64.tar.gz -C
/usr/local
配置环境变量
vim /etc/profile
底部加入如下配置
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
生效环境变量
source /etc/profile
Tomcat 安装
解压Tomcat安装包
tar -zxvf apache-tomcat-9.0.54.tar.gz -C
/usr/local
配置环境变量
export TOMCAT_HOME=/usr/local/tomcat
export
PATH=$PATH:$TOMCAT_HOME/bin:$JAVA_HOME/bin
Linux下常用软件安装_Mysql安装
下载YUM库
wget http://dev.mysql.com/get/mysql57-
community-release-el7-10.noarch.rpm
安装YUM库
rpm -ivh mysql57-community-release-el7-
10.noarch.rpm
安装数据库
yum -y install mysql-community-server
遇到报错
Failing package is: mysql-community-libscompat-5.7.37-1.el7.x86_64
GPG Keys are configured as:
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决办法
在yum install 版本后面加上 –nogpgcheck
yum -y install mysql-community-server --
nogpgcheck
完成安装,重启mysql
systemctl restart mysqld
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此 时root用户的密码,通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log
[root@hadoop8 ~]# grep "password"
/var/log/mysqld.log
2018-10-13T08:33:27.994868Z 1 [Note] A
temporary password is generated for
root@localhost: yj0v.0w*ywPk
mysql -uroot -p
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密 码之后才能操作数据库修改密码命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY
'123456';
Your password does not satisfy the current
policy requirements
解决报错
修改密码策略
因为当前的密码太复杂不方便后期做实验,所以使用命令修改密码策略两种方式:
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global
validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL validate_password_length=6;
Query OK, 0 rows affected (0.00 sec)
注:执行完初始化命令后需要输入数据库root用户密码
注:密码策略分四种
1、OFF(关闭) 2、LOW(低) 3、MEDIUM(中) 4、
STRONG(强)
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY
'123456';
开启远程连接
select User,Host,Password from user;
update user set host ="%" where user = “root”
刷新信息
mysql> flush privileges;
Linux下常用软件安装_MySQL卸载
检查是否安装了MySQL组件。
[root@localhost ~]# rpm -qa | grep -i mysql
mysql57-community-release-el7-10.noarch
mysql-community-libs-5.7.36-1.el7.x86_64
mysql-community-server-5.7.36-1.el7.x86_64
mysql-community-common-5.7.36-1.el7.x86_64
mysql-community-client-5.7.36-1.el7.x86_64
mysql-community-libs-compat-5.7.36-
1.el7.x86_64
卸载前关闭MySQL服务
systemctl stop mysqld
systemctl status mysqld
收集MySQL对应的文件夹信息
whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql
/usr/share/mysql
/usr/share/man/man1/mysql.1.gz
卸载删除MySQL各类组件
rpm -ev --nodeps mysql57-community-release-el7-10.noarch
rpm -ev --nodeps mysql-community-libs-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysql-community-server-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysql-community-common-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysql-community-client-5.7.36-1.el7.x86_64
rpm -ev --nodeps mysql-community-libs-compat-5.7.36-1.el7.x86_64
删除MySQL对应的文件夹
[root@DB-Server init.d]# whereis mysql
mysql:
[root@DB-Server init.d]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
[root@DB-Server init.d]# rm -rf
/var/lib/mysql
[root@DB-Server init.d]# rm -rf
/var/lib/mysql/mysql
[root@DB-Server init.d]# rm -rf
/usr/lib64/mysql
删除mysql用户及用户组
[root@DB-Server init.d]# rpm -qa | grep -i
mysql
Linux进程管理
ps
查看系统中所有进程
语法:ps [options] [–help]
参数:
-u 用户以及其他详细信息
USER PID %CPU %MEM VSZ RSS TTY STAT START
TIME COMMAND
示例1
列出目前所有的正在内存当中的进程。
示例2
找出和cron 与 syslog 这两个服务有关的PID号码。
[root@zk3 home]# ps -aux|egrep
'(cron|syslog)'
root 714 0.0 0.1 126388 1680 ?
Ss Oct17 0:01 /usr/sbin/crond -n
root 1069 0.0 0.4 222780 4552 ?
Ssl Oct17 0:49 /usr/sbin/rsyslogd -n
root 15844 0.0 0.0 112808 988 pts/0
R+ 10:39 0:00 grep -E --color=auto
(cron|syslog)
温馨提示:
top
示例1
top -d 2
示例2
假设10 604是一个已经存在的PID,观察该进程。
top -d 2 -p 10604
htop
htop的介绍
htop 是Linux系统中的一个互动的进程查看器,与Linux传统的top比 较的话, htop 更 人性化 并且还 支持鼠标 操作!
htop的安装
#安装epel源
yum install epel-release -y
#安装htop
yum install -y htop
#安装完毕后命令行输入
htop
kill
终止进程,kill的应用是和ps或者pgrep命名结合在一起使用的。
语法:kill [信号量] 进程ID
注: 信号代码可以省略,常用的信号代码是 – 9,表示强制终止
示例1
[root@zk3 home]# ps auxf|grep httpd
root 15968 0.0 0.0 112808 968 pts/0
S+ 11:35 0:00 | _ grep --
color=auto httpd
看上面输出中的第二列,就是进程PID.
kill 15968
ps -auxf|grep httpd
netstat
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
语法:netstat [选项]
参数:
示例1
列出所有端口
示例2
示例3
示例4
查看端口号
Linux系统服务
Service命令
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听 某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因 此我们又称为守护进程。
语法:
service 服务名 [start | stop | restart | reload | status]
示例1
[root@zk3 ~]# service iptables status
Systemd命令
$ sudo /etc/init.d/apache2 start
# 或者
$ service apache2 start
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
systemctl
System V init命令 | systemctl命令 | 作用 |
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service |
重新加载配置文件 (不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
systemd–analyze
# 查看启动耗时
$ systemd-analyze
# 查看每个服务的启动耗时
$ systemd-analyze blame
# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain
# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service
hostnamectl
# 显示当前主机的信息
$ hostnamectl
# 设置主机名。
$ sudo hostnamectl set-hostname rhel7
timedatectl
# 查看当前时区设置
$ timedatectl
# 显示所有可用的时区
$ timedatectl list-timezones
# 设置当前时区
$ sudo timedatectl set-timezone
America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS
Chkconfig
chkconfig命令用来更新、查询、改动不同执行级上的系统服务。比 方安装了httpd服务,而且把启动的脚本放在了/etc/rc.d/init.d文件 夹下,有时候须要开机自己主动启动它,而有时候则不须要,因 此,就能够使chkconfig命令来进行控制。
选项:
示例1
列出chkconfig 所知道的所有命令。
# chkconfig --list
开启服务。
# chkconfig telnet on //开启Telnet 服务
# chkconfig --list //列出chkconfig 所知道的
所有的服务的情况
关闭服务
# chkconfig telnet off // 关闭 Telnet 服务
# chkconfig --list // 列出chkconfig所知道的
所有的服务的情况
systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
经常使用服务介绍
Linux系统定时任务
什么是定时任务
定时任务命令是cond,crond就是计划任务,类似于我们平时生活 中的闹钟,定点执行。
为什么要用crond
计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、 晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。
crontab配置文件
[root@centos7 ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR
jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6)
(Sunday=0 or 7) OR
sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be
executed
备注:
1) * 表示任意的(分、时、日、月、周)时间都执行
2) - 表示一个时间范围段, 如5-7点
3) , 表示分隔时段, 如6,0,4表示周六、日、四
4) /1 表示每隔n单位时间, 如*/10 每10分钟
crontab的时间编写规范
00 02 * * * ls #每天的凌晨2点整执行
00 02 1 * * ls #每月的1日的凌晨2点整执
行
00 02 14 2 * ls #每年的2月14日凌晨2点执
行
00 02 * * 7 ls #每周天的凌晨2点整执行
00 02 * 6 5 ls #每年的6月周五凌晨2点执
行
00 02 14 * 7 ls #每月14日或每周日的凌晨2
点都执行
00 02 14 2 7 ls #每年2月14日或每年2月的
周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟
执行一次
* * * * * ls #每分钟都执行
00 00 14 2 * ls #每年2月14日的凌晨执行命
令
*/5 * * * * ls #每隔5分钟执行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点
执行
00 02 1-8 * * ls #每月1号到8号凌晨2点执行
0 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月的1,10,22号的4:
45执行
45 4 1-10 * * ls #每月的1到10号的4:45执
行
3,15 8-11 */2 * * ls #每隔两天上午8点到11点的
第3和第15分钟执行
0 23-7/1 * * * ls #晚上11点到早上7点之间,
每隔一个小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:
15执行
crontab命令选项
示例1
假设在每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把某 个网站的数据目录进行打包处理,使其作为一个备份文件。
25 3 * * 1,3,5 /usr/bin/tar -zcvf
backup.tar.gz /opt/wwwroot
Linux网络防火墙
防火墙管理工具
firewalld概述
Centos 系统中集成了多款防火墙管理工具,其中 firewalld服务是 默认的防火墙配置管理工具,它拥有基于 CLI(命 令行界面)和基 于 GUI(图形用户界面)的两种管理方式。
firewalld 中常用的区域名称及测了规则
firewalld防火墙的配置
终端管理工具
Linux 命令时曾经听到,命令行终端是一种极富效率的工作方式, firewalld-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界 面)版本。
firewalld-cmd 命令中使用的参数以及作用
常用示例
区域管理示例
1、显示当前系统中的默认区域
firewall-cmd --get-default-zone
2、显示默认区域的所有规则
firewall-cmd --list-all
firewall-cmd --get-active-zones
4、设置默认区域
firewall-cmd --set-default-zone=home firewall-cmd --get-default-zone
服务管理示例
1、查看默认区域内允许访问的所有服务
firewall-cmd --list-service
firewall-cmd --add-service=http --zone=public
firewall-cmd --list-all --zone=public
firewall-cmd --remove-service=http -- zone=public
5、同时添加httpd、https 服务到默认区域,设置成永久生效
firewall-cmd --add-service=http --addservice=https --permanent firewall-cmd --reload firewall-cmd --list-all
端口管理示例
[root@localhost local]# firewall-cmd -- zone=public --list-ports
2、开启某端口
[root@localhost local]# firewall-cmd -- zone=public --add-port=8080/tcp success
3、关闭某端口
[root@localhost local]# firewall-cmd -- zone=public --remove-port=8080/tcp success
SELinux
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它 是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 服务有三种配置模式:
[root@linuxprobe ~]# getenforce
Enforcing
Linux内核机制
地基
解释:
地基(底层)由一排排的文件柜组成,然有序,文件柜里放置 着“文件”—电脑中的文件。左上角,有一只胸前挂着421号牌的 小企鹅,它表示着PID (进程ID(Process ID) )为421的进程、它正在查看文件柜中的文件,这代表系统中正有一个进程在访问 文件系统。在右下角有一只小狗,它是看门狗(watchdog) 、这代表对文件系统的监控。
地面层
大门
原文地址:https://blog.csdn.net/m0_58719994/article/details/128187838
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_18747.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!